ブート時の GRUB エラーを修正する

この文書は未保証です。ご自身の責任において実行してください。

USB に Linux をインストールしたら作業用のホストUbuntuが困った

以下の参考サイト通りに、USB に Linux をインストールしてみました。 起動できる USB はできたようですが、その後、 作業していたPC(Ubuntu22.04LTS)のGRUB がおかしくなりました。

なお 参考サイト では Ubuntu をインストールするパーティションとして 9GB を確保するようありますが、 どうやら Ubuntu がギリギリ入る容量のようです。 ギリギリだとその後のアップデートもできませんので、 容量が大きい USB (32GB以上など) を用いて、9GB とあるところを、 残りの容量すべてを使った一つのパーティションにしてしまう方が簡便かと思います。

参考サイト

症状

Ubuntu をインストールした USB を取り外してから ホストPCを起動すると真っ黒画面に以下のような文字列が出てそこから先に進みません。

GNU GRUB version x.xx
Minimal BASH-like line editing is supported. ...

grub>

とりあえず起動する方法

grub> プロンプトに ls と打ち込みます。 出てきた結果の中から (hdX,YYY) (X と YYYはそれぞれの環境によって異なります) を探し、 さらに (hdX,YYY)/boot/grub/grub.cfg があるものを探します。 見つかったらそれを configfile します。

configfile (hdX,YYY)/boot/grub/grub.cfg

これでホストPCのUbuntu が起動するはずです。 なお hdX と YYY の間は , (コンマ) のようです。

参考サイト

grub をインストール

先の作業を毎回ブート時にやるのも大変なので、根本的解決を試みます。 grub をインストールし直してあげれば良いらしく、 以下の参考サイト通りにやると直りました。 元々のホストPCが EFI か BIOS のどちらを使っているかによって方法が変わるようです。

  1. Live DVD や USB など、他のブート可能なメディアをホストPCに入れ Live Ubuntu を起動する

  2. EFI か BIOS かを調べるために、端末上で以下をタイプする
    sudo fdisk -l
    おそらくホストPCと Live Ubuntuの双方がリストに出ますが、 パーティション構成やディスク容量をもとに ホストPCのデバイス情報を拾います。 右端のタイプに EFI システムとあれば、EFI です。以後 とします。

  3. (EFIシステムに限る) 次をタイプします。
    sudo mount /dev/sda2 /mnt
    sudo mount /dev/sda1 /mnt/boot/efi
    sudo grub-install --boot-directory=/mnt/boot --bootloader-id=ubuntu --target=x86_64-efi --efi-directory=/mnt/boot/efi

  4. (非EFIシステムに限る) 次をタイプします。(未検証です)
    sudo mount /dev/sda2 /mnt
    sudo grub-install /dev/sda1
    参考サイトではパーティションの名前が上の仮定と異なっていますが、 説明文章からすると上の通りでいいように思います。(未保証)

  5. シャットダウンして Live DVD や USB を終了し、ホストPCから抜きます。 その後、ホストPCを再起動するといつもの起動画面になるはずです。
参考サイト
Last modified: Mon Jun 8 12:44:57 JST 2015