Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo vuelvo a un kernel estable conocido después de que una actualización bloquee el reinicio de mi instancia de EC2?
Una actualización impidió el reinicio de mi instancia de Amazon Elastic Compute Cloud (Amazon EC2). Quiero volver a un kernel estable.
Descripción corta
Si has actualizado el kernel de tu instancia de EC2 de Linux pero ahora está dañado, la instancia no podrá reiniciarse. Tampoco puedes usar SSH para conectarte a la instancia afectada.
Para solucionar este problema, utiliza la consola serie de EC2 para acceder al volumen raíz. O bien, crea una instancia de rescate temporal y, a continuación, vuelve a montar tu volumen de Amazon Elastic Block Store (Amazon EBS) en la instancia de rescate. Configura tu GRUB de GNU para usar el kernel anterior y, a continuación, reinicia la instancia.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Acceso al volumen raíz de la instancia
Para acceder al volumen raíz, utiliza la consola serie de EC2 o una instancia de rescate.
Uso de la consola serie de EC2
Requisitos previos: Ya debes haber configurado el acceso a la consola serie de EC2. Si no puedes acceder a la instancia y aún no has configurado el acceso, debes usar una instancia de rescate para acceder al volumen raíz. Además, asegúrate de cumplir los requisitos previos de la consola serie.
Si has activado la consola serie de EC2 para Linux, úsala para los tipos de instancia basados en Nitro para solucionar problemas de arranque, configuración de red y configuración de SSH.
Puedes usar la consola serie para conectarte a la instancia sin una conexión de red activa.
Antes de utilizar la consola serie, concédele acceso en el nivel de cuenta de AWS. A continuación, crea políticas de AWS Identity and Access Management (IAM) que concedan acceso a tus usuarios de IAM. Además, cada instancia que utilice la consola serie debe incluir al menos un usuario con contraseña.
Uso de una instancia de rescate
Importante: No realices este procedimiento en una instancia respaldada por un almacén de instancias. El procedimiento de recuperación requiere detener e iniciar la instancia, por lo que perderás los datos de la instancia.
Para usar una instancia de rescate para acceder al volumen raíz, sigue estos pasos:
-
Desconecta el volumen raíz de Amazon EBS (/dev/xvda o /dev/sda1) de la instancia afectada. Anota el nombre de dispositivo de tu volumen raíz.
Nota: Para ayudar a identificar el volumen de EBS en pasos posteriores, etiqueta el volumen antes de desconectarlo. El dispositivo raíz difiere según la imagen de máquina de Amazon (AMI). Por ejemplo, Amazon Linux 2 (AL2) y Amazon Linux 2023 (AL2023) usan /dev/xvda. Sin embargo, Ubuntu 14, 16, 18, CentOS 7 y Red Hat Enterprise Linux (RHEL) 7.5 usan /dev/sda1. -
Inicia una instancia de EC2 de rescate en la misma zona de disponibilidad que la instantánea.
Nota: Comprueba el código de producto de la instancia. Algunos códigos de producto requieren que inicies una instancia de EC2 con el mismo tipo de sistema operativo (SO). Por ejemplo, si la instancia afectada es una AMI de RHEL de pago, deberás iniciar una AMI con el mismo código de producto. Si tienes una instancia de AL2, debes crear una instancia de rescate de AL2 para evitar errores. -
Conecta el volumen como dispositivo secundario (/dev/sdf) a la instancia de rescate.
-
Para ver los dispositivos de disco disponibles, ejecuta el siguiente comando:
lsblkResultado de ejemplo:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 15G 0 disk └─xvda1 202:1 0 15G 0 part / xvdf 202:0 0 15G 0 disk └─xvdf1 202:1 0 15G 0 partNota: Las instancias basadas en Nitro muestran los volúmenes de EBS como dispositivos de bloque NVMe con el nombre de disco nvme[0-26]n1. Ejemplo de resultado en una instancia basada en Nitro:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 8G 0 disk └─nvme0n1p1 259:1 0 8G 0 part / └─nvme0n1p128 259:2 0 1M 0 part nvme1n1 259:3 0 100G 0 disk └─nvme1n1p1 259:4 0 100G 0 part / -
Para cambiar al usuario raíz, ejecuta el siguiente comando:
sudo -i -
Para montar la partición raíz del volumen montado en /mnt, ejecuta el siguiente comando:
mount -o nouuid /dev/xvdf1 /mntNota: Sustituye /dev/xvdf1 por la partición raíz del volumen. Si /mnt no existe en tu configuración, ejecuta los siguientes comandos para crear un directorio de montaje y, a continuación, monta la partición raíz en el nuevo directorio:
mkdir /mnt mount -o nouuid /dev/xvdf1 /mntNota: Si recibes un error al ejecutar el comando mount anterior, ejecuta el siguiente comando en su lugar:
mount /dev/xvdf1 /mntA continuación, usa el directorio de montaje para acceder a los datos de la instancia afectada.
-
Para montar /dev, /run, /proc y /sys de la instancia de rescate en las mismas rutas que el volumen montado, ejecuta el siguiente comando:
for m in dev proc run sys; do mount -o bind {,/mnt}/$m; done
- Si tienes una partición /boot independiente, móntala en /mnt/boot.
- Para cambiar al directorio de montaje, ejecuta el siguiente comando:
chroot /mnt
Actualización del kernel predeterminado en el gestor de arranque GRUB
Puedes encontrar el kernel dañado en la posición 0 de la lista y el último kernel estable en la posición 1. Para sustituir el kernel dañado por el kernel estable, sigue los pasos siguientes según tu distribución.
GRUB1 (GRUB heredado) para Red Hat 6
Para sustituir el kernel dañado por el kernel estable del archivo /boot/grub/grub.conf, ejecuta el siguiente comando:
sed -i '/^default/ s/0/1/' /boot/grub/grub.conf
GRUB2 para Ubuntu 14 LTS, 16.04 y 18.04
Sigue estos pasos:
-
Para sustituir la entrada dañada del menú predeterminado GRUB_DEFAULT=0 por el valor GRUB_DEFAULT=saved estable en el archivo /etc/default/grub, ejecuta el siguiente comando:
sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT=saved/g' /etc/default/grub -
Para asegurarte de que GRUB reconoce el cambio, ejecuta el siguiente comando:
update-grubNota: Es posible que recibas el error «device-mapper: reload ioctl on osprober-linux-xvdaX failed: Device or resource busy Command failed» al reconstruir el archivo de configuración de grub. Para resolver este problema, agrega el parámetro GRUB_DISABLE_OS_PROBER=true al archivo /etc/default/grub y vuelve a ejecutar el comando anterior.
-
Para asegurarte de que Amazon EC2 carga el kernel estable la próxima vez que se reinicie, ejecuta el siguiente comando:
grub-set-default 1
GRUB2 para RHEL 7 y AL2
Sigue estos pasos:
-
Para sustituir la entrada corrupta de menú predeterminado de GRUB_DEFAULT=0 por el valor estable de GRUB_DEFAULT-saved en el archivo /etc/default/grub, ejecuta el siguiente comando:
sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT=saved/g' /etc/default/grub -
Para actualizar GRUB y regenerar el archivo /boot/grub2/grub.cfg, ejecuta el siguiente comando:
grub2-mkconfig -o /boot/grub2/grub.cfgNota: Es posible que recibas el error «device-mapper: reload ioctl on osprober-linux-xvdaX failed: Device or resource busy Command failed» al reconstruir el archivo de configuración de grub. Para resolver este problema, agrega el parámetro GRUB_DISABLE_OS_PROBER=true al archivo /etc/default/grub y vuelve a ejecutar el comando anterior.
-
Para asegurarte de que Amazon EC2 carga el kernel estable la próxima vez que se reinicie, ejecuta el siguiente comando:
grub2-set-default 1
GRUB2 para RHEL 8 y CentOS 8, y AL2023
GRUB2 usa archivos blscfg y entradas en /boot/loader para la configuración de arranque, en lugar del formato grub.cfg anterior. Se recomienda usar la herramienta grubby para administrar los archivos blscfg y recuperar información de /boot/loader/entries/. Si los archivos blscfg faltan o están dañados, grubby no muestra ningún resultado. Debes volver a generar los archivos para recuperar la funcionalidad.
Para actualizar el kernel predeterminado en GRUB2, sigue estos pasos:
-
Para ver el kernel predeterminado actual, ejecuta el siguiente comando:
grubby --default-kernel -
Para ver todos los kernels disponibles y sus índices, ejecuta el siguiente comando:
grubby --info=ALLResultado de ejemplo:
root@ip-172-31-29-221 /]# grubby --info=ALLindex=0 kernel="/boot/vmlinuz-4.18.0-305.el8.x86_64" args="ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto $tuned_params" root="UUID=d35fe619-1d06-4ace-9fe3-169baad3e421" initrd="/boot/initramfs-4.18.0-305.el8.x86_64.img $tuned_initrd" title="Red Hat Enterprise Linux (4.18.0-305.el8.x86_64) 8.4 (Ootpa)" id="0c75beb2b6ca4d78b335e92f0002b619-4.18.0-305.el8.x86_64" index=1 kernel="/boot/vmlinuz-0-rescue-0c75beb2b6ca4d78b335e92f0002b619" args="ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" root="UUID=d35fe619-1d06-4ace-9fe3-169baad3e421" initrd="/boot/initramfs-0-rescue-0c75beb2b6ca4d78b335e92f0002b619.img" title="Red Hat Enterprise Linux (0-rescue-0c75beb2b6ca4d78b335e92f0002b619) 8.4 (Ootpa)" id="0c75beb2b6ca4d78b335e92f0002b619-0-rescue" index=2 kernel="/boot/vmlinuz-4.18.0-305.3.1.el8_4.x86_64" args="ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto $tuned_params" root="UUID=d35fe619-1d06-4ace-9fe3-169baad3e421" initrd="/boot/initramfs-4.18.0-305.3.1.el8_4.x86_64.img $tuned_initrd" title="Red Hat Enterprise Linux (4.18.0-305.3.1.el8_4.x86_64) 8.4 (Ootpa)" id="ec2fa869f66b627b3c98f33dfa6bc44d-4.18.0-305.3.1.el8_4.x86_64"Anota la ruta del kernel que configuraste como predeterminada para tu instancia. En el ejemplo anterior, la ruta del kernel en el índice 2 es /boot/vmlinuz- 0-4.18.0-80.4.2.el8_1.x86_64.
-
Para cambiar el kernel predeterminado de la instancia, ejecuta el siguiente comando:
grubby --set-default=/boot/vmlinuz-4.18.0-305.3.1.el8_4.x86_64Nota: Sustituye 4.18.0-305.3.1.el8_4.x86_64 por el número de versión de tu kernel.
-
Para comprobar que has configurado correctamente el kernel predeterminado, ejecuta el siguiente comando:
grubby --default-kernel
Reinicio de la instancia
Si has usado la consola serie de EC2, Amazon EC2 ahora carga el kernel estable. Puedes reiniciar la instancia.
Si has usado una instancia de rescate para acceder al volumen raíz, sigue estos pasos:
-
Para salir de chroot y desmontar /dev, /run, /proc y /sys, ejecuta el siguiente comando:
exit umount /mnt/{dev,proc,run,sys,} -
Conecta el volumen raíz a la instancia original como volumen raíz /dev/xvda o /dev/sda1.
-
Amazon EC2 ahora carga el kernel estable. Puedes reiniciar la instancia.
- Temas
- Compute
- Etiquetas
- LinuxAmazon EC2
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 8 meses
- preguntada hace 5 meses
- preguntada hace 3 meses
- preguntada hace 9 meses
- preguntada hace 2 meses
OFICIAL DE AWSActualizada hace 4 meses
OFICIAL DE AWSActualizada hace 8 meses
OFICIAL DE AWSActualizada hace un año