设置 AMI 的启动模式

2024-09-12   访问量:1004

使用 register-image 命令创建 AMI 时,可将 AMI 的启动模式设置为 uefilegacy-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 工具将系统磁盘从 MBR 转换为 GPT。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。

设置 AMI 的启动模式 (AWS CLI)
  1. 对实例的卷和操作系统进行适当的修改,以支持通过选定的启动模式启动。所需的修改是特定于操作系统的。有关更多信息,请参阅操作系统的手册。

    注意

    如果不执行此步骤,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. 要创建新的 AMI,请使用 register-image 命令。使用您在前面步骤中记下的快照 ID。

    预期输出

    {"ImageId": "ami-new_ami_123"}
    • 要将启动模式设置为 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
  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 启动模式为 uefi 或 legacy-bios,则从此 AMI 创建的实例所具有的启动模式与 AMI 相同。如果 AMI 启动模式为 uefi-preferred,则在实例类型支持 UEFI 的情况下,实例将通过 UEFI 启动;否则,实例将通过传统 BIOS 启动。有关更多信息,请参阅 注意事项

  9. 要验证新实例是否具有预期的启动模式,请使用 describe-instances 命令。



热门文章
更多>