Dzięki tej odpowiedzi i tym stronom prawie zbliżyłem się do uruchomienia Amazon Linux w VirtualBox . Krótki przegląd kroków, które podjąłem:
- Uruchom instancję EC2 za pomocą Amazon Linux 2011.09 64-bit AMI
dd
zawartość woluminu EBS przechodzissh
do lokalnego pliku obrazu.- Zamontuj plik obrazu jako urządzenie pętli zwrotnej, a następnie do lokalnego punktu podłączenia.
- Utwórz nowy pusty plik obrazu dysku, podziel partycję z przesunięciem dla programu ładującego i utwórz system plików ext4.
- Zamontuj partycję nowego obrazu i skopiuj wszystko z obrazu EC2.
- Zainstaluj grub (używając
grub-legacy-ec2
pakietu Ubuntu , a nie grub2). - Konwertuj plik obrazu na vmdk przy użyciu
qemu-img
. - Utwórz nową maszynę wirtualną VirtualBox za pomocą vmdk.
Teraz maszyna wirtualna uruchamia się, ładuje grub i jądro zostaje znalezione. Ale kończy się niepowodzeniem, gdy próbuje zamontować urządzenie root:
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
Próbowałem zmienić, /boot/grub/menu.lst
aby znaleźć urządzenie root według etykiety i identyfikatora UUID, ale nic nie działa. Domyślam się, że jądro Xen nie jest kompatybilne z VirtualBox.
Powodem tego całego wysiłku jest stworzenie Vagrant box, który jest możliwie najbliższy środowisku produkcyjnemu, aby wdrożenia mogły być testowane lokalnie. Wiem, że testowanie na EC2 jest tanie, ale słaba łączność często psuje to doświadczenie. Ponadto byłoby naprawdę miło mieć maszynę wirtualną ze środowiskiem produkcyjnym, aby współpracownicy nie musieli instalować wszystkiego pod słońcem tylko po to, aby rozpocząć pracę z tworzeniem aplikacji.
Gdybym miał spróbować uruchomić inne jądro, jakie jądro mogłoby być jak najbliżej Amazon Linux 2011.09?