Modos de inicialização - Amazon Elastic Compute Cloud

Modos de inicialização

Quando um computador é inicializado, o primeiro software executado é responsável por inicializar a plataforma e fornecer uma interface para que o sistema operacional execute operações específicas da plataforma.

Modos de inicialização padrão

No EC2, duas variantes do software do modo de inicialização são suportadas: BIOS legado e Unified Extensible Firmware Interface (UEFI). Por padrão, os tipos de instância Intel e AMD são executados em BIOS legado e os tipos de instância Graviton são executados em UEFI.

Tipos de instâncias Intel e AMD que podem ser executadas opcionalmente em UEFI

A maioria dos tipos de instância Intel e AMD também podem ser executadas em UEFI ao invés de BIOS legado padrão. Para usar UEFI, é preciso selecionar uma AMI com o parâmetro de modo de inicialização definido como uefi, e o sistema operacional contido na AMI deve ser configurado para suportar UEFI.

Objetivo do parâmetro de modo de inicialização da AMI

O parâmetro de modo de inicialização da AMI sinaliza ao EC2 qual modo de inicialização usar ao iniciar uma instância. Quando o parâmetro de modo de inicialização é definido como uefi, o EC2 tenta iniciar a instância em UEFI. Se o sistema operacional não estiver configurado para oferecer suporte a UEFI, a execução da instância poderá falhar.

Atenção

Definir o parâmetro de modo de inicialização não configura automaticamente o sistema operacional para o modo de inicialização especificado. A configuração é específica para o sistema operacional. Para obter as instruções de configuração, consulte o manual do sistema operacional.

Possível parâmetro de modo de inicialização em uma AMI

O parâmetro de modo de inicialização da AMI é opcional. Uma AMI pode ter um dos seguintes valores de parâmetro de modo de inicialização: uefi ou legacy-bios. Algumas AMIs não têm um parâmetro de modo de inicialização. Para AMIs sem parâmetro de modo de inicialização, as instâncias executadas a partir delas usam o valor padrão do tipo de instância—uefi no Graviton e legacy-bios em todos os tipos de instância Intel e AMD.

Considerações

Modos de inicialização padrão

  • Tipos de instância Intel e AMD: BIOS legado

  • Tipos de instância Graviton: UEFI

Tipos de instância Intel e AMD que suportam UEFI, além de BIOS legado

  • Virtualizado: C5, C5a, C5ad, C5d, C5n, D3, D3en, G4, I3en, M5, M5a, M5ad, M5d, M5dn, M5n, M5zn, R5, R5a, R5ad, R5b, R5d, R5dn, R5n, T3, T3a e z1d

Requisitos para executar uma instância com UEFI

Para executar uma instância no modo UEFI, é preciso selecionar um tipo de instância compatível com UEFI e configurar a AMI e o sistema operacional para UEFI, da seguinte forma:

Determinar o parâmetro de modo de inicialização de uma AMI

O parâmetro de modo de inicialização da AMI é opcional. Uma AMI pode ter um dos seguintes valores de parâmetro de modo de inicialização: uefi e legacy-bios.

Algumas AMIs não têm um parâmetro de modo de inicialização. Quando uma AMI não tem parâmetro de modo de inicialização, as instâncias executadas a partir dela usam o valor padrão do tipo de instância, que é uefi no Graviton e legacy-bios nos tipos de instância Intel e AMD.

Para determinar o parâmetro de modo de inicialização de uma AMI (console)

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha AMIs e, em seguida, selecione a AMI.

  3. Na guia Details (Detalhes), verifique o campo Boot mode (Modo de inicialização).

Para determinar o parâmetro de modo de inicialização de uma AMI ao executar uma instância (console)

Ao executar uma instância usando o assistente de instância de execução, na etapa de selecionar uma AMI, verifique o campo Boot mode (Modo de inicialização). Para obter mais informações, consulte Etapa 1: Escolher uma imagem de máquina da Amazon (AMI).

Para determinar o parâmetro de modo de inicialização de uma AMI (AWS CLI)

Use o comando describe-images para determinar o modo de inicialização de uma AMI.

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

Saída esperada

{ "Images": [ { ... ], "EnaSupport": true, "Hypervisor": "xen", "ImageOwnerAlias": "amazon", "Name": "UEFI_Boot_Mode_Enabled-Windows_Server-2016-English-Full-Base-2020.09.30", "RootDeviceName": "/dev/sda1", "RootDeviceType": "ebs", "SriovNetSupport": "simple", "VirtualizationType": "hvm", "BootMode": "uefi" } ] }

Determinar os modos de inicialização suportados por um tipo de instância

Para determinar os modos de inicialização suportados por um tipo de instância (AWS CLI)

