Kernels proporcionados por el usuario - Amazon Elastic Compute Cloud

Kernels proporcionados por el usuario

Si necesita un kernel personalizado para las instancias Amazon EC2, puede comenzar con una AMI que se aproxime a lo que desea, compilar el kernel personalizado en la instancia y actualizar el cargador de arranque para que se dirija hacia el nuevo kernel. Este proceso varía en función del tipo de virtualización que utiliza la AMI. Para obtener más información, consulte Tipos de virtualización de una AMI de Linux.

Imágenes de tipo AMIs HVM (GRUB)

Los volúmenes de instancias HVM se tratan como discos físicos. El proceso de arranque es similar al de un sistema operativo bare metal con un disco particionado y un cargador de arranque que le permite trabajar con todas las distribuciones Linux admitidas actualmente. El cargador de arranque más común es GRUB o GRUB2.

De forma predeterminada, GRUB no envía su resultado a la consola de la instancia porque esto provoca un retraso adicional durante el arranque. Para obtener más información, consulte Salida de la consola de instancias. Si instala un kernel personalizado, debería considerar habilitar la salida de GRUB.

No es necesario especificar un kernel alternativo, pero le recomendamos que tenga una alternativa al probar un nuevo kernel. Así, en caso de que el nuevo kernel falle, GRUB puede recurrir a otro kernel. Disponer de un kernel alternativo permite que la instancia arranque incluso si no se encuentra el nuevo kernel.

GRUB heredado para Amazon Linux usa /boot/grub/menu.lst. GRUB2 para Amazon Linux 2 usa /etc/default/grub. Para obtener más información sobre cómo actualizar el kernel predeterminado en el cargador de arranque, consulte la documentación de su distribución Linux.

Imágenes de tipo AMIs paravirtuales (PV-GRUB)

Las imágenes de tipo Imágenes de máquina de Amazon que usan la virtualización paravirtual (PV) utilizan un sistema llamado PV-GRUB durante el proceso de arranque. PV-GRUB es un cargador de arranque paravirtual que ejecuta una versión parcheada de GNU GRUB 0.97. Al iniciar una instancia, PV-GRUB inicia el proceso de arranque y, a continuación, la cadena carga el kernel que especifica el archivo menu.lst de su imagen.

PV-GRUB comprende grub.conf estándar o comandos menu.lst, lo que le permite trabajar con todas las distribuciones Linux admitidas actualmente. Las distribuciones anteriores, como Ubuntu 10.04 LTS, Oracle Enterprise Linux o CentOS 5.x, requieren un paquete de kernel “ec2” o “xen” especial, mientras que las más recientes incluyen los controladores necesarios en el paquete del kernel predeterminado.

Las AMI paravirtuales más modernas utilizan una AKI PV-GRUB de forma predeterminada (incluidas todas las AMI paravirtuales de Linux disponibles en el menú Quick Start del Launch Wizard de Amazon EC2), por lo que no es necesario que realice ningún paso adicional para utilizar un kernel distinto en la instancia, siempre que el kernel que desea utilizar sea compatible con su distribución. La mejor manera de ejecutar un kernel personalizado en la instancia es comenzar con una AMI que se aproxime a lo que desea y, a continuación, compilar el kernel personalizado en la instancia y modificar el archivo menu.lst para que arranque con ese kernel.

Puede verificar que la imagen del kernel de una AMI es una AKI PV-GRUB. Ejecute el comando siguiente describe-images (lo que sustituye el ID de imagen del kernel) y compruebe si el campo Name comienza con pv-grub:

aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd

Restricciones de PV-GRUB

PV-GRUB tiene las siguientes restricciones:

  • No se puede utilizar la versión de PV-GRUB de 64 bits para iniciar un kernel de 32 bits o viceversa.

  • No se puede especificar una imagen de disco RAM de Amazon (ARI) al utilizar una AKI PV-GRUB.

  • AWS ha probado y verificado que PV-GRUB funciona con los siguientes formatos de sistema de archivos: EXT2, EXT3, EXT4, JFS, XFS y ReiserFS. Otros formatos de sistema de archivos podrían no ser compatibles.

  • PV-GRUB puede arrancar kernels comprimidos utilizando los formatos de compresión gzip, bzip2, lzo y xz.

  • Las AMI en clúster no admiten ni requieren PV-GRUB porque utilizan virtualización plena de hardware (HVM). Si bien las instancias paravirtuales utilizan PV-GRUB para arrancar, los volúmenes de instancias HVM se tratan como discos físicos y el proceso de arranque es similar al de un sistema operativo bare metal con un disco particionado y un cargador de arranque.

  • Las versiones 1.03 y anteriores de PV-GRUB no admiten partición GPT; solo admiten partición MBR.

  • Si tiene previsto utilizar un administrador de volúmenes lógicos (LVM) con volúmenes de Amazon Elastic Block Store (Amazon EBS), necesita una partición de arranque independiente fuera del LVM. Entonces podrá crear volúmenes lógicos con el LVM.

