Conversione di un'AMI EC2 in un'immagine vmdk


18

Sono arrivato abbastanza vicino a far avviare Amazon Linux all'interno di VirtualBox, grazie a questa risposta e a questi siti Web . Una rapida panoramica dei passaggi che ho seguito:

  1. Avviare l'istanza EC2 con Amazon Linux 2011.09 AMI a 64 bit
  2. ddil contenuto del volume EBS su sshun file di immagine locale.
  3. Montare il file di immagine come dispositivo di loopback e quindi su un punto di montaggio locale.
  4. Crea un nuovo file di immagine del disco vuoto, partiziona con un offset per un bootloader e crea un filesystem ext4.
  5. Montare la partizione della nuova immagine e copiare tutto dall'immagine EC2.
  6. Installa grub (usando il grub-legacy-ec2pacchetto Ubuntu , non grub2).
  7. Converti il ​​file immagine in vmdk usando qemu-img.
  8. Crea una nuova VM VirtualBox con vmdk.

Ora la VM si avvia, grub si carica e il kernel viene trovato. Ma non riesce quando tenta di montare il dispositivo 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

Ho provato a cambiare /boot/grub/menu.lstper trovare il dispositivo radice per etichetta e UUID, ma non funziona nulla. Immagino che il kernel xen non sia compatibile con VirtualBox.

Il ragionamento alla base di tutto questo sforzo è quello di realizzare un box Vagrant il più vicino possibile all'ambiente di produzione, in modo che gli schieramenti possano essere testati localmente. So che è economico eseguire test su EC2, ma una scarsa connettività spesso rovina l'esperienza. Inoltre sarebbe davvero bello avere una macchina virtuale con l'ambiente di produzione in modo che i colleghi non debbano installare tutto sotto il sole solo per iniziare a lavorare con lo sviluppo di app.

Se dovessi provare a eseguire un altro kernel, quale kernel potrei essere il più vicino possibile ad Amazon Linux 2011.09?


Stava facendo un lavoro simile a te e ho trovato la soluzione su un altro link .. condividendo anche con te. Ho provato questo e ha funzionato per me ... blog.zorangagic.com/2015/03/…
Pratap

Risposte:


7

Ci ho provato tanto e mi stavo arrendendo, ma alla fine ci riesco!

Sono riuscito ad avviare con un AMI Amazon Linux portato su vmware!

Sono quasi un novellino, ma l'ho fatto, dopo ore di prove, sostituendo il kernel originale di Amazon con un vmlinuz-2.6.32-38-generico preso da una distribuzione Ubuntu 64 10.04.

Ricevo molti errori perché la configurazione di Amazon all'interno dell'AMI sta cercando qualcosa in un indirizzo interno che ovviamente non trova. È il / usr / bin / cloud-init, credo.

Ma posso accedere all'interno e sembra che tutto funzioni!

Grazie per l'aiuto!!

Ho scritto questo post sul blog con istruzioni dettagliate per migrare da AMI a Vmware.

Spero che sia di aiuto!


A proposito, Reed, sono arrivato esattamente al punto che hai dichiarato (dracut ha detto "nessun dispositivo root trovato" ... ti sei spostato ulteriormente ??
Emanuele Preda,

Sono arrivato sostanzialmente alla stessa soluzione che hai fatto: copiare il kernel da Ubuntu. Funziona, ma a quel punto non so quanto il sistema funzionerà in modo simile all'AMI Amazon Linux.
Reed G. Law

Vedi anche la mia risposta qui , che fornisce 2 metodi alternativi aggiornati per l'esportazione in VirtualBox / VMWare VMDK, nonché le istruzioni sull'utilizzo del VMDK appena creato con Vagrant
Code Bling

2

Il kernel ufficiale Amazon ne ha tratto il proprio nella distribuzione 2011.09, ovvero 2.6.35.14.

Probabilmente puoi ottenere il pacchetto sorgente per quello con Amazon get_reference_source, ma non mi aspetto che funzioni comunque al di fuori di Amazon.


1

Le persone di Cloudify hanno condiviso il modo in cui creano una scatola Vagrant pronta per VirtualBox, senza accesso a macchine bare metal: usano AWS.

9 passi per il paradiso:

  • Crea un'immagine di origine (AMI) [...] usando Packer.
  • Avvia un'istanza di lavoro in AWS con l'istantanea o l'immagine di origine come uno dei suoi dischi.
  • Sull'immagine di lavoro: creare un volume di immagini non elaborate come file e creare una partizione ext4 su di essa.
  • Copia sui dati dal disco di immagine di origine nella partizione ext4 creata in precedenza.
  • Installa il bootloader (extlinux) sulla partizione ext4.
  • Converti l'immagine grezza in un VMDK.
  • Raggruppa VMDK utilizzando un descrittore OVF e metadati Vagrant e crea un file tar con il contenuto e l'estensione .box.
  • Carica su S3 [o qualunque cosa ti piace].
  • Pulire.

Fonte : post sul blog all'indirizzo http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html con i 9 passaggi precedenti

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.