環境、経緯
- WindowsとUbuntu 20のデュアルブート環境
- UbuntuをブータブルメディアからReinstallした
- BIOS起動オプションでWindowsを選べばWinが普通に起動
- BIOS起動オプションでUbuntuを選ぶとgrubコンソールが出現
どこのgrub.cfgを読み込んでいるか調べる(起動後に修正するとき使うため)
setコマンドで全ての環境変数が表示される。
筆者の環境では
cmdpath=(hd0,gpt1)/EFI/UBUNTUとなっているから、ディスク0のパーティション1の中の/EFI/UBUNTUからGrubを読み込んでいることがわかる。

Ubuntuを起動させる
起動には3つの情報が必要
- Ubuntuの/ (ルートパス)がどのパーティションにあるか
- カーネルイメージのパスと、それがあるドライブ名
- 初期RAMディスクのパス
1は分からなければ「ls (hd0,1)」、「ls (hd0,2)」、「ls (hd0,3)」などとコマンドを打ってそれっぽいルートパスを探す。
2, 3はespパーティションにあることが多いが何故か筆者は1と同じ場所にあった。
こちらも「ls (hd0,4)/boot」などと打ち込んでみて、vmlinuz-やinitrd.img-などから始まるファイルを探す。
この3つの情報を元に、以下のコマンドを打ち込む。
set root=(hd[ドライブ番号],[パーティション番号])
linuxefi [カーネルイメージのパス] root=[ドライブ名]
initrdefi [初期RAMディスクのパス]
最後にbootコマンドで起動させる。正しくできればGUIログイン画面が表示されるはず。

grub.cfgを書き換え修復
cmdpath=(hd0,gpt1)/EFI/UBUNTU がすでにわかっている。
(hd0,gpt1)のデバイス名は/dev/sda1であるので、適当に/mntフォルダにマウントした後、/mnt/EFI/ubuntu/grub.cfgが存在していることを確認し、
sudo grub-mkconfig -o /mnt/EFI/ubuntu/grub.cfg
というコマンドで修復する。

参考

grub.cfgが破損してOSが起動しなくなった場合の対応方法② - Qiita
前置き
前回、grub.cfgが破損した場合にバックアップファイルから復旧する方法を記事にしました。今回は、バックアップを取得していなかった場合の復旧方法についてです。
実施環境はESXi6.5のネステッド環境に、ゲストOSと...
GRUBについて
GNU GRUB Manual 2.06
GNU GRUB Manual 2.06
コメント