Vom Benutzer bereitgestellte Kernel - Amazon Elastic Compute Cloud

Vom Benutzer bereitgestellte Kernel

Falls Sie auf Ihren Amazon EC2-Instances einen benutzerdefinierten Kernel benötigen, können Sie mit einem AMI beginnen, das Ihren Anforderungen am ehesten entspricht. Kompilieren Sie den benutzerdefinierten Kernel auf Ihrer Instance und aktualisieren Sie den Bootloader so, dass er auf den neuen Kernel verweist. Dieser Prozess variiert je nach Virtualisierungstyp, der von Ihrem AMI verwendet wird. Weitere Informationen finden Sie unter Linux AMI-Virtualisierungstypen.

HVM AMIs (GRUB)

HVM-Instance-Volumes werden wie echte physische Datenträger behandelt. Der Startvorgang ähnelt dem Vorgang eines Bare-Metal-Betriebssystems mit einem partitionierten Datenträger und Bootloader, sodass die Verwendung mit allen derzeit unterstützten Linux-Distributionen möglich ist. Der gebräuchlichste Bootloader ist GRUB oder GRUB2.

Standardmäßig sendet GRUB seine Ausgabe nicht an die Instance-Konsole, da dies zu einer zusätzlichen Startverzögerung führt. Weitere Informationen finden Sie unter Instance-Konsolenausgabe. Wenn Sie einen benutzerdefinierten Kernel installieren, sollten Sie erwägen, die GRUB-Ausgabe zu aktivieren.

Es ist nicht erforderlich, einen Fallback-Kernel anzugeben. Es empfiehlt sich jedoch die Verwendung eines Fallbacks, wenn Sie einen neuen Kernel testen. In GRUB kann dann ein Fallback auf einen anderen Kernel durchgeführt werden, falls der neue Kernel ausfällt. Bei Vorhandensein eines Fallback-Kernels kann die Instance auch dann gestartet werden, wenn der neue Kernel nicht gefunden werden kann.

Der Legacy-GRUB für Amazon Linux verwendet /boot/grub/menu.lst. Der GRUB2 für Amazon Linux 2 verwendet /etc/default/grub. Weitere Informationen zum Aktualisieren des Standardkernels im Bootloader finden Sie in der Dokumentation für die Linux-Distribution.

Paravirtual AMIs (PV-GRUB)

Für Amazon Machine Images mit PV-Virtualisierung (Paravirtual) wird während des Startvorgangs ein System mit der Bezeichnung PV-GRUB verwendet. PV-GRUB ist ein Paravirtual-Bootloader, bei dem eine gepatchte Version von GNU GRUB 0.97 ausgeführt wird. Wenn Sie eine Instance starten, startet PV-GRUB den Bootprozess und führt dann das Chain Loading für den Kernel durch, der in der Datei menu.lst Ihres Abbilds angegeben ist.

PV-GRUB erkennt standardmäßige grub.conf- oder menu.lst-Befehle, sodass alle derzeit unterstützten Linux-Distributionen verwendet werden können. Für ältere Distributionen, z. B. Ubuntu 10.04 LTS, Oracle Enterprise Linux oder CentOS 5.x, ist ein spezielles Kernel-Paket vom Typ „ec2“ oder „xen“ erforderlich. Bei neueren Distributionen sind die erforderlichen Treiber im Kernel-Standardpaket enthalten.

Für die meisten modernen AMIs mit Paravirtual wird standardmäßig ein PV-GRUB-AKI verwendet (einschließlich aller Paravirtual-Linux-AMIs, die im Schnellstartmenü des Amazon EC2-Startassistenten enthalten sind). Sie müssen also keine weiteren Schritte ausführen, um auf Ihrer Instance einen anderen Kernel zu verwenden, vorausgesetzt, der gewünschte Kernel ist mit Ihrer Distribution kompatibel. Der beste Ansatz zur Ausführung eines benutzerdefinierten Kernels auf Ihrer Instance besteht darin, mit einem AMI zu beginnen, das Ihren Anforderungen am ehesten entspricht. Kompilieren Sie den benutzerdefinierten Kernel dann auf Ihrer Instance und ändern Sie die Datei menu.lst, um den Startvorgang mit diesem Kernel durchzuführen.

Sie können überprüfen, ob das Kernel-Abbild für ein AMI ein PV-GRUB-AKI ist. Führen Sie den folgenden Befehl describe-images aus (ersetzt Ihre Kernel-Abbild-ID) und überprüfen Sie, ob das Name-Feld mit pv-grub beginnt:

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

Einschränkungen von PV-GRUB

