ブートモード - Amazon Elastic Compute Cloud

ブートモード

コンピュータが起動して最初に実行されるソフトウェアが、プラットフォームの初期化を行い、そのプラットフォーム固有の操作を実行するためのオペレーティングシステム用のインタフェースを提供する必要があります。

デフォルトのブートモード

EC2 では、レガシー BIOS と統合拡張ファームウェアインターフェイス (UEFI) という、2 種類のブートモードソフトウェアがサポートされています。デフォルトでは、Intel および AMD のインスタンスタイプはレガシー BIOS で実行され、Graviton インスタンスタイプは UEFI で実行されます。

UEFI で Intel および AMD インスタンスタイプを実行中

Most Intel and AMD instance typesは UEFI とレガシー BIOS の両方で実行できます。UEFI を使用するには、ブートモードパラメータを uefi に設定した AMI を選択し、その AMI に含まれるオペレーティングシステムで、UEFI をサポートするための設定を行う必要があります。

AMI ブートモードパラメータの目的

AMI ブートモードパラメータは、インスタンスの起動時に使用するブートモードを EC2 に通知します。ブートモードパラメータが uefi に設定されている場合、EC2 は UEFI でのインスタンスの起動を試みます。オペレーティングシステムが UEFI をサポートするように設定されていない場合、インスタンスの起動が失敗する可能性があります。

警告

ブートモードパラメータを設定しても、オペレーティングシステムは指定されたブートモードに自動的に変更されません。この設定は、オペレーティングシステムに固有です。設定の手順については、ご使用のオペレーティングシステムのマニュアルを参照してください。

AMI で使用可能なブートモードパラメータ

AMI ブートモードパラメータの設定はオプションです。AMI のブートモードパラメータ値には、uefi または legacy-bios のどちらかを指定できます。一部の AMI には、ブートモードパラメータがありません。ブートモードパラメータがない AMI の場合、これらの AMI から起動されるインスタンスでは、インスタンスタイプごとのデフォルト値が使用されます — Graviton では uefi、すべての Intel および AMD インスタンスタイプでは legacy-bios

Considerations

  • デフォルトのブートモード:

    • Intel および AMD インスタンスタイプ: レガシー BIOS

    • Graviton インスタンスタイプ: UEFI

  • レガシー BIOS に加えて UEFI をサポートする Intel および AMD インスタンスタイプ:

    • 仮想化: C5、C5a、C5ad、C5d、C5n、D3、D3en、G4、I3en、M5、M5a、M5ad、M5d、M5dn、M5n、M5zn、R5、R5a、R5ad、R5b、R5d、R5dn、R5n、 T3、T3a、z1d

  • UEFI Secure Boot は現在サポートされていません。

UEFI でインスタンスを起動するための要件

UEFI モードでインスタンスを起動するには、次の手順に従って、UEFI をサポートするインスタンスタイプを選択し、AMI と OS を UEFI 用に設定する必要があります。

  • インスタンスタイプ –インスタンスを起動する際は、UEFI をサポートするインスタンスタイプを選択する必要があります。詳細については、「インスタンスタイプがサポートしているブートモードを確認する」を参照してください。

  • AMI – インスタンスを起動する際は、UEFI 用に設定された AMI を選択する必要があります。AMI の設定は次に従います。

    • OS – AMI に含まれるオペレーティングシステムで、UEFI の使用を設定する必要があります。この設定がない場合はインスタンスの起動に失敗します。詳細については、「OS のブートモードを確認する」を参照してください。

    • AMI ブートモードパラメータ – AMI のブートモードパラメータは uefi に設定します。詳細については、「AMI のブートモードパラメータを定義する」を参照してください。

AWS現在 では、UEFI のサポートが事前設定された AMI は提供していません。AMI の設定を使用して AMI をインポートします。VM Import/Exportを使用してAMI をインポートするか、CloudEndureを使用してAMI をインポートする必要があります。

AMI のブートモードパラメータを定義する

AMI ブートモードパラメータの設定はオプションです。AMI のブートモードパラメータ値には、uefilegacy-bios のいずれかを指定できます。

一部の AMI には、ブートモードパラメータがありません。AMI にブートモードパラメータがない場合、AMI から起動されるインスタンスでは、インスタンスタイプごとのデフォルト値が使用されます。Graviton ではこの設定は uefi となり、Intel および AMD インスタンスタイプでは legacy-bios となります。

AMI のブートモードパラメータを確認するには (コンソール)

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [AMI] をクリックした後、AMI を選択します。

  3. [詳細] タブを開き、[ブートモード] フィールドを確認します。

インスタンスの起動時に AMI のブートモードパラメータを確認するには (コンソール)

インスタンスの起動ウィザードを使用してインスタンスを起動する場合、AMI を選択するステップで、[ブートモード] フィールドを表示します。詳細については、「ステップ 1: Amazon Machine Image (AMI) を選択する」を参照してください。

AMI のブートモードパラメータを確認するには (AWS CLI バージョン 1.19.34 以降およびバージョン 2.1.32 以降)

