Convertendo uma AMI do EC2 para a imagem vmdk

18

Cheguei perto de fazer o Amazon Linux inicializar dentro do VirtualBox, graças a esta resposta e estes sites . Uma rápida visão geral dos passos que dei:

  1. Iniciar a instância do EC2 com o Amazon Linux 2011.09 AMI de 64 bits
  2. dd do conteúdo do volume do EBS sobre ssh para um arquivo de imagem local.
  3. Monte o arquivo de imagem como um dispositivo de loopback e depois para um ponto de montagem local.
  4. Crie um novo arquivo de imagem de disco vazio, particione com um deslocamento para um carregador de inicialização e crie um sistema de arquivos ext4.
  5. Monte a nova partição da imagem e copie tudo da imagem do EC2.
  6. Instale o grub (usando o pacote grub-legacy-ec2 do Ubuntu, não o grub2).
  7. Converta o arquivo de imagem em vmdk usando qemu-img .
  8. Crie uma nova VM do VirtualBox com o vmdk.

Agora a VM inicializa, carrega o grub e o kernel é encontrado. Mas falha quando tenta montar o dispositivo raiz:

dracut Warning: No root device "block:/dev/xvda1" found

dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.


dracut Warning: Signal caught!

dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.
Kernel panic - not syncing: Attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.35.14-107.1.39.amzn1.x86_64 #1

Eu tentei alterar /boot/grub/menu.lst para encontrar o dispositivo raiz por rótulo e UUID, mas nada funciona. Eu estou supondo que o kernel xen não é compatível com o VirtualBox.

O raciocínio por trás de todo esse esforço é criar uma caixa Vagrant que seja o mais próxima possível do ambiente de produção, para que as implantações possam ser testadas localmente. Eu sei que é barato fazer testes no EC2, mas a conectividade deficiente geralmente estraga a experiência. Além disso, seria muito bom ter uma máquina virtual com o ambiente de produção para que os colegas de trabalho não precisem instalar tudo sob o sol apenas para começar a trabalhar com o desenvolvimento de aplicativos.

Se eu fosse tentar rodar um kernel diferente, qual kernel eu poderia chegar o mais próximo possível do Amazon Linux 2011.09?

    
por Reed G. Law 29.03.2012 / 16:12

3 respostas

7

Eu tentei muito e estava desistindo, mas no final eu consegui!

Consegui inicializar com um Amazon Linux AMI portado sob o vmware!

Sou quase um novato, mas consegui, depois de horas de tentativas, substituindo o kernel amazon original por um vmlinuz-2.6.32-38-generic tirado de uma distro do ubuntu 64 10.04 .

Acabei de receber muitos erros porque a configuração do Amazon dentro da AMI está procurando por algo em um endereço interno que, obviamente, não encontra. É o / usr / bin / cloud-init, eu acho.

Mas posso fazer login e parece que tudo está funcionando!

Obrigado pela sua ajuda !!

Eu escrevi este blogpost com instruções passo a passo para migrar da AMI para o Vmware.

Espero que isso ajude!

    
por 30.08.2012 / 16:44
2

O kernel oficial da Amazon derivou deles na sua distribuição de 2011.09, ie 2.6.35.14.

Provavelmente você pode obter o pacote fonte para o Amazon com get_reference_source , mas eu não esperaria que ele funcionasse fora da Amazon de qualquer maneira.

    
por 05.07.2012 / 20:44
1

As pessoas do Cloudify compartilharam como criaram uma caixa Vagrant pronta para o VirtualBox, sem acesso a máquinas bare-metal - elas usam o AWS.

9 passos para o céu:

  • Crie uma imagem de origem (AMI) usando [...] o Packer.
  • Inicie uma instância de trabalho na AWS com o instantâneo ou a imagem de origem como um de seus discos.
  • Na imagem do funcionário: crie um volume de imagem não processada como um arquivo e crie uma partição ext4 nele.
  • Copie os dados do disco de imagens de origem para a partição ext4 criada anteriormente.
  • Instale o carregador de inicialização (extlinux) na partição ext4.
  • Converta a imagem não processada em um VMDK.
  • Agrupe o VMDK usando um descritor OVF e os metadados do Vagrant e crie um arquivo tar com o conteúdo e a extensão .box.
  • Envie para o S3 [ou o que você quiser].
  • Limpar.

Source: Blog post at http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html with the above 9 steps

Code: https://github.com/cloudify-cosmo/cloudify-packager/tree/3.2m4/image-builder

    
por 02.09.2015 / 10:19