grub> が表示されてUbuntuが起動できない

環境、経緯

  • 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つの情報が必要

  1. Ubuntuの/ (ルートパス)がどのパーティションにあるか
  2. カーネルイメージのパスと、それがあるドライブ名
  3. 初期RAMディスクのパス

1は分からなければ「ls (hd0,1)」、「ls (hd0,2)」、「ls (hd0,3)」などとコマンドを打ってそれっぽいルートパスを探す。

2, 3はespパーティションにあることが多いが何故か筆者は1と同じ場所にあった。

それぞれコマンドを打ち込む。

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

コメント

タイトルとURLをコピーしました