Compartir a través de


La máquina virtual Linux de Azure no se puede arrancar y entra en el shell de emergencia de dracut

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.

En este artículo se proporcionan soluciones a un problema en el que una máquina virtual Linux (VM) de Azure no puede arrancar porque el sistema de archivos del sistema operativo (SO) no es accesible desde RAMdisk. La máquina virtual llega al shell de emergencia de dracut.

Requisitos previos

Asegúrese de que la consola serie está habilitada y funciona en la máquina virtual Linux.

Cómo identificar el problema de arranque de dracut

Para identificar un problema de arranque de dracut, use el Azure Portal para ver la salida del registro de consola serie de la máquina virtual en el panel diagnósticos de arranque, panel de consola serie o use la CLI de AZ.

Todas las máquinas virtuales con el problema de arranque llegarán al shell de emergencia de dracut o initramfs y se mostrarán al final del registro de consola serie:

  • RHEL/CentOS/SLES/Oracle Linux:

    [  201.935612] dracut-initqueue[455]: Warning: dracut-initqueue timeout - starting timeout scripts
    [  201.941153] dracut-initqueue[455]: Warning: Could not boot.
             Starting Setup Virtual Console...
    [[0;32m  OK  [0m] Started Setup Virtual Console.
             Starting Dracut Emergency Shell...
    Warning: /dev/mapper/rootvg-rootlv does not exist
    
    Generating "/run/initramfs/rdsosreport.txt"
    
    
    Entering emergency mode. Exit the shell to continue.
    Type "journalctl" to view system logs.
    You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
    after mounting them and attach it to a bug report.
    
    
    dracut:/# 
    
  • Ubuntu:

    mdadm: No arrays found in config file or automatically
    done.
    Gave up waiting for root file system device.  Common problems:
     - Boot args (cat /proc/cmdline)
       - Check rootdelay= (did the system wait long enough?)
     - Missing modules (cat /proc/modules; ls /dev)
    ALERT!  /dev/mapper/osencrypt does not exist.  Dropping to a shell!
    
    
    BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.4) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
    (initramfs)
    

Solución de problemas en línea

Sugerencia

Si tiene una copia de seguridad reciente de la máquina virtual, restaure la máquina virtual desde la copia de seguridad para corregir el problema de arranque.

La consola serie es el método más rápido para resolver problemas. Permite corregir directamente el problema sin tener que presentar el disco del sistema en una máquina virtual de recuperación. Asegúrese de cumplir los requisitos previos necesarios para la distribución. Para obtener más información, consulte Consola serie de máquina virtual para Linux.

  1. Identifique si la máquina virtual llega al shell de emergencia de dracut.

  2. Intente solucionar el problema mediante la consola serie de Azure.

    Nota:

    No todos los problemas se pueden solucionar mediante la consola serie de Azure.

    1. Desencadene Reiniciar máquina virtual (duro) desde la consola serie.
    2. Interrumpa la máquina virtual en el menú de GRUB con la tecla ESC .
    3. Seleccione E para modificar la primera entrada del kernel en el menú grub.
    4. Vaya a la linux16 línea y, a continuación, valide y corrija la configuración incorrecta de GRUB como se indica a continuación:
  3. Después de modificar manualmente la configuración de GRUB, seleccione Ctrl+X para arrancar la máquina virtual.

    Cualquier modificación realizada en esta fase es una modificación no persistente. Si la máquina virtual puede arrancar, resuelva este problema en el archivo de configuración de GRUB o se repetirá.

  4. Una vez que la máquina virtual vuelva a estar en línea, corrija los problemas de configuración en el /etc/default/grub archivo de configuración y actualice la configuración de GRUB. Para ello, consulte Reinstalación de GRUB y regeneración del archivo de configuración de GRUB.

  5. Reinicie la máquina virtual para asegurarse de que puede arrancar sin intervención manual.

Solución de problemas sin conexión

Sugerencia

Si tiene una copia de seguridad reciente de la máquina virtual, restaure la máquina virtual desde la copia de seguridad para corregir el problema de arranque.

  1. En caso de que la consola serie de Azure no funcione en la máquina virtual específica o no sea una opción en la suscripción, solucione este problema mediante una máquina virtual de rescate o reparación. Utilice comandos de reparación de VM para crear una VM de reparación que tenga adjunta una copia del disco del SO de la VM afectada. Monte la copia de los sistemas de archivos del SO en la VM de reparación mediante chroot.

    Nota:

    Como alternativa, puede crear una VM de rescate manualmente utilizando el portal de Azure. Para más información, consulte Solución de problemas de una VM Windows mediante la conexión del disco de SO a una VM de recuperación mediante Azure Portal.

  2. Vaya a las secciones siguientes para resolver problemas específicos:

  3. Una vez resuelto el problema de arranque relacionado con dracut/initramfs, realice las siguientes acciones:

    1. Salga de chroot.
    2. Desmonte la copia de los sistemas de archivos de la máquina virtual de rescate/reparación.
    3. Ejecute el comando az vm repair restore para intercambiar el disco de SO reparado con el disco de SO original de la VM. Para obtener más documentación e instrucciones, vea el paso 5 en Reparar una máquina virtual de Windows mediante los comandos de reparación de máquinas virtuales de Azure.
    4. Valide si la máquina virtual puede arrancar echando un vistazo a la consola serie de Azure o intentando conectarse a la máquina virtual.

No se puede arrancar la máquina virtual cifrada de ADE porque VFAT está deshabilitado

Para obtener más información, consulte Máquinas virtuales cifradas de ADE que no se pueden arrancar.

Faltan controladores de Hyper-V

Si los controladores de Hyper-V incluidos en el kernel de Linux de todas las distribuciones modernas de Linux están deshabilitados, vuelva a habilitarlos y vuelva a generar la imagen initramfs/initrd. Para obtener más información, vea Escenario 3: Otros controladores de Hyper-V están deshabilitados.

Si la máquina virtual es Red Hat y se migra desde el entorno local, habilite los controladores de Hyper-V necesarios en la imagen initramfs. Para obtener más información, consulte El controlador de Hyper-V no se pudo incluir en el disco RAM inicial cuando se usa un hipervisor que no es de Hyper-V.

Configuración incorrecta de GRUB

El rd.break parámetro obliga a la máquina virtual a arrancar en el shell de emergencia de dracut. Asegúrese de que este parámetro no está codificado de forma rígida en el archivo de configuración de GRUB.

Ruta de acceso del dispositivo raíz incorrecta en el archivo de configuración de GRUB

Valide si la ruta de acceso root=/dev/*** raíz del archivo de configuración de GRUB es correcta. Asegúrese de que se usa la ruta de acceso del dispositivo adecuada.

Durante esta validación, asegúrese de lo siguiente:

  • En máquinas virtuales Ubuntu con cifrado del sistema operativo, asegúrese de que el nombre del dispositivo es /dev/mapper/osencrypt.
  • En las máquinas virtuales con el Administrador de volúmenes lógicos (LVM) en el disco del sistema operativo, el volumen raíz es /dev/mapper/rootvg-rootlv. La misma ruta de acceso se usa en máquinas virtuales de RHEL con el disco del sistema operativo ADE cifrado.
  • Asegúrese de que no se usan nombres de dispositivo en forma de /dev/sdX , ya que cambiarán en los reinicios y no son persistentes en Linux. Para obtener más información, consulte Solución de problemas de cambios de nombre de dispositivo de máquina virtual Linux.
  • Si se usan UUID, asegúrese de que se usa el UUID del sistema de archivos raíz adecuado y que la sintaxis es root=UUID=xxx-yyy-zzz.

Ruta de acceso incorrecta del dispositivo de intercambio en el archivo de configuración de GRUB

En este escenario, una máquina virtual no puede completar el proceso de arranque y entra en el shell de emergencia de dracut con un error similar al siguiente:

[  188.000765] dracut-initqueue[324]: Warning: /dev/VG/SwapVol does not exist
         Starting Dracut Emergency Shell...
Warning: /dev/VG/SwapVol does not exist

El archivo de configuración de GRUB de este ejemplo se establece para cargar un volumen lógico (LV) como intercambio con el parámetro rd.lvm.lv=VG/SwapVol. Sin embargo, la máquina virtual no puede encontrar este LV durante el proceso de arranque.

Es importante tener en cuenta que no se recomienda usar un dispositivo de intercambio de esta manera en máquinas virtuales Linux de Azure. Para obtener más información, consulte Creación de un archivo SWAP para una máquina virtual Linux de Azure.

Para resolver este problema, busque la ruta rd.lvm.lv=VG/SwapVol de intercambio en el archivo de configuración de GRUB (/etc/default/grub) y quítelo. Para ello, use uno de los métodos siguientes:

Parámetros duplicados en el archivo de configuración de GRUB

Valide si hay parámetros duplicados en el archivo de configuración de GRUB:

Daños en el sistema de archivos raíz

Cuando el sistema de archivos raíz está dañado, no se puede montar desde la imagen initrd/initramfs.

Para corregir los daños en el sistema de archivos raíz, siga las instrucciones que se indican en Solución de problemas de arranque de máquinas virtuales Linux debidos a errores del sistema de archivos: realizar la reparación del sistema de archivos.

Problemas con la activación de LVM

Pueden producirse algunos problemas al acceder al volumen físico lvm (PV), al grupo de volúmenes (VG) o al volumen lógico (LV). No se pueden solucionar desde la consola serie de Azure. Para resolverlos, use una máquina virtual de reparación o rescate.

  1. Siga el paso 1 en Solución de problemas sin conexión.

  2. Para identificar los problemas, ejecute los siguientes comandos y eche un vistazo a las salidas del comando.

    1. Identifique qué dispositivo corresponde al disco del sistema operativo y compruebe si se detecta como PV:

      lsblk
      pvs
      
    2. Valide si se detecta el rootvg VG:

      vgs
      
    3. Valide si se detecta el LV:

      lvs
      
  3. Solucione los siguientes errores comunes de LVM que provocan problemas con el acceso al volumen raíz:

    • PV desconocido cuando el rootvg VG solo tiene un solo PV (esta es la configuración estándar de Azure)

      La partición que contiene el PV se elimina, cambia de tamaño o se crea incorrectamente. Para resolver este problema, consulte Falta la partición raíz.

    • PV desconocido cuando se modifica el VG de rootvg y se divide en más de un disco

      Tener dos PV en el rootvg VG no es una configuración recomendada. En este escenario, el disco de datos se puede desasociar de la máquina virtual y los volúmenes lógicos rootvg ya no son accesibles. Para resolver este problema, vuelva a conectar el disco original a la máquina virtual y reinícielo.

  4. Si el PV no se puede recuperar, realice una restauración a partir de la copia de seguridad.

Falta la partición raíz

Es posible que no se pueda acceder al sistema de archivos raíz debido a algunos problemas que se producen en el nivel de partición durante las operaciones de cambio de tamaño de la partición u otros.

En este escenario, si ha documentado el diseño de la tabla de particiones original, con los sectores de inicio y finalización exactos de cada una de las particiones originales (y no se realizan modificaciones adicionales en el sistema, como la creación de nuevos sistemas de archivos), vuelva a crear las particiones con el mismo diseño original. Puede hacerlo con herramientas como fdisk (para tablas de particiones MBR) o gdisk (para tablas de particiones GPT) para obtener acceso al sistema de archivos inaccesible. Siga esta operación de recuperación desde una máquina virtual de reparación o rescate. Para obtener más información, consulte la sección Solución de problemas sin conexión .

Si este enfoque no funciona, se recomienda realizar una restauración a partir de la copia de seguridad.

Daños en initrd o initramfs

La imagen initrd/initramfs tiene algún nivel de daños, lo que hace que se produzca un error al montar el volumen raíz e iniciar el proceso de inicio del sistema operativo.

Para resolver este problema, siga estos pasos desde dentro de chroot en una máquina virtual de reparación o rescate:

  1. Siga el paso 1 en Solución de problemas sin conexión.
  2. Vuelva a generar initramfs que faltan manualmente.
  3. Reinicie la máquina virtual para confirmar si puede arrancar.

Pasos siguientes

En caso de que el error de arranque específico no sea un problema de dracut o initramfs, consulte Solución de problemas de errores de arranque de Azure Linux Virtual Machines para obtener más opciones de solución de problemas.

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.