次の方法で共有


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

    仮想マシンのブートの概要

    1. 不明なデバイス
      ブート ローダーでオペレーティング システムが読み込まれませんでした。
    2. SCSI ディスク (0,0)
      ブート ローダーでオペレーティング システムが読み込まれませんでした。
    3. SCSI ディスク (0,1)
      ブート ローダーでオペレーティング システムが読み込まれませんでした。
    4. ネットワーク アダプター (000D3A4DD64D)
      ブート イメージが見つかりませんでした。

    オペレーティング システムが読み込まれていませんでした。 仮想マシンが正しく構成されていない可能性があります。 VM を終了して構成し直すか、[再起動] をクリックして現在のブート シーケンスをもう一度再試行します。

    UEFI ブート イメージが見つからない場合の Hyper-V エラー メッセージのスクリーンショット。

  • エラー 2

    IPv4 経由で PXE を開始する

    HYPER-V エラーから PXE ブートの問題への移行のスクリーンショット。

トラブルシューティングを行う前に

シナリオ 1: ブート イメージ内の UEFI パーティションが見つからない、およびシナリオ2: ブート イメージ内の UEFI パーティションが破損している場合に必要なオフライン VM 修復を実行するには、Azure CLI または Azure Cloud Shellにアクセスできることを確認します。

シナリオ 1: ブート イメージに UEFI パーティションがありません

UEFI ブート ローダー パーティションが見つからないか削除されている場合、第 2 世代の Linux VM は起動に失敗します。

この問題を解決するには、次の手順を実行します。

  1. az vm repair create コマンドを使用して、修復 VM を作成します。 修復 VM には、機能しない VM の OS ディスクのコピーがアタッチされます。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」を参照してください。

  2. 次のコマンドを使用してパーティションを再作成します。

    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
  3. パーティションが再作成されたら、az vm repair restore コマンドを使用して、修復された OS ディスクを VM の元の OS ディスクとスワップして VM を復元 します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。

シナリオ 2: ブート イメージ内の UEFI パーティションが破損している

UEFI ブート パーティションが破損している場合、第 2 世代 Linux VM の起動に失敗します。 この問題を解決するには、次の手順を実行します。

  1. az vm repair create コマンドを使用して、修復 VM を作成します。 修復 VM には、機能しない VM の OS ディスクのコピーがアタッチされます。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」を参照してください。

  2. 次のコマンドを使用して、破損したパーティションをクリーンアップします。

    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」を参照してください。
  3. パーティションがクリーンアップされたら、az vm repair restore コマンドを使用して、修復された OS ディスクを VM の元の OS ディスクとスワップして VM を復元 します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。

シナリオ 3: /boot パーティションの内容全体が削除される

/boot パーティション全体またはその他の重要な内容が見つからないので復旧できない場合は、バックアップから VM を復元する唯一のオプションです。 詳細については、「Azure portalで Azure VM データを復元する方法」を参照してください。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。