Noyaux fournis par l'utilisateur - Amazon Elastic Compute Cloud

Noyaux fournis par l'utilisateur

Si vous avez besoin d'un noyau personnalisé sur vos instances Amazon EC2, vous pouvez commencer avec une AMI qui est proche de ce que vous voulez, compiler le noyau personnalisé sur votre instance et mettre à jour le chargeur de démarrage pour pointer vers le nouveau noyau. Ce processus varie en fonction du type de virtualisation qu'utilise votre AMI. Pour plus d'informations, consultez Types de virtualisation AMI Linux.

AMIs HVM (GRUB)

Les volumes d'instance HVM sont traités comme des disques physiques réels. Le processus de démarrage est similaire à celui d'un système d'exploitation bare metal avec disque partitionné et programme d'amorçage, ce qui lui permet de travailler avec toutes les distributions Linux actuellement prises en charge. Le chargeur de démarrage le plus courant est GRUB ou GRUB2.

Par défaut, GRUB n'envoie pas ses données de sortie à la console de l'instance car il crée un délai de démarrage supplémentaire. Pour plus d'informations, consultez Sortie de la console de l'instance. Si vous installez un noyau personnalisé, vous devez envisager d'activer la sortie GRUB.

Vous n'avez pas besoin de spécifier un noyau de rechange, mais nous vous recommandons d'en avoir un lorsque vous testez un nouveau noyau. GRUB peut avoir recours à un autre noyau au cas où le nouveau noyau échoue. Le fait d'avoir un noyau de rechange permet à l'instance de démarrer même si le nouveau noyau n'est pas trouvé.

L'ancien GRUB pour Amazon Linux utilise /boot/grub/menu.lst. GRUB2 pour Amazon Linux 2 utilise /etc/default/grub. Pour plus d'informations sur la mise à jour du noyau par défaut dans le chargeur d'amorçage, consultez la documentation de votre distribution Linux.

AMIs paravirtuelles (PV-GRUB)

Les Amazon Machine Images qui utilisent la virtualisation paravirtuelle ont recourt à un système appelé PV-GRUB pendant le processus de démarrage. PV-GRUB est un programme d'amorçage paravirtuel qui exécute une version corrigée de GNU GRUB 0.97. Lorsque vous lancez une instance, PV-GRUB commence le processus de démarrage, puis charge en chaîne le noyau spécifié par le fichier menu.lst de votre image.

PV-GRUB comprend les commandes grub.conf ou menu.lst standard qui lui permettent de fonctionner avec toutes les distributions Linux actuellement prises en charge. Les distributions plus anciennes comme Ubuntu 10.04 LTS, Oracle Enterprise Linux ou CentOS 5.x ont besoin d'un package noyau spécial « ec2 » ou « xen » alors les distributions les plus récentes comprennent les pilotes nécessaires dans le package noyau par défaut.

La plupart des AMI de virtualisation paravirtuelle utilisent une PV-GRUB AKI par défaut (notamment l'ensemble des AMI Linux de virtualisation paravirtuelle dans le menu d'Amazon EC2 Launch Wizard Quick Start), donc il n'existe aucune autre étape supplémentaire que vous devez suivre pour utiliser un noyau différent sur votre instance, dans la mesure où le noyau que vous voulez utiliser est compatible avec votre distribution. La meilleure façon d'exécuter un noyau personnalisé sur une instance est de commencer avec une AMI qui est proche de ce que vous voulez, puis de compiler le noyau personnalisé sur votre instance et de modifier le fichier menu.lst pour démarrer avec ce noyau.

