起動時にブート先を選択する画面のメニューの編集。/boot/grub/grub.cfgをルート権限で編集してもできるが失敗するといろいろと問題が起こったり、カーネルのアップデートごとに行わねばならないので編集しない方がよい。grub2の設定のカスタマイズは/etc/default/grubと/etc/grub.d内のファイルから行う。変更点は以下の通り。
まず/etc/default/grubの以下のコメントを外すことによりUbuntuのリカバリモードのメニューエントリーを消す。
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_LINUX_RECOVERY="true"
/etc/grub.d/20_memtest86+を実行できないようにしてmemtest+86のエントリーを消す。
$ sudo chmod -x /etc/grub.d/20_memtest86+
他のOSのメニューエントリーも自動生成するのだがWindowsのリカバリ領域まで認識して、しかも本来のブートをリカバリと表記して紛らわしいのでこれを無効にして自分でWindowsのメニューエントリーを生成するように設定する。まずgrubによって生成される/boot/grub/grub.cfg内の以下の部分からWindowsのパーティションのエントリーを/etc/grub.d/40_customにコピーして""で囲まれた部分を分かりやすい名前に変える。ここでは/dev/sda2にVistaのローダーが入っているのでこれをコピーする。
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set b408c51a08c4dc8c
chainloader +1
}
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)" {
insmod ntfs
set root='(hd0,2)'
search --no-floppy --fs-uuid --set b8b0a6c4b0a68908
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
/etc/grub.d/40_customにコピーする。
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
#copyed from /boot/grub/grub.cfg
menuentry "Windows Vista" {
insmod ntfs
set root='(hd0,2)'
search --no-floppy --fs-uuid --set b8b0a6c4b0a68908
drivemap -s (hd0) ${root}
chainloader +1
}
コピーしたら/etc/grub.d/30_os-proberの実行権限を無効にして自動生成されないようにする。
sudo chmod -x /etc/grub.d/30_os-prober
新たにOSを入れたときなどは(たぶん)実行権限を元に戻して自動生成させればいいと思う。
以上が終わったら、
$ sudo update-grub
で更新してエントリーを自動生成させる。