

# Definir o modo de inicialização de uma AMI do Amazon EC2
<a name="set-ami-boot-mode"></a>

Por padrão, a AMI herda o modo de inicialização da instância do EC2 usada para criar a AMI. Por exemplo, se você criar uma AMI de uma instância do EC2 executada em BIOS legado, o modo de inicialização da nova AMI será `legacy-bios`. Se você criar uma AMI de uma instância do EC2 com um modo de inicialização `uefi-preferred`, o modo de inicialização da nova AMI será `uefi-preferred`.

Ao registrar uma AMI, é possível definir o modo de inicialização da AMI como `uefi`, `legacy-bios` ou `uefi-preferred`.

Quando o modo de inicialização da AMI estiver definido como `uefi-preferred`, a instância será inicializada da seguinte forma: 
+ Para tipos de instância que ofereçam suporte a UEFI e BIOS legado (por exemplo, `m5.large`), a instância será inicializada usando UEFI.
+ Para tipos de instância que ofereçam suporte somente a BIOS legado (por exemplo, `m4.large`), a instância será inicializada usando BIOS legado.

Se você definir o modo de inicialização da AMI como `uefi-preferred`, o sistema operacional deverá oferecer suporte à capacidade de inicialização tanto com UEFI quanto com BIOS legado.

Para converter uma instância existente baseada em BIOS legado para UEFI, ou uma instância existente baseada em UEFI para BIOS legado, primeiro é necessário modificar o volume e o sistema operacional da instância para oferecer suporte ao modo de inicialização selecionado. Em seguida, crie um snapshot do volume. Finalmente, crie uma AMI do snapshot.

**Considerações**
+ Definir o parâmetro de modo de inicialização da AMI não configura automaticamente o sistema operacional para o modo de inicialização especificado. Primeiro é necessário fazer as modificações adequadas no volume e no sistema operacional da instância para oferecer suporte à inicialização via modo de inicialização selecionado. Caso contrário, a AMI resultante não poderá ser usada. Por exemplo, caso esteja realizando a conversão de uma instância do Windows baseada em BIOS legado para a UEFI, será possível usar a ferramenta [MBR2GPT](https://learn.microsoft.com/en-us/windows/deployment/mbr-to-gpt) da Microsoft para converter o disco do sistema de MBR para GPT. As modificações necessárias são específicas do sistema operacional. Para obter mais informações, consulte o manual do sistema operacional.
+ Não é possível usar o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) ou o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) para criar uma AMI compatível tanto com a [NitroTPM](nitrotpm.md) quanto com a UEFI Preferred.
+ Alguns recursos, como o UEFI Secure Boot, só estão disponíveis em instâncias que inicializadas em UEFI. Quando você usa o parâmetro do modo de inicialização `uefi-preferred` da AMI com um tipo de instância que não oferece suporte a UEFI, a instância é iniciada como BIOS legado e o recurso dependente de UEFI é desativado. Se você confia na disponibilidade de um recurso dependente de UEFI, defina o parâmetro do modo de inicialização da AMI como `uefi`.

------
#### [ AWS CLI ]

**Para definir o modo de inicialização de uma AMI**

1. Faça as modificações adequadas no volume e no sistema operacional da instância para oferecer suporte à inicialização através do modo de inicialização selecionado. As modificações necessárias são específicas do sistema operacional. Para obter mais informações, consulte o manual do sistema operacional.
**Atenção**  
Se você não executar esta etapa, a AMI não será utilizável.

1. Para localizar o ID do volume da instância, use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html). Você criará um snapshot desse volume na próxima etapa.

   ```
   aws ec2 describe-instances \
       --instance-ids i-1234567890abcdef0 \
       --query Reservations[].Instances[].BlockDeviceMappings
   ```

   O seguinte é um exemplo de saída.

   ```
   [
       [
           {
               "DeviceName": "/dev/xvda",
               "Ebs": {
                   "AttachTime": "2024-07-11T01:05:51+00:00",
                   "DeleteOnTermination": true,
                   "Status": "attached",
                   "VolumeId": "vol-1234567890abcdef0"
               }
           }
       ]
   ]
   ```

