Compartir a través de


Solución de errores de arranque de UEFI en máquinas virtuales Linux de Azure

Nota:

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final de la vida útil (EOL). Considere su uso y planifique en consecuencia. Para obtener más información, consulte Guía de fin de vida de CentOS.

Las imágenes de asociados de Linux en Azure Marketplace se etiquetan y configuran para el arranque de la generación 1 del BIOS y el arranque de la interfaz de firmware extensible unificada (UEFI) de la generación 2.

Al implementar máquinas virtuales Linux (VM) de generación 2 en Azure, es posible que se produzcan errores de arranque de UEFI. En este artículo se describen algunos escenarios en los que se producen errores de arranque de UEFI y se proporcionan soluciones.

Síntomas

Al implementar una máquina virtual Linux de generación 2 en Azure, se produce un error en el arranque y no se puede acceder al servidor.

Identificación de errores de arranque de UEFI

Compruebe el estado actual de la máquina virtual mediante el diagnóstico de arranque de Azure.

En la captura de pantalla de diagnósticos de arranque se muestran los siguientes mensajes de error:

  • Error 1

    Resumen de arranque de máquina virtual

    1. Dispositivo desconocido
      El cargador de arranque no cargó un sistema operativo.
    2. Disco SCSI (0,0)
      El cargador de arranque no cargó un sistema operativo.
    3. Disco SCSI (0,1)
      El cargador de arranque no cargó un sistema operativo.
    4. Adaptador de red (000D3A4DD64D)
      No se encontró una imagen de arranque.

    No se cargó ningún sistema operativo. Es posible que la máquina virtual esté configurada incorrectamente. Salga y vuelva a configurar la máquina virtual o haga clic en Reiniciar para volver a intentar la secuencia de arranque actual.

    Captura de pantalla del mensaje de error de Hyper-V para la imagen de arranque UEFI que falta.

  • Error 2

    Inicio de PXE a través de IPv4

    Captura de pantalla de la transición del error de Hyper-V a un problema de arranque PXE.

Antes de iniciar los pasos de la solución

Para realizar la reparación de máquina virtual sin conexión necesaria para el escenario 1: falta la partición UEFI en la imagen de arranque y el escenario 2: partición UEFI en la imagen de arranque está dañada, asegúrese de que tiene acceso a la CLI de Azure o a Azure Cloud Shell.

Escenario 1: Falta la partición UEFI en la imagen de arranque

Si falta o elimina la partición del cargador de arranque UEFI, la máquina virtual Linux de generación 2 no podrá arrancar.

Para resolver este problema, siga estos pasos:

  1. Use el comando az vm repair create para crear una máquina virtual de reparación. La máquina virtual de reparación tendrá una copia del disco del sistema operativo para la máquina virtual no funcional conectada. Para obtener más información, consulte Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

  2. Vuelva a crear la partición mediante los siguientes comandos:

    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

    • Reemplace por /dev/sdc la copia correspondiente del dispositivo de disco del sistema operativo (SO).
    • La elección del número de partición no importa siempre que los puntos inicial y final del sector sean correctos. Se eligen los puntos inicial y final del sector correctos porque el sistema operativo es capaz de determinar los sectores que faltan.
    • Asegúrese de que el sector final no está ocupado por ninguna otra partición dentro del disco. La elección de los valores predeterminados debe ser suficiente aquí.

    Las imágenes de asociados de Linux de Azure tienen el siguiente número de partición, puntos de inicio del sector y puntos finales del sector:

    Distribución del sistema operativo Linux Número de partición EFI Inicio del sector Sector End
    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. Una vez que se vuelva a crear la partición, restaure la máquina virtual intercambiando el disco del sistema operativo reparado con el disco del sistema operativo original de la máquina virtual mediante el comando az vm repair restore . Para obtener más información, consulte el paso 5 en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

Escenario 2: La partición UEFI en la imagen de arranque está dañada

Si la partición de arranque UEFI está dañada, la máquina virtual Linux de generación 2 no podrá arrancar. Para resolver este problema, siga estos pasos:

  1. Use el comando az vm repair create para crear una máquina virtual de reparación. La máquina virtual de reparación tendrá una copia del disco del sistema operativo para la máquina virtual no funcional conectada. Para obtener más información, consulte Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

  2. Limpie la partición dañada mediante los siguientes comandos:

    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

    • Reemplace por /dev/sdc la copia correspondiente del dispositivo de disco del sistema operativo.
    • Realice siempre una copia de seguridad del disco del sistema operativo y realice una ejecución en seco con la -n opción antes de realizar la comprobación del sistema de archivos mencionada anteriormente.
    • El dosfsck comando se puede usar para realizar la comprobación del sistema de archivos vfat. Ambos comandos son los mismos. Para obtener más información, consulte fsck.vfat.
  3. Una vez limpiada la partición, restaure la máquina virtual intercambiando el disco del sistema operativo reparado con el disco del sistema operativo original de la máquina virtual mediante el comando az vm repair restore . Para obtener más información, consulte el paso 5 en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

Escenario 3: Se elimina todo el contenido de la partición de arranque

Si falta toda la partición /boot u otro contenido importante y no se puede recuperar, la restauración de la máquina virtual desde una copia de seguridad es la única opción. Para obtener más información, consulte Cómo restaurar los datos de Azure VM en el portal de Azure.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.