Montar un disco vdi en un ordenador anfitrión con Ubuntu 14.04
Como probablemente ya sabrás, para el ordenador que contiene máquinas virtuales (al que suele llamarse sistema anfitrión), un disco duro virtual sólo es un archivo.
Como cabe esperar, el formato (la estructura interna) de este archivo lo establecerá el software de virtualización que estemos utilizando. Su objetivo final será simular el comportamiento de un disco duro real.
La forma normal de utilizar estos archivos consiste en iniciar una máquina virtual y acceder, desde ella, a los datos del disco duro virtual como si se tratara de un disco duro real. Sin embargo, en ocasiones, necesitamos acceder a los datos del disco sin arrancar la máquina, bien porque se ha estropeado el sistema operativo de la máquina virtual o bien porque, sencillamente, queremos ahorrar tiempo.
Pues bien, en el caso de Oracle VM VirtualBox los archivos que contienen a los discos duros virtuales, utilizan la extensión vdi (del inglés, Virtual Disk Image), y la solución a este problema será muy sencilla: montar el archivo vdi como si se tratase de un dispositivo real (un CD/DVD, una memoria USB, etc).
Para lograr nuestro objetivo, usaremos un programa llamado vdfuse, que se encuentra dentro del paquete virtualbox-fuse. En Ubuntu 12.04, este paquete se encontraba dentro de los repositorios oficiales de la distribución, con lo que bastaba un simple sudo apt-get install virtualbox-fuse para comenzar a utilizarlo. Sin embargo, esta situación no se ha mantenido en Ubuntu 14.04 y se nos ha complicado un poquito el trabajo.
Aunque no pienses ejecutar ninguna máquina virtual, para llevar a cabo las tareas indicadas en este artículo, deberás tener instalado en tu sistema el programa Oracle VM VirtualBox.
Descargar virtualbox-fuse
En el momento de escribir este documento, la forma que tenemos de obtener el paquete virtualbox-fuse es descargarlo de Launchpad. En particular, debemos ir hasta la dirección https://launchpad.net/ubuntu/raring/+package/virtualbox-fuse.
1
Una vez en la página, buscamos el enlace que se corresponda con nuestro sistema (en mi caso, el de 64 bits) y hacemos clic sobre él.
Al hacerlo, obtenemos una nueva página con información específica del paquete que hemos elegido. También podemos ver el tamaño exacto del paquete que nos proponemos descargar.
2
Si todo es correcto, hacemos clic sobre el enlace con el nombre del paquete. En mi caso, virtualbox-fuse_4.1.18-dfsg-1ubuntu1_amd64.deb
Al iniciar la descarga, nos aparecerá un cuadro de diálogo donde Ubuntu nos pregunta si queremos guardar el archivo o abrirlo directamente con el Centro de software. En condiciones normales, esta segunda opción sería la más cómoda, pero el paquete virtualbox-fuse que estamos descargando plantea un pequeño problema si la versión de Oracle VM VirtualBox es posterior a la 4.1.18.
3
Como es probable que te encuentres en esta situación, lo más recomendable es guardar el archivo y seguir las instrucciones que incluimos más abajo.
Instalar vdfuse
Una vez completada la descarga, podemos instalar el paquete entero desplazándonos hasta la carpeta Descargas y escribiendo una orden similar a esta:
sudo dpkg -i --force-depends virtualbox-fuse_4.1.18-dfsg-1ubuntu1_amd64.deb
Sin embargo, como sólo necesitamos el programa vdfuse, aquí lo vamos a extraer del paquete y lo vamos a instalar por separado (aunque, sinceramente, lo hago más por cuestiones didácticas que por otra cosa).
Una vez ahí, creamos una nueva subcarpeta donde extraer el contenido del paquete. Para lograrlo, usamos la siguiente orden:
mkdir vboxfuse
(Lógicamente, el nombre de la carpeta puede ser el que prefieras)
A continuación usaremos la orden dpkg, pero en lugar de usar el argumento -i para instalar, usamos el argumento -x para extraer. Además, nos aseguramos de indicar como destino de la extracción el nombre de la carpeta que acabamos de crear:
sudo dpkg -x virtualbox-fuse_4.1.18-dfsg-1ubuntu1_amd64.deb vboxfuse
Ya tenemos todos los archivos que forman el paquete en la carpeta vboxfuse. Si quieres, puedes abrir una ventana del explorador de archivos (Nautilus) y comprobarlo.
El siguiente paso será colocar el archivo vdfuse (que ahora se encuentra en vboxfuse/usr/bin), en el lugar donde Ubuntu espera encontrar los archivos instalador, es decir, en /usr/bin. Para lograrlo, podemos usar una orden como esta:
sudo cp -av vboxfuse/usr/bin/vdfuse /usr/bin/.
(Usamos el argumento -a para preservar la estructura y los atributos del archivo original, y el argumento -v para obtener información sobre los archivos copiados)
Para dar por terminada la instalación, podemos borrar todos los archivos extraídos. Quizás la forma más sencilla sea eliminando la carpeta:
rm -rf vboxfuse
(Cuidado con el comando rm, porque es capaz de borrar todo el contenido del lugar sobre el que se aplique).
Montar el archivo vdi
Para montar el archivo vdi como si se tratara de un dispositivo físico, lo primero que debemos hacer es crear la carpeta donde vamos a montarlo. Es importante que tengamos en cuenta que esta carpeta sólo debemos crearla la primera vez que necesitemos montar el disco. Lo haremos escribiendo lo siguiente:
sudo mkdir /media/vdi
(Por supuesto, la carpeta también se puede crear desde la interfaz gráfica pero, en ese caso, deberemos asegurarnos de que actuamos con privilegios de administrador).
Llegados a este punto, ya podemos montar el disco, utilizando el comando vdfuse:
sudo vdfuse -f Mint13.vdi /media/vdi
Como puedes suponer, Mint13.vdi es el nombre del archivo que voy a usar para este ejemplo, pero, como es lógica, cada cual deberá sustituirlo por el que tenga su disco duro virtual. Además, para simplificar las cosas, yo estoy ejecutando todos los comandos desde la carpeta Descargas, que es donde se encuentra el archivo. Si no fuese así, habría que incluir la ruta completa del mismo (sin olvidar escribirla entre comillas si contiene espacios)
Aunque pueda parecer que ya hemos terminado el trabajo, creo que voy a tener que decepcionarte, porque lo que hemos conseguido hasta ahora, sólo ha sido montar el disco virtual como un todo. De hecho, puedes comprobarlo de una forma sencilla ejecutando el explorador de archivos con privilegios de administración:
sudo nautilus
Si ahora hacemos clic sobre la nueva unidad en el panel izquierdo, comprobaremos en el panel derecho que sólo se muestran las particiones que forman el disco.
Observando el panel derecho, resulta sencillo deducir cuál es la partición que nos interesa montar (en este caso, la partición número 1), aunque, para lograrlo, necesitaremos crear una nueva carpeta. Por lo tanto, recurrimos de nuevo al comando mkdir:
sudo mkdir /media/contenido
Después de esto, sólo queda utilizar la orden mount, como lo podríamos hacer con cualquier dispositivo:
sudo mount /media/vdi/Partition1 /media/contenido
Al hacerlo, se abre una nueva ventana del explorador de archivos con el contenido de la partición que acabamos de montar (igual que ocurre, por ejemplo, cuando introducimos una memoria USB)
A partir de aquí, podemos hacer uso del dispositivo virtual exactamente igual que si fuese un dispositivo físico. Por ejemplo, podemos acceder a un archivo contenido dentro de la carpeta Documentos de una cuenta de usuario…
… Y esto es todo por el momento. Espero que te resulte útil.
One more thing…
Si necesitas conocer más detalles sobre el modo en el que se guarda la información dentro de un archivo vdi, puedes echarle un vistazo al artículo Estructura interna de un archivo vdi.