田舎者Yの日記

片田舎のバイク乗り・Linuxユーザ、つまり変わり者のブログ

Grub2の修復

 openSUSE を使っている。同じ HDD 内に Ubuntu 10.10と Windows7 を入れてマルチブートにしてあるのだが、openSUSE をインストールした後、Ubuntu が起動メニューから消えてしまった。私は以下の方法で再設定した。

Ubuntu 9.10 のGrub2修復 - Nagoya University Wiki
Grub2の再インストール
を参考にしました。ありがとうございました。

  1. Ubuntu 10.10 の 起動ディスクでシステム起動(私の場合は USBメモリをスタート・アップ・ディスクにしている)
  2. "Try Ubuntu" で Ubuntu を起動し(結構時間がかかる)、ターミナルを起動。
  3. sudo fdisk -l としてHDDの構成を確認し、grub.cfg があるパーティションを確認しておく。(ちなみに私の場合は sda5 であった)
  4. sudo mount /dev/sdXX /mnt (/mnt にマウント。sdXX は上記の項目による。私の場合は sda5)
  5. sudo mount --bind /dev /mnt/dev
  6. sudo chroot /mnt
  7. sudo update-grub (起動時の選択メニューが壊れていたようなので再設定した)
  8. sudo grub-install /dev/sdX (ここで HDD の mbr を書き換え。デバイス名が上と少し違うので注意。私の場合は /dev/sda )
  9. 後は /mnt をアンマウントして再起動。

 上記の解説で、私のHDDの /dev/sda5 には Ubuntu が入っている。(Ubuntuを優先している)openSUSE は /dev/sda6 に入れてあるのだが、openSUSE をアップデートしたら起動しなくなってしまった。PBR (Partition Boot Record) が書き換わってしまったのかもしれない。

 上記の設定定方法で最後にアンマウントする前に、
sudo grub-install --force /dev/sda6
 として openSUSE のパーティションの PBR を再設定したら起動するようになった。

 UbuntuopenSUSE を「同居」させるとこんなに面倒なのだろうか?後でMLで質問でもしてみようかな。

(追記)
openSUSE 11.3 はGrub2 ではなくて Grub でした。これが影響したのかな?? 今度はブートローダを他のものに変えられるか挑戦してみたい。