grub rescueが表示されたのでブートUSBでgrubを修復してみる
Ubuntu 14からUbuntu 18へアップデートするとgrubが壊れてしまい「grub rescue」が表示されるようになりました。
「grub rescue」が表示されたままではapt-getコマンドどころかsudoコマンドも使用できなので、ブートUSBによる復旧方法をメモとして残します。
grub rescueが表示されてしまったら
grub rescueが表示されてしまったらまずは「ls」コマンドを打ち込み、linuxが入っている領域を確認します。
例えば、以下のように打ち込むことで領域の中身を確認することができます。
ls (hd0,msdos1)/
注意しなければならない点は、「(hd0,msdos1)」の後ろに「/」を入れる点です。
これを「ls」で表示されるすべての領域に対して行い、「boot」ディレクトリのある領域を探し出してメモを行います。
なお、今回は「md1,msdos7」が「boot」のある領域でした。
UbuntのブートUSBを作成手順
UbuntuのブートUSBを作る方法は、Ubuntu公式サイトのチュートリアル Create a bootable USB stick on macOS にて案内されております。
起動可能なUbuntu USBスティックを使用すると、次のことができます。
- MacでもUbuntuをインストールまたはアップグレードする
- あなたのPCの設定に触れることなくUbuntuのデスクトップ体験を試す
- 借りたマシンやインターネットカフェからUbuntuを起動する
- 壊れた設定を修復または修正するには、USBスティックにデフォルトでインストールされているツールを使用してください。
起動可能なUSBスティックの作成は非常に簡単です。特に、USBスティックを一般的なWindowsまたはLinux PCで使用する場合は特にそうです。次の数ステップでプロセスをカバーします。
これを元に、ブートUSBのイメージの作成を行えば問題なさそうです。
Ubuntuイメージのダウンロード
今回は、以下のリンクより「Ubuntu 18.04.1 LTS」を選択しました。
バージョンは特に理由はありませんが、grubが入っているUbuntuのバージョンに合わせたほうが良いかもしれません。
最終的に、ブートUSBからマウントした上でコマンドを実行する必要ため、今回はおかしくなった「Ubuntu 18」と同じバージョンを選択してみました。
USBメモリを初期化する
Macの場合は、「ディスクユーティリティ」よりUSBのフォーマットを行うことができます。
フォーマットしたいUSBを差し込み、該当USBを選択後に「消去」ボタンを押下するだけでフォーマットすることができます。
今回は、以下の構成でUSBのフォーマットを行いました。
- フォーマット:MS_DOS(FAT)
- 方式:GUIDパーティションマップ
EtcherでブートUSBを作成する
ブートUSBを作成する方法は様々ですが、今回はオープンソースのブートUSB作成ツールである「Etcher」を使用します。
使い方は非常に簡単で以下の3ステップでブートUSBを作成することができます。
- 書き込むISOファイルを選択する
- 書き込み先ドライブを選択する
- Flash!を押下する
以上で、ブートUSBの作成は完了です。
grubを再インストール
ブートUSBをPCに差し込むことで、Ubuntuのデスクトップを表示することができます。
最後にマウントし、grubの再インストールを行うことで修復することができます。
マウントの仕方はこちらですが、「/dev/」配下は環境によってい異なります。
sudo mount /dev/sdb7 /mnt
grubの再インストールを行うコマンドはこちらです。
sudo grub-install --root-directory=/mnt /dev/sda
再起動後に無事にPCがOSの起動を行えるはずです。
Ubuntuを起動できるがgrubの一覧が表示されない場合
上の手順でUbuntuを起動できるようになったが、デュアルブートしていた別のOSの起動ができなくなった場合の対処方法です。
まず、「/etc/default/grub」を修正して、OS選択メニューを表示する設定へ変更します。
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT_STYLE=menu
最後に以下のコマンドでgrubを反映させることで、修正前のgrubメニューが表示されるはずです。
update-grub
以上で、ブートUSBによるgrubの修復方法が完了できるはずです。
1番最後ブーストUSBになってます
ブートUSBでは?