Ubuntu 9.10等,GRUB2を採用するディストリビューションも増えてきたこの頃,イカがお過ごしでしょうか。今日は,そんなGRUB2を色々いじっていて気づいたいくつかのtipsをメモしたりなんかします。

/boot/grub/menu.lst はもういない

GRUBのメニュー表示設定といえば /boot/grub/menu.lst という勢いで,インターネット上にもそのファイルの編集ノウハウがたくさん転がっていますが,GRUB2採用のUbuntu9.10にはそんなファイルありません。とっとと忘れましょう。

udzura@ubuntu-vaio:~$ ls /boot/grub/menu.lst
ls: /boot/grub/menu.lstにアクセスできません: No such file or directory
udzura@ubuntu-vaio:~$

デュアルブートしてるんだけど,起動画面で,正直Windowsが上にきてほしい

Windowsを入れているPCに,デュアルブート構成でUbuntuその他Linuxを入れると、「Ubuntu, Linux 2.6.31-19-generic」とかそういうエントリーが上のほうにきて,デフォルトでブート(ほっといてブート)するのもLinuxになります。 /boot/grub/menu.lst はもういないので,この順序を変えるにはどうすればいいの???

大丈夫! 実は簡単なんです。 /etc/grub.d と言うディレクトリをご覧ください

udzura@ubuntu-vaio:~$ ls /etc/grub.d
00_header        10_linux       30_os-prober  README
05_debian_theme  20_memtest86+  40_custom
udzura@ubuntu-vaio:~$

そう,実はこの順番でメニューが表示されるのです。10のlinux、20のmemtest、そしてやっと30のその他OS,と言う風に……

その他OSたるWindowsを上に持ち上げるには,30になってるos-proberを05より大きく10より小さい数に mv(1) すれば良いと思います。07とかいいんじゃないでしょうか。

1
sudo mv /etc/grub.d/30_os-prober /etc/grub.d/07_os-prober

そして、

1
sudo update-grub
udzura@ubuntu-vaio:~$ sudo update-grub
[sudo] password for udzura:
Generating grub.cfg ...
Found Windows Vista (loader) on /dev/sda1
Found Windows Vista (loader) on /dev/sda2
Found linux image: /boot/vmlinuz-2.6.31-19-generic
Found initrd image: /boot/initrd.img-2.6.31-19-generic
Found linux image: /boot/vmlinuz-2.6.31-17-generic
Found initrd image: /boot/initrd.img-2.6.31-17-generic
Found linux image: /boot/vmlinuz-2.6.31-16-generic
Found initrd image: /boot/initrd.img-2.6.31-16-generic
Found linux image: /boot/vmlinuz-2.6.31-15-generic
Found initrd image: /boot/initrd.img-2.6.31-15-generic
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /boot/memtest86+.bin
done
udzura@ubuntu-vaio:~$

Windowsが先に認識されたのが分かります。

Linuxのカーネルのバージョンがたくさん出てきてうっとうしい

上記のとおり,update-grub(8)はインストールされているLinuxのカーネルをすべて引っ張り出してしまいます。なので、アップデートが為されるたびにエントリーが追加されていきます。

でも、正直行って最新のカーネルしか使いませんよね。。

実はupdate-grub(8)は、 /boot/grub/grub.cfg を生成しているだけに過ぎないのです。なので、最悪、直接いじってしまえばいいのです。

ここで要注意なのは,/boot/grub/grub.cfg はrootを含む全ユーザに対してしてリードオンリー属性なので,いったん chmod(1) してあげないと,編集しても保存できなかったりとか何かと都合が悪いという事です。

1
2
3
sudo chmod u+w /boot/grub/grub.cfg
sudo gedit /boot/grub/grub.cfg
sudo chmod u-w /boot/grub/grub.cfg
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
        ......
}

↑のカギカッコの塊を好きなだけ消しちゃいましょう(※ 消しすぎると起動できなくなります!)。

* * *

以上,実施した結果は無保証ですが。。お役に立てば何より。