Compartir a través de


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

Se aplica a: ✔️ Máquinas virtuales Linux

Nota

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final del ciclo de vida (EOL). Tenga en cuenta 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 se 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 dracut.

Requisitos previos

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

Identificación del problema de arranque dracut

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

Todas las máquinas virtuales con el problema de arranque se colocarán en el shell de emergencia dracut o initramfs y se mostrarán al final del registro de la 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 a una máquina virtual de recuperación. Asegúrese de cumplir los requisitos previos necesarios para la distribución. Para 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 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 el reinicio de la máquina virtual (Hard) desde la consola serie.
    2. Interrumpa la máquina virtual en el menú GRUB con la clave ESC .
    3. Seleccione E para modificar la primera entrada del kernel en el menú GRUB.
    4. Vaya a la línea y, a continuación, valide y corrija la configuración incorrecta de GRUB de la linux16 siguiente manera:
  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 volverá a 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 Reinstalar GRUB y volver a generar el 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. Use comandos de reparación de máquina virtual para crear una máquina virtual de reparación que tenga una copia del disco del sistema operativo de la máquina virtual afectada conectado. Monte la copia de los sistemas de archivos del sistema operativo en la máquina virtual de reparación mediante chroot.

    Nota

    Como alternativa, puede crear una máquina virtual de rescate manualmente mediante el Azure Portal. Para más información, consulte Solución de problemas de una máquina virtual Linux mediante la conexión del disco del sistema operativo a una máquina virtual de recuperación mediante el 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 o reparación.
    3. Ejecute el az vm repair restore comando para intercambiar el disco del sistema operativo reparado con el disco del sistema operativo original de la máquina virtual. Para más información, consulte Paso 5 en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.
    4. Valide si la máquina virtual puede arrancar; para ello, examine la consola serie de Azure o intente conectarse a la máquina virtual.

La máquina virtual cifrada con ADE no se puede arrancar porque VFAT está deshabilitado

Para obtener más información, consulte Máquinas virtuales cifradas con ADE que no se arrancan.

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 No se pudo incluir el controlador de Hyper-V en el disco RAM inicial al usar 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 dracut. Asegúrese de que este parámetro no está codificado de forma codificada 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 root=/dev/*** de acceso raíz del archivo de configuración de GRUB es correcta. Asegúrese de que se usa la ruta de acceso del dispositivo adecuada.

  • Si está 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. Valide el /etc/default/grub archivo, la GRUB_CMDLINE_LINUX entrada y busque el root= parámetro en caso de que esté codificado de forma dura en el archivo de configuración.
    3. Vuelva a instalar GRUB y vuelva a generar el archivo de configuración de GRUB.
  • Si está en la consola serie de Azure:

    1. Siga el paso 3 en Solución de problemas en línea.
    2. Valide la linux16 línea y busque el root= parámetro y corrijalo.
    3. Seleccione Ctrl+X para arrancar la máquina virtual.
    4. Una vez que la máquina virtual se inicia correctamente, modifique el /etc/default/grub archivo, corrija el root parámetro y actualice el archivo de configuración de GRUB, como se indica en Reinstalar GRUB y volver a generar el archivo de configuración de GRUB.

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 sea /dev/mapper/osencrypt.
  • En 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 entre reinicios y no son persistentes en Linux. Para más información, consulte Solución de problemas de cambios en el nombre del 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 de que la sintaxis es root=UUID=xxx-yyy-zzz.

Ruta de acceso del dispositivo de intercambio incorrecta 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 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 localizar 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 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 acceso de intercambio en el archivo de configuración de GRUB (/etc/default/grub) y quítela. Para ello, use uno de los siguientes métodos:

  • Si está 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. Edite el /etc/default/grub archivo, vaya a la GRUB_CMDLINE_LINUX entrada, busque el rd.lvm.lv=VG/SwapVol parámetro y quítelo de la configuración.
    3. Vuelva a instalar GRUB y vuelva a generar el archivo de configuración de GRUB.
  • Si está en la consola serie de Azure:

    1. Siga el paso 3 en Solución de problemas en línea.
    2. Vaya a la línea a partir de linux, busque el rd.lvm.lv=VG/SwapVol parámetro y quítelo.
    3. Seleccione Ctrl+X para arrancar la máquina virtual.
    4. Una vez que la máquina virtual se inicia correctamente, modifique el /etc/default/grub archivo, quite el rd.lvm.lv=VG/SwapVol parámetro y actualice el archivo de configuración de GRUB, como se indica en la sección Reinstalar GRUB y volver a generar el archivo de configuración de GRUB.

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:

  • Si está 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. Valide el /etc/default/grub archivo y la GRUB_CMDLINE_LINUX entrada.
    3. Busque parámetros duplicados y quítelos.
    4. Actualice el archivo de configuración de GRUB. Para obtener más información, vea Reinstalar GRUB y volver a generar el archivo de configuración de GRUB.
  • Si está en la consola serie de Azure:

    1. Siga el paso 3 en Solución de problemas en línea.
    2. Valide la linux16 línea, busque parámetros duplicados y quítelos.
    3. Seleccione Ctrl+X para arrancar la máquina virtual.
    4. Una vez que la máquina virtual arranca correctamente, modifique el /etc/default/grub archivo en consecuencia, corrija los problemas de configuración identificados anteriormente y actualice el archivo de configuración de GRUB, como se indica en Reinstalar GRUB y volver a generar 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 de Solución de problemas de arranque de máquinas virtuales Linux debido a errores del sistema de archivos: realizar la reparación del sistema de archivos.

Problemas con la activación de LVM

Algunos problemas pueden producirse al acceder al volumen físico de 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 un 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 VG de rootvg solo tiene un único 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 2 PVs en el VG rootvg 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 de rootvg ya no son accesibles. Para resolver este problema, vuelva a adjuntar el disco original a la máquina virtual y reinícielo.

  4. Si el PV es irrecuperable, realice una restauración a partir de la copia de seguridad.

Falta la partición raíz

El sistema de archivos raíz puede ser inaccesible debido a algunos problemas que se producen en el nivel de partición durante las operaciones de cambio de tamaño de 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 para cada una de las particiones originales (y no se realizan más modificaciones en el sistema, como la creación de nuevos sistemas de archivos), vuelva a crear las particiones mediante 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 provoca 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 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 manualmente initramfs que faltan.
  3. Reinicie la máquina virtual para confirmar si es capaz de arrancar.

Pasos siguientes

En caso de que el error de arranque específico no sea un problema 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.