设置 AMI 的启动模式
使用 register-image 命令创建 AMI 时,可将 AMI 的启动模式设置为 uefi、legacy-bios 或 uefi-preferred。
当 AMI 启动模式设置为 uefi-preferred 时,实例将按如下方式启动:
-
对于同时支持 UEFI 和传统 BIOS 的实例类型(例如
m5.large),实例通过 UEFI 启动。 -
对于仅支持传统 BIOS 的实例类型(例如
m4.large),实例通过传统 BIOS 启动。
注意
如果将 AMI 启动模式设置为 uefi-preferred,则操作系统必须支持同时启动 UEFI 和传统 BIOS 的功能。
警告
UEFI 安全启动等部分功能仅适用于在 UEFI 上启动的实例。将 uefi-preferred AMI 启动模式参数与不支持 UEFI 的实例类型结合使用时,实例将以传统 BIOS 启动,并禁用 UEFI 相关功能。如果您依赖于 UEFI 相关功能的可用性,请将 AMI 启动模式参数设置为 uefi。
要将现有的基于传统 BIOS 的实例转换为 UEFI,或将现有的基于 UEFI 的实例转换为传统 BIOS,需要执行以下步骤:首先,修改实例的卷和操作系统以支持选定的启动模式。然后,创建该卷的快照。最后,使用 register-image 以通过快照创建 AMI。
您无法使用 create-image 命令设置 AMI 的启动模式。使用 create-image,AMI 可以继承用于创建 AMI 的 EC2 实例的启动模式。例如,如果从传统 BIOS 上运行的 EC2 实例创建 AMI,则 AMI 启动模式将配置为 legacy-bios。如果从通过 AMI(启动模式设置为 uefi-preferred)启动的 EC2 实例创建 AMI,则所创建 AMI 的启动模式也将设置为 uefi-preferred。
警告
设置 AMI 启动模式参数不会自动将操作系统配置为指定的启动模式。在继续执行这些步骤之前,必须首先对实例的卷和操作系统进行适当的修改,以支持通过选定的启动模式启动;否则,生成的 AMI 将无法使用。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。
设置 AMI 的启动模式 (Amazon CLI)
-
对实例的卷和操作系统进行适当的修改,以支持通过选定的启动模式启动。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。
注意
如果不执行此步骤,AMI 将无法使用。
-
要查找实例的卷 ID,请使用 describe-instances 命令。您将在下一步中创建此卷的快照。
aws ec2 describe-instances --regionus-east-1--instance-idsi-1234567890abcdef0预期输出
... "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-1234567890abcdef0" } } ... -
要创建卷的快照,请使用 create-snapshot 命令。使用上一步中的卷 ID。
aws ec2 create-snapshot --regionus-east-1--volume-idvol-1234567890abcdef0--description "add text"预期输出
{ "Description": "add text", "Encrypted": false, "OwnerId": "123", "Progress": "", "SnapshotId": "snap-01234567890abcdef", "StartTime": "", "State": "pending", "VolumeId": "vol-1234567890abcdef0", "VolumeSize": 30, "Tags": [] } -
请注意上一步输出中的快照 ID。
-
等到快照创建状态为
completed后,继续执行下一步。要查询快照的状态,请使用 describe-snapshots 命令。aws ec2 describe-snapshots --regionus-east-1--snapshot-idssnap-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", ... -
要创建新的 AMI,请使用 register-image 命令。使用您在前面步骤中记下的快照 ID。
-
要将启动模式设置为 UEFI,请将
--boot-mode参数添加到命令中并将uefi指定为值。aws ec2 register-image \ --regionus-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 -
要将启动模式设置为
uefi-preferred,请将--boot-mode参数添加到命令中并将uefi-preferred指定为值。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-preferred
预期输出
{ "ImageId": "ami-new_ami_123" } -
-
要验证新创建的 AMI 是否具有您在上一步中指定的启动模式,请使用 describe-images 命令。
aws ec2 describe-images --regionus-east-1--image-idami-new_ami_123预期输出
{ "Images": [ { "Architecture": "x86_64", "CreationDate": "2021-01-06T14:31:04.000Z", "ImageId": "ami-new_ami_123", "ImageLocation": "", ... "BootMode": "uefi" } ] } -
使用新创建的 AMI 启动新实例。
如果 AMI 启动模式为
uefi或legacy-bios,则从此 AMI 创建的实例所具有的启动模式与 AMI 相同。如果 AMI 启动模式为uefi-preferred,则在实例类型支持 UEFI 的情况下,实例将通过 UEFI 启动;否则,实例将通过传统 BIOS 启动。有关更多信息,请参阅注意事项。 -
要验证新实例是否具有预期的启动模式,请使用 describe-instances 命令。