Vous pouvez vérifier que l'image du noyau d'une AMI est un AKI PV-GRUB. Exécutez la commande describe-images suivante (en indiquant votre ID d'image de noyau) et vérifiez que le champ Name commence par pv-grub :

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

Restrictions de PV-GRUB

PV-GRUB possède les restrictions suivantes :

  • Vous ne pouvez pas utiliser la version 64 bit de PV-GRUB pour lancer un noyau 32 bits ou vice versa.

  • Vous ne pouvez pas spécifier une image ramdisk Amazon (ARI) lorsque vous utilisez une PV-GRUB AKI.

  • AWS a testé et vérifié que PV-GRUB fonctionne avec ces formats de système de fichiers : EXT2, EXT3, EXT4, JFS, XFS et ReiserFS. Il se peut que d'autres formats de système de fichiers ne fonctionnent pas.

  • PV-GRUB peut démarrer les noyaux compressés à l'aide de formats de compression gzip, bzip2, lzo et xz.

  • Les AMI de cluster ne prennent pas en charge ou n'ont pas besoin de PV-GRUB, car ils utilisent la virtualisation matérielle complète (HVM). Tandis que les instances paravirtuelles utilisent PV-GRUB pour le démarrage, les volumes d'instances HVM sont traités comme de véritables disques et le processus de démarrage est similaire au processus de démarrage d'un système d'exploitation bare metal avec un disque divisé et un chargeur de démarrage.

  • Les versions PV-GRUB 1.03 et antérieures ne prennent pas en charge le partitionnement GPT. Elles prennent uniquement en charge le partitionnement MBR.

  • Si vous comptez utiliser un gestionnaire par volumes logiques (LVM) avec des volumes Amazon Elastic Block Store (Amazon EBS), vous avez besoin d'une partition de démarrage séparée externe au LVM. Puis, vous pouvez créer des volumes logiques avec le LVM.

Configurer GRUB pour les AMIs paravirtuels

Pour démarrer PV-GRUB, un fichier menu.lst GRUB doit exister dans l'image. L'emplacement le plus commun de ce fichier est /boot/grub/menu.lst.

Ce qui suit est un exemple d'un fichier de configuration menu.lst pour le démarrage d'une AMI avec une AKI PV-GRUB. Dans cet exemple, un choix de deux entées noyau est proposé : Amazon Linux 03/2018 (le noyau original pour cette AMI) et Vanilla Linux 4.16.4 (une version plus récente du noyau Vanilla Linux de https://www.kernel.org/). L'entrée Vanilla a été copiée de l'entrée originale pour cette AMI et les chemins kernel et initrd ont été mis à jour par rapport aux nouveaux emplacements. Le paramètre default 0 pointe le programme d'amorçage vers la première entrée qu'il voit (dans ce cas, l'entrée Vanilla) et le paramètre fallback 1 pointe le programme d'amorçage vers la prochaine entrée s'il existe un problème lors du démarrage du premier.

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

Vous ne devez pas spécifier un noyau de rechange dans votre fichier menu.lst, mais nous vous recommandons d'en avoir un lorsque vous tester un nouveau noyau. PV-GRUB peut avoir recours à un autre noyau au cas où le nouveau noyau échoue. Le fait d'avoir un noyau de rechange permet à l'instance de démarrer même si le nouveau noyau n'est pas trouvé.

PV-GRUB vérifie les emplacements suivants pour menu.lst en utilisant le premier qu'il trouve :

  • (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

Notez que les versions PV-GRUB 1.03 et antérieures ne vérifient que l'un des deux premiers emplacements de cette liste.

ID de l'image noyau PV-GRUB Amazon

Les AKI PV-GRUB sont disponibles dans toutes les régions Amazon EC2, excepté Asie-Pacifique (Osaka). Il existe des AKI pour les types d'architecture 32 bits et 64 bits. La plupart des AMI modernes utilisent une AKI PV-GRUB par défaut.

Nous vous recommandons de toujours utiliser la dernière version de l'AKI PV-GRUB, car les versions de l'AKI PV-GRUB ne sont pas toutes compatibles avec les types d'instance. Utilisez la commande describe-images suivante pour obtenir une liste d'AKI PV-GRUB pour la région actuelle :

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

PV-GRUB est la seule AKI disponible dans la région ap-southeast-2. Vous devriez vérifier que toutes les AMI que vous voulez copier vers cette région utilisent une version de PV-GRUB qui est disponible dans cette région.

Ce qui suit correspond aux ID d'AKI actuels pour chaque région. Enregistrez les nouvelles AMI à l'aide d'une AKI hd0.

Note

Nous continuons de fournir des AKI hd00 pour la rétrocompatibilité dans les régions où elles étaient précédemment disponibles.

ap-northeast-1, Asia Pacific (Tokyo)
ID de l'image Nom de l'image
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 l'image Nom de l'image
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 l'image Nom de l'image
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 l'image Nom de l'image
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 l'image Nom de l'image
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 l'image Nom de l'image
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 l'image Nom de l'image
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 (US-West)
ID de l'image Nom de l'image
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 l'image Nom de l'image
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 l'image Nom de l'image
aki-7a69931a pv-grub-hd0_1.05-i386.gz
aki-70cb0e10 pv-grub-hd0_1.05-x86_64.gz

Mise à jour PV-GRUB

Nous vous recommandons de toujours utiliser la dernière version de l'AKI PV-GRUB, car les versions de l'AKI PV-GRUB ne sont pas toutes compatibles avec les types d'instance. De plus, les versions les plus anciennes de PV-GRUB ne sont pas disponibles dans toutes les régions. Si vous copiez une AMI qui utilise une version plus ancienne pour une région que ne prend pas en charge cette version, vous ne pourrez donc pas démarrer des instances lancées à partir d'une AMI jusqu'à ce que vous mettiez à jour l'image noyau. Utilisez les procédures suivantes pour vérifier la version de PV-GRUB de votre instance et la mettre à jour si nécessaire.

Pour vérifier votre version de PV-GRUB

  1. Trouvez l'ID noyau pour votre instance.

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

    L'ID noyau pour cette instance est aki-70cb0e10.

  2. Consultez les informations sur la version de cet ID noyau.

    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" } ] }

    Cette image noyau est PV-GRUB 1.05. Si votre version PV-GRUB n'est pas la plus récente (comme indiqué dans le didacticiel ID de l'image noyau PV-GRUB Amazon), vous devriez la mettre à jour en suivant la procédure ci-dessous.

Pour mettre à jour votre version de PV-GRUB

Si votre instance utilise une version de PV-GRUB plus ancienne, vous devriez la mettre à jour.

  1. Identifiez le dernier PV-GRUB AKI pour votre région et l'architecture de processeur à partir de ID de l'image noyau PV-GRUB Amazon.

  2. Arrêtez votre instance. Votre instance doit être arrêtée pour modifier l'image noyau utilisée.

    aws ec2 stop-instances --instance-ids instance_id --region region
  3. Modifiez l'image noyau utilisée pour votre instance.

    aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
  4. Redémarrez votre instance.

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