Ubuntu Weekly Recipe

第97回 複数のOSを使う(3)GRUBを使ったデュアルブート,GRUBの設定

この記事を読むのに必要な時間:およそ 3 分

GRUB 2のTips

他のOSが表示されないときは

GRUB Legacyの場合は,他のOSのメニューエントリを追加する場合には,自分でインストールされているパーティションなどを調べて「/boot/grub/menu.lst」に追記するのが一般的でしたが,GRUB 2ではGRUB Legacyのmenu.lstにあたる「/boot/grub/grub.cfg」を自分で編集できないようになっています。「/etc/grub.d/」以下のスクリプトによってOSの検出からメニューエントリの追加までを自動で行ってくれます。

GRUB 2のメニューエントリに他のOSが表示されないときは,そのOSがインストールされているドライブを接続した上で順にコマンドを実行していきます。まず,以下のコマンドで前回デバイスマップが作成された時からハードウェア構成が変わっている場合のために,デバイスマップを作成し直します。

$ sudo grub-mkdevicemap

次に,以下のコマンドで,OSの検出からメニューエントリの登録までを自動で行います。

$ sudo update-grub

たったこの2つのステップで,全てのOSがメニューエントリに追加されます。

デフォルトの起動OSを変更したいときは

GRUB 2を利用するときのデフォルトの起動OSはWindowsではなくUbuntuです。これをWindowsに変更してみます。 まず,端末で以下のコマンドを実行します。

$ grep menuentry /boot/grub/grub.cfg

すると以下のような出力を得ます。

menuentry "Ubuntu, Linux 2.6.31-14-generic" {
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
menuentry "Memory test (memtest86+)" {
menuentry "Memory test (memtest86+, serial console 115200)" {
menuentry "Windows 7 (loader) (on /dev/sda1)" {

このうち,Windowsのメニューエントリの「"Windows 7 (loader) (on /dev/sda1)"」の部分をコピーしておきます。 続いて,端末で以下のコマンドを実行してGRUB 2の設定ファイルを開きます。

$ sudo gedit /etc/default/grub

設定ファイルの中の「GRUB_DEFAULT」を含む行を,先ほどコピーした文字列を使って以下のように変更して保存します。

GRUB_DEFAULT="Windows 7 (loader) (on /dev/sda1)"

または,以下のように変更すれば,前回正常起動したOSを記憶しておき,次回の起動でも同じOSを使用するという設定もできます。

GRUB_DEFAULT=saved

最後に,端末で以下のコマンドを実行して変更を反映させます。

$ sudo update-grub

タイムアウトの秒数を変更する

Ubuntu 9.10以外のOSもインストールされている場合,GRUB 2のOS選択画面が表示されるのはデフォルトで10秒ですが,これを変更するには,先ほどと同じく以下のコマンドでGRUB 2の設定ファイルを開きます。

$ sudo gedit /etc/default/grub

「GRUB_TIMEOUT=10」となっている行を以下のように変更したい秒数に変えて保存します。この値を「-1」としてタイムアウトしないようにも設定できます。

GRUB_TIMEOUT=5

変更を反映させるために以下のコマンドを実行します。

$ sudo update-grub

GRUB 2のOS選択画面を表示しないようにする

他のOSがインストールされていない場合はGRUB 2のOS選択画面は起動時に「Shift」キーを押し続けていない限り表示されません。他のOSがインストールされているときにもこの動作をさせてみましょう。

まず,端末で以下のコマンドを実行します。

$ sudo gedit /etc/grub.d/40_custom

テキストエディタが開かれるので,末尾に以下の内容を追記して保存します。

# set timeout=0 unless shift is pressed
if [ ${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi

次に変更を反映するために以下のコマンドを実行します。

$ sudo update-grub

著者プロフィール

村田信人(むらたのぶと)

Ubuntu Japanese Teamメンバー。Ubuntuオフラインミーティングに参加するうちにUbuntu Japanese Teamの活動に興味を持ち,2009年8月に加入。

コメント

コメントの記入