Für PV-GRUB gelten die folgenden Einschränkungen:

  • Es ist nicht möglich, die 64-Bit-Version von PV-GRUB zu verwenden, um einen 32-Bit-Kernel zu starten (und umgekehrt).

  • Bei Verwendung eines PV-GRUB-AKI können Sie kein Amazon Ramdisk Image (ARI) angeben.

  • AWS hat Tests durchgeführt und sichergestellt, dass PV-GRUB für diese Dateisystemformate funktioniert: EXT2, EXT3, EXT4, JFS, XFS und ReiserFS. Andere Dateisystemformate funktionieren unter Umständen nicht.

  • PV-GRUB kann Kernel starten, die mit den Komprimierungsformaten gzip, bzip2, lzo und xz komprimiert wurden.

  • Cluster-AMIs unterstützen PV-GRUB nicht und benötigen das Tool auch nicht, weil sie die vollständige Hardwarevirtualisierung (Full Hardware Virtualization, HVM) nutzen. Während Paravirtual-Instances zum Starten PV-GRUB verwenden, werden HVM-Instance-Volumes wie echte Datenträger behandelt. Der Startvorgang ähnelt dem Startvorgang eines Bare-Metal-Betriebssystems mit einem partitionierten Datenträger und Bootloader.

  • Die PV-GRUB-Versionen 1.03 und früher weisen keine Unterstützung für die GPT-Partitionierung auf, sondern nur für die MBR-Partitionierung.

  • Wenn Sie planen, einen Logical Volume Manager (LVM) für Amazon EBS-Volumes zu verwenden, benötigen Sie eine separate Boot-Partition außerhalb des LVM. Anschließend können Sie mit dem LVM logische Volumes erstellen.

Konfigurieren von GRUB für paravirtuale AMIs

Zum Starten von PV-GRUB muss im Abbild die GRUB-Datei menu.lst enthalten sein. Der am häufigsten verwendete Speicherort für diese Datei ist /boot/grub/menu.lst.

Unten ist ein Beispiel für die Konfigurationsdatei menu.lst zum Starten eines AMI mit einem PV-GRUB-AKI angegeben. In diesem Beispiel können Sie zwischen zwei Kernel-Einträgen wählen: Amazon Linux 2018.03 (ursprünglicher Kernel für dieses AMI) und Vanilla Linux 4.16.4 (neuere Version des Vanilla Linux-Kernels von https://www.kernel.org/). Der Vanilla-Eintrag wurde aus dem Originaleintrag für dieses AMI kopiert und die Pfade kernel und initrd wurden auf die neuen Speicherorte aktualisiert. Mit dem Parameter default 0 wird für den Bootloader auf den ersten Eintrag verwiesen, der sichtbar ist (in diesem Fall der Vanilla-Eintrag), und mit dem Parameter fallback 1 wird für den Bootloader auf den nächsten Eintrag verwiesen, falls beim Starten des ersten Eintrags ein Problem auftritt.

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

Es ist nicht erforderlich, in Ihrer Datei menu.lst einen Fallback-Kernel anzugeben. Wir empfehlen Ihnen aber die Verwendung eines Fallbacks, wenn Sie einen neuen Kernel testen. In PV-GRUB kann dann ein Fallback auf einen anderen Kernel durchgeführt werden, falls der neue Kernel ausfällt. Bei Vorhandensein eines Fallback-Kernels kann die Instance auch dann gestartet werden, wenn der neue Kernel nicht gefunden werden kann.

PV-GRUB prüft die folgenden Speicherorte auf das Vorhandensein von menu.lst und verwendet das erste Vorkommen der Datei:

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

Beachten Sie, dass mit PV-GRUB 1.03 und früher nur einer der ersten beiden Speicherorte der Liste geprüft wird.

Amazon PV-GRUB-Kernel-Abbild-IDs

PV-GRUB-AKIs sind in allen Amazon EC2-Regionen verfügbar. Es sind AKIs für 32-Bit- und für 64-Bit-Architekturtypen erhältlich. Für die meisten modernen AMIs wird standardmäßig ein PV-GRUB-AKI verwendet.

Wir empfehlen Ihnen, immer die aktuelle Version des PV-GRUB-AKI zu nutzen, da nicht alle Versionen des PV-GRUB-AKI mit allen Instance-Typen kompatibel sind. Verwenden Sie den folgenden describe-images-Befehl, um eine Liste mit den PV-GRUB-AKIs für die aktuelle Region abzurufen:

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

PV-GRUB ist das einzige AKI, das in der Region ap-southeast-2 verfügbar ist. Stellen Sie sicher, dass für AMIs, die Sie in diese Region kopieren möchten, eine Version von PV-GRUB verwendet wird, die in dieser Region verfügbar ist.

Im Folgenden sind die aktuellen AKI-IDs für die einzelnen Regionen aufgeführt. Registrieren Sie neue AMIs, indem Sie ein hd0-AKI verwenden.

Anmerkung

Aus Gründen der Abwärtskompatibilität stellen wir hd00-AKIs weiterhin in Regionen bereit, in denen diese bisher verfügbar waren.

ap-northeast-1, Asien-Pazifik (Tokio)
Abbild-ID Name des Abbilds
aki-f975a998 pv-grub-hd0_1.05-i386.gz
aki-7077ab11 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-1, Region Asien-Pazifik (Singapur)
Abbild-ID Name des Abbilds
aki-17a40074 pv-grub-hd0_1.05-i386.gz
aki-73a50110 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-2, Asien-Pazifik (Sydney)
Abbild-ID Name des Abbilds
aki-ba5665d9 pv-grub-hd0_1.05-i386.gz
aki-66506305 pv-grub-hd0_1.05-x86_64.gz
eu-central-1, Europa (Frankfurt)
Abbild-ID Name des Abbilds
aki-1419e57b pv-grub-hd0_1.05-i386.gz
aki-931fe3fc pv-grub-hd0_1.05-x86_64.gz
eu-west-1, Europa (Irland)
Abbild-ID Name des Abbilds
aki-1c9fd86f pv-grub-hd0_1.05-i386.gz
aki-dc9ed9af pv-grub-hd0_1.05-x86_64.gz
sa-east-1, Südamerika (São Paulo)
Abbild-ID Name des Abbilds
aki-7cd34110 pv-grub-hd0_1.05-i386.gz
aki-912fbcfd pv-grub-hd0_1.05-x86_64.gz
us-east-1, USA Ost (Nord-Virginia)
Abbild-ID Name des Abbilds
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)
Abbild-ID Name des Abbilds
aki-5ee9573f pv-grub-hd0_1.05-i386.gz
aki-9ee55bff pv-grub-hd0_1.05-x86_64.gz
us-west-1, USA West (Nordkalifornien)
Abbild-ID Name des Abbilds
aki-43cf8123 pv-grub-hd0_1.05-i386.gz
aki-59cc8239 pv-grub-hd0_1.05-x86_64.gz
us-west-2, USA West (Oregon)
Abbild-ID Name des Abbilds
aki-7a69931a pv-grub-hd0_1.05-i386.gz
aki-70cb0e10 pv-grub-hd0_1.05-x86_64.gz

