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 compatíveis: 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.
Como executar tipos de instâncias Intel e AMD em UEFI
Most Intel and AMD instance types pode ser executado em UEFI e BIOS herdado. 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.
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íveis parâmetros do 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.
Tópicos do modo de inicialização
- Considerações
- Requisitos para executar uma instância com UEFI
- Determinar o parâmetro de modo de inicialização de uma AMI
- Determinar os modos de inicialização compatíveis com um tipo de instância
- Determinar o modo de inicialização de uma instância
- Determinar o modo de inicialização do sistema operacional
- Definir o modo de inicialização de uma AMI
- Variáveis UEFI
Considerações
-
Modos de inicialização padrão:
-
Tipos de instância Intel e AMD: BIOS legado
-
Tipos de instância Graviton: UEFI
-
-
Os tipos de instância Intel e AMD compatíveis com UEFI, além de BIOS herdado:
-
Virtualizado: C5, C5a, C5ad, C5d, C5n, D3, D3en, G4, I3en, M5, M5a, M5ad, M5d, M5dn, M5n, M5zn, M6i, R5, R5a, R5ad, R5b, R5d, R5dn, R5n, T3, T3a e z1d
-
-
No momento, não há suporte ao UEFI Secure Boot.
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:
-
Tipo de instância – Ao executar uma instância, é preciso selecionar um tipo de instância compatível com UEFI. Para obter mais informações, consulte Determinar os modos de inicialização compatíveis com um tipo de instância.
-
AMI – Ao executar uma instância, é preciso selecionar uma AMI configurada para UEFI. A AMI deve ser configurada da seguinte forma:
-
SO – O sistema operacional contido na AMI deve ser configurado para usar UEFI; caso contrário, a execução da instância falhará. Para obter mais informações, consulte Determinar o modo de inicialização do sistema operacional.
-
Parâmetro de modo de inicialização da AMI – O parâmetro de modo de inicialização da AMI deve ser definido como
uefi
. Para mais informações, consulte Determinar o parâmetro de modo de inicialização de uma AMI.
-
A AWS não fornece AMIs previamente configuradas para oferecer suporte a UEFI. É necessário configurar a AMI, importe a AMI através do VM Import/Export, ou importe a AMI através do CloudEndure
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)
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, escolha AMIs e, em seguida, selecione a AMI.
-
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 do modo de inicialização de uma AMI (AWS CLI versão 1.19.34 e posterior e versão 2.1.32 e posterior)
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 compatíveis com um tipo de instância
Para determinar os modos de inicialização compatíveis de um tipo de instância (AWS CLI versão 1.19.34 e posterior e versão 2.1.32 e posterior)
Use o comando describe-instance-types para determinar os modos de inicialização compatíveis com um tipo de instância. A 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 aceitos.
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)
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, selecione Instâncias e, em seguida, sua instância.
-
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 versão 1.19.34 e posterior e versão 2.1.32 e posterior)
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
-
Para visualizar o modo de inicialização do sistema operacional, tente um dos seguintes procedimentos:
-
Execute o seguinte comando.
[ec2-user ~]$
sudo /usr/sbin/efibootmgrSaí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
.
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 versão 1.19.34 e posterior e versão 2.1.32 e posterior)
-
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.
-
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-idsi-1234567890abcdef0
Saída esperada
... "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "AttachTime": "", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "
vol-1234567890abcdef0
" } } ... -
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-idvol-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": [] } -
Guarde o ID do snapshot na saída da etapa anterior.
-
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-idssnap-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", ...
-
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 uefiSaída esperada
{ "ImageId": "ami-new_ami_123" }
-
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-idami-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" } ] } -
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.
-
Para verificar se a nova instância tem o modo de inicialização esperado, use o comando describe-instances.
Variáveis UEFI
Quando você inicia uma instância em que o modo de inicialização é definido como UEFI, um armazenamento de chave-valor para variáveis é criado. O armazenamento pode ser usado pela UEFI e pelo sistema operacional da instância para armazenar variáveis UEFI.
As variáveis UEFI são usadas pelo carregador de inicialização e pelo sistema operacional para configurar o startup antecipado do sistema. Eles permitem que o sistema operacional gerencie determinadas configurações do processo de inicialização, como a ordem de inicialização.
Os sistemas operacionais geralmente fornecem acesso de leitura a processos locais para qualquer variável UEFI. Você nunca deve armazenar dados sigilosos, como senhas ou informações de identificação pessoal, no armazenamento de variáveis UEFI.