Konvertieren eines EC2 AMI in ein vmdk-Image

18

Dank dieser Antwort und dieser Websites habe ich es fast geschafft, Amazon Linux in VirtualBox zum Booten zu bringen . Ein kurzer Überblick über die Schritte, die ich unternommen habe:

  1. Starten Sie die EC2-Instanz mit Amazon Linux 2011.09 64-Bit-AMI
  2. ddDer Inhalt des EBS-Volumes wird sshin eine lokale Image-Datei übertragen.
  3. Hängen Sie die Image-Datei als Loopback-Gerät und dann an einem lokalen Einhängepunkt ein.
  4. Erstellen Sie eine neue leere Disk-Image-Datei, partitionieren Sie mit einem Offset für einen Bootloader und erstellen Sie ein ext4-Dateisystem.
  5. Hängen Sie die Partition des neuen Images ein und kopieren Sie alles aus dem EC2-Image.
  6. Installieren Sie grub (mit Ubuntus grub-legacy-ec2Paket, nicht mit grub2).
  7. Konvertieren Sie die Image-Datei mit vmdk qemu-img.
  8. Erstellen Sie eine neue VirtualBox-VM mit dem VMDK.

Jetzt bootet die VM, lädt das Grub und der Kernel wird gefunden. Es schlägt jedoch fehl, wenn versucht wird, das Root-Gerät bereitzustellen:

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

Ich habe versucht /boot/grub/menu.lst, das Root-Gerät nach Label und UUID zu suchen, aber es funktioniert nichts. Ich vermute, der Xen-Kernel ist nicht mit VirtualBox kompatibel.

Der Grund für all diese Bemühungen besteht darin, eine Vagrant-Box herzustellen, die so nah wie möglich an der Produktionsumgebung ist, sodass die Bereitstellung vor Ort getestet werden kann. Ich weiß, dass es billig ist, Testläufe mit EC2 durchzuführen, aber schlechte Konnektivität ruiniert oft die Erfahrung. Außerdem wäre es sehr schön, eine virtuelle Maschine in der Produktionsumgebung zu haben, damit die Mitarbeiter nicht alles unter der Sonne installieren müssen, um mit der App-Entwicklung beginnen zu können.

Wenn ich versuchen würde, einen anderen Kernel auszuführen, welchen Kernel könnte ich bekommen, um Amazon Linux 2011.09 so nahe wie möglich zu kommen?

Reed G. Law
quelle
Hat ähnlich wie Sie gearbeitet und die Lösung auf einem anderen Link gefunden. Getestet und es hat bei mir funktioniert
Pratap

Antworten:

7

Ich habe so viel versucht und ich habe aufgegeben, aber am Ende ist es mir gelungen!

Ich habe es geschafft, mit einem unter VMware portierten Amazon Linux AMI zu booten!

Ich bin fast ein Neuling, aber ich habe es nach stundenlangen Versuchen geschafft, den ursprünglichen Amazon-Kernel durch ein vmlinuz-2.6.32-38-Generikum zu ersetzen, das aus einer Ubuntu 64 10.04-Distribution stammt.

Ich bekomme nur eine Menge Fehler, weil die Amazon-Konfiguration in der AMI nach etwas in einer internen Adresse sucht, das sie offensichtlich nicht findet. Es ist das / usr / bin / cloud-init, denke ich.

Aber ich kann mich einloggen und es scheint, dass alles funktioniert!

Danke für Ihre Hilfe!!

Ich habe diesen Blogpost mit einer schrittweisen Anleitung für die Migration von AMI zu VMware geschrieben.

Hoffe das hilft!

Emanuele Preda
quelle
Übrigens, Reed, ich bin genau an dem Punkt angekommen, den Sie angegeben haben (dracut mit der Aufschrift "no root device found" ... haben Sie sich weiterbewegt?
Emanuele Preda
Ich kam zu der gleichen Lösung, die Sie auch gemacht haben: Kopieren des Kernels von Ubuntu. Es funktioniert, aber zu diesem Zeitpunkt weiß ich nicht, wie ähnlich das System dem AMI von Amazon Linux ist.
Reed G. Law
Bitte beachten Sie auch meine Antwort hier , die sich mit Ihrer neu erstellten VMDK mit Vagrant für den Export nach VirtualBox / VMWare VMDK, sowie Anweisungen 2 alternative aktualisierte Methoden liefert
Code Bling
2

Der offizielle Kernel Amazon hat ihren in ihrer 2011.09-Distribution, dh 2.6.35.14 , abgeleitet.

Sie können wahrscheinlich das Quellpaket für Amazon erhalten get_reference_source, aber ich würde nicht erwarten, dass es auch außerhalb von Amazon funktioniert.

Pierre Carrier
quelle
1

Die Leute bei Cloudify haben geteilt, wie sie eine VirtualBox-fähige Vagrant-Box ohne Zugriff auf Bare-Metal-Maschinen erstellen - sie verwenden AWS.

9 Schritte zum Himmel:

  • Erstellen Sie ein Quellimage (AMI) mit [...] Packer.
  • Starten Sie eine Worker-Instanz in AWS mit dem Snapshot oder dem Quellimage als eine der Festplatten.
  • Auf dem Worker-Image: Erstellen Sie ein Raw-Image-Volume als Datei und erstellen Sie darauf eine ext4-Partition.
  • Kopieren Sie die Daten von der Quell-Image-Festplatte auf die zuvor erstellte ext4-Partition.
  • Installieren Sie den Bootloader (extlinux) auf der ext4-Partition.
  • Konvertieren Sie das Raw-Image in ein VMDK.
  • Bündeln Sie das VMDK mit einem OVF-Deskriptor und Vagrant-Metadaten und erstellen Sie eine tar-Datei mit der Erweiterung content und .box.
  • Hochladen auf S3 [oder was auch immer Sie möchten].
  • Aufräumen.

Quelle : Blogbeitrag unter http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html mit den obigen 9 Schritten

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

Fredrik Wendt
quelle