このトピックでは、UEFI インタラクティブシェルエラーで Linux ECS インスタンスの起動に失敗する原因と、その解決策について説明します。
現象
Linux ECS インスタンスを起動すると、オペレーティングシステムの起動に失敗します。VNC コンソールを使用してインスタンスに接続すると、UEFI インタラクティブシェル画面が表示されます。
UEFI Interactive Shell v2.2
EDK II
UEFI v2.70 (EDK II, 0x00010000)
Mapping table
BLK2: Alias(s):
PciRoot(0x0)/Pci(0x4,0x0)
BLK3: Alias(s):
PciRoot(0x0)/Pci(0x4,0x0)/HD(1,MBR,0x000B2D99,0x800,0x4FFCE25)
BLK0: Alias(s):
PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x0)
BLK1: Alias(s):
PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x1)
Press ESC in 1 seconds to skip startup.nsh or any other key to continue.
Shell> _
原因
このエラーは、以下の理由で発生します。
-
イメージが UEFI をサポートしていないにもかかわらず、インスタンスの起動モードが UEFI に設定されています。これは通常、カスタムイメージで発生します。この問題を解決するには、イメージの起動モードを BIOS に変更します。詳細については、「イメージの起動モードを BIOS に変更」をご参照ください。
-
イメージは UEFI をサポートしていますが、ファームウェアが破損しています。この問題を解決するには、UEFI ファームウェアを修復します。詳細については、「UEFI ファームウェアの修復」をご参照ください。
解決策
この問題を解決するには、次のセクションで説明するように、イメージの起動モードを変更するか、UEFI ファームウェアを修復してください。
イメージの起動モードを BIOS に変更
UEFI を必要としない場合、またはイメージが UEFI をサポートしていない場合は、カスタムイメージの起動モードを BIOS に変更し、そのイメージを使用して新しいインスタンスを作成します。
-
問題のある ECS インスタンスをリリースします。
詳細については、「インスタンスのリリース」をご参照ください。
-
イメージの起動モードを BIOS に変更します。
詳細については、「イメージの起動モードの変更」をご参照ください。
-
イメージからインスタンスを作成します。
詳細については、「カスタムイメージを使用したインスタンスの作成」をご参照ください。
-
インスタンスに接続します。接続に成功し、UEFI インタラクティブシェルエラーが表示されなくなった場合は、問題は解決です。
詳細については、「接続方法の概要」をご参照ください。
UEFI ファームウェアの修復
インスタンスタイプとイメージが UEFI をサポートしており、この起動モードを使用する場合は、次の手順に従ってファームウェアを修復してください。
-
問題のある ECS インスタンスからシステムディスクをデタッチし、正常な ECS インスタンスにデータディスクとしてアタッチします。
-
必要な EFI パッケージがインストールされているか、および
/boot/efi/EFI/centosディレクトリ内の EFI ファームウェアファイルが完全であるかを確認します。-
次のコマンドを実行して、インストールされている EFI パッケージを確認します。
rpm -qa |grep -i efiコマンドは、次のような出力を返します。
[root@hostname ~]# rpm -qa |grep -i efi grub2-efi-x64-2.02-0.87.el7.centos.6.x86_64 efibootmgr-17-2.el7.x86_64 efivar-libs-36-12.el7.x86_64この出力を、同じ Linux ディストリビューションを実行している正常なインスタンスのパッケージと比較します。
-
インストールされている EFI パッケージが一致する場合は、手順 2.b に進みます。
-
不足している EFI パッケージがある場合は、
sudo yum installコマンドを実行して、対応するパッケージをインストールします。たとえば、次のコマンドは grub2-efi-x64 パッケージをインストールします。
sudo yum install grub2-efi-x64-2.02-0.87.el7.centos.6.x86_64
-
-
次のコマンドを実行して、
/boot/efi/EFI/centosディレクトリ内の EFI ファームウェアファイルを確認します。cd /boot/efi/EFI/centos && llコマンドは、次のような出力を返します。
[root@hostname centos]# ll total 7020 -rwx------ 1 root root 134 Jul 31 2020 BOOT.CSV -rwx------ 1 root root 134 Jul 31 2020 BOOTX64.CSV drwx------ 2 root root 4096 Jun 16 2021 fonts -rwx------ 1 root root 5184 Jun 16 2021 grub.cfg -rwx------ 1 root root 1024 Jun 16 2021 grubenv -rwx------ 1 root root 1122120 Mar 17 2021 grubx64.efi -rwx------ 1 root root 1154640 Jul 31 2020 mmx64.efi -rwx------ 1 root root 1154640 Jul 31 2020 MokManager.efi -rwx------ 1 root root 1243864 Jul 31 2020 shim.efi -rwx------ 1 root root 1237824 Jul 31 2020 shimx64-centos.efi -rwx------ 1 root root 1243864 Jul 31 2020 shimx64.efiこの出力を、同じ Linux ディストリビューションを実行している正常なインスタンスの EFI ファームウェアファイルと比較します。
-
EFI ファームウェアファイルが一致する場合は、手順 3 に進みます。
-
不足している EFI ファームウェアファイルがある場合は、
sudo yum reinstallコマンドを実行して、対応するパッケージを再インストールします。次のコマンドを実行して、grub2-efi-x64 パッケージを再インストールします。
sudo yum reinstall grub2-efi-x64-2.02-0.87.el7.centos.6.x86_64
-
-
-
システムディスクを元の ECS インスタンスに再度アタッチします。
-
インスタンスに接続します。接続に成功し、UEFI インタラクティブシェルエラーが表示されなくなった場合は、問題は解決です。
詳細については、「接続方法の概要」をご参照ください。