Azure Linux 仮想マシンでの UEFI ブート エラーのトラブルシューティング
注:
この記事で参照されている CentOS は Linux ディストリビューションであり、End Of Life (EOL) に到達します。 使用を検討し、それに応じて計画します。 詳細については、「 CentOS End Of Life ガイダンス」を参照してください。
Azure Marketplaceの Linux パートナー イメージは、BIOS 第 1 世代ブートと Unified Extensible Firmware Interface (UEFI) 第 2 世代ブートの両方にタグ付けされ、構成されます。
第 2 世代 Linux 仮想マシン (VM) を Azure にデプロイすると、UEFI ブート エラーが発生する可能性があります。 この記事では、UEFI ブート エラーが発生する一部のシナリオについて説明し、ソリューションを提供します。
現象
第 2 世代 Linux VM を Azure にデプロイすると、ブートが失敗し、サーバーにアクセスできなくなります。
UEFI ブート エラーを特定する
Azure ブート 診断を使用して、VM の現在の状態を確認します。
ブート 診断スクリーンショットは、次のエラー メッセージを示しています。
エラー 1
仮想マシンのブートの概要
- 不明なデバイス
ブート ローダーでオペレーティング システムが読み込まれませんでした。 - SCSI ディスク (0,0)
ブート ローダーでオペレーティング システムが読み込まれませんでした。 - SCSI ディスク (0,1)
ブート ローダーでオペレーティング システムが読み込まれませんでした。 - ネットワーク アダプター (000D3A4DD64D)
ブート イメージが見つかりませんでした。
オペレーティング システムが読み込まれていませんでした。 仮想マシンが正しく構成されていない可能性があります。 VM を終了して構成し直すか、[再起動] をクリックして現在のブート シーケンスをもう一度再試行します。
- 不明なデバイス
エラー 2
IPv4 経由で PXE を開始する
トラブルシューティングを行う前に
シナリオ 1: ブート イメージ内の UEFI パーティションが見つからない、およびシナリオ2: ブート イメージ内の UEFI パーティションが破損している場合に必要なオフライン VM 修復を実行するには、Azure CLI または Azure Cloud Shellにアクセスできることを確認します。
シナリオ 1: ブート イメージに UEFI パーティションがありません
UEFI ブート ローダー パーティションが見つからないか削除されている場合、第 2 世代の Linux VM は起動に失敗します。
この問題を解決するには、次の手順を実行します。
az vm repair create コマンドを使用して、修復 VM を作成します。 修復 VM には、機能しない VM の OS ディスクのコピーがアタッチされます。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」を参照してください。
次のコマンドを使用してパーティションを再作成します。
root@repair-centos7:~# gdisk /dev/sdc GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): p Disk /dev/sdc: 134217728 sectors, 64.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): <Disk GUID> Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 134217694 Partitions will be aligned on 2048-sector boundaries Total free space is 1019837 sectors (498.0 MiB) Number Start (sector) End (sector) Size Code Name 1 1026048 3123199 1024.0 MiB 0700 2 3123200 134215679 62.5 GiB 8E00 14 2048 10239 4.0 MiB EF02 Command (? for help): n Partition number (3-128, default 3): First sector (34-134217694, default = 10240) or {+-}size{KMGTP}: 10240 Last sector (10240-1026047, default = 1026047) or {+-}size{KMGTP}: 1026047 Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): ef00 Changed type of partition to 'EFI System' Command (? for help): p Disk /dev/sdc: 134217728 sectors, 64.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): <Disk GUID> Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 134217694 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 1026048 3123199 1024.0 MiB 0700 2 3123200 134215679 62.5 GiB 8E00 3 10240 1026047 496.0 MiB EF00 EFI System 14 2048 10239 4.0 MiB EF02 Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdc. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully.
重要
- をオペレーティング システム (OS) ディスク デバイスの対応するコピーに置き換えます
/dev/sdc
。 - パーティション番号の選択は、セクターの始点と終点が正しい限り関係ありません。 OS が不足しているセクターを判別できるため、正しいセクターの開始点と終了ポイントが選択されます。
- 終了セクターがディスク内の他のパーティションによって占有されていないことを確認します。 ここでは既定値を選択すれば十分です。
Azure Linux パートナー イメージには、次のパーティション番号、セクターの開始点、およびセクターエンドポイントがあります。
Linux OS ディストリビューション EFI パーティション番号 セクターの開始 セクターの終了 CentOS 7 15 10240 1024000 CentOS 8 15 10240 1024000 Debian 10 15 8192 262143 Debian 11 15 8192 262143 RHEL 7 1 2048 1026047 RHEL 8 15 10240 1024000 Oracle Linux 7 15 10240 1024000 Oracle Linux 8 15 10240 1024000 Ubuntu 18.04 15 10240 227327 Ubuntu 20.04 15 10240 227327 SLES 12 2 6144 1054719 SLES 15 2 6144 1054719 - をオペレーティング システム (OS) ディスク デバイスの対応するコピーに置き換えます
パーティションが再作成されたら、az vm repair restore コマンドを使用して、修復された OS ディスクを VM の元の OS ディスクとスワップして VM を復元 します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。
シナリオ 2: ブート イメージ内の UEFI パーティションが破損している
UEFI ブート パーティションが破損している場合、第 2 世代 Linux VM の起動に失敗します。 この問題を解決するには、次の手順を実行します。
az vm repair create コマンドを使用して、修復 VM を作成します。 修復 VM には、機能しない VM の OS ディスクのコピーがアタッチされます。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」を参照してください。
次のコマンドを使用して、破損したパーティションをクリーンアップします。
root@repair-centos7:~# gdisk -l /dev/sdc GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sdc: 134217728 sectors, 64.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): <Disk GUID> Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 134217694 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 1026048 3123199 1024.0 MiB 0700 2 3123200 134215679 62.5 GiB 8E00 3 10240 1026047 496.0 MiB EF00 EFI System 14 2048 10239 4.0 MiB EF02 root@repair-centos7:~# fsck.vfat -n /dev/sdc3 fsck.fat 4.1 (2017-01-24) 0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt. Automatically removing dirty bit. Leaving filesystem unchanged. /dev/sdc3: 19 files, 1438/63326 clusters root@repair-centos7:~# fsck.vfat /dev/sdc3 fsck.fat 4.1 (2017-01-24) 0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt. 1) Remove dirty bit 2) No action ? 1 Perform changes ? (y/n) y /dev/sdc3: 19 files, 1438/63326 clusters root@repair-centos7:~# fsck.vfat /dev/sdc3 fsck.fat 4.1 (2017-01-24) /dev/sdc3: 19 files, 1438/63326 clusters
重要
- を OS ディスク デバイスの対応するコピーに置き換えます
/dev/sdc
。 - 上記のファイル システムを実行する前に、常に OS ディスクのバックアップを作成し、
-n
オプションを使用してドライ ランチェック実行します。 - コマンドを
dosfsck
使用して、vfat ファイル システムのチェックを実行できます。 どちらのコマンドも同じです。 詳細については、「 fsck.vfat」を参照してください。
- を OS ディスク デバイスの対応するコピーに置き換えます
パーティションがクリーンアップされたら、az vm repair restore コマンドを使用して、修復された OS ディスクを VM の元の OS ディスクとスワップして VM を復元 します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。
シナリオ 3: /boot パーティションの内容全体が削除される
/boot パーティション全体またはその他の重要な内容が見つからないので復旧できない場合は、バックアップから VM を復元する唯一のオプションです。 詳細については、「Azure portalで Azure VM データを復元する方法」を参照してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示