本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Amazon EC2 AMI 的開機模式
根據預設,AMI 會繼承用於建立 AMI 之 EC2 執行個體的開機模式。例如,如果您從在 Legacy BIOS 上執行的 EC2 執行個體建立 AMI,則新 AMI 的開機模式為 legacy-bios。如果您從開機模式為 的 EC2 執行個體建立 AMIuefi-preferred,則新 AMI 的開機模式為 uefi-preferred。
註冊 AMI 時,您可以將 AMI 的開機模式設定為 uefi、 legacy-bios或 uefi-preferred。
當 AMI 開機模式設為 uefi-preferred 時,執行個體會以下列方式開機:
如果您將 AMI 開機模式設定為 uefi-preferred,則作業系統必須支援 UEFI 和 Legacy BIOS 開機功能。
若要將現有的 Legacy BIOS 型執行個體轉換為 UEFI,或將現有的 UEFI 型執行個體轉換為 Legacy BIOS,您必須先修改執行個體的磁碟區和作業系統,以支援選取的開機模式。然後,建立磁碟區的快照。最後,從快照建立 AMI。
			考量
			 
			
			 
			 
		- 
				
設定 AMI 開機模式參數並不會自動針對指定的開機模式設定作業系統。您必須先對執行個體的磁碟區和作業系統進行適當的修改,以支援使用選取的開機模式進行開機。否則,產生的 AMI 無法使用。例如,如果您要將 Legacy BIOS Windows 執行個體轉換為 UEFI,可以使用 Microsoft 的 MBR2GPT 工具,將系統磁碟從 MBR 轉換為 GPT。所需的修改視作業系統而異。如需詳細資訊,請參閱作業系統的手冊。
			 - 
				
您無法使用 register-image命令或 Register-EC2Image cmdlet 來建立同時支援 NitroTPM 和 UEFI 偏好的 AMI。
			 - 
				
某些功能 (例如 UEFI 安全開機) 僅適用於透過 UEFI 開機的執行個體。當您使用 uefi-preferred AMI 開機模式參數搭配不支援 UEFI 的執行個體類型時,執行個體會以舊版 BIOS 啟動,並停用 UEFI 相依功能。如果您依賴 UEFI 相關功能的可用性,則請將 AMI 開機模式參數設定為 uefi。
			 
 
				- AWS CLI
 - 
						
設定 AMI 的開機模式
- 
								
對執行個體的磁碟區和作業系統進行適當的修改,以支援透過選取的開機模式開機。所需的修改視作業系統而異。如需詳細資訊,請參閱作業系統的手冊。
								
							 - 
								
若要尋找執行個體的磁碟區 ID,請使用 describe-instances 命令。您將在下一個步驟中建立此磁碟區的快照。
								aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].BlockDeviceMappings
								下列為範例輸出。
								[
    [
        {
            "DeviceName": "/dev/xvda",
            "Ebs": {
                "AttachTime": "2024-07-11T01:05:51+00:00",
                "DeleteOnTermination": true,
                "Status": "attached",
                "VolumeId": "vol-1234567890abcdef0"
            }
        }
    ]
]
							 - 
								
若要建立磁碟區的快照,請使用 create-snapshot 命令。使用上一個步驟的磁碟區 ID。
								aws ec2 create-snapshot \
    --volume-id vol-01234567890abcdef \
    --description "my snapshot"
								下列為範例輸出。
								{
    "Description": "my snapshot",
    "Encrypted": false,
    "OwnerId": "123456789012",
    "Progress": "",
    "SnapshotId": "snap-0abcdef1234567890",
    "StartTime": "",
    "State": "pending",
    "VolumeId": "vol-01234567890abcdef",
    "VolumeSize": 30,
    "Tags": []
}
							 - 
								
請等到快照的狀態為 completed,再前往下一個步驟。若要取得快照的狀態,請使用 describe-snapshots命令搭配上一個步驟的快照 ID。
								aws ec2 describe-snapshots \
    --snapshot-ids snap-0abcdef1234567890 \
    --query Snapshots[].State \
    --output text
								下列為範例輸出。
								completed
							 - 
								
若要建立新 AMI,請使用 register-image 命令。使用SnapshotId來自 輸出的 值CreateSnapshot。
								
								
									 
									 
								- 
										
