Konwersja EC2 AMI na obraz vmdk

18

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:

  1. Uruchom instancję EC2 za pomocą Amazon Linux 2011.09 64-bit AMI
  2. ddzawartość woluminu EBS przechodzi sshdo lokalnego pliku obrazu.
  3. Zamontuj plik obrazu jako urządzenie pętli zwrotnej, a następnie do lokalnego punktu podłączenia.
  4. Utwórz nowy pusty plik obrazu dysku, podziel partycję z przesunięciem dla programu ładującego i utwórz system plików ext4.
  5. Zamontuj partycję nowego obrazu i skopiuj wszystko z obrazu EC2.
  6. Zainstaluj grub (używając grub-legacy-ec2pakietu Ubuntu , a nie grub2).
  7. Konwertuj plik obrazu na vmdk przy użyciu qemu-img.
  8. 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.lstaby 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?

Reed G. Law
źródło
Robiłem pracę podobną do ciebie i znalazłem rozwiązanie na innym łączu .. dzieląc się z tobą również. Przetestowałem to i zadziałało dla mnie ... blog.zorangagic.com/2015/03/…
Pratap

Odpowiedzi:

7

Próbowałem tyle i poddawałem się, ale w końcu mi się udało!

Udało mi się uruchomić z Amazon Linux AMI przeniesionym pod vmware!

Jestem prawie nowicjuszem, ale zrobiłem to po wielu próbach, zastępując oryginalne jądro Amazona vmlinuz-2.6.32-38-generycznym pobranym z dystrybucji Ubuntu 64 10.04.

Dostaję dużo błędów, ponieważ konfiguracja amazonu w AMI szuka czegoś w wewnętrznym adresie, którego oczywiście nie znajdzie. Myślę, że jest to / usr / bin / cloud-init.

Ale mogę się zalogować w środku i wydaje się, że wszystko działa!

Dzięki za pomoc!!

Napisałem ten post z instrukcjami krok po kroku, jak przeprowadzić migrację z AMI do Vmware.

Mam nadzieję że to pomoże!

Emanuele Preda
źródło
BTW, Reed, dotarłem dokładnie do miejsca, w którym podałeś (Dracut mówiąc „nie znaleziono urządzenia roota” ... czy zrobiłeś jakieś dalsze kroki?
Emanuele Preda
Doszedłem do tego samego rozwiązania, które zrobiłeś: kopiowania jądra z Ubuntu. Działa, ale w tym momencie nie wiem, jak podobny będzie system do Amazon Linux AMI.
Reed G. Law
Zobacz także moją odpowiedź tutaj , która zawiera 2 alternatywne zaktualizowane metody eksportowania do VirtualBox / VMWare VMDK, a także instrukcje dotyczące korzystania z nowo utworzonego VMDK z Vagrant
Code Bling
2

Oficjalne jądro Amazon pochodzi z dystrybucji 2011.09, tj . 2.6.35.14.

Prawdopodobnie można uzyskać pakiet źródłowy dla Amazon get_reference_source, ale nie spodziewałbym się, że i tak będzie działał poza Amazon.

Pierre Carrier
źródło
1

Ludzie z Cloudify podzielili się, w jaki sposób stworzyli Vagrant gotowy na VirtualBox, bez dostępu do maszyn bez systemu metalowego - używają AWS.

9 kroków do nieba:

  • Utwórz obraz źródłowy (AMI) [...] za pomocą Packera.
  • Uruchom instancję procesu roboczego w AWS z migawką lub obrazem źródłowym jako jednym z jej dysków.
  • Na obrazie roboczym: Utwórz surowy wolumin obrazu jako plik i utwórz na nim partycję ext4.
  • Skopiuj dane ze źródłowego dysku obrazu na wcześniej utworzoną partycję ext4.
  • Zainstaluj bootloader (extlinux) na partycji ext4.
  • Przekształć surowy obraz w VMDK.
  • Spakuj VMDK za pomocą deskryptora OVF i metadanych Vagrant i utwórz plik tar z zawartością i rozszerzeniem .box.
  • Prześlij do S3 [lub cokolwiek chcesz].
  • Sprzątać.

Źródło : post na blogu pod adresem http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html z powyższymi 9 krokami

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

Fredrik Wendt
źródło