Check the new version here

Popular channels

montar vdi a una carpeta para convertir luego a iso img etc.

bueno he encontrado una solución fácil para montar una "instalación virtual" con formato vdi en una carpeta, para luego poder convertir a otros formatos en bruto img o iso.


Primero que todo hay que aclarar que solo se pueden montar discos Fijos (FIXED) y no dinamicos, que es la otra forma en la que se pueden crear los discos en Virtualbox.

todo lo hice como usuario

haz una copia de tu vdi a una carpeta nueva

VBoxManage showhdinfo (ruta_archivo_disco_dinamico.vdi)


y te debe devolver algo como esto
UUID: 7cb1a212-160a-4d9e-ba1c-fc1f2bdad7c3
Accessible: yes
Logical size: 8192 MBytes
Current size on disk: 1165 MBytes
Type: normal (base)
Storage format: VDI
Format variant: dynamic default
Location: (ruta_archivo_disco_dinamico.vdi)


como vemos en "Format variant" el disco esta seteado en dynamic por lo tanto lo primero es convertirlo en Fixed,
VBoxManage clonehd (ruta_archivo_disco_dinamico.vdi) (ruta_archivo_disco_fijo.vdi) -variant Fixed


Atención: Según el tamaño del disco y de la máquina donde se esté ejecutando, este comando puede tardar varios minutos.

despues de ejecutado este comando vamos a comprobarlo de nuevo
VBoxManage showhdinfo (ruta_archivo_disco_fijo.vdi)


y vemos como ha cambiado la opcion de "Format variant"
UUID: d3dff406-2a46-4bd9-852c-a710aa5dacd3
Accessible: yes
Logical size: 8192 MBytes
Current size on disk: 8192 MBytes
Type: normal (base)
Storage format: VDI
Format variant: fixed default
Location: (ruta_archivo_disco_fijo.vdi)


Ahora bien para montar la imagen vdi necesitamos saber la longitud de la cabecera del disco para despreciarla a la hora de montarla, para eso usaremos:
VBoxManage internalcommands dumphdinfo (ruta_archivo_disco_fijo.vdi)


lo cual nos debe devolver algo como esto:
--- Dumping VD Disk, Images=1
Dumping VD image "(ruta_archivo_disco_fijo.vdi)" (Backend=VDI)
Dumping VDI image "(ruta_archivo_disco_fijo.vdi)" mode=r/o uOpenFlags=9 File=0x8c6f1d8
Header: Version=00010001 Type=2 Flags=0 Size=8589934592
Header: cbBlock=1048576 cbBlockExtra=0 cBlocks=8192 cBlocksAllocated=8192
Header: offBlocks=4096 offData=36864
Header: Geometry: C/H/S=1024/255/63 cbSector=512
Header: uuidCreation={d3dff406-2a46-4bd9-852c-a710aa5dacd3}
Header: uuidModification={404c008d-a88c-4324-a157-a8f5f0b28d08}
Header: uuidParent={00000000-0000-0000-0000-000000000000}
Header: uuidParentModification={00000000-0000-0000-0000-000000000000}
Image: fFlags=00010000 offStartBlocks=4096 offStartData=36864
Image: uBlockMask=000FFFFF cbTotalBlockData=1048576 uShiftOffset2Index=20 offStartBlockData=0


de aqui lo que nos interesa es la parte de offData=36864
que por supuesto siempre podemos filtrar de esta forma:
VBoxManage internalcommands dumphdinfo (ruta_archivo_disco_fijo.vdi) |egrep offData


al resultado de ese valor debemos sumarle 32256 lo cual nos devolvera 69120
resultado que usaremos para montar la imagen con el siguiente comando; pero primero pásate a super usuario "su" o utiliza "sudo" si tienes permisos, para poder usar mount.
sudo mount (ruta_archivo_disco_fijo.vdi) /mnt/ -o loop0,offset=69120


Importante: si lanza un menzaje de error como por ejemplo:
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error

In some cases useful info is found in syslog - try
dmesg | tail or so.


ejecuta sin especificar /dev/loop0 y en este orden, asi:
mount -o offset=69120 (ruta_archivo_disco_fijo.vdi) /mnt/


Asi de esta forma podemos ver contenido de la maquina virtual dentro de /mnt, y para ello debemos dirigirnos a /mnt/


ahora podemos convertir a otro formato

primero deves ejecutar lo siguiente:

# df


veras algo como:

S.ficheros bloques de 1K Usados Disponibles Uso% Montado en
dev 1473228 0 1473228 0% /dev
run 1476596 880 1475716 1% /run
/dev/sda1 46334348 22599752 21357892 52% /
tmpfs 1476596 4 1476592 1% /dev/shm
tmpfs 1476596 0 1476596 0% /sys/fs/cgroup
tmpfs 1476596 16 1476580 1% /tmp
/dev/sda3 261066940 53143740 194638696 22% /home/edvin/pelon
tmpfs 295320 8 295312 1% /run/user/1000
/dev/sdc1 609280 609280 0 100% /run/media/edvin/ARCH_201503
/dev/loop0 1464736 203408 1261328 14% /mnt


veraz como dice en la ultima fila:

/dev/loop0 1464736 203408 1261328 14% /mnt


ahora solo ejecutas:

# cat /dev/loop0 > nuevainstalacion.img "sino *.iso"


al final debemos desmontarlo

sudo umount /mnt
0
0
0
2
0No comments yet