Kernels fornecidos pelo usuário - Amazon Elastic Compute Cloud

Kernels fornecidos pelo usuário

Se você precisar de um kernel personalizado nas instâncias do Amazon EC2, poderá iniciar com uma AMI próxima da que você deseja, compilar o kernel personalizado na instância e atualizar o bootloader para apontar para o novo kernel. Esse processo varia de acordo com o tipo de virtualização que sua AMI usa. Para obter mais informações, consulte Tipos de virtualização da AMI em Linux.

AMIs HVM (GRUB)

Volumes de instância HVM são tratados como discos físicos reais. O processo de inicialização é semelhante ao de um sistema operacional do zero, com um disco particionado e um bootloader, que permite a ele funcionar com todas as distribuições do Linux atualmente compatíveis. O bootloader mais comum é o GRUB ou o GRUB2.

Por padrão, o GRUB não envia sua saída para o console da instância, pois cria um atraso de inicialização a mais. Para obter mais informações, consulte Saída do console da instância. Se você estiver instalando um kernel personalizado, considere habilitar a saída do GRUB.

Não é necessário especificar um kernel de fallback, mas recomendamos que você tenha um fallback ao testar um novo kernel. O GRUB podem recuar para outro kernel no caso de o novo kernel falhar. Ter um kernel de fallback reserva permite que a instância seja inicializada mesmo se o novo kernel não for encontrado.

O GRUB herdado para o Amazon Linux usa /boot/grub/menu.lst. O GRUB2 para o Amazon Linux 2 usa /etc/default/grub. Para obter mais informações sobre como atualizar o kernel padrão no bootloader, consulte a documentação de sua distribuição do Linux.

AMIs paravirtuais (PV-GRUB)

As Imagens de máquina da Amazon que usam virtualização paravirtual (PV) utilizam um sistema chamado PV-GRUB durante o processo de inicialização. PV-GRUB é um bootloader paravirtual que executa uma versão corrigida do GNU GRUB 0.97. Quando você inicia uma instância, o PV-GRUB inicia o processo de inicialização da cadeia e, em seguida, carrega o kernel especificado pelo arquivo da sua imagem menu.lst.

O PV-GRUB entende os comandos grub.conf ou menu.lst padrão, que permite que ele trabalhe com todas as distribuições do Linux atualmente suportadas. Distribuições mais antigas, como Ubuntu 10.04 LTS, Oracle Enterprise Linux ou CentOS 5.x, exigem um pacote especial de kernels "ec2" ou "xen", enquanto distribuições mais novas incluem os drivers necessários no pacote de kernel padrão.

A maioria das AMIs paravirtuais modernas usa uma AKI PV-GRUB padrão (incluindo todas as AMIs em Linux paravirtuais disponíveis no menu Início rápido do assistente de inicialização do Amazon EC2), por isso não há etapas adicionais que você precisa tomar para usar um kernel diferente na sua instância, desde que o kernel desejado seja compatível com sua distribuição. A melhor maneira de executar um kernel personalizado na instância é começar com a AMI mais próxima à que você deseja, compilar o kernel personalizado na instância e modificar o arquivo menu.lst para ser inicializado com esse kernel.

É possível verificar se a imagem do kernel de uma AMI é uma AKI PV-GRUB. Execute o comando a seguir describe-images (substituindo seu ID de imagem do kernel) e verifique se o campo Name começa com pv-grub:

aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd

Limitações do PV-GRUB

O PV-GRUB tem as seguintes limitações:

  • Você não pode usar a versão de 64 bits do PV-GRUB para iniciar um kernel de 32 bits ou vice-versa.

  • Você não pode especificar uma imagem de ramdisk da Amazon (ARI) ao usar uma PV-GRUB AKI.

  • A AWS testou e verificou que o PV-GRUB funciona com os seguintes formatos de sistema de arquivos: EXT2, EXT3, EXT4, JFS, XFS e ReiserFS. Outros formatos de sistema de arquivos podem não funcionar.

  • O PV-GRUB pode inicializar os kernels compactados usando os formatos de compressão gzip, bzip2, lzo e xz.

  • As AMIs do cluster não oferecem suporte nem precisam de PV-GRUB, pois usam a virtualização completa do hardware (HVM). Enquanto instâncias paravirtuais usam PV-GRUB para iniciar, os volumes de instância de HVM são tratados como discos reais, e o processo de inicialização é semelhante ao processo de inicialização do sistema operacional do zero com um disco particionado e um bootloader.

  • O PV-GRUB versões 1.03 e anteriores não são compatíveis com particionamento de GPT; elas oferecem suporte somente a particionamento MBR.

  • Se você planeja usar um gerenciador de volumes lógicos (LVM) com os volumes do Amazon Elastic Block Store (Amazon EBS), precisa de uma partição de inicialização separada do LVM. Então, você pode criar volumes lógicos com o LVM.

