EC2上のUbuntuのアップグレード中にGRUBの設定で止まった時の対処方法

2021年10月15日

Configuring grub-pc

Amazon EC2 上で稼働させている Ubuntu 16.04 を 18.04 にアップグレードしている途中で Configuring grub-pc と表示されて選択を求められました。どれを選択すればよかったのか分からなかったので調べたことをメモしておきます。

目次

  1. Configuring grub-pc ダイアログの表示
  2. なんらかの理由で GRUB ブートローダを正常に検出できなかったらしい
  3. GRUB とは
  4. ルートブロックデバイスの /dev/nvme0n1 を選択

Configuring grub-pc ダイアログの表示

Upgrade - Introduction | Ubuntu の手順に従って Ubuntu 16.04 から 18.04 にアップグレードを行っていたところ、sudo do-release-upgradeコマンドを実行している途中に Configuring grub-pc ダイアログが出てきました。

─┤ Configuring grub-pc ├─

The GRUB boot loader was previously installed to a disk that is no longer present, or whose unique identifier has changed for some reason. It is important to make sure
that the installed GRUB core image stays in sync with GRUB modules and grub.cfg. Please check again to make sure that GRUB is written to the appropriate boot devices. 

If you're unsure which drive is designated as boot drive by your BIOS, it is often a good idea to install GRUB to all of them. 

Note: it is possible to install GRUB to partition boot records as well, and some appropriate partitions are offered here. However, this forces GRUB to use the blocklist
mechanism, which makes it less reliable, and therefore is not recommended.

GRUB install devices:
 
  [ ] /dev/nvme0n1 (161061 MB; ???)                                                                                                
  [ ] - /dev/nvme0n1p1 (161053 MB; /)

なんらかの理由で GRUB ブートローダを正常に検出できなかったらしい

メッセージには以下のようにかかれています。

  • なんらかの理由で GRUB ブートローダーを正常に検出できませんでした。
  • GRUB コアイメージが適切なブートデバイスに書き込まれていることを確認してください。
  • もし BIOS でどのドライブがブートドライブに指定されているか分からない場合は、すべてのドライブに GRUB をインストールするのは良い案です。
  • 注意書きとして、GRUB をパーティションブートレコードにもインストールすることは可能で、ここにはいくつかの適切なパーティションが提供されています。しかし、この場合、GRUB はブロックリストメカニズムを使用しなければなりません。これは信頼性にかけるので推奨されません。

GRUB とは

GRUB について調べてみると、Ubuntu のデフォルトのブートローダーであることが分かりました。ブートローダーは、コンピュータを起動したときに呼び出されて OS を起動するときに使用されます。
Grub2 - Community Help Wiki

EC2 上で稼働させている Ubuntu の AMI は HVM 仮想化タイプを利用しています。Linux AMI 仮想化タイプ - Amazon Elastic Compute Cloud に HVM AMI の起動プロセスについて説明があります。

HVM AMI は、完全に仮想化された一連のハードウェアを備えており、イメージのルートブロックデバイスのマスターブートレコードを実行することによって起動します。

Linux AMI 仮想化タイプ - Amazon Elastic Compute Cloud

このため、ルートブロックデバイス上に GRUB ブートローダーをインストールし、AWS が提供する仮想 BIOS から読み込める状態にすればよいと予想できます。

ルートブロックデバイスの /dev/nvme0n1 を選択

Configuring grub-pc でルートブロックデバイスを選択

以上の情報から、上記の画像のように、起動ディスクのルートブロックデバイスである /dev/nvme0n1 を指定して先に進みました。 アップグレードの最後で再起動するので、その後 Ubuntu が正常に起動すれば大丈夫です。

またここで、下のパーティションのほう /dev/nvme0n1p1 も選択可能でしたが、注意書きに非推奨と書かれていたので選択をしませんでした。

ちなみに、ここで何も選択せずに先に進むと、「本当に GRUB をインストールしないの?」というメッセージがでてきて、「No」を押すと再びこの画面が表示されます。未確認ですが GRUB のインストールをスキップすると OS が起動しなかったのではないかと思います。

その他参考にしたサイト

-技術ブログ
-