Arranque de máquinas virtuales Linux en rescate de GRUB
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 describen varias condiciones que provocan problemas de rescate de GRUB y se proporcionan instrucciones para solucionar problemas.
Durante el proceso de arranque, el cargador de arranque intenta localizar el kernel de Linux y entregar el control de arranque. Si no se puede realizar esta entrega, la máquina virtual (VM) entra en una consola de rescate de GRUB. El mensaje de la consola de rescate de GRUB no se muestra en el registro de la consola serie de Azure, pero se puede mostrar en la captura de pantalla de diagnóstico de arranque de Azure.
Identificación del problema de rescate de GRUB
Vea una captura de pantalla de diagnóstico de arranque en la página Diagnósticos de arranque de la máquina virtual de Azure Portal. Esta captura de pantalla ayuda a diagnosticar el problema de rescate de GRUB y a determinar si un error de arranque provoca el problema.
El texto siguiente es un ejemplo de un problema de rescate grub:
error: file '/boot/grub2/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
Solución de problemas de rescate de GRUB sin conexión
Para solucionar un problema de rescate de GRUB, se requiere 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.
Identifique el problema de rescate de GRUB. Cuando encuentre uno de los siguientes problemas de rescate de GRUB, vaya a la sección correspondiente para resolverlo:
Una vez resuelto el problema de rescate de GRUB, realice las siguientes acciones:
Desmonte la copia de los sistemas de archivos de la máquina virtual de rescate o reparación.
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.Compruebe si la máquina virtual puede empezar examinando la consola serie de Azure o intentando conectarse a la máquina virtual.
Si falta la partición /boot completa u otro contenido importante y no se puede recuperar, se recomienda restaurar la máquina virtual desde una copia de seguridad. Para más información, consulte Restauración de datos de máquina virtual de Azure en Azure Portal.
Consulte las secciones siguientes para obtener errores detallados, posibles causas y soluciones.
Nota
En los comandos mencionados en las secciones siguientes, reemplace por /dev/sdX
el dispositivo de disco del sistema operativo (SO) correspondiente.
Error: sistema de archivos desconocido
En la captura de pantalla siguiente se muestra el mensaje de error:
Este error puede estar asociado a uno de los siguientes problemas:
Daños en el sistema de archivos /boot.
Para resolver este problema, siga los pasos descritos en Corregir daños en el sistema de archivos /boot.
El cargador de arranque grub apunta a un disco o partición no válidos.
Para resolver este problema, vuelva a instalar GRUB y vuelva a generar el archivo de configuración de GRUB.
Problemas de tabla de particiones de disco del sistema operativo causados por un error humano.
Para resolver estos problemas, siga los pasos descritos en Error: No hay ninguna partición con recomendaciones para volver a crear la partición /boot si falta o se crea incorrectamente.
Corregir daños en el sistema de archivos /boot
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear la máquina virtual.
Consulte Solución de errores de daños en el sistema de archivos en Azure Linux para resolver los problemas de daños en la partición /boot correspondiente.
Vaya al paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Reinstalar GRUB y volver a generar el archivo de configuración de GRUB
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear la máquina virtual. Monte todos los sistemas de archivos necesarios, incluidos / y /boot en la máquina virtual de rescate/reparación y, a continuación, escriba el entorno chroot .
Vuelva a instalar GRUB y vuelva a generar el archivo de configuración de GRUB correspondiente mediante uno de los siguientes comandos:
Máquinas virtuales Linux RHEL/CentOS/Oracle 7.x/8.x sin UEFI (basada en BIOS- Gen1)
grub2-install /dev/sdX grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Máquinas virtuales Linux RHEL/CentOS/Oracle 7.x/8.x con UEFI (Gen2)
yum reinstall grub2-efi-x64 shim-x64 grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg sed -i 's/hd2/hd0/g' /boot/efi/EFI/redhat/grub.cfg
Si la máquina virtual ejecuta CentOS, reemplace por
redhat
centos
en la ruta de acceso absoluta del archivo grub.cfg /boot/efi/EFI/centos/grub.cfg.SLES 12/15 Gen1 y Gen2
grub2-install /dev/sdX grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Ubuntu 18.04/20.04
grub-install /dev/sdX update-grub
Vaya al paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Error 15: Archivo no encontrado
En la captura de pantalla siguiente se muestra el mensaje de error:
Para resolver el problema, siga estos pasos:
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear la máquina virtual. Monte todos los sistemas de archivos necesarios, incluidos / y /boot en la máquina virtual de rescate/reparación y, a continuación, escriba el entorno chroot .
Inspeccione el contenido del sistema de archivos /boot y determine lo que falta.
Si falta el archivo de configuración de GRUB, vuelva a instalar GRUB y vuelva a generar el archivo de configuración de GRUB.
Compruebe que los permisos de archivo en el sistema de archivos /boot sean correctos. Puede comparar los permisos mediante otra máquina virtual que ejecuta la misma versión de Linux.
Si falta la partición /boot completa u otro contenido importante y no se puede recuperar, se recomienda restaurar la máquina virtual desde una copia de seguridad. Para más información, consulte Restauración de datos de máquina virtual de Azure en Azure Portal.
Una vez resuelto el problema, vaya al paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Error: no se encontró el archivo '/boot/grub2/i386-pc/normal.mod'
En la captura de pantalla siguiente se muestra el mensaje de error:
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear uno. Monte todos los sistemas de archivos necesarios, incluidos / y /boot en la máquina virtual de rescate/reparación y, a continuación, escriba el entorno chroot .
Si no puede montar el sistema de archivos /boot debido a un error dañado, corrija los daños del sistema de archivos /boot.
Cuando se encuentre dentro de chroot, compruebe el contenido en el directorio /boot/grub2/i386-pc . Si falta el contenido, copie el contenido de /usr/lib/grub/i386-pc. Para ello, utilice los siguientes comandos:
ls -l /boot/grub2/i386-pc cp -rp /usr/lib/grub/i386-pc /boot/grub2
Si el contenido de la
/boot
partición está vacío, use los siguientes comandos para volver a crearlo:Nota
Los pasos siguientes se aplican a las máquinas virtuales Linux RHEL/CentOS/Oracle 7.x/8.x sin UEFI (basadas en BIOS - Gen1).
En el proceso chroot, vuelva a instalar el grub. Reemplace
/dev/sd[X]
en consecuencia por la copia correspondiente del disco del sistema operativo conectado a la máquina virtual de reparación o rescate:grub2-install /dev/sd[X]
Asegúrese de que
/etc/resolv.conf
tiene una entrada DNS válida para resolver el nombre del repositorio:cat /etc/resolv.conf
Vuelva a instalar el kernel:
yum reinstall $(rpm -qa | grep -i kernel)
Cree el archivo grub.cfg :
grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Continúe con el paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Error: ninguna partición de este tipo
En la captura de pantalla siguiente se muestra el mensaje de error:
Este error se produce en una máquina virtual basada en RHEL (Red Hat, Oracle Linux, CentOS) en uno de los escenarios siguientes:
- La partición /boot se elimina por error.
- La partición /boot se vuelve a crear mediante el uso de los sectores inicial y final incorrectos.
Solución: Volver a crear la partición /boot
Si falta la partición /boot, vuelva a crearla siguiendo estos pasos:
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear la máquina virtual.
Identifique si la tabla de particiones se crea como el tipo dos o GPT mediante el siguiente comando:
sudo fdisk -l /dev/sdX
Tabla de particiones dos
Tabla de particiones de GPT
Si la tabla de particiones tiene dos como tipo de tabla de partición, vuelva a crear /boot partition en dos sistemas. Si la tabla de particiones tiene GPT como tipo de tabla de partición, vuelva a crear /boot partition en sistemas GPT.
Asegúrese de que el cargador de arranque grub está instalado mediante el disco adecuado. Puede seguir los pasos descritos en Reinstalar GRUB y volver a generar el archivo de configuración de GRUB para instalarlo y configurarlo.
Continúe con el paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Volver a crear la partición /boot en dos sistemas
Vuelva a crear la partición /boot mediante el comando siguiente:
sudo fdisk /dev/sdX
Use los valores predeterminados en los sectores First y Last , y el tipo de partición (83). Asegúrese de que la tabla de particiones /boot está marcada como de arranque mediante la
a
opción de lafdisk
herramienta, como se muestra en la salida siguiente:sudo fdisk /dev/sdc The device presents a logical sector size that is smaller than the physical sector size. Aligning to a physical sector (or optimal I/O) size boundary is recommended, or performance may be impacted. Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1,3,4, default 1): 1 First sector (2048-134217727, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2099199, default 2099199): Using default value 2099199 Partition 1 of type Linux and of size 1 GiB is set Command (m for help): t Partition number (1,2, default 2): 1 Hex code (type L to list all codes): 83 Changed type of partition 'Linux' to 'Linux' Command (m for help): a Partition number (1,2, default 2): 1 Command (m for help): p Disk /dev/sdc: 68.7 GB, 68719476736 bytes, 134217728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000b7179 Device Boot Start End Blocks Id System /dev/sdc1 * 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 134217727 66059264 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
Después de volver a crear la partición /boot que falta, compruebe si se detecta el sistema de archivos /boot. Debería poder ver una entrada para
/dev/sdX1
(falta la partición /boot).sudo blkid /dev/sdX1
sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" TYPE="ext4"
Si el sistema de archivos /boot no está visible en
blkid
después de volver a crear la partición, significa que los datos /boot ya no existen. Debe volver a crear el sistema de archivos /boot (mediante el mismo UUID y el mismo formato del sistema de archivos que se encuentra en la entrada /etcetera/fstab /boot) y, a continuación , restaurar su contenido a partir de una copia de seguridad.
Volver a crear la partición /boot en sistemas GPT
Vuelva a crear la partición /boot mediante el comando siguiente:
sudo gdisk /dev/sdX
Use los valores predeterminados en los sectores First y Last , y el tipo de partición (8300), como se muestra en la salida siguiente:
sudo 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): n Partition number (1-128, default 1): 1 First sector (34-134217694, default = 1026048) or {+-}size{KMGTP}: Last sector (1026048-2050047, default = 2050047) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' 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): 6D915856-445A-4513-97E4-C55F2E1AD6C0 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 6076 sectors (3.0 MiB) Number Start (sector) End (sector) Size Code Name 1 1026048 2050047 500.0 MiB 8300 Linux filesystem 2 2050048 134215679 63.0 GiB 8E00 14 2048 10239 4.0 MiB EF02 15 10240 1024000 495.0 MiB EF00 EFI System Partition 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.
Compruebe si el sistema de archivos /boot lo detecta mediante el comando siguiente:
sudo blkid /dev/sdX1
Debería poder ver una entrada para
/dev/sdX1
(falta la partición /boot).sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
Si el sistema de archivos /boot no está visible después de volver a crear la partición, significa que los datos /boot ya no existen. Debe volver a crear el sistema de archivos /boot (mediante el mismo UUID que se encuentra en la entrada /etcetera/fstab /boot) y, a continuación , restaurar su contenido desde una copia de seguridad.
Error: no se encontró el símbolo "grub_efi_get_secure_boot"
En la captura de pantalla siguiente se muestra el mensaje de error:
La versión del kernel de Linux 4.12.14 (que se usa en SLES 12 SP5) no admite la opción de arranque seguro. Por lo tanto, si el arranque seguro está habilitado durante la implementación de la máquina virtual (es decir, el campo Tipo de seguridad se establece en Máquinas virtuales de inicio seguro), la máquina virtual genera el error de arranque seguro a través de la consola al intentar empezar con esta versión del kernel de SUSE en una imagen de máquina virtual de Gen2.
Solución
Para resolver el error de arranque, siga estos pasos:
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear la máquina virtual. Monte todos los sistemas de archivos necesarios, incluidos / y /boot, y escriba el entorno chroot .
Ejecute el siguiente comando de YaST en el entorno chroot:
yast2 bootloader
Desactive la opción "x" de la opción Habilitar compatibilidad con arranque seguro y, a continuación, seleccione F10 para guardar el cambio.
Siga el paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Otros errores de rescate de GRUB
En la captura de pantalla siguiente se muestra el mensaje de error:
Este tipo de error se desencadena en uno de los escenarios siguientes:
- Falta el archivo de configuración de GRUB.
- Se usa la configuración incorrecta de GRUB.
- Falta la partición /boot o su contenido.
Para solucionar el error, siga estos pasos:
Compruebe si se creó una máquina virtual de rescate o reparación. Si no se creó, siga el paso 1 en Solución de problemas de rescate de GRUB sin conexión para crear la máquina virtual. Monte todos los sistemas de archivos necesarios, incluidos / y /boot, y escriba el entorno chroot .
Asegúrese de que el archivo de configuración /etcetera/default/grub está configurado. Las imágenes de Linux de Azure aprobadas ya tienen las configuraciones necesarias. Vea los siguientes artículos para más información:
Vuelva a instalar GRUB y vuelva a generar el archivo de configuración de GRUB.
Nota
Si el archivo que falta es /boot/grub/menu.lst, este error es para versiones anteriores del sistema operativo (RHEL 6.x, Centos 6.x y Ubuntu 14.04). Los comandos variarán porque la versión 1 de GRUB se usa en esos sistemas en su lugar. La versión 1 de GRUB no se trata en este artículo.
Si falta toda la partición /boot, siga los pasos descritos en Error: ninguna partición de este tipo.
Una vez resuelto el problema, vaya al paso 3 en Solución de problemas de rescate de GRUB sin conexión para intercambiar el disco del sistema operativo.
Pasos siguientes
Si el error de arranque específico no es un problema de rescate de GRUB, consulte Solución de errores de arranque de Azure Linux Virtual Machines para obtener más opciones de solución de problemas.
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
Declinación de responsabilidades de contacto de terceros
Microsoft proporciona la información de contacto de terceros para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la precisión de la información de contacto de terceros.
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.