ユーザー提供カーネル - Amazon Elastic Compute Cloud

ユーザー提供カーネル

Amazon EC2 インスタンスでカスタムカーネルが必要な場合は、必要としているものに近い AMI を使用して開始し、インスタンスでカスタムカーネルをコンパイルして、新しいカーネルを参照するようにブートローダーを更新します。このプロセスは AMI が使用する仮想化タイプによって異なります。詳細については、Linux AMI 仮想化タイプ を参照してください。

HVM AMIs (GRUB)

HVM インスタンスボリュームは実際の物理ディスクのように扱われます。起動プロセスは、パーティション分割ディスクとブートローダーを備えるベアメタルオペレーティングシステムの起動プロセスに似ています。ブートローダーでは、現在サポートされているすべての Linux ディストリビューションを使用できます。最も一般的なブートローダーは GRUB または GRUB2 です。

起動が遅くなるため、デフォルトでは GRUB はインスタンスのコンソールに出力を送信しません。詳細については、インスタンスコンソール出力 を参照してください。カスタムカーネルをインストールする場合は、GRUB 出力を有効にすることを検討してください。

フォールバックカーネルを指定する必要はありません。ただし、新しいカーネルをテストする場合は、フォールバックを設定することをお勧めします。GRUB では、新しいカーネルにエラーがあった場合に別のカーネルにフォールバックできます。フォールバックカーネルを設定すると、新しいカーネルが見つからない場合でも、インスタンスを起動できます。

Amazon Linux 用のレガシー GRUB では /boot/grub/menu.lst を使用します。Amazon Linux 2 用の GRUB2 では /etc/default/grub を使用します。ブートローダーでデフォルトカーネルを更新する方法の詳細については、ご使用の Linux ディストリビューションのドキュメントを参照してください。

AMIs の準仮想化 (PV-GRUB)

準仮想化 (PV) を使用する Amazon マシンイメージ では、起動プロセスで PV-GRUB と呼ばれるシステムが利用されます。PV-GRUB は、パッチが適用されたバージョンの GNU GRUB 0.97 を実行する準仮想化ブートローダーです。インスタンスを起動すると、PV-GRUB では起動プロセスが開始され、お客様のイメージの menu.lst ファイルが指定するカーネルがチェーンロードされます。

PV-GRUB は標準の grub.conf または menu.lst コマンドを認識しますこれにより、現在サポートされているすべての Linux ディストリビューションとともに利用できます。Ubuntu 10.04 LTS、Oracle Enterprise Linux、CentOS 5.x など、古いディストリビューションでは特別な「ec2」や「xen」カーネルパッケージが必要です。新しいディストリビューションでは、デフォルトのカーネルパッケージに必要なドライバーが含まれています。

最新の準仮想 AMI では、デフォルトで PV-GRUB AKI を使用します (Amazon EC2 Launch Wizard Quick Start メニューで利用できるすべての準仮想 Linux AMI が含まれています)。そのため、使用するカーネルにディストリビューションとの互換性がある場合、インスタンスで別のカーネルを使用するために必要な追加の手順はありません。インスタンスでカスタムカーネルを実行する最適な方法としては、必要としているものに近い AMI を使用して開始し、インタンスでカスタムカーネルをコンパイルして、そのカーネルを使用して起動するように menu.lst ファイルを変更します。

AMI のカーネルイメージが PV-GRUB AKI であることを確認できます。次の describe-images コマンドを実行して (ご使用のカーネルイメージ ID に置き換えます)、Name フィールドが pv-grub で始まっているかどうかを確認します。

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

PV-GRUB の制約事項

PV-GRUB には次の制約事項があります。

  • PV-GRUB の 64 ビットバージョンを使用して 32 ビットカーネルを起動したり、PV-GRUB の 32 ビットバージョンを使用して 64 ビットカーネルを起動したりすることはできません。

  • PV-GRUB AKI の使用時には、Amazon ラムディスクイメージ (ARI) を指定できません。

  • AWS は、PV-GRUB が EXT2、EXT3、EXT4、JFS、XFS、ReiserFS のファイルシステム形式で動作することをテストし、確認しています。その他のファイルシステム形式では動作しない場合があります。

  • PV-GRUB は、gzip、bzip2、lzo、xz 圧縮形式を利用して圧縮されたカーネルを起動できます。

  • Cluster AMI は PV-GRUB をサポートせず、また、必要としません。完全ハードウェア仮想化 (HVM) が使用されるためです。準仮想インスタンスは PV-GRUB を使用して起動します。一方、HVM インスタンスボリュームは実際のディスクのように扱われ、その起動プロセスはパーティション分割ディスクとブートローダーを備えるベアメタルオペレーティングシステムの起動プロセスに似ています。

  • PV-GRUB バージョン 1.03 以前では、GPT パーティショニングをサポートしません。MBR パーティショニングがサポートされています。

  • Amazon Elastic Block Store (Amazon EBS) で Logical Volume Manager (LVM) を使用する場合、LVM の外側に別の起動パーティションが必要です。その場合、LVM で論理ボリュームを作成できます。

準仮想化 AMIs 向けの GRUB の設定

PV-GRUB を起動するには、GRUB menu.lst ファイルがイメージに含まれている必要があります。このファイルの最も一般的な場所は /boot/grub/menu.lst です。

