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:
- Starten Sie die EC2-Instanz mit Amazon Linux 2011.09 64-Bit-AMI
dd
Der Inhalt des EBS-Volumes wirdssh
in eine lokale Image-Datei übertragen.- Hängen Sie die Image-Datei als Loopback-Gerät und dann an einem lokalen Einhängepunkt ein.
- Erstellen Sie eine neue leere Disk-Image-Datei, partitionieren Sie mit einem Offset für einen Bootloader und erstellen Sie ein ext4-Dateisystem.
- Hängen Sie die Partition des neuen Images ein und kopieren Sie alles aus dem EC2-Image.
- Installieren Sie grub (mit Ubuntus
grub-legacy-ec2
Paket, nicht mit grub2). - Konvertieren Sie die Image-Datei mit vmdk
qemu-img
. - 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?