Definir o modo de inicialização de uma AMI do Amazon EC2 - Amazon Elastic Compute Cloud

Definir o modo de inicialização de uma AMI do Amazon EC2

Ao criar uma AMI usando o comando register-image, é 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.

nota

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.

Atualmente, você não pode usar o comando register-image para criar uma AMI que ofereça suporte a NitroTPM e UEFI preferencial.

Atenção

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 ofereça suporte a UEFI, a instância será iniciada como BIOS legado e o recurso dependente de UEFI será 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.

Para converter uma instância existente baseada em BIOS legado para UEFI, ou uma instância existente baseada em UEFI para BIOS legado, é preciso executar uma série de etapas: primeiro, modifique 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. Por fim, use register-image para criar a AMI usando o snapshot.

Não é possível definir o modo de inicialização de uma AMI usando o comando create-image. Com create-image, 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 a partir de uma instância do EC2 executando em BIOS legado, o modo de inicialização da AMI será configurado como legacy-bios. Se você criar uma AMI a partir de uma instância do EC2 que tenha sido executada usando uma AMI com um modo de inicialização definido como uefi-preferred, a AMI criada também terá seu modo de inicialização definido como uefi-preferred.

Atenção

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. Antes de prosseguir com essas etapas, é preciso fazer modificações adequadas no volume e no sistema operacional da instância para oferecer suporte à inicialização usando o modo de inicialização selecionado, caso contrário, a AMI resultante não será utilizável. Por exemplo, caso esteja realizando a conversão de uma instância do Windows baseada em BIOS legado para a UEFI, você poderá usar a ferramenta MBR2GPT 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.

Para definir o modo de inicialização de uma AMI (AWS CLI)
  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.

    nota

    Se você não executar esta etapa, a AMI não será utilizável.

  2. Para localizar o ID do volume da instância, use o comando describe-instances. Você criará um snapshot desse volume na próxima etapa.

    aws ec2 describe-instances --region us-east-1 --instance-ids i-1234567890abcdef0

    Saída esperada

    ... "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-1234567890abcdef0" } } ...
  3. Para criar um snapshot do volume, use o comando create-snapshot. Use o ID do volume da etapa anterior.

    aws ec2 create-snapshot --region us-east-1 --volume-id vol-1234567890abcdef0 --description "add text"

    Saída esperada

    { "Description": "add text", "Encrypted": false, "OwnerId": "123", "Progress": "", "SnapshotId": "snap-01234567890abcdef", "StartTime": "", "State": "pending", "VolumeId": "vol-1234567890abcdef0", "VolumeSize": 30, "Tags": [] }
  4. Guarde o ID do snapshot na saída da etapa anterior.

  5. Aguarde até que a criação do snapshot seja completed antes de ir para a próxima etapa. Para consultar o estado do snapshot, use o comando describe-snapshots.

    aws ec2 describe-snapshots --region us-east-1 --snapshot-ids snap-01234567890abcdef

    Exemplo de saída

    { "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. Para criar uma nova AMI, use o comando register-image. Use o ID de snapshot que você guardou na etapa anterior.

    • Para definir o modo de inicialização como UEFI, adicione o parâmetro --boot-mode ao comando e especifique uefi como o valor.

      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
    • Para definir o modo de inicialização como uefi-preferred, adicione o parâmetro --boot-mode ao comando e especifique uefi-preferred como o valor.

      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

    Saída esperada

    { "ImageId": "ami-new_ami_123" }
  7. Para verificar se a AMI recém-criada tem o modo de inicialização especificado na etapa anterior, use o comando describe-images.

    aws ec2 describe-images --region us-east-1 --image-id ami-new_ami_123

    Saída esperada

    { "Images": [ { "Architecture": "x86_64", "CreationDate": "2021-01-06T14:31:04.000Z", "ImageId": "ami-new_ami_123", "ImageLocation": "", ... "BootMode": "uefi" } ] }
  8. Execute uma nova instância usando a AMI recém-criada.

    Se o modo de inicialização da AMI for uefi oulegacy-bios, as instâncias criadas a partir dessa AMI terão o mesmo modo de inicialização da AMI. Se o modo de inicialização da AMI for uefi-preferred, a instância será inicializada usando UEFI se o tipo de instância oferecer suporte a UEFI, caso contrário, a instância será inicializada usando o BIOS legado.

  9. Para verificar se a nova instância tem o modo de inicialização esperado, use o comando describe-instances.