设置 AMI 的启动模式
使用 register-image 命令创建 AMI 时,可以将 AMI 的启动模式设置为 uefi
或 legacy-bios
。
要将现有的基于传统 BIOS 的实例转换为 UEFI,或将现有的基于 UEFI 的实例转换为传统 BIOS,需要执行以下步骤:首先,修改实例的卷和操作系统以支持选定的启动模式。然后,创建该卷的快照。最后,使用 register-image 以使用快照创建 AMI。
您无法使用 create-image 命令设置 AMI 的启动模式。使用 create-image,AMI 继承用于创建 AMI 的 EC2 实例的启动模式。例如,如果从传统 BIOS 上运行的 EC2 实例创建 AMI,则 AMI 启动模式将配置为 legacy-bios
。
在继续执行这些步骤之前,必须首先对实例的卷和操作系统进行适当的修改,以支持通过选定的启动模式启动;否则,生成的 AMI 将无法使用。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。
设置 AMI 的启动模式(Amazon CLI 版本 1.19.34 和 2.1.32 及更高版本)
-
对实例的卷和操作系统进行适当的修改,以支持通过选定的启动模式启动。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。
注意 如果不执行此步骤,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预期输出
{ "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 创建的所有新实例将继承相同的启动模式。
-
要验证新实例是否具有预期的启动模式,请使用 describe-instances 命令。