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
- Dispositivo sconosciuto
Il caricatore di avvio non ha caricato un sistema operativo. - Disco SCSI (0,0)
Il caricatore di avvio non ha caricato un sistema operativo. - Disco SCSI (0,1)
Il caricatore di avvio non ha caricato un sistema operativo. - 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.
- Dispositivo sconosciuto
Errore 2
Avviare PXE su IPv4
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:
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.
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 - Sostituire
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:
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.
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.
- Sostituire
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.