メモ: Ubuntu 10.10におけるGRUB 2の設定

以前のGRUBでは起動メニュー (menu.lst) を手で編集していましたが、現在のUbuntuGRUB 2はupdate-grub (grub-mkconfigのフロントエンド) でgrub.cfgを生成する仕組みに変わっているようです。今までgrub.cfgを直接いじっていましたが、そろそろ正しい生成方法を調べてみました。

(GRUB標準の機能とUbuntu固有部分の切り分けがちゃんとできていないので、ひとまず手元のUbuntu 10.10前提で)

/etc/grub.d/

このディレクトリには、grub.cfg生成の際に呼び出されるヘルパースクリプトが格納されています。

  • 10_linux: HDDにインストールされているLinuxを検出して、Linuxに関するブートエントリを生成
  • 20_memtest86+: memtest86+に関するブートエントリを生成
  • 30_os-prober: 他のOS (Windowsなど) に関するブートエントリを生成
  • 40_custom: 上記以外のカスタムエントリを記述 (ここに書いた内容がそのままgrub.cfgに挿入される)

/etc/default/grub

このファイルには、タイムアウトやデフォルトのブートエントリなどの設定項目が記述されています。
主な項目は、

  • GRUB_TIMEOUT: 起動メニューのタイムアウト秒数を指定する。
  • GRUB_HIDDEN_TIMEOUT: 指定した秒数メニューを表示せず、タイムアウトするとデフォルトのブートエントリを起動する。これが0だと起動メニューを表示せずに、直ちにデフォルトのOSを起動することになる。
  • GRUB_HIDDEN_TIMEOUT_QUIET: GRUB_HIDDEN_TIMEOUTを指定して、かつこの値がtrueの場合はカウントダウンを表示しない。
  • GRUB_DEFAULT: タイムアウト時に自動選択されるデフォルトのブートエントリ。番号で指定する方法と、文字列 (例: "Ubuntu, Linux 2.6.31-22-generic") で指定する方法のほかに、GRUB_DEFAULT=saved と書くと、保存された選択肢がデフォルトとして選択される。
  • GRUB_SAVEDEFAULT: GRUB_SAVEDEFAULT=true とすると、GRUB_DEFAULT=saved との組み合わせで、起動時に選択したブートエントリが、 次回起動時のデフォルト選択肢になる。

grub.cfgの生成

/etc/grub.d/ 内のファイルや /etc/default/grub を書き換えた場合、GRUBの起動メニューに反映させるために、root権限でupdate-grubを実行する必要があります。

$ sudo update-grub