Configurar GRUB para imágenes de tipo AMIs paravirtuales

Para arrancar PV-GRUB, la imagen deben contener un archivo GRUB menu.lst; la ubicación más habitual de este archivo es /boot/grub/menu.lst.

A continuación se muestra un ejemplo de un menu.lst archivo de configuración para arrancar una AMI con una AKI PV-GRUB. En este ejemplo, existen dos entradas de kernel para elegir: Amazon Linux 2018.03 (el kernel original para esta AMI) y Vanilla Linux 4.16.4 (una versión más reciente del kernel Vanilla de Linux de https://www.kernel.org/). La entrada Vanilla se ha copiado de la entrada original para esta AMI y las rutas kernel e initrd se han actualizado con las nuevas ubicaciones. El parámetro default 0 dirige el cargador de arranque hacia la primera entrada que ve (en este caso, la entrada Vanilla) y el parámetro fallback 1 dirige el cargador de arranque hacia la siguiente entrada si hay un problema al arrancar la primera.

default 0
fallback 1
timeout 0
hiddenmenu

title Vanilla Linux 4.16.4
root (hd0)
kernel /boot/vmlinuz-4.16.4 root=LABEL=/ console=hvc0
initrd /boot/initrd.img-4.16.4

title Amazon Linux 2018.03 (4.14.26-46.32.amzn1.x86_64)
root (hd0)
kernel /boot/vmlinuz-4.14.26-46.32.amzn1.x86_64 root=LABEL=/ console=hvc0
initrd /boot/initramfs-4.14.26-46.32.amzn1.x86_64.img

No es necesario especificar un kernel alternativo en el archivo menu.lst pero le recomendamos que tenga uno al probar un nuevo kernel. Así, en caso de que el nuevo kernel falle, PV-GRUB puede recurrir a otro kernel. Disponer de un kernel alternativo permite que la instancia arranque incluso si no se encuentra el nuevo kernel.

PV-GRUB busca menu.lst en las siguientes ubicaciones, utilizando el primero que encuentra:

  • (hd0)/boot/grub

  • (hd0,0)/boot/grub

  • (hd0,0)/grub

  • (hd0,1)/boot/grub

  • (hd0,1)/grub

  • (hd0,2)/boot/grub

  • (hd0,2)/grub

  • (hd0,3)/boot/grub

  • (hd0,3)/grub

Tenga en cuenta que PV-GRUB 1.03 y anteriores solo comprueban una de las dos primeras ubicaciones de esta lista.

ID de imagen de kernel de Amazon PV-GRUB

Las AKI PV-GRUB están disponibles en todas las regiones de Amazon EC2, excepto en Asia-Pacífico (Osaka). Existen AKI tanto para tipos de arquitectura de 32 bits como de 64 bits. Las AMI más modernas utilizan una AKI PV-GRUB de forma predeterminada.

Le recomendamos que utilice siempre la versión más actual de la AKI PV-GRUB, ya que no todas las versiones son compatibles con todos los tipos de instancia. Utilice el siguiente comando describe-images para obtener una lista de las AKI PV-GRUB para la región actual:

aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub-*.gz

PV-GRUB es la única AKI disponible en la región ap-southeast-2. Debe verificar que cualquier AMI que desee copiar en esta región utilice una versión de PV-GRUB que esté disponible en esta región.

A continuación se indican los ID de AKI actuales para cada región. Registre las nuevas AMI con una AKI hd0.

nota

Seguimos proporcionando AKI hd00 para ofrecer compatibilidad con versiones anteriores en las regiones en las que estaban disponibles anteriormente.

ap-northeast-1, Asia Pacific (Tokyo)
ID de imagen Nombre de la imagen
aki-f975a998 pv-grub-hd0_1.05-i386.gz
aki-7077ab11 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-1, Asia Pacific (Singapore) Region
ID de imagen Nombre de la imagen
aki-17a40074 pv-grub-hd0_1.05-i386.gz
aki-73a50110 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-2, Asia Pacific (Sydney)
ID de imagen Nombre de la imagen
aki-ba5665d9 pv-grub-hd0_1.05-i386.gz
aki-66506305 pv-grub-hd0_1.05-x86_64.gz
eu-central-1, Europe (Frankfurt)
ID de imagen Nombre de la imagen
aki-1419e57b pv-grub-hd0_1.05-i386.gz
aki-931fe3fc pv-grub-hd0_1.05-x86_64.gz
eu-west-1, Europe (Ireland)
ID de imagen Nombre de la imagen
aki-1c9fd86f pv-grub-hd0_1.05-i386.gz
aki-dc9ed9af pv-grub-hd0_1.05-x86_64.gz
sa-east-1, South America (São Paulo)
ID de imagen Nombre de la imagen
aki-7cd34110 pv-grub-hd0_1.05-i386.gz
aki-912fbcfd pv-grub-hd0_1.05-x86_64.gz
us-east-1, US East (N. Virginia)
ID de imagen Nombre de la imagen
aki-04206613 pv-grub-hd0_1.05-i386.gz
aki-5c21674b pv-grub-hd0_1.05-x86_64.gz
us-gov-west-1, AWS GovCloud (Oeste de EE. UU.)
ID de imagen Nombre de la imagen
aki-5ee9573f pv-grub-hd0_1.05-i386.gz
aki-9ee55bff pv-grub-hd0_1.05-x86_64.gz
us-west-1, US West (N. California)
ID de imagen Nombre de la imagen
aki-43cf8123 pv-grub-hd0_1.05-i386.gz
aki-59cc8239 pv-grub-hd0_1.05-x86_64.gz
us-west-2, US West (Oregon)
ID de imagen Nombre de la imagen
aki-7a69931a pv-grub-hd0_1.05-i386.gz
aki-70cb0e10 pv-grub-hd0_1.05-x86_64.gz

Actualizar PV-GRUB

Le recomendamos que utilice siempre la versión más actual de la AKI PV-GRUB, ya que no todas las versiones son compatibles con todos los tipos de instancia. Asimismo, las versiones anteriores de PV-GRUB no están disponibles en todas las regiones, por lo que si copia una AMI que utilice una versión anterior en una región que no admite dicha versión, no podrá arrancar instancias lanzadas desde dicha AMI hasta que actualice la imagen del kernel. Utilice los siguientes procedimientos para verificar la versión de PV-GRUB de la instancia y actualizarla si fuera necesario.

Para verificar la versión de PV-GRUB

  1. Localice el ID del kernel de la instancia.

    aws ec2 describe-instance-attribute --instance-id instance_id --attribute kernel --region region { "InstanceId": "instance_id", "KernelId": "aki-70cb0e10" }

    El ID del kernel de esta instancia es aki-70cb0e10.

  2. Revise la información de la versión de dicho ID del kernel.

    aws ec2 describe-images --image-ids aki-70cb0e10 --region region { "Images": [ { "VirtualizationType": "paravirtual", "Name": "pv-grub-hd0_1.05-x86_64.gz", ... "Description": "PV-GRUB release 1.05, 64-bit" } ] }

    La imagen de este kernel es PV-GRUB 1.05. Si la versión de su PV-GRUB no es la más reciente (tal y como se muestra en ID de imagen de kernel de Amazon PV-GRUB), debe actualizarla utilizando el siguiente procedimiento.

Para actualizar la versión de PV-GRUB

Si la instancia utiliza una versión anterior de PV-GRUB, debe actualizarla a la versión más reciente.

  1. Identifique la versión más reciente de la AKI PV-GRUB para su región y la arquitectura de su procesador en ID de imagen de kernel de Amazon PV-GRUB.

  2. Detenga la instancia. La instancia debe pararse para modificar la imagen del kernel utilizada.

    aws ec2 stop-instances --instance-ids instance_id --region region
  3. Modifique la imagen del kernel utilizada en la instancia.

    aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
  4. Reinicie la instancia.

    aws ec2 start-instances --instance-ids instance_id --region region