Conversión de una ECI AMI a una imagen vmdk


18

Me he acercado bastante a lograr que Amazon Linux se inicie dentro de VirtualBox, gracias a esta respuesta y a estos sitios web . Una descripción rápida de los pasos que he tomado:

  1. Inicie la instancia EC2 con Amazon Linux 2011.09 AMI de 64 bits
  2. ddel contenido del volumen EBS ssha un archivo de imagen local.
  3. Monte el archivo de imagen como un dispositivo de bucle invertido y luego en un punto de montaje local.
  4. Cree un nuevo archivo de imagen de disco vacío, particione con un desplazamiento para un gestor de arranque y cree un sistema de archivos ext4.
  5. Monte la partición de la nueva imagen y copie todo de la imagen EC2.
  6. Instale grub (usando el grub-legacy-ec2paquete de Ubuntu , no grub2).
  7. Convierta el archivo de imagen a vmdk usando qemu-img.
  8. Cree una nueva VM VirtualBox con el vmdk.

Ahora la VM arranca, se carga grub y se encuentra el kernel. Pero falla cuando intenta montar el dispositivo raíz:

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

He intentado cambiar /boot/grub/menu.lstpara encontrar el dispositivo raíz por etiqueta y UUID, pero nada funciona. Supongo que el kernel xen no es compatible con VirtualBox.

El razonamiento detrás de todo este esfuerzo es hacer una caja Vagrant que sea lo más cercana posible al entorno de producción, para que las implementaciones puedan probarse localmente. Sé que es barato hacer pruebas en EC2, pero la conectividad deficiente a menudo arruina la experiencia. Además, sería realmente bueno tener una máquina virtual con el entorno de producción para que los compañeros de trabajo no tengan que instalar todo bajo el sol solo para comenzar a trabajar con el desarrollo de aplicaciones.

Si intentara ejecutar un kernel diferente, ¿qué kernel podría obtener para estar lo más cerca posible de Amazon Linux 2011.09?


Estaba haciendo un trabajo similar al tuyo y encontré la solución en otro enlace ... también compartí contigo. Probé esto y funcionó para mí ... blog.zorangagic.com/2015/03/…
Pratap

Respuestas:


7

Lo intenté mucho y me estaba rindiendo, ¡pero al final tuve éxito!

¡He logrado arrancar con una AMI de Amazon Linux portada bajo vmware!

Soy casi un novato, pero lo hice, después de horas de pruebas, sustituyendo el núcleo original de amazon con un vmlinuz-2.6.32-38-generic tomado de una distribución ubuntu 64 10.04.

Solo recibo muchos errores porque la configuración de Amazon dentro de la AMI está buscando algo en una dirección interna que obviamente no encuentra. Es el / usr / bin / cloud-init, creo.

Pero puedo iniciar sesión dentro, ¡y parece que todo está funcionando!

¡¡Gracias por tu ayuda!!

He escrito esta publicación de blog con instrucciones paso a paso para migrar de AMI a Vmware.

¡Espero que esto ayude!


Por cierto, Reed, llegué exactamente al punto que dijiste (dracut diciendo "no se encontró ningún dispositivo raíz" ... ¿te mudaste más?
Emanuele Preda

Llegué básicamente a la misma solución que hiciste: copiando el núcleo de Ubuntu. Funciona, pero en ese momento no sé qué tan similar funcionará el sistema al AMI de Amazon Linux.
Reed G. Law

Consulte también mi respuesta aquí , que proporciona 2 métodos actualizados alternativos para exportar a VirtualBox / VMWare VMDK, así como instrucciones sobre cómo usar su VMDK recién creado con Vagrant
Code Bling

2

El núcleo oficial de Amazon derivó el suyo en su distribución 2011.09, es decir , 2.6.35.14.

Probablemente pueda obtener el paquete fuente para Amazon get_reference_source, pero no esperaría que funcione fuera de Amazon de todos modos.


1

Las personas en Cloudify han compartido cómo crean una caja Vagrant lista para VirtualBox, sin acceso a máquinas de metal desnudo: usan AWS.

9 pasos al cielo:

  • Cree una imagen fuente (AMI) [...] usando Packer.
  • Inicie una instancia de trabajador en AWS con la instantánea o la imagen de origen como uno de sus discos.
  • En la imagen del trabajador: cree un volumen de imagen sin formato como un archivo y cree una partición ext4 en él.
  • Copie los datos del disco de la imagen de origen a la partición ext4 creada anteriormente.
  • Instale el gestor de arranque (extlinux) en la partición ext4.
  • Convierta la imagen en bruto en un VMDK.
  • Agrupe el VMDK utilizando un descriptor OVF y metadatos Vagrant y cree un archivo tar con el contenido y la extensión .box.
  • Sube a S3 [o lo que quieras].
  • Limpiar.

Fuente : Publicación del blog en http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html con los 9 pasos anteriores

Código : https://github.com/cloudify-cosmo/cloudify-packager/tree/3.2m4/image-builder

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.