Carpe Diem

備忘録。https://github.com/jun06t

GRUBの設定

GRUB関連のまとめ記事です。 GRUBとはブートローダです。複数のOS、複数カーネルをインストールした時に使用したいOS、カーネルを選択できるようにしてくれます。 他のブートローダとしてLILOが有名ですが、GRUBLILOよりも高機能で汎用性も高く設定も容易に行えるため最近はGRUBが大半になっていると思います。 複数OSを入れたことによるGrubの変更 複数パーティションを構成し、それぞれLinuxを入れるとそれぞれのGRUBがインストールされます。 ブート時に使用されるGRUBはあとにインストールした方となるため、先に入れたOSでカーネルの再構築&インストール等してもブート時には反映されません。アンインストールも同様です。 そこで使用するGRUBを変更したい場合ですが、やり方は簡単。使用したいOSの方のSynapticでgrub2-pcを再インストールするだけ。 そうすれば変更されます。 また上記の「複数GRUBがあるために起こる不具合」を解決する方法として「2段階ブート」があるので、興味がある方は試してみてください。 ◆ブート時のOS選択画面の壁紙設定 11.04以降では /boot/grub/ のところに画像を置き、 $ sudo update-grub2 とすればそれを設定してくれます。 それ以前の場合は /etc/default/grub /etc/grub.d/05_debian_theme を編集します。これらを編集すると/boot/grub/grub.cfgが変更され設定が反映されます。 まずは前者 $ sudo emacs -nw /etc/default/grub GRUB_GFXMODE=1024x768 の部分を使用する解像度に変更 もうひとつの設定 $ sudo emacs -nw /etc/grub.d/05_debian_theme 10行目あたりの WALLPAPER="/usr/share/images/desktop-base/xxx.jpg" を編集します。できれば画像ファイルを/usr/share/images/desktop-base/に置いた方がいいのかな。 あと画像によっては使用できないものもあります(インターレースPNGプログレッシブJPEGなど)。 そうでなければ自動でリサイズして表示してくれると思います。 設定したら $ sudo update-grub2 ちゃんと画像が反映されれば Found xxx.jpg のようなメッセージが流れます。 ◆起動時、終了時のスプラッシュ画面の設定 これを設定するとスプラッシュを映すか、プロセスの処理(文字列が流れる)を映すかを設定できます。 $ sudo emacs -nw /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” の部分を ○スプラッシュにする場合 そのまま GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” ○文字列にする場合 GRUB_CMDLINE_LINUX_DEFAULT=”quiet nosplash” ○スプラッシュイメージを表示しつつ簡易テキストも表示 GRUB_CMDLINE_LINUX_DEFAULT=”splash” 設定を反映 $ sudo update-grub2 ◆OSの起動順を変更する /etc/default/grub ファイルの「GRUB_DEFAULT=0」を書き換えます。3通りあります。 ①数字 - ブート選択画面で一番上に表示される項目を0、次を1、2、…とした数字で指定。 ②文字列 - ブート選択画面に表示される文字列で指定する。/boot/grub/grub.cfg に記述されています。  (例:GRUB_DEFAULT="Ubuntu, with Linux 2.6.32-24-generic") ③saved - 前回選択&起動したOSをデフォルトで選択する。 $ sudo emacs -nw /etc/default/grub GRUB_DEFAULT="Windows 7" 書き換えたら設定を更新します。 $ sudo update-grub ◆起動をCUIにする サーバの場合、設定が済んでいればなるべく負荷の少ないCUIの状態の方がいいです。しかしUbuntu-Desktopを入れていると自動でXサーバが起動するので設定が必要です。 $ sudo emacs -nw /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text このように最後に「text」を入れるとCUIで起動するようになります。おそらくそのままだと自動起動のサービスが起動したメッセージが流れるだけでログインできない画面になっていると思うので、「Alt+F1」を押してCUI画面に移行してください。 この状態からGUIに移りたい時は、ログイン後 $ sudo /etc/init.d/gdm start とします。ちなみにUbuntu12.04の場合はデフォルトはlightdmですので $ sudo /etc/init.d/lightdm start とします。するとGUIのログイン画面が起動するのでそこからログインしてください。もしくは直接 $ startx とするとGUI画面になります。ただ私の環境ではなぜか上部・下部のパネルが表示されなかったりしたので、gdmからの方が確実かもしれません。 GrubのOS一覧を修正する カーネルの更新で同じOSなのにGrubのOS選択一覧が大量になってしまう場合の対応です。11.04以降は「Previous Linux versions」と自動でまとめられますがそれ以前では残るので対処法を。 # cd /boot/grub # chmod +r grub.cfg # emacs -nw grub.cfg いらないカーネルを削除orコメントアウトします。以下みたいな部分。
menuentry 'Ubuntu, with Linux 3.2.0-33-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root b6223f31-4fd6-4ea9-a53e-c33cd1d838c2
        linux   /boot/vmlinuz-3.2.0-33-generic root=UUID=b6223f31-4fd6-4ea9-a53e-c33cd1d838c2 ro   quiet splash $vt\
_handoff
        initrd  /boot/initrd.img-3.2.0-33-generic
}
menuentry 'Ubuntu, with Linux 3.2.0-33-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --clas\
s os {
        recordfail
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root b6223f31-4fd6-4ea9-a53e-c33cd1d838c2
        echo    'Loading Linux 3.2.0-33-generic ...'
        linux   /boot/vmlinuz-3.2.0-33-generic root=UUID=b6223f31-4fd6-4ea9-a53e-c33cd1d838c2 ro recovery nomodeset\

        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.2.0-33-generic
}
直したらパーミッションを修正 # chmod -r grub.cfg 再起動後は一覧から削除されているはずです。 ソース: ブートローダー(GRUB)のメニューに任意の壁紙を付ける [Ubuntu 11.04以降] Ubuntu 9.10(Grub2)でスプラッシュに起動過程を表示 (Ubuntu 9.10) Grub2の設定 デフォルトでWindowsを起動するように設定する [Ubuntu 10.04(GRUB2)]