describe-images コマンドを使用して、AMI のブートモードを確認します。

aws ec2 --region us-east-1 describe-images --image-id ami-0abcdef1234567890

正常な出力

{ "Images": [ { ... ], "EnaSupport": true, "Hypervisor": "xen", "ImageOwnerAlias": "amazon", "Name": "UEFI_Boot_Mode_Enabled-Windows_Server-2016-English-Full-Base-2020.09.30", "RootDeviceName": "/dev/sda1", "RootDeviceType": "ebs", "SriovNetSupport": "simple", "VirtualizationType": "hvm", "BootMode": "uefi" } ] }

インスタンスタイプがサポートしているブートモードを確認する

インスタンスタイプでサポートされるブートモードを確認するには (AWS CLI バージョン 1.19.34 以降およびバージョン 2.1.32 以降)

describe-instance-types コマンドを使用して、インスタンスタイプがサポートしているブートモードを確認します。--query パラメータを含めることで、出力をフィルタリングできます。この例では、出力がフィルタリングされ、サポートされているブートモードのみが返されます。

次の例では、m5.2xlarge が UEFI ブートモードとレガシー BIOS ブートモードの両方をサポートしていることを示しています。

aws ec2 --region us-east-1 describe-instance-types --instance-types m5.2xlarge --query "InstanceTypes[*].SupportedBootModes"

正常な出力

[ [ "legacy-bios", "uefi" ] ]

次の例は、t2.xlarge がレガシー BIOS のみをサポートしていることを示しています。

aws ec2 --region us-east-1 describe-instance-types --instance-types t2.xlarge --query "InstanceTypes[*].SupportedBootModes"

正常な出力

[ [ "legacy-bios" ] ]

インスタンスのブートモードを決定する

インスタンスの起動時、そのブートモードパラメータの値は、インスタンスの起動に使用された AMI のブートモードパラメータの値によって決まります。

  • ブートモードパラメータが uefi の AMI が作成するインスタンスでは、ブートモードパラメータに uefi が設定されます。

  • ブートモードパラメータが legacy-bios のAMI が作成するインスタンスは、ブートモードパラメータを持ちません。ブートモードパラメータを持たないインスタンスでは、デフォルト値が使用されます。この場合、legacy-bios です。

  • ブートモードパラメータ値を持たない AMI は、ブートモードパラメータ値を持たないインスタンスを作成します。

インスタンスのブートモードパラメータの値によって、そのインスタンスが起動するモードが決まります。このパラメータ値が存在しない場合には、デフォルトのブートモードが使用されます。 Gravitonでは uefi となり、Intel および AMD インスタンスタイプでは legacy-bios となります。

インスタンスのブートモードを確認するには (コンソール)

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [インスタンス] を選択し、インスタンスを選択します。

  3. [詳細] タブを開き、[ブートモード] フィールドを確認します。

インスタンスのブートモードを確認するには (AWS CLI バージョン 1.19.34 以降およびバージョン 2.1.32 以降)

describe-instances コマンドを使用して、インスタンスのブートモードを確認します。

aws ec2 --region us-east-1 describe-instances --instance-ids i-1234567890abcdef0

正常な出力

{ "Reservations": [ { "Groups": [], "Instances": [ { "AmiLaunchIndex": 0, "ImageId": "ami-0e2063e7f6dc3bee8", "InstanceId": "i-1234567890abcdef0", "InstanceType": "m5.2xlarge", ... }, "BootMode": "uefi" } ], "OwnerId": "1234567890", "ReservationId": "r-1234567890abcdef0" } ] }

OS のブートモードを確認する

EC2 のブートモードは OS のブートモードに従います。またこのブートモードがインスタンスの起動にも使用されます。インスタンスのオペレーティングシステムが UEFI 用に設定されているかどうかを確認するには、SSH もしくは 経由でインスタンスに接続する必要があります。