Use o comando describe-instance-types para determinar os modos de inicialização suportados por um tipo de instância. Ao incluir o parâmetro --query, você pode filtrar a saída. Neste exemplo, a saída é filtrada para retornar somente os modos de inicialização suportados.

O exemplo a seguir mostra que m5.2xlarge suporta ambos os modos de inicialização UEFI e BIOS legado.

aws ec2 --region us-east-1 describe-instance-types --instance-types m5.2xlarge --query "InstanceTypes[*].SupportedBootModes"

Saída esperada

[ [ "legacy-bios", "uefi" ] ]

O exemplo a seguir mostra que t2.xlarge suporta apenas BIOS legado.

aws ec2 --region us-east-1 describe-instance-types --instance-types t2.xlarge --query "InstanceTypes[*].SupportedBootModes"

Saída esperada

[ [ "legacy-bios" ] ]

Determinar o modo de inicialização de uma instância

Quando uma instância é iniciada, o valor do parâmetro de modo de inicialização é determinado pelo valor do parâmetro de modo de inicialização da AMI usado para iniciá-la, da seguinte maneira:

  • Uma AMI com um parâmetro de modo de inicialização uefi cria uma instância com um parâmetro de modo de inicialização uefi.

  • Uma AMI com um parâmetro de modo de inicialização legacy-bios cria uma instância sem parâmetro de modo de inicialização. Uma instância sem parâmetro de modo de inicialização usa seu valor padrão, que neste caso é legacy-bios.

  • Uma AMI sem valor de parâmetro de modo de inicialização cria uma instância sem valor de parâmetro de modo de inicialização.

O valor do parâmetro de modo de inicialização da instância determina o modo em que ela inicializa. Se não houver valor, o modo de inicialização padrão será usado, que é uefi no Graviton e legacy-bios nos tipos de instância Intel e AMD.

Para determinar o modo de inicialização de uma instância (console)

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Instâncias e, em seguida, sua instância.

  3. Na guia Details (Detalhes), verifique o campo Boot mode (Modo de inicialização).

Para determinar o modo de inicialização de uma instância (AWS CLI)

Use o comando describe-instances para determinar o modo de inicialização de uma instância.

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

Saída esperada

{ "Reservations": [ { "Groups": [], "Instances": [ { "AmiLaunchIndex": 0, "ImageId": "ami-0e2063e7f6dc3bee8", "InstanceId": "i-1234567890abcdef0", "InstanceType": "m5.2xlarge", ... }, "BootMode": "uefi" } ], "OwnerId": "1234567890", "ReservationId": "r-1234567890abcdef0" } ] }

Determinar o modo de inicialização do sistema operacional

O modo de inicialização do sistema operacional orienta o EC2 sobre o modo de inicialização que deve ser usado para inicializar uma instância. Para verificar se o sistema operacional da instância está configurado para UEFI, é preciso se conectar à instância via SSH.

Para determinar o modo de inicialização do sistema operacional da instância

  1. Conecte-se à instância do Linux usando SSH.

  2. Para visualizar o modo de inicialização do sistema operacional, tente um dos seguintes procedimentos:

    • Execute o seguinte comando.

      [ec2-user ~]$ sudo /usr/sbin/efibootmgr

      Saída esperada de uma instância inicializada no modo de inicialização UEFI

      BootCurrent: 0001 Timeout: 0 seconds BootOrder: 0000,0001,0002 Boot0000* UiApp Boot0001* UEFI Amazon Elastic Block Store vol-xyz Boot0002* EFI Internal Shell
    • Execute o seguinte comando para verificar a existência do diretório /sys/firmware/efi. Esse diretório só existirá se a instância for inicializada usando UEFI. Se o diretório não existir, o comando retornará Legacy BIOS Boot Detected.

      [ec2-user ~]$ [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected"

      Saída esperada de uma instância inicializada no modo de inicialização UEFI

      UEFI Boot Detected

      Saída esperada de uma instância inicializada no modo de inicialização BIOS legado

      Legacy BIOS Boot Detected
    • Execute o seguinte comando para verificar se EFI aparece na saída dmesg.

      [ec2-user ~]$ dmesg | grep -i "EFI"

      Saída esperada de uma instância inicializada no modo de inicialização UEFI

      [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: EFI v2.70 by EDK II

Definir o modo de inicialização de uma AMI

Ao criar uma AMI usando o comando register-image, é possível definir o modo de inicialização da AMI como uefi ou legacy-bios.

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 suportar o 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.

Atenção

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 através do modo de inicialização selecionado; caso contrário, a AMI resultante não será utilizável. 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 suportar a 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 uefi ao comando.

    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

    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. Todas as novas instâncias criadas a partir desta AMI herdarão o mesmo modo de inicialização.

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