いろいろテスト用にと、かなり古い VAIO VGN-NW71FB に Windows7, Ubuntu, Plamo を入れてマルチブートにしているのですが、Plamo を 7 に入れ替えようと、かなり初歩的なミスでパーティションを間違えたらしく、どの OS も起動できなくなってしまいました。
01grub rescue> がでたが…
まず何をやってしまったかを整理しますと、この VAIO は次のようにパーティションが切ってあります。
- sda1~3 は Windows7
- sda5 は Plamo
- sda6 は swap
- sda7 は ubuntu
この Plamo を入れ替えようと、パーティションを間違えて sda7 を書き換えてしまったということです。で、インストールも終わり再起動をかけますと、grub rescue>
のプロンプトとなり、この時やっとミスに気づいたわけです。
この grub rescue>
は初めて見ましたのでググりますと、そこから OS を起動する記事はたくさんヒットするのですが、grub と何が違うのかとかの記事がなかなか見つからず、やっと次の記事にたどり着き、
それによりますと、
深刻な問題があるときは (例: GRUB が必要なファイルを見つけられない)、代わりに “rescue” シェルが出ます
rescue シェルは通常のシェルの制限されたサブセットで、使える機能が少なくなっています。rescue シェルが出てきた時は、まず “normal” モジュールの挿入を試して、”normal” シェルを起動してみて下さい
ということがわかりました。
ところが、今回の場合はもう ubuntu を立ち上げることは出来ませんし、grub 自体も壊れてしまっているようで、ここから plamo を立ち上げることも出来ない状態ということになります。
02USBメモリーから grub を立ち上げる
さて、どうするかということで、もう一度、plamo も ubuntu も入れ直せばそれでいいのですが、ふと、grub をインストールした USBメモリーがあることを思い出しました!
USBメモリを差し込み電源を入れますと、こんな画面が立ち上がります。
grub>
が立ち上がればこちらのものです。
grub> プロンプトから OS を起動する
grub >
プロンプトはタブ補完もヒストリーも使えますので通常のターミナルのように使えます。ただ、キーボード配列が異なりますので記号類はあれこれ押して確かめましょう。
grub> ls (hd0) (hd0,msdos1) (hd1) (hd1,msdos7) (hd1,msdos6) (hd1,msdos5) (hd1,msdos3) (hd1,msdos2) (hd1,msdos1) grub> ls (hd1,msdos5)/boot vmlinuz-4.14.44_plamo64 (略) grub> ls (hd1,msdos7)/boot vmlinuz-4.18.0-20-generic (略)
ls コマンドが使えますのでパーティションやディレクトリを見てみればどこに何が入っているかわかります。(hd0) は USBメモリーです。
Plamo linux の場合
grub> set root=(hd1,msdos5) grub> linux /boot/vmlinuz-4.14.44_plamo64 root=/dev/sda5 grub> boot
Plamo は initrd.img を使っていないようです。こじまみつひろさんの日記によりますと
○Plamo-7.1のinitrd対応について
従来、Plamo Linuxでは、起動回りの処理を簡単にするため、initrd は使わないようにしていました。
しかしながら、昨今のカーネルの多機能化や周辺機器の多様化に伴ない、 カーネルにどのドライバを組み込んでいいのかがよく分からなくなってきたため(苦笑)、 Plamo-7.1からはHDD等のブロックデバイスやファイルシステム回りのドライバはinitrd経由で組み込むようにしました。
とあり、7.1(すでにリリースされている)からは initrd を使っているとのことです。ここら辺りまで来ますと難しくてよくわかりません。
Ubuntu の場合
grub> set root=(hd1,msdos7) grub> linux /boot/vmlinuz-4.18.0-20-generic root=/dev/sda7 grub> initrd /boot/initrd.img-4.18.0-20-generic grub> boot
Windows の場合
grub> set root=(hd1,msdos2) grub> chainloader +1 grub> boot
03Grub 再インストール
Plamo からでも Ubuntu からでも
$ sudo grub-install /dev/sda
とすれば、こわれた Grub をインストールできます。
Grub を起動できる USBメモリーは一家に一台ですね。