Este manual explica cómo montar cualquier partición que esté contenida dentro de un fichero .vdi (disco virtual de VirtualBox)
Lo primero es tener claro la estructura de un fichero VDI. En realidad, no es más que un fichero de imagen de disco (iso) con una cabecera especial:
| Cabecera VDI | MBR | Partición 1 | Partición 2 |
Averiguar la longitud de la cabecera
Para conseguir esto, hace falta tener el ejecutable vditool que viene con la distribución de VirtualBox. Es necesario tener la versión 1.6.6 o anterior, ya que desde la versión 2 en adelante, esta herramienta (o mejor dicho, la funcionalidad que vamos a utilizar) desapareció.
Con dicha herramienta, realizamos lo siguiente:
$ vditool DUMP test.vdi
vditool Copyright (c) 2008 Sun Microsystems, Inc.
Dumping VDI image file="autotest.vdi" into the log file...
Log created: 2009-12-30T19:18:30.651261000Z
Dumping VDI image "autotest.vdi" mode=r/o fOpen=1 File=00000003
Header: Version=00010001 Type=2 Flags=0 Size=67108864
Header: cbBlock=1048576 cbBlockExtra=0 cBlocks=64 cBlocksAllocated=64
Header: offBlocks=512 offData=1024
Header: Geometry: C/H/S=130/16/63 cbSector=512
Header: uuidCreation={7826ef35-6189-42cf-bbad-4f39501c47ca}
Header: uuidModification={477d2b77-860f-41d2-bcf4-0597f26db977}
Header: uuidParent={00000000-0000-0000-0000-000000000000}
Header: uuidParentModification={00000000-0000-0000-0000-000000000000}
Image: fFlags=00000000 offStartBlocks=512 offStartData=1024
Image: uBlockMask=000FFFFF uShiftIndex2Offset=20 uShiftOffset2Index=20 offStartBlockData=0
The operation completed successfully!
El valor de offData que he señalado en negrita, es la longitud en bytes de la cabecera VDI.
Crear un dispositivo de bloques
Un disco, sea virtual o no, es un dispositivo de bloques, así que tenemos que asociar uno de los ficheros especiales de dispositivos de bloques con nuestro fichero VDI. Para ello, utilizaremos el comando losetup. Primero necesitamos saber el nombre de un dispositivo que no se esté usando y esté disponible:
# losetup -f
/dev/loop0
Ahora, lo que vamos a hacer es vincular el dispositivo con el fichero VDI, pero saltándonos la cabecera. De esta forma, será como si fuera un disco real:
# losetup --offset 1024 --sizelimit 67108864 /dev/loop0 test.vdi
Si os habéis fijado, en offset he colocado la longitud de la cabecera VDI. El valor que le he puesto a sizelimit es el resultado de restarle la longitud de la cabecera al tamaño del fichero VDI (todo en bytes). De esta forma, nos aseguramos que el dispositivo "no se sale" del fichero (la podríamos liar parda).
Si el disco vdi fuera o fuese un disco recién creado y estuviera vacío, es en este momento cuando tienes que particionarlo. Primero hay que crear una tabla de particiones, y luego las particiones. Puedes hacer todo con el comando parted.
Montar la partición
Ya casi estamos. Ahora, necesitamos saber dónde empieza la partición que queremos montar. Como tenemos nuestro disco en /dev/loop0, podemos averiguar esto con el comando fdisk:
# fdisk -lu /dev/loop0 Disco /dev/loop0: 67 MB, 67076608 bytes 255 heads, 63 sectors/track, 2481 cylinders, 39860255 sectores en total Units = sectores of 1 * 512 = 512 bytes Disk identifier: 0xa453a453 Disposit. Inicio Comienzo Fin Bloques Id Sistema /dev/loop0p1 63 38106179 19053058+ 83 Linux /dev/loop0p2 38106180 39857264 875511 82 Linux swap / Solaris
Es importante usar la opción -u con fdisk para que nos dé la información en sectores (por defecto utiliza cilindros como unidad). Sabiendo que cada sector son 512 bytes (según fdisk), podemos montar nuestra partición con el comando mount. Por ejemplo, si queremos montar la primera partición, haremos lo siguiente:
# mount /dev/loop0 /mnt -t ext3 -o loop,offset=$((63*512))
Como la partición comienza en el sector 63 y cada sector son 512 bytes, hay que saltarse 63*512 bytes hasta encontrar el principio de la partición.
Desmontar
Una vez que acabes de usar la partición, desmontadla normalmente. Acordaros después de desvincular el fichero de dispositivo del disco vdi. Esto se hace con:
# losetup -d /dev/loop0
Comentarios recientes
hace 7 semanas 3 días
hace 19 semanas 4 días
hace 21 semanas 1 día
hace 21 semanas 4 días
hace 22 semanas 15 horas
hace 22 semanas 4 días
hace 24 semanas 16 horas
hace 26 semanas 3 días
hace 36 semanas 4 días