Thinkpad X40 2371-KJ1
X4 UltraBase
Pioneer DVR-XD09J
KNOPPIXのインストール
ThinkpadX40のセカンドHDDにKNOPPIX6.2をインストールした。前回の記事に書いたように、あらかじめGPartedで未フォーマットのパーティションを作っておいた。そうすると、KNOPPIXのインストーラ0wnがパーティションを認識してReiserFSでフォーマットしてくれる。
インストールは30分ほどで完了した。以前のLavie L LL750/2Dでは1時間以上かかり、しかも3回のうち2回は途中でエラーが出てはじめからやり直さなければならなかったことを考えると、特権的なフリーパスあるいは通行手形でも手に入れた気分だ。


OSがインストールされると、さらにブートローダのGrubをインストールするかどうか選択しなければならない。すでにUbuntuのブートローダがあるので、インストールしないことにした[1]。以上でDVD-KNOPPIXのセッションは終了して、KNOPPIXのブートの設定をおこなうためにUbuntuを起動する。
UbuntuのブートマネージャGrub2
X40にインストールしたすべてのOSの起動は、Ubuntuのブートローダからおこなう[2]。Ubuntu10.04のデフォルトのブートローダはGrub2だ。KNOPPIXやPuppyLinuxのブートローダはただのGrubだ。Ubuntuの/boot/grubディレクトリにmenu.lstが見あたらないので調べてみたら、そういうことだった。そんなことも知らなかったのに今までよくUbuntuが問題なく使えたものだ。
Grub2の基本的な設定はコマンドでおこない、設定ファイル(/boot/grub/grub.cfg)を編集したりはしない。
Grub2のブートメニューにKNOPPIXを追加
まず、現在のブートメニューを確認しておこう。
$ grep menuentry /boot/grub/grub.cfg
KNOPPIXが正しくインストールされていれば、次の2つのコマンドでGrub2のブートメニューにKNOPPIXが自動的に追加される。
$ sudo grub-mkdevicemap
$ sudo update-grub
grepコマンドで/boot/grub/grub.cfgファイルにKNOPPIXが追加されたことを確認したら、Ubuntuを終了してKNOPPIXを起動してみよう。これで起動すれば、KNOPPIXのインストールは完了だ。
GRUB2ブートメニューの調整
ThinkpadX40のGRUB画面のメニューがこんな風になった。
GNU GRUB version 1.98-1ubuntu7
Ubuntu, with Linux 2.6.32-24-generic
Ubuntu, with Linux 2.6.32-24-generic (recovery mode)
Ubuntu, with Linux 2.6.32-22-generic
Ubuntu, with Linux 2.6.32-22-generic (recovery mode)
Ubuntu, with Linux 2.6.32-21-generic
Ubuntu, with Linux 2.6.32-21-generic (recovery mode)
Ubuntu, with Linux 2.6.31-21-generic
Ubuntu, with Linux 2.6.31-21-generic (recovery mode)
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Microsoft Windows XP Professional (on /dev/sda1)
KNOPPIX (on /dev/sdb6)
ふだん使うのは一番上のUbuntuと一番下のMicrosoft Windows XP ProfessionalとKNOPPIXの3つだけだが、上と下がずいぶんと離れている。これでは不便なので、なんとかしたい。
まず考えられるのは、不要なメニューを消すことだ。Ubuntuのメニューだけで8つもあるのはどう考えても多すぎる。ただし、古いカーネルのメニューはひとつくらい残しておいた方がよいかもしれない。新しいカーネルの不具合に古いカーネルのUbuntuを起動して対処できたことが実際にあった。
メニューを消すのはそのうちに試してみるとして、ここではメニューの順番を変えることにする。KNOPPIXとWindowsXPを一番上に持ってくることにしよう。
メニューエントリの順番の入れ替え
Grub2のメニューエントリのおおまかな順番は、/etc/grub.dというディレクトリのファイル名にしたがって決められている。ファイル名には番号が割りふってある。
$ cd /etc/grub.d
$ ls
00_header 05_debian_theme 10_linux
20_memtest86+ 30_os-prober
40_custom README
Grub2の設定ファイル/boot/grub/grub.cfgを見ると、/etc/grub.dのファイルが番号順に読み込まれていることがわかる。
$ gedit /boot/grub/grub.cfg
(略)
### BEGIN /etc/grub.d/00_header ###
(略)
### BEGIN /etc/grub.d/05_debian_theme ###
(略)
### BEGIN /etc/grub.d/10_linux ###
menuentry ‘Ubuntu, with Linux 2.6.32-24-generic’ –class ubuntu –class gnu-linux –class gnu –class os {
(略)
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry “Memory test (memtest86+)” {
(略)
### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Microsoft Windows XP Professional (on /dev/sda1)” {
(略)
menuentry “KNOPPIX (on /dev/sdb6)” {
(略)
### BEGIN /etc/grub.d/40_custom ###
(略)
Ubuntuのメニューエントリは10_linuxの項目に書かれている。Memory testは20_memtest86+、WindowsXPとKNOPPIXは30_os-proberだ。そこで、ファイル名を変更して、30_os-proberの30を10よりも小さい数字、たとえば07にすれば、WindowsXPとKNOPPIXがUbuntuよりも先に読み込まれてブートメニューの先頭に来るはずだ。
$ cd /etc/grub.d
$ ls
$ sudo mv 30_os-prober 07_os-prober
$ sudo update-grub
grub.cfgの更新を確認したら、再起動してGRUB画面を見てみよう。
GNU GRUB version 1.98-1ubuntu7
Microsoft Windows XP Professional (on /dev/sda1)
KNOPPIX (on /dev/sdb6)
Ubuntu, with Linux 2.6.32-24-generic
Ubuntu, with Linux 2.6.32-24-generic (recovery mode)
Ubuntu, with Linux 2.6.32-22-generic
Ubuntu, with Linux 2.6.32-22-generic (recovery mode)
Ubuntu, with Linux 2.6.32-21-generic
Ubuntu, with Linux 2.6.32-21-generic (recovery mode)
Ubuntu, with Linux 2.6.31-21-generic
Ubuntu, with Linux 2.6.31-21-generic (recovery mode)
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
デフォルトOSの設定
GRUBメニューの画面が開いたとき、カーソルは一番上のMicrosoft Windows XP Professionalにあたっている。そのまま数秒経過すると、自動的にWindowsXPが起動する。それが望ましくなければ、メニューの順番を変えなくても、カーソルがほかのOSにあたるように設定できる。
単純にWindowsXPとKNOPPIXの順番を入れ替えてもいいのだが、そのやり方がわからない。
/etc/default/grubというファイルを編集してデフォルトのOSを設定すると、カーソルがそのOSのメニューにあたるようになる。UbuntuのせいかX40のせいかどうもviの勝手がちがうので、geditで編集した。
$ sudo gedit /etc/default/grub
「GRUB_DEFAULT=0」という行があるので、「0」のところにOSの名称を入れる。OS名は、grub.cfgファイルを開くと「menuentry」の後ろに引用符でくくられているので、それをコピーして貼りつけるとよい。ここではKNOPPIXをデフォルトのOSにする。
GRUB_DEFAULT=”KNOPPIX (on /dev/sdb6)”
上書き保存でgeditを終了したら、update-grubコマンドで変更を反映させる。
$ sudo update-grub
これでGRUB画面の使い勝手がだいぶよくなった。
脚注
1^ ブートローダのインストール
ここでKNOPPIXのブートローダのインストールを選択することもできるのだろうと思う。その場合、マルチブートの設定はKNOPPIXのGrubでおこなうことになる。すでにインストールされているWindowsXPとUbuntuのブートメニューは自動的に生成されるはずだ。/boot/grub/menu.lstを直接編集して、メニューを追加したり修正したりすることもできる。しかし、マルチブートの仕組みがよくわからないので、今まで安定して動作しているUbuntuのブートローダをそのまま使うことにした。
2^ ウルトラベースのブートローダ
UbuntuのブートローダGrub2は、ウルトラベースのセカンドHDDにある。セカンドHDDにはUbuntuとKNOPPIX、ThinkpadX40本体のHDDにはWindowsXPがインストールされている。ウルトラベースを外した状態でX40を起動すると、GRUB画面はあらわれず、直接WindowsXPが起動する。
参考記事
「複数のOSを使う(3)GRUBを使ったデュアルブート,GRUBの設定」(Ubuntu Weekly Recipe 第97回 村田信人 2009年11月18日)
「Grub 2 入門」(経済学101 青木理音)