viernes, marzo 30, 2012

Algunas notas de VirtualBox (I)

Llevo bastante tiempo usando VirtualBox para usar diversas máquinas virtuales que utilizo a la hora de trabajar. Están montada sobre una Debian Squeeze que hace de host y los sistemas invitados que se montan es básicamente una distribución derivada de Debian. Suelo manejar las máquinas virtuales desde la línea de comandos, puesto que es lento (o directamente no funciona) el uso de las consolas vía XWindow o el uso de vrdp. Entro en la máquina host con ayuda del ssh y controlo las máquinas vboxmanage. Estos dos últimos días he estado buscando información para hacer que funcionara de manera más o menos correcta y conocer las posibilidades que hay para su manejo.

Arrancar una máquina virtual headless

A la hora de arrancar una máquina virtual, VirtualBox nos muestra una ventana con la consola de la máquina. Pero puede que no se desee usarse. Para ello se puede usar en el comando startvm el parámetro --type=headless. De esta manera, el sistema operativo que se ejecuta dentro de VirtualBox esta en background. Los otros parámetros que admite son gui, para usar el entorno gráfico que se esté usando o sdl, para usar las librerías del mismo nombre.

VBoxManage startvm test --type=headless
Llegado el momento, se puede usar el protocolo vrdp para poder tener acceso a la consola, conectándonos a la máquina virtual con un cliente de Terminal Server.

Clonar una máquina virtual

Para clonar una máquina virtual se usa el comando VBoxManage clonevm, pasándole los parámetros adecuados. Se puede seleccionar el nombre de la máquina, lo que se quiere clonar y si se quiere que la nueva máquina clonada se registre en sistema. Por ejemplo:

VBoxManage clonehd test --register --name desarrollo

El comando anterior va a clonar la máquina registrada llamada test y va a crear y registrar una nueva llamada desarrollo. En este caso, el directorio donde se va a crear el fichero es el que utilice la VirtualBox por defecto para almacenar las máquinas recien creadas. Si se quiere especificar otro directorio para el destino, se puede añadir el parámetro --basefolder con el path donde se quiere que se cree la máquina virtual. ¡Ojo!, si este path es relativo utilizará como raíz el directorio $HOME/.VirtualBox.

Obtener información de la máquina virtual

El comando para obtener la información de una máquina virtual es muy sencilla showvminfo. Muestra un listado de todos los parámetros de
configuración

VBoxManage VBoxManage showvminfo nombre_máquina_virtual
Una cosa importante es que la salida del comando anterior es que es dificil de parsear por un script. Si se deseara, hay una salida mucho más lógica que es añadirle el parámetro --machinereadable. De esta manera, se puede parsear más fácilmente la salida.

Instalar las extensiones de Oracle

Una cosa importante cuando se trabaja con VirtualBox son las extensiones para la máquina virtual Oracle VM VirtualBox Extension Pack. Esta paquete contiene una serie de extensiones que son muy útiles a la hora de manejar la máquina virtual, en especial aquella que te permite ofrecer una interfaz VRDP para conectarse con un cliente de virtual server. Puede verse en Installing VirtualBox and extension packs las mejoras que introduce en la máquina virtual.
Instalarla es bastante sencillo:
  1. Se baja de la web de virtualbox la última versión que se necesite.
  2. Se comprueba los hash de la misma.
  3. Se utiliza el comando VBoxManage para instalar la extensión, como usuario root de la máquina.
La sintaxis exacta del último punto es la siguiente:

VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-4.1.10-76795.vbox-extpack
Al añadir el parámetro --replace la instalación se asegura de poder borrar una versión antigua que exista en el sistema de las mismas. Un detalle, ojo con la extensiones que utilizan la licencia VirtualBox PUEL.

Montar ficheros .vdi desde Linux

Para poder montar archivos .vdi (los discos duros del VirtualBox) es necesario recurrir a qemu y a la utilidad qemu-ndb que viene incluido
en el paquete. El kernel de Linux debe de tener soporte para Network Block Device, que permite que Linux sea un servidor remoto de su sistema de ficheros. Los pasos que hay que dar, aparte de tener instalado qemu y de asegurarase que el kernel tiene soporte para nbd compilado como módulo:

modprobe nbd

qemu-nbd -c /dev/nbd0 fichero.vdi

ls -al /dev/nbd0p*

mount -t ext3 /dev/nbd0p1 /mnt

La secuencia de órdenas anterior realiza los siguientes pasos:
  1. Carga el módulo de network block device
  2. Usando qemu, asigna el dispositivo /dev/nbd0 con el fichero que se le indica
  3. Las particiones que tiene el dispositivo aparecerán una ver ejecutada la orden anterior como /dev/nbd0pN, donde N es un entero que indica el
    número de partición: De la 1 a la 4 indica particiones primarias.
  4. Montamos la primera partición en /mnt
Una vez que se ha acabado de usar los discos, se desmonta la partición que se está usando y se desactiva el network block device que se ha creado con qemu-nbd:

umount /mnt

qemu -d /dev/nbd0
Por defecto, el sistema creará 16 network block devices que se pueden usar para ver los ficheros .vdi

Referencias

  1. Oracle VM VirtualBox, User Manual
  2. VirtualBox FAQ
  3. How do you mount a .vdi image on Linux?

Technorati Tags:

No hay comentarios: