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.
Identifique si la máquina virtual llega al shell de emergencia de dracut.
Intente solucionar el problema mediante la consola serie de Azure.
Nota:
No todos los problemas se pueden solucionar mediante la consola serie de Azure.
- Desencadene Reiniciar máquina virtual (duro) desde la consola serie.
- Interrumpa la máquina virtual en el menú de GRUB con la tecla ESC .
- Seleccione E para modificar la primera entrada del kernel en el menú grub.
- 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:- Ruta de acceso del dispositivo raíz incorrecta en el archivo de configuración de GRUB, UUID incorrecto o nombre del volumen raíz.
- Ruta de acceso del dispositivo de intercambio incorrecta en el archivo de configuración de GRUB.
- Parámetros duplicados en el archivo de configuración de GRUB.
- Cualquier error de escritura obvio.
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á.
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.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.
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.
Vaya a las secciones siguientes para resolver problemas específicos:
Una vez resuelto el problema de arranque relacionado con dracut/initramfs, realice las siguientes acciones:
- Salga de chroot.
- Desmonte la copia de los sistemas de archivos de la máquina virtual de rescate/reparación.
- 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. - 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.
Si está dentro de chroot en una máquina virtual de reparación o rescate:
- Siga el paso 1 en Solución de problemas sin conexión.
- Valide el
/etc/default/grub
archivo, laGRUB_CMDLINE_LINUX
entrada y busque elroot=
parámetro en caso de que se codifique de forma rígida en el archivo de configuración. - Reinstale GRUB y regenere el fichero de configuración de GRUB.
Si está en la consola serie de Azure:
- Siga el paso 3 en Solución de problemas en línea.
- Valide la
linux16
línea y, a continuación, busque elroot=
parámetro y corrija. - Seleccione Ctrl+X para arrancar la máquina virtual.
- Una vez que la máquina virtual se inicie correctamente, modifique el
/etc/default/grub
archivo, corrija elroot
parámetro y actualice el archivo de configuración de GRUB, como se indica en Reinstalación de GRUB y regeneración del 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 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:
Si está dentro de chroot en una máquina virtual de reparación o rescate:
- Siga el paso 1 en Solución de problemas sin conexión.
- Edite el
/etc/default/grub
archivo, vaya a laGRUB_CMDLINE_LINUX
entrada, busque elrd.lvm.lv=VG/SwapVol
parámetro y, a continuación, quítelo de la configuración. - Reinstale GRUB y regenere el fichero de configuración de GRUB.
Si está en la consola serie de Azure:
- Siga el paso 3 en Solución de problemas en línea.
- Vaya a la línea a partir
linux
de , busque elrd.lvm.lv=VG/SwapVol
parámetro y quítelo. - Seleccione Ctrl+X para arrancar la máquina virtual.
- Una vez que la máquina virtual se inicia correctamente, modifique el archivo, quite el
rd.lvm.lv=VG/SwapVol
parámetro y, a continuación, actualice el archivo de configuración de GRUB, como se indica en la sección Reinstalación de GRUB y regeneración del archivo de configuración de GRUB./etc/default/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:
- Siga el paso 1 en Solución de problemas sin conexión.
- Valide el
/etc/default/grub
archivo y laGRUB_CMDLINE_LINUX
entrada. - Busque parámetros duplicados y quítelos.
- Actualice el archivo de configuración de GRUB. Para obtener más información, consulte Reinstalación de GRUB y regeneración del archivo de configuración de GRUB.
Si está en la consola serie de Azure:
- Siga el paso 3 en Solución de problemas en línea.
- Valide la
linux16
línea, busque parámetros duplicados y quítelos. - Seleccione Ctrl+X para arrancar la máquina virtual.
- Una vez que la máquina virtual se inicie 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 Reinstalación de GRUB y regeneración del 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.
Siga el paso 1 en Solución de problemas sin conexión.
Para identificar los problemas, ejecute los siguientes comandos y eche un vistazo a las salidas del comando.
Identifique qué dispositivo corresponde al disco del sistema operativo y compruebe si se detecta como PV:
lsblk pvs
Valide si se detecta el
rootvg
VG:vgs
Valide si se detecta el LV:
lvs
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.
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:
- Siga el paso 1 en Solución de problemas sin conexión.
- Vuelva a generar initramfs que faltan manualmente.
- 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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de