メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

ユーザー提供カーネル

Amazon EC2 インスタンスでカスタムカーネルが必要な場合は、必要としているものに近い AMI でインスタンスを起動し、カスタムカーネルをインスタンス上でコンパイルして、新しいカーネルを参照するように menu.lst ファイルを変更します。このプロセスは AMI が使用する仮想化タイプによって異なります。詳細については、「Linux AMI 仮想化タイプ」を参照してください。

HVM AMI (GRUB)

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

HVM AMI 向けの GRUB の設定

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

起動が遅くなるため、デフォルトでは GRUB はインスタンスのコンソールに出力を送信しません。詳細については、「インスタンスコンソール出力」を参照してください。カスタムカーネルをインストールする場合は、以下の例に示すように、hiddenmenu 行を削除して serial 行および terminal 行を /boot/grub/menu.lst に追加し、GRUB 出力を有効にすることを検討してください。

重要

起動処理中に大量のデバッグ情報を表示することは避けてください。シリアルコンソールは高速データ転送をサポートしていません。

default=0
fallback=1
timeout=5
serial --unit=0 --speed=9600
terminal --dumb --timeout=5 serial console

title Vanilla Linux 4.13.4
root (hd0)
kernel /boot/vmlinuz-4.13.4 root=LABEL=/ console=tty1 console=ttyS0
initrd /boot/initrd.img-4.13.4

title Amazon Linux 2017.09 (4.9.51-10.52.amzn1.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-4.9.51-10.52.amzn1.x86_64 root=LABEL=/ console=tty1 console=ttyS0
initrd /boot/initramfs-4.9.51-10.52.amzn1.x86_64.img

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

新しい Vanilla Linux カーネルが失敗した場合、出力は次の例のようになります。

^M エントリ 0 は、3 秒で自動的に起動します。^M エントリ 0 は、2 秒で自動的に起動します。^M エントリ 0 は、1 秒で自動的に起動します。エラー 13: 無効またはサポートされていない実行形式 [0.000000] cgroup subsys cpuset の初期化

AMI の準仮想化 (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」で説明されているように、そのカーネルで起動するように Configuring GRUB ファイルを変更します。

AMI のカーネルイメージが PV-GRUB AKI であることを Amazon EC2 コマンドラインツール (チェックするカーネルイメージ ID を代用します) で次の describe-images コマンドを実行して検証できます。

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

Name フィールドが pv-grub で始まるかどうかを確認します。

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 EBS で Logical Volume Manager (LVM) を使用する場合、LVM の外側に別の起動パーティションが必要です。その場合、LVM で論理ボリュームを作成できます。

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

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

次の例は、PV-GRUB AKI を使用して AMI を起動する menu.lst 設定ファイルです。この例では、Amazon Linux 2017.09 (この AMI の元々のカーネル) と Vanilla Linux 4.13.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.13.4 root (hd0) kernel /boot/vmlinuz-4.13.4 root=LABEL=/ console=hvc0 initrd /boot/initrd.img-4.13.4 title Amazon Linux 2017.09 (4.9.51-10.52.amzn1.x86_64) root (hd0) kernel /boot/vmlinuz-4.9.51-10.52.amzn1.x86_64 root=LABEL=/ console=hvc0 initrd /boot/initramfs-4.9.51-10.52.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 のリストを取得します。

Copy
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、米国東部(バージニア北部)

イメージ 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 (US)

イメージ 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 を見つけます。

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

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

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

    Copy
    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. インスタンスを停止します。使用されるカーネルイメージを変更するには、インスタンスを停止する必要があります。

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

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

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

このページの内容: