grub2 1.98+20100617-1のバグを踏む。

どうしても外出中に元に戻す必要があったので、結果的には/var/cache/apt/archivesに残っていた古いdebパッケージで戻したのだが、MacBookだと色々めんどい上、MacBook5,2はさらにめんどいのでメモ。

MacBookではrEFIt経由でブートさせているので、grub自体は、MBRにインストールしているのではなく、/bootファイルシステムを割り当てている/dev/sda3にインストールしている。ここにインストールしているとgrub-setupに失敗する。

Next bootのときにGRUB2のプロンプトが表示される前の、

grub

というGRUBの1st stageの起動でこけてしまい、何もできず、という状況になる。

ワークアラウンドとして、grub-common, grub-pcを1.98+20100617-1から1.98+20100614-2にダウングレードした。MacBook 5,2の場合は、この手順がちと面倒。

  1. netinstのISOイメージをダウンロードし、CD-RWに焼く。
  2. まずMac OS Xを立ち上げ、焼いたCD-RWを抜き差しし、再起動。 [1]
  3. rEFItでCD-RWを選択し、インストールメニューが表示されたら、Rescue modeでtabキーを押し、”maxcpus=1”を付加して起動。 [2]
  4. 起動したら、/dev/sda4をルートファイルシステムとしてマウントし、/dev/sda3を/boot, /dev/sda6を/homeにマウントする。 [3]
  5. /var/cache/apt/archivesディレクトリに移動し、dpkg -i –dry-runでgrub-{pc,common}-1.98+20100614-2を試し、問題なければ、–dry-runを外して実行する。
  6. 次に、initramfsを再作成。update-initramfs -u -k 2.6.34を実行する。 [4]
  7. /home, /bootをアンマウントし、再起動。再起動と言ってもちゃんと停止しないので最後は電源ボタンで強制OFF。
  8. このまま起動しても、途中で失敗するので、Mac OS Xを立ち上げ、起動に失敗したら電源OFFし、バッテリーを一度外し、再度、OS Xを起動。起動できることを確認したら、再起動。

と、ここまでやれば今度はちゃんとGRUBからDebianがブートできる。今んとこ、新しくアップデートされていない模様なので、apt-get upgradeは実行せずに、アップグレード候補を個別にインストールしているのだが、grub-common, grub-pcを保留してしまえば良いのかな。

[1]この儀式やらないと、rEFItでCD-RWが認識されない。
[2]これをしないと、MacBook 5,2特有のバグでcoreを2つ使えないので、ブラックアウトして止まってしまう。
[3]/homeは個人的にスクリプトを置いているため。
[4]要らんかも。念のため。