Risolvere gli errori di avvio UEFI nelle macchine virtuali Linux di Azure

Si applica a: ✔️ macchine virtuali di Linux

Nota

CentOS a cui si fa riferimento in questo articolo è una distribuzione Linux e raggiungerà End Of Life (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per altre informazioni, vedere Indicazioni sulla fine della vita di CentOS.

Le immagini partner Linux in Azure Marketplace sono contrassegnate e configurate sia per l'avvio bios di prima generazione che per l'avvio UEFI (Unified Extensible Firmware Interface) generazione 2.

Quando si distribuiscono macchine virtuali Linux di seconda generazione in Azure, è possibile che si verifichino errori di avvio UEFI. Questo articolo illustra alcuni scenari in cui si verificano errori di avvio UEFI e fornisce soluzioni.

Sintomi

Quando si distribuisce una macchina virtuale Linux di seconda generazione in Azure, l'avvio ha esito negativo e il server non è accessibile.

Identificare gli errori di avvio UEFI

Controllare lo stato corrente della macchina virtuale usando la diagnostica di avvio di Azure.

Lo screenshot della diagnostica di avvio mostra i messaggi di errore seguenti:

  • Errore 1

    Riepilogo dell'avvio della macchina virtuale

    1. Dispositivo sconosciuto
      Il caricatore di avvio non ha caricato un sistema operativo.
    2. Disco SCSI (0,0)
      Il caricatore di avvio non ha caricato un sistema operativo.
    3. Disco SCSI (0,1)
      Il caricatore di avvio non ha caricato un sistema operativo.
    4. Scheda di rete (000D3A4DD64D)
      Non è stata trovata un'immagine di avvio.

    Nessun sistema operativo caricato. La macchina virtuale potrebbe essere configurata in modo non corretto. Uscire e riconfigurare la macchina virtuale oppure fare clic su Riavvia per riprovare la sequenza di avvio corrente.

    Screenshot del messaggio di errore hyper-V per l'immagine di avvio UEFI mancante.

  • Errore 2

    Avviare PXE su IPv4

    Screenshot della transizione dell'errore hyper-V al problema di avvio PXE.

Operazioni preliminari alla risoluzione dei problemi

Per eseguire la riparazione offline della macchina virtuale necessaria per lo scenario 1: la partizione UEFI nell'immagine di avvio è mancante e lo scenario 2: la partizione UEFI nell'immagine di avvio è danneggiata, assicurarsi di avere accesso all'interfaccia della riga di comando di Azure o ad Azure Cloud Shell.

Scenario 1: Manca la partizione UEFI nell'immagine di avvio

Se la partizione del caricatore di avvio UEFI è mancante o eliminata, l'avvio della macchina virtuale Linux di seconda generazione non riuscirà.

Per risolvere il problema, seguire questa procedura:

  1. Usare il comando az vm repair create per creare una macchina virtuale di ripristino. La macchina virtuale di ripristino avrà una copia del disco del sistema operativo per la macchina virtuale non funzionale collegata. Per altre informazioni, vedere Ripristinare una macchina virtuale Linux usando i comandi di ripristino della macchina virtuale di Azure.

  2. Ricreare la partizione usando i comandi seguenti:

    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.
    

    Importante

    • Sostituire /dev/sdc con la copia corrispondente del dispositivo disco del sistema operativo.
    • La scelta del numero di partizione non è rilevante a condizione che i punti di inizio e fine del settore siano corretti. I punti di inizio e di fine del settore corretti vengono scelti perché il sistema operativo è in grado di determinare i settori mancanti.
    • Verificare che il settore finale non sia occupato da altre partizioni all'interno del disco. La scelta dei valori predefiniti dovrebbe essere sufficiente qui.

    Le immagini dei partner Linux di Azure hanno il numero di partizione, i punti di partenza del settore e i punti finali del settore seguenti:

    Distribuzione del sistema operativo Linux Numero di partizione EFI Inizio settore Fine settore
    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. Dopo aver ricreato la partizione, ripristinare la macchina virtuale scambiando il disco del sistema operativo riparato con il disco del sistema operativo originale della macchina virtuale usando il comando az vm repair restore . Per altre informazioni, vedere il passaggio 5 in Ripristinare una macchina virtuale Linux usando i comandi di ripristino della macchina virtuale di Azure.

Scenario 2: la partizione UEFI nell'immagine di avvio è danneggiata

Se la partizione di avvio UEFI è danneggiata, l'avvio della macchina virtuale Linux di seconda generazione non riuscirà. Per risolvere il problema, seguire questa procedura:

  1. Usare il comando az vm repair create per creare una macchina virtuale di ripristino. La macchina virtuale di ripristino avrà una copia del disco del sistema operativo per la macchina virtuale non funzionale collegata. Per altre informazioni, vedere Ripristinare una macchina virtuale Linux usando i comandi di ripristino della macchina virtuale di Azure.

  2. Pulire la partizione danneggiata usando i comandi seguenti:

    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
    

    Importante

    • Sostituire /dev/sdc con la copia corrispondente del dispositivo disco del sistema operativo.
    • Eseguire sempre un backup del disco del sistema operativo ed eseguire un'esecuzione secca con l'opzione -n prima di eseguire il controllo del file system indicato in precedenza.
    • Il dosfsck comando può essere usato per eseguire il controllo del file system vfat. Entrambi i comandi sono uguali. Per altre informazioni, vedere fsck.vfat.
  3. Dopo aver pulito la partizione, ripristinare la macchina virtuale scambiando il disco del sistema operativo riparato con il disco del sistema operativo originale della macchina virtuale usando il comando az vm repair restore . Per altre informazioni, vedere il passaggio 5 in Ripristinare una macchina virtuale Linux usando i comandi di ripristino della macchina virtuale di Azure.

Scenario 3: l'intero contenuto della partizione /boot viene eliminato

Se manca l'intera partizione /boot o altri contenuti importanti e non può essere ripristinato, il ripristino della macchina virtuale da un backup è l'unica opzione. Per altre informazioni, vedere Come ripristinare i dati delle macchine virtuali di Azure in portale di Azure.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.