次の例は、PV-GRUB AKI を使用して AMI を起動する menu.lst 設定ファイルです。この例では、Amazon Linux 2018.03 (この AMI の元のカーネル) と Vanilla Linux 4.16.4 (https://www.kernel.org/ の Vanilla Linux カーネルの新しいバージョン) の 2 つのカーネルエントリが選択できます。Vanilla エントリは、この AMI の元々のエントリからコピーされました。kernelinitrd パスは新しい場所に更新されました。default 0 パラメータは、ブートローダーをそれが検出した最初のエントリ (この場合、Vanilla エントリ) にポイントします。fallback 1 パラメータは、最初のエントリの起動に問題が発生した場合、次のエントリにブートローダーをポイントします。

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

menu.lst ファイルにフォールバックカーネルを指定する必要はありません。ただし、新しいカーネルをテストするときは、フォールバックを設定することをお勧めします。PV-GRUB では、新しいカーネルにエラーがあった場合に別のカーネルにフォールバックできます。フォールバックカーネルを設定すると、新しいカーネルが見つからない場合でもインスタンスを起動できます。

PV-GRUB は、次の場所で menu.lst をチェックします。その際、それが検出した最初の場所が利用されます。

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

PV-GRUB 1.03 以前では、このリストの最初の 2 つの場所うちの 1 つのみがチェックされることに注意してください。

Amazon PV-GRUB カーネルイメージ ID

PV-GRUB AKI は、アジアパシフィック (大阪) を除くすべての Amazon EC2 リージョンで利用できます。32 ビットと 64 ビットの両方のアーキテクチャタイプに AKI があります。最新の AMI では、デフォルトで PV-GRUB AKI が使用されます。

すべてのバージョンの PV-GRUB AKI がすべてのインスタンスタイプと互換性があるとは限らないため、常に最新バージョンの PV-GRUB AKI を使用することをお勧めします。次の describe-images コマンドを使用し、現在のリージョンの PV-GRUB AKI のリストを取得します。

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

PV-GRUB は、ap-southeast-2 リージョンで利用できる唯一の AKI です。このリージョンにコピーする AMI が、このリージョンで利用できる PV-GRUB のバージョンを使用していることを確認してください。

各リージョンの現在の AKI ID は次のとおりです。新しい AMI は、hd0 AKI を使用して登録します。

注記

hd00 AKI は、以前に利用可能であったリージョンでの下位互換性のために引き続き提供されます。

ap-northeast-1、アジアパシフィック (東京)
イメージ ID イメージ名
aki-f975a998 pv-grub-hd0_1.05-i386.gz
aki-7077ab11 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-1、アジアパシフィック (シンガポール) リージョン
イメージ ID イメージ名
aki-17a40074 pv-grub-hd0_1.05-i386.gz
aki-73a50110 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-2、アジアパシフィック (シドニー)
イメージ ID イメージ名
aki-ba5665d9 pv-grub-hd0_1.05-i386.gz
aki-66506305 pv-grub-hd0_1.05-x86_64.gz
eu-central-1、欧州 (フランクフルト)
イメージ ID イメージ名
aki-1419e57b pv-grub-hd0_1.05-i386.gz
aki-931fe3fc pv-grub-hd0_1.05-x86_64.gz
eu-west-1、欧州 (アイルランド)
イメージ ID イメージ名
aki-1c9fd86f pv-grub-hd0_1.05-i386.gz
aki-dc9ed9af pv-grub-hd0_1.05-x86_64.gz
sa-east-1、南米 (サンパウロ)
イメージ ID イメージ名
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 イメージ名
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 (米国 - 西部)
イメージ ID イメージ名
aki-5ee9573f pv-grub-hd0_1.05-i386.gz
aki-9ee55bff pv-grub-hd0_1.05-x86_64.gz
us-west-1、米国西部 (北カリフォルニア)
イメージ ID イメージ名
aki-43cf8123 pv-grub-hd0_1.05-i386.gz
aki-59cc8239 pv-grub-hd0_1.05-x86_64.gz
us-west-2、米国西部 (オレゴン)
イメージ ID イメージ名
aki-7a69931a pv-grub-hd0_1.05-i386.gz
aki-70cb0e10 pv-grub-hd0_1.05-x86_64.gz

PV-GRUB の更新

すべてのバージョンの PV-GRUB AKI がすべてのインスタンスタイプと互換性があるとは限らないため、常に最新バージョンの PV-GRUB AKI を使用することをお勧めします。また、古いバージョンの PV-GRUB はすべてのリージョンで使用できるわけではないため、旧バージョンを使用する AMI を、そのバージョンをサポートしないリージョンにコピーした場合、カーネルのイメージを更新するまで、その AMI から起動されたインスタンスを起動できなくなります。次の手順を使用してインスタンスの PV-GRUB のバージョンを確認し、必要に応じて更新します。

PV-GRUB のバージョンを確認するには
  1. インスタンスのカーネル ID を見つけます。

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

    このインスタンスのカーネル ID は、aki-70cb0e10 です。

  2. このカーネル ID のバージョン情報を表示します。

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

    このカーネルイメージは PV-GRUB 1.05 です。PV-GRUB のバージョンが最新バージョン (Amazon PV-GRUB カーネルイメージ ID を参照) でない場合、次の手順を使用して更新する必要があります。

PV-GRUB のバージョンを更新するには

インスタンスが古いバージョンの PV-GRUB を使用している場合は、最新バージョンに更新する必要があります。

  1. Amazon PV-GRUB カーネルイメージ ID で、使用するリージョンとプロセッサアーキテクチャーの最新の PV-GRUB AKI を特定します。

  2. インスタンスを停止します。使用されるカーネルイメージを変更するには、インスタンスを停止する必要があります。

    aws ec2 stop-instances --instance-ids instance_id --region region
  3. インスタンスに使用するカーネルイメージを変更します。

    aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
  4. インスタンスを再起動します。

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