ブートモード - Amazon Elastic Compute Cloud

ブートモード

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

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

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

オプションで UEFI で実行できる Intel および AMD インスタンスタイプ

主な Intel および AMD インスタンスタイプ であれば、デフォルトのレガシー BIOS ではなく UEFI でも実行できます。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

考慮事項

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

    • 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 は提供していません。UEFI をサポートする AMI を使用するためには、AMI を作成するか、CloudEndure を使用してインポートするかのどちらかが必要です。詳細については、AMI のブートモードを設定する および CloudEndure ドキュメントを参照してください。

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

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

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

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

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

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

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

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

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

AMI のブートモードパラメータを確認するには (AWS CLI)

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)

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. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

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

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

インスタンスのブートモードを確認するには (AWS CLI)

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. 選択したブートモードでの起動をサポートするために、インスタンスのボリュームと 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 コマンドにより確認できます。