Configurar GRUB para AMIs paravirtuais

Para inicializar PV-GRUB, deve existir um arquivo menu.lst do GRUB na imagem; a localização mais comum para esse arquivo é /boot/grub/menu.lst.

A seguir está um exemplo de um arquivo de configuração de menu.lst para inicializar uma AMI com uma PV-GRUB AKI. Neste exemplo, há duas entradas de kernel para escolher: 2015.09 do Amazon Linux (o kernel original desta AMI) e 4.3 do Vanilla Linux (uma versão mais recente do kernel Vanilla Linux de https://www.kernel.org/). A entrada de Vanilla foi copiada da entrada original para essa AMI, e os caminhos kernel e initrd foram atualizados para os novos locais. O parâmetro default 0 aponta o bootloader para a primeira entrada que vê (nesse caso, a entrada do Vanilla), e o parâmetro fallback 1 aponta o bootloader para a entrada seguinte se houver um problema em inicializar o primeiro.

default 0
fallback 1
timeout 0
hiddenmenu

title Vanilla Linux 4.3
root (hd0)
kernel /boot/vmlinuz-4.3 root=LABEL=/ console=hvc0
initrd /boot/initrd.img-4.3

title Amazon Linux 2015.09 (4.1.10-17.31.amzn1.x86_64)
root (hd0)
kernel /boot/vmlinuz-4.1.10-17.31.amzn1.x86_64 root=LABEL=/ console=hvc0
initrd /boot/initramfs-4.1.10-17.31.amzn1.x86_64.img

Você não precisa especificar o kernel de fallback no seu arquivo menu.lst, mas recomendamos que você tenha um fallback ao testar um novo kernel. O PV-GRUB podem recuar para outro kernel no caso de o novo kernel falhar. Ter um kernel de fallback reserva permite que a instância inicialize mesmo se o novo kernel não for encontrado.

O PV-GRUB verifica os seguintes locais quanto a menu.lst usando o primeiro que encontrar:

  • (hd0)/boot/grub

  • (hd0,0)/boot/grub

  • (hd0,0)/grub

  • (hd0,1)/boot/grub

  • (hd0,1)/grub

  • (hd0,2)/boot/grub

  • (hd0,2)/grub

  • (hd0,3)/boot/grub

  • (hd0,3)/grub

Observe que PV-GRUB 1.03 e anteriores só verificam um dos dois primeiros locais dessa lista.

IDs da imagem do kernel do PV-GRUB da Amazon

As AKIs do PV-GRUB estão disponíveis em todas as regiões do Amazon EC2. Há AKIs para os tipos de arquitetura de 32 e 64 bits. A maioria das AMIs modernas usa uma AKI PV-GRUB por padrão.

Recomendamos que você sempre use a versão mais recente da AKI PV-GRUB, pois nem todas as versões são compatíveis com todos os tipos de instância. Use o comando describe-images para obter uma lista de AKIs PV-GRUB para a região atual:

aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub-*.gz

A PV-GRUB é a única AKI disponível na região ap-southeast-2. Você deve verificar se alguma AMI que deseja copiar para essa região está usando uma versão de PV-GRUB disponível nessa região.

Veja a seguir os IDs da AKI atuais de cada região. Registre novas AMIs usando uma AKI hd0.

nota

Nós continuamos a fornecer AKIs hd00 para retrocompatibilidade nas regiões em que elas estavam disponíveis anteriormente.

ap-northeast-1, Ásia-Pacífico (Tóquio)
ID da imagem Nome da imagem
aki-f975a998 pv-grub-hd0_1.05-i386.gz
aki-7077ab11 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-1, Região Ásia-Pacífico (Cingapura)
ID da imagem Nome da imagem
aki-17a40074 pv-grub-hd0_1.05-i386.gz
aki-73a50110 pv-grub-hd0_1.05-x86_64.gz
ap-southeast-2, Ásia-Pacífico (Sydney)
ID da imagem Nome da imagem
aki-ba5665d9 pv-grub-hd0_1.05-i386.gz
aki-66506305 pv-grub-hd0_1.05-x86_64.gz
eu-central-1, Europa (Frankfurt)
ID da imagem Nome da imagem
aki-1419e57b pv-grub-hd0_1.05-i386.gz
aki-931fe3fc pv-grub-hd0_1.05-x86_64.gz
eu-west-1, Europa (Irlanda)
ID da imagem Nome da imagem
aki-1c9fd86f pv-grub-hd0_1.05-i386.gz
aki-dc9ed9af pv-grub-hd0_1.05-x86_64.gz
sa-east-1, América do Sul (São Paulo)
ID da imagem Nome da imagem
aki-7cd34110 pv-grub-hd0_1.05-i386.gz
aki-912fbcfd pv-grub-hd0_1.05-x86_64.gz
us-east-1, Leste dos EUA (Norte da Virgínia)
ID da imagem Nome da imagem
aki-04206613 pv-grub-hd0_1.05-i386.gz
aki-5c21674b pv-grub-hd0_1.05-x86_64.gz
us-gov-west-1, AWS GovCloud (US-West)
ID da imagem Nome da imagem
aki-5ee9573f pv-grub-hd0_1.05-i386.gz
aki-9ee55bff pv-grub-hd0_1.05-x86_64.gz
us-west-1, Oeste dos EUA (Norte da Califórnia)
ID da imagem Nome da imagem
aki-43cf8123 pv-grub-hd0_1.05-i386.gz
aki-59cc8239 pv-grub-hd0_1.05-x86_64.gz
us-west-2, Oeste dos EUA (Oregon)
ID da imagem Nome da imagem
aki-7a69931a pv-grub-hd0_1.05-i386.gz
aki-70cb0e10 pv-grub-hd0_1.05-x86_64.gz

Atualizar PV-GRUB

Recomendamos que você sempre use a versão mais recente da AKI PV-GRUB, pois nem todas as versões são compatíveis com todos os tipos de instância. Além disso, versões mais antigas do PV-GRUB não estão disponíveis em todas as regiões. Por isso, se você copiar uma AMI usando uma versão mais antiga para uma região que não oferece suporte a essa versão, será incapaz de inicializar as instâncias executadas a partir daquela AMI até que atualize a imagem do kernel. Use os procedimentos a seguir para verificar a versão da sua instância do PV-GRUB e atualizá-la, se necessário.

Para verificar sua versão do PV-GRUB

  1. Encontre o ID do kernel para sua instância.

    aws ec2 describe-instance-attribute --instance-id instance_id --attribute kernel --region region { "InstanceId": "instance_id", "KernelId": "aki-70cb0e10" }

    O ID do kernel para essa instância é aki-70cb0e10.

  2. Veja as informações de versão do ID desse kernel.

    aws ec2 describe-images --image-ids aki-70cb0e10 --region region { "Images": [ { "VirtualizationType": "paravirtual", "Name": "pv-grub-hd0_1.05-x86_64.gz", ... "Description": "PV-GRUB release 1.05, 64-bit" } ] }

    Esta imagem do kernel é PV-GRUB 1.05. Se a versão do PV-GRUB não for a mais nova (conforme exibido em IDs da imagem do kernel do PV-GRUB da Amazon), atualize-a usando o procedimento a seguir.

Para atualizar sua versão do PV-GRUB

Se sua instância estiver usando uma versão mais antiga de PV-GRUB, atualize-a para a versão mais recente.

  1. Identifique a AKI PV-GRUB mais recente para sua região e arquitetura de processadores de IDs da imagem do kernel do PV-GRUB da Amazon.

  2. Pare a instância. Sua instância deve ser interrompida para modificar a imagem do kernel usada.

    aws ec2 stop-instances --instance-ids instance_id --region region
  3. Modifique a imagem do kernel usada para sua instância.

    aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
  4. Reinicie sua instância.

    aws ec2 start-instances --instance-ids instance_id --region region