设置 Amazon EC2 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 的功能。
目前无法使用 register-image 命令创建同时支持 NitroTPM 和 UEFI Preferred 的 AMI。
警告
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 将无法使用。例如,如果要将基于传统 BIOS 的 Windows 实例转换为 UEFI,则可以使用 Microsoft 的 MBR2GPT
设置 AMI 的启动模式 (AWS CLI)
-
对实例的卷和操作系统进行适当的修改,以支持通过选定的启动模式启动。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。
注意
如果不执行此步骤,AMI 将无法使用。
-
要查找实例的卷 ID,请使用 describe-instances 命令。您将在下一步中创建此卷的快照。
aws ec2 describe-instances --region
us-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 --region
us-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 --region
us-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 \ --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 -
要将启动模式设置为
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 --region
us-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 命令。