Conversion d'une image EC2 AMI en image vmdk

18

J'ai réussi à faire démarrer Amazon Linux dans VirtualBox, grâce à cette réponse et à ces sites Web . Un bref aperçu des mesures que j'ai prises:

  1. Lancer l'instance EC2 avec Amazon Linux 2011.09 AMI 64 bits
  2. ddle contenu du volume EBS sur sshun fichier image local.
  3. Montez le fichier image en tant que périphérique de bouclage, puis sur un point de montage local.
  4. Créez un nouveau fichier d'image disque vide, partitionnez avec un décalage pour un chargeur de démarrage et créez un système de fichiers ext4.
  5. Montez la partition de la nouvelle image et copiez tout depuis l'image EC2.
  6. Installez grub (en utilisant le grub-legacy-ec2paquet d'Ubuntu , pas grub2).
  7. Convertissez le fichier image en vmdk à l'aide de qemu-img.
  8. Créez une nouvelle VM VirtualBox avec le vmdk.

Maintenant, la VM démarre, charge grub et le noyau est trouvé. Mais il échoue lorsqu'il essaie de monter le périphérique racine:

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

J'ai essayé de changer /boot/grub/menu.lstpour trouver le périphérique racine par étiquette et UUID, mais rien ne fonctionne. Je suppose que le noyau xen n'est pas compatible avec VirtualBox.

Le raisonnement derrière tous ces efforts est de créer une boîte Vagrant aussi proche que possible de l'environnement de production, afin que les déploiements puissent être testés localement. Je sais que ce n'est pas cher de faire des tests sur EC2, mais une mauvaise connectivité gâche souvent l'expérience. De plus, ce serait vraiment bien d'avoir une machine virtuelle avec l'environnement de production afin que les collègues n'aient pas à tout installer sous le soleil juste pour se lancer dans le développement d'applications.

Si je devais essayer d'exécuter un autre noyau, quel noyau pourrais-je obtenir pour être aussi proche que possible d'Amazon Linux 2011.09?

Reed G. Law
la source
Je faisais un travail similaire à vous et j'ai trouvé la solution sur un autre lien .. partager avec vous aussi. Testé cela et cela a fonctionné pour moi ... blog.zorangagic.com/2015/03/…
Pratap

Réponses:

7

J'ai tellement essayé et j'abandonnais, mais à la fin je réussis!

J'ai réussi à démarrer avec une AMI Amazon Linux portée sous vmware!

Je suis presque un novice, mais je l'ai fait, après des heures d'essais, en remplaçant le noyau amazon d'origine par un générique vmlinuz-2.6.32-38 tiré d'une distribution ubuntu 64 10.04.

Je reçois juste beaucoup d'erreurs parce que la configuration d'Amazon à l'intérieur de l'AMI cherche quelque chose dans une adresse interne qu'elle ne trouve évidemment pas. C'est le / usr / bin / cloud-init, je pense.

Mais je peux me connecter à l'intérieur, et il semble que tout fonctionne!

Merci de votre aide!!

J'ai écrit ce blog avec des instructions étape par étape pour migrer d'AMI vers Vmware.

J'espère que cela t'aides!

Emanuele Preda
la source
BTW, Reed, je suis arrivé exactement au point que vous avez indiqué (dracut disant "aucun périphérique racine trouvé" ... avez-vous bougé plus loin?
Emanuele Preda
Je suis arrivé à la même solution que vous: la copie du noyau à partir d'Ubuntu. Cela fonctionne, mais à ce stade, je ne sais pas à quel point le système sera similaire à l'AMI Amazon Linux.
Reed G. Law
Veuillez également voir ma réponse ici , qui fournit 2 méthodes alternatives mises à jour pour exporter vers VirtualBox / VMWare VMDK, ainsi que des instructions sur l'utilisation de votre VMDK nouvellement créé avec Vagrant
Code Bling
2

Le noyau officiel Amazon a dérivé le leur dans sa distribution 2011.09, soit 2.6.35.14.

Vous pouvez probablement obtenir le package source d'Amazon avec get_reference_source, mais je ne m'attendrais pas à ce qu'il fonctionne en dehors d'Amazon de toute façon.

Pierre Carrier
la source
1

Les employés de Cloudify ont partagé la façon dont ils créent une boîte Vagrant prête pour VirtualBox, sans accès à des machines bare metal - ils utilisent AWS.

9 étapes vers le ciel:

  • Créez une image source (AMI) [...] à l'aide de Packer.
  • Lancez une instance de travail dans AWS avec l'instantané ou l'image source comme l'un de ses disques.
  • Sur l'image de travail: créez un volume d'image brute en tant que fichier et créez une partition ext4 dessus.
  • Copiez les données du disque d'image source vers la partition ext4 précédemment créée.
  • Installez le chargeur de démarrage (extlinux) sur la partition ext4.
  • Convertissez l'image brute en VMDK.
  • Regroupez le VMDK à l'aide d'un descripteur OVF et de métadonnées Vagrant et créez un fichier tar avec l'extension content et .box.
  • Téléchargez sur S3 [ou ce que vous voulez].
  • Nettoyer.

Source : article de blog sur http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html avec les 9 étapes ci-dessus

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

Fredrik Wendt
la source