Ubuntu と GRUB2

Ubuntuの最新バージョン Ubuntu 10.10 が10月上旬にリリースされました。 このバージョンを私はまだ触ったことがありませんが、どうやら Ubuntu 10.04 LTS から採用されているブートローダGRUB2を使用しているとのこと。従来のGRUBでは boot/grub/menu.lst の修正でブートメニューを自由に変更でき, インターネットで検索すれば多く情報を得られます。ただし, このGRUB2に関してはなかなかありません。Ubuntuに限定するとなお顕著です。GRUB2の場合, ブートメニューは /boot/grub/grub.cfg を参照しています。 このファイルを開くと従来のGRUBで使用していた /boot/grub/menu.lst と似た役割を担っています。実際、 grub.cfg を編集するとブートメニューで表示する項目が変わります。これがもっとも簡単な方法です。(修正をする場合, 一旦書き込み権限を与えます。)<pre style="padding-left:1em;">$ sudo chmod u+w /boot/grub/grub.cfg$ sudo gedit /boot/grub/grub.cfg$ sudo chmod u-w /boot/grub/grub.cfg</pre>しかしながら、 この方法だと grub.cfgファイル自体は自動生成されたものなのでカーネルの更新などを行うと書き換えられてしまい、再度修正をかけなければならないといった問題がでてきます。<!–more–>GRUB2でブートメニューを変更するときは /etc/default/grub と /etc/grub.d について把握しておくと便利になると思います。この2ヶ所を調整することで同じような手間を省けます。<h3>/etc/default/grubを編集する</h3>例えば、ブートメニュー内のUbuntuリカバリーモードという項目を消したい場合は次のようにして etc/default/grubのある行のコメントを外します。#GRUB_DISABLE_LINUX_RECOVERY="true"に注目して下さい。<pre style="padding-left:1em;">$ sudo vi /etc/default/grub#Uncomment to disable generation of recovery mode menu entries#GRUB_DISABLE_LINUX_RECOVERY="true"GRUB_DISABLE_LINUX_RECOVERY="true"</pre><h3>/etc/grub.d にある権限を変更する</h3>/etc/grub.d/ の中で実行権限がないものは boot/grub/grub.cfg の中に盛り込まれません。したがって memtest86+ をブートメニューに表示させたくない場合は、実行権限を取り上げます。<pre style="padding-left:1em;">$ sudo chmod -x /etc/grub.d/20_memtest86+</pre>最後に以下のコマンドを実行して, /boot/grub/grub.cfgを再生成します。このコマンドを実行すると /etc/grub.d や /etc/default/grub に則って自動的に書き換えるため、手動で/boot/grub/grub.cfg を編集していたファイルは上書きされます。<pre style="padding-left:1em;">$ sudo update-grub</pre>以上で終了です。