前回のエントリ で、パーティション変更の落とし穴があったことを書いたが、まだまだ落とし穴が待っていた。
その後、カーネルをアップデートしたところ、こんな入力を求められた。
What would you like to do about menu.lst?
ああ、menu.lstが手動で書き変えられているから、新しいカーネルの行をどう追加したらよいものか尋ねてきているのだな、ということは分かるのだが、肝心のオプションが妙ちくりんな日本語なので意味が分からない。
仮におかしくなっても、後でどうにでも直せるだろうと思い、とりあえず「パッケージメンテナのバージョンをインストール」を選択。きっと、現行のmenu.lstに最新のカーネルの行を追記するだけのオプションだろう、と。
カーネルアップデート完了後、ちゃんとmenu.lstの中身を確認すれば良かったのだが、確認せず再起動したところ、案の定grubで停止した。
LiveCDでubuntuを起動して、HDDのubuntuのmenu.lstを確認してみたところ、前回のパーティション変更に伴い修正したブートディスク情報がきれいに初期化されていた。追記ではなく、完全に初期化。何たる仕様。
そこで前回同様、hd(0,7)のように変更前のパーティション番号に戻ってしまっているものを、全てhd(0.5)のような新しいパーティション番号に再度修正する。
その後、MBRも書き換えなければならないのでgrub-installする。
前回 は、LiveCDでブートした上でHDDのubuntuを起動しgrub-installしろ、というwikiの指示に従ったのだが、そんなことをしなくても、grub-installのオプションを指定すればLiveCDからでもgrub-installが可能なようだ。
# sudo /usr/sbin/grub-install --root-directory=/media/disk /dev/sda
のように、--root-directoryに、HDDのubuntuの/(ルート)ディスクを指定してやればよい。
これで無事にHDDからubuntuを起動することができた。
ちなみに、これだけだと次回カーネルアップデートをする際も同じことが起きてしまう。これを防ぐには、menu.lstの中のgrootというパラメータを変更すれば良いようだ。
## groot=(hd0,7)
のようになっている箇所を、"hd0,5"など、新しいubuntuのルートパーティションに変えてやればよい(ちなみに、コメント#は消さなくてよい)とのことだが、まだテストはしていない。
このパラメータを使うのだろう、ということはすぐに推測できたが、まさか、頭に"#"がついていながら既にパラメータとして機能しているとは・・・予想外。