若要將開機模式設定為 UEFI,請新增值為 的 --boot-mode 參數uefi。
										aws ec2 register-image \
   --description "my image" \
   --name "my-image" \
   --block-device-mappings "DeviceName=/dev/sda1,Ebs={SnapshotId=snap-0abcdef1234567890,DeleteOnTermination=true}" \
   --root-device-name /dev/sda1 \
   --virtualization-type hvm \
   --ena-support \
   --boot-mode uefi
									 - 
										
若要將開機模式設定為 uefi-preferred,請將 的值--boot-mode設定為 uefi-preferred
										
										aws ec2 register-image \
   --description "my description" \
   --name "my-image" \
   --block-device-mappings "DeviceName=/dev/sda1,Ebs={SnapshotId=snap-0abcdef1234567890,DeleteOnTermination=true}" \
   --root-device-name /dev/sda1 \
   --virtualization-type hvm \
   --ena-support \
   --boot-mode uefi-preferred
									 
 
							 - 
								
(選用) 若要驗證新建立的 AMI 具有您指定的開機模式,請使用 describe-images命令。
								aws ec2 describe-images \
    --image-id ami-1234567890abcdef0 \
    --query Images[].BootMode \
    --output text
								下列為範例輸出。
								uefi
							 
 
					 
				- PowerShell
 - 
						
設定 AMI 的開機模式
- 
								
對執行個體的磁碟區和作業系統進行適當的修改,以支援透過選取的開機模式開機。所需的修改視作業系統而異。如需詳細資訊,請參閱作業系統的手冊。
								
							 - 
								
若要尋找執行個體的磁碟區 ID,請使用 Get-EC2Instance cmdlet。
								(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.BlockDeviceMappings.Ebs
								下列為範例輸出。
								AssociatedResource  : 
AttachTime          : 7/11/2024 1:05:51 AM
DeleteOnTermination : True
Operator            : 
Status              : attached
VolumeId            : vol-01234567890abcdef
							 - 
								
若要建立磁碟區的快照,請使用 New-EC2Snapshot cmdlet。使用上一個步驟的磁碟區 ID。
								New-EC2Snapshot `
    -VolumeId vol-01234567890abcdef `
    -Description "my snapshot"
								下列為範例輸出。
								AvailabilityZone          : 
Description               : my snapshot
Encrypted                 : False
FullSnapshotSizeInBytes   : 0
KmsKeyId                  : 
OwnerId                   : 123456789012
RestoreExpiryTime         : 
SnapshotId                : snap-0abcdef1234567890
SseType                   : 
StartTime                 : 4/25/2025 6:08:59 PM
State                     : pending
StateMessage              : 
VolumeId                  : vol-01234567890abcdef
VolumeSize                : 30
							 - 
								
請等到快照的狀態為 completed,再前往下一個步驟。若要取得快照的狀態,請使用 Get-EC2Snapshot cmdlet 搭配上一個步驟的快照 ID。
								(Get-EC2Snapshot `
    -SnapshotId snap-0abcdef1234567890).State.Value
								下列為範例輸出。
								completed
							 - 
								
若要建立新的 AMI,請使用 Register-EC2Image cmdlet。使用SnapshotId來自 輸出的 值New-EC2Snapshot。
								
								
									 
									 
								- 
										
若要將開機模式設定為 UEFI,請新增值為 的 -BootMode 參數uefi。
										$block = @{SnapshotId=snap-0abcdef1234567890}
Register-EC2Image ` 
   -Description "my image" `
   -Name "my-image" `
   -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
   -RootDeviceName /dev/xvda `
   -EnaSupport $true `
   -BootMode uefi
									 - 
										
若要將開機模式設定為 uefi-preferred,請將 的值-BootMode設定為 uefi-preferred
										
										$block = @{SnapshotId=snap-0abcdef1234567890}
Register-EC2Image ` 
   -Description "my image" `
   -Name "my-image" `
   -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
   -RootDeviceName /dev/xvda `
   -EnaSupport $true `
   -BootMode uefi-preferred
									 
 
							 - 
								
(選用) 若要驗證新建立的 AMI 具有您指定的開機模式,請使用 Get-EC2Image cmdlet。
								(Get-EC2Image `
    -ImageId ami-1234567890abcdef0).BootMode.Value
								下列為範例輸出。
								uefi