2012年11月28日

GRUBのデフォルトOS変更のメモ


とりあえず、今までちょっと気になっていたGRUBのデフォルト起動を変更する方法をメモ。

今回は私的メモなので、普段の記事よりも5割減で書いていきます。



まず、GRUBのデフォルトを変更するものをググると/boot/grub/menu.lstを編集するっていうのがあるけど、最近のGRUBにはmenu.lstは使われていないので、これは除外。

次に多く出てくるのが、 /boot/grub/grub.cfg を編集するというもの。set defaultのパラメータを変更するといけるよ! とはあるけど、update-grubコマンド打ったりgrubのパッケージ自体をアップデートするとデフォルトが0に戻ってしまうし、何より自分はリストの番号で指定したいのではなく、ディストリビューション名で指定したいのだ。←この情報が案外少ない。

で、次に /etc/default/grub を編集する方法を試みてみた。

update-grubをする際のネタとなる情報をここから拾ってくるため、リストが更新されてもここを編集しておけば同じ設定が維持される。

で、ここを編集すればupdate-grubの問題は回避することが出来る……
ここではGRUB_DEFAULTの値を編集すればいい。ここでも値は数字で0が入っているが、ディストリビューション名(文字列)を指定することも出来る。
(より詳しいことが知りたければ info -f grub -n 'Simple configuration' コマンドを打つべし)

ディストリビューション名はgrub.cfgから持ってくるとよい。

# cat /boot/grub/grub.cfg | grep "menuentry"

menuentry 'Ubuntu, with Linux 3.2.0-33-generic' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 3.2.0-33-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 3.2.0-32-generic' --class ubuntu --class gnu-linux --class gnu --class os {
 :
 :

上記menuentryの次のシングルクォーテーションで囲まれている箇所がGRUBのメニューで表示されるディストリビューション名なので、ここをそのまま /etc/default/grub の中に書き込めばよい。

これで最後にupdate-grub を打てば、見事grub.cfg に反映されるようになります。やったね。