Aktualisieren von PV-GRUB

Wir empfehlen Ihnen, immer die aktuelle Version des PV-GRUB-AKI zu nutzen, da nicht alle Versionen des PV-GRUB-AKI mit allen Instance-Typen kompatibel sind. Ältere Versionen von PV-GRUB sind ebenfalls nicht in allen Regionen verfügbar. Beim Kopieren eines AMI, für das eine ältere Version verwendet wird, in eine Region, von der diese Version nicht unterstützt wird, gilt daher Folgendes: Das Starten von Instances, die über dieses AMI gestartet werden, ist erst möglich, wenn Sie das Kernel-Abbild aktualisieren. Verwenden Sie die folgenden Vorgehensweisen, um die PV-GRUB-Version Ihrer Instance zu überprüfen und ggf. zu aktualisieren.

So überprüfen Sie Ihre PV-GRUB-Version

  1. Ermitteln Sie die Kernel-ID für Ihre Instance.

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

    Die Kernel-ID für diese Instance lautet aki-70cb0e10.

  2. Zeigen Sie die Versionsinformationen für diese Kernel-ID an.

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

    Dieses Kernel-Abbild hat die Version PV-GRUB 1.05. Falls Sie nicht die aktuelle PV-GRUB-Version nutzen (wie unter Amazon PV-GRUB-Kernel-Abbild-IDs gezeigt), sollten Sie das Abbild mit den unten angegebenen Schritten aktualisieren.

So aktualisieren Sie Ihre PV-GRUB-Version

Wenn für Ihre Instance eine ältere Version von PV-GRUB verwendet wird, sollten Sie das Update auf die aktuelle Version durchführen.

  1. Ermitteln Sie das aktuelle PV-GRUB-AKI für Ihre Region und Prozessorarchitektur anhand von Amazon PV-GRUB-Kernel-Abbild-IDs.

  2. Halten Sie Ihre Instance an. Ihre Instance muss angehalten werden, damit das verwendete Kernel-Abbild geändert werden kann.

    aws ec2 stop-instances --instance-ids instance_id --region region
  3. Ändern Sie das Kernel-Abbild, das für Ihre Instance verwendet wird.

    aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
  4. Starten Sie Ihre Instance neu.

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