1. Para criar um snapshot do volume, use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-snapshot.html). Use o ID do volume da etapa anterior.

   ```
   aws ec2 create-snapshot \
       --volume-id vol-01234567890abcdef \
       --description "my snapshot"
   ```

   O seguinte é um exemplo de saída.

   ```
   {
       "Description": "my snapshot",
       "Encrypted": false,
       "OwnerId": "123456789012",
       "Progress": "",
       "SnapshotId": "snap-0abcdef1234567890",
       "StartTime": "",
       "State": "pending",
       "VolumeId": "vol-01234567890abcdef",
       "VolumeSize": 30,
       "Tags": []
   }
   ```

1. Aguarde até que o estado do snapshot seja `completed` antes de avançar para a próxima etapa. Para obter o estado do snapshot, use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html) com o ID do snapshot da etapa anterior.

   ```
   aws ec2 describe-snapshots \
       --snapshot-ids snap-0abcdef1234567890 \
       --query Snapshots[].State \
       --output text
   ```

   O seguinte é um exemplo de saída.

   ```
   completed
   ```

1. Para criar uma nova AMI, use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html). Use o valor de `SnapshotId` da saída de **CreateSnapshot**.
   + Para definir o modo de inicialização como UEFI, adicione o parâmetro `--boot-mode` com o valor `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
     ```
   + Para definir o modo de inicialização como `uefi-preferred`, defina o valor de `--boot-mode` como `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
     ```

1. (Opcional) Para verificar se a AMI recém-criada tem o modo de inicialização que você especificou, use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

   ```
   aws ec2 describe-images \
       --image-id ami-1234567890abcdef0 \
       --query Images[].BootMode \
       --output text
   ```

   O seguinte é um exemplo de saída.

   ```
   uefi
   ```

------
#### [ PowerShell ]

**Para definir o modo de inicialização de uma AMI**

1. Faça as modificações adequadas no volume e no sistema operacional da instância para oferecer suporte à inicialização através do modo de inicialização selecionado. As modificações necessárias são específicas do sistema operacional. Para obter mais informações, consulte o manual do sistema operacional.
**Atenção**  
Se você não executar esta etapa, a AMI não será utilizável.

1. Para localizar o ID do volume da instância, use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

   ```
   (Get-EC2Instance `
       -InstanceId i-1234567890abcdef0).Instances.BlockDeviceMappings.Ebs
   ```

   O seguinte é um exemplo de saída.

   ```
   AssociatedResource  : 
   AttachTime          : 7/11/2024 1:05:51 AM
   DeleteOnTermination : True
   Operator            : 
   Status              : attached
   VolumeId            : vol-01234567890abcdef
   ```

1. Para criar um snapshot do volume, use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Snapshot.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Snapshot.html). Use o ID do volume da etapa anterior.

   ```
   New-EC2Snapshot `
       -VolumeId vol-01234567890abcdef `
       -Description "my snapshot"
   ```

   O seguinte é um exemplo de saída.

   ```
   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
   ```

1. Aguarde até que o estado do snapshot seja `completed` antes de avançar para a próxima etapa. Para obter o estado do snapshot, use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Snapshot.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Snapshot.html) com o ID do snapshot da etapa anterior.

   ```
   (Get-EC2Snapshot `
       -SnapshotId snap-0abcdef1234567890).State.Value
   ```

   O seguinte é um exemplo de saída.

   ```
   completed
   ```

1. Para criar uma nova AMI, use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html). Use o valor de `SnapshotId` da saída de **New-EC2Snapshot**.
   + Para definir o modo de inicialização como UEFI, adicione o parâmetro `-BootMode` com o valor `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
     ```
   + Para definir o modo de inicialização como `uefi-preferred`, defina o valor de `-BootMode` como `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
     ```

1. (Opcional) Para verificar se a AMI recém-criada tem o modo de inicialização que você especificou, use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

   ```
   (Get-EC2Image `
       -ImageId ami-1234567890abcdef0).BootMode.Value
   ```

   O seguinte é um exemplo de saída.

   ```
   uefi
   ```

------