インスタンスの OS のブートモードを確認するには

  1. SSH を使用しての Linux インスタンスへの接続

  2. OS のブートモードを表示するには、次のいずれかを実行します。

    • 次のコマンドを実行します。

      [ec2-user ~]$ sudo /usr/sbin/efibootmgr

      UEFI ブートモードで起動されたインスタンスで想定される出力

      BootCurrent: 0001 Timeout: 0 seconds BootOrder: 0000,0001,0002 Boot0000* UiApp Boot0001* UEFI Amazon Elastic Block Store vol-xyz Boot0002* EFI Internal Shell
    • 次のコマンドを実行して、/sys/firmware/efi ディレクトリが存在するか確認します。このディレクトリは、インスタンスが UEFI を使用して起動する場合のみ存在します。このディレクトリが存在しない場合、このコマンドは Legacy BIOS Boot Detected を返します。

      [ec2-user ~]$ [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected"

      UEFI ブートモードで起動されたインスタンスで想定される出力

      UEFI Boot Detected

      レガシー BIOS ブートモードで起動されたインスタンスで想定される出力

      Legacy BIOS Boot Detected
    • 次のコマンドを実行して、dmesg 出力に EFI が 含まれていることを確認します。

      [ec2-user ~]$ dmesg | grep -i "EFI"

      UEFI ブートモードで起動されたインスタンスで想定される出力

      [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: EFI v2.70 by EDK II

AMI のブートモードを設定する

register-image コマンドを使用して AMI を作成する際に、AMI のブートモードを uefi または legacy-bios に設定することができます。

既存のレガシー BIOS ベースのインスタンスを UEFI に、または既存の UEFI ベースのインスタンスをレガシー BIOS に変換するには、いくつかの手順を実行する必要があります。まず、選択したブートモードをサポートするようにインスタンスのボリュームと OS を変更します。次に、ボリュームのスナップショットを作成します。最後に、register-image を使用して、スナップショットから AMI を作成します。

create-image コマンドを使用して AMI のブートモードを設定することはできません。create-image を使用すると、AMI には、その作成に使用される EC2 インスタンスのブートモードが継承されます。たとえば、レガシー BIOS で実行されている EC2 インスタンスから AMI を作成する場合、その AMI のブートモードは legacy-bios として設定されます。

警告

これらのステップに進む前に、選択したブートモードでの起動をサポートするために、まずインスタンスのボリュームと OS で適切な変更を行う必要があります。これを行わないと、作成された AMI は使用不能になります。ここでの変更内容は、オペレーティングシステムにより異なります。詳細については、オペレーティングシステムのマニュアルを参照してください。

AMI のブートモードを設定するには (AWS CLI バージョン 1.19.34 以降およびバージョン 2.1.32 以降)

  1. 選択したブートモードでの起動をサポートするために、インスタンスのボリュームと OS に適切な変更を加えます。ここでの変更内容は、オペレーティングシステムにより異なります。詳細については、オペレーティングシステムのマニュアルを参照してください。

    注記

    この手順を実行しないと、AMI は使用不可能になります。

  2. インスタンスのボリューム ID を、describe-instances コマンドを使用して確認します。次のステップでは、このボリュームのスナップショットを作成します。

    aws ec2 describe-instances --region us-east-1 --instance-ids i-1234567890abcdef0

    正常な出力

    ... "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-1234567890abcdef0" } } ...
  3. ボリュームのスナップショットを作成するには、create-snapshot コマンドを使用します。前のステップで取得したボリューム ID を使用します。

    aws ec2 create-snapshot --region us-east-1 --volume-id vol-1234567890abcdef0 --description "add text"

    正常な出力

    { "Description": "add text", "Encrypted": false, "OwnerId": "123", "Progress": "", "SnapshotId": "snap-01234567890abcdef", "StartTime": "", "State": "pending", "VolumeId": "vol-1234567890abcdef0", "VolumeSize": 30, "Tags": [] }
  4. 前のステップで出力されたスナップショット ID を書き留めます。

  5. スナップショットの作成状況が completed になるまで待ってから、次のステップに進みます。スナップショットの状態は、describe-snapshots コマンドを使用して照会できます。

    aws ec2 describe-snapshots --region us-east-1 --snapshot-ids snap-01234567890abcdef

    出力例

    { "Snapshots": [ { "Description": "This is my snapshot", "Encrypted": false, "VolumeId": "vol-049df61146c4d7901", "State": "completed", "VolumeSize": 8, "StartTime": "2019-02-28T21:28:32.000Z", "Progress": "100%", "OwnerId": "012345678910", "SnapshotId": "snap-01234567890abcdef", ...
  6. register-image コマンドを使用して新しい AMI を作成します。前のステップで記録したスナップショット ID を使用します。起動モードを UEFI に設定するには、コマンドに --boot-mode uefi パラメータを追加します。

    aws ec2 register-image \ --region us-east-1 \ --description "add description" \ --name "add name" \ --block-device-mappings "DeviceName=/dev/sda1,Ebs={SnapshotId=snap-01234567890abcdef,DeleteOnTermination=true}" \ --architecture x86_64 \ --root-device-name /dev/sda1 \ --virtualization-type hvm \ --ena-support \ --boot-mode uefi

    正常な出力

    { "ImageId": "ami-new_ami_123" }
  7. 新しく作成した AMI が、前のステップで指定したブートモードに設定されていることを確認するには、describe-images コマンドを使用します。

    aws ec2 describe-images --region us-east-1 --image-id ami-new_ami_123

    正常な出力

    { "Images": [ { "Architecture": "x86_64", "CreationDate": "2021-01-06T14:31:04.000Z", "ImageId": "ami-new_ami_123", "ImageLocation": "", ... "BootMode": "uefi" } ] }
  8. 新しく作成した AMI を使用して、新しいインスタンスを起動します。この AMI から新たに作成されるすべてのインスタンスは、AMI と同じブートモードを継承します。

  9. 新しいインスタンスが想定通りのブートモードになっているかは、describe-instances コマンドにより確認できます。