Maquinas virtuales como escritorios con VirtualBox y Debian Lenny

Hace un tiempo un colega me comentó una idea bastante extraña que tenía para máquinas virtuales, que podría ayudarle a administrar algunos sistemas bajo su dominio. Me había quedado pendiente publicar este post al respecto.

Viene más o menos así: un lote de computadoras utilizadas en forma alternada por varios usuarios, cada uno de los cuales requiere un conjunto dado de programas instalados; algunos de estos programas son incompatibles entre sí por diferencias de versiones, o presentan conflictos con el sistema operativo, o requieren privilegios de administración, etc.

Entonces pensó en una solución posible utilizando máquinas virtuales para cada usuario, donde tuviera instalado el software que requiere con los privilegios que requiere y con independencia del resto de los usuarios. De esta forma cada persona que llega debería ingresar al sistema, iniciar la aplicación de virtualización, seleccionar e iniciar su máquina virtual, y realizar el procesamiento que requiera. Al finalizar, debería apagar la VM y luego cerrar la sesión en el sistema. Lo mismo que hacemos todos aquellos que usamos VMs.

Pero – dijo – no estaría mal presentarle al usuario una lista de máquinas disponibles ni bien ingresa al sistema, de manera tal de no requerir iniciar la aplicación de virtualización. O mejor, iniciar la máquina virtual asignada al momento de iniciar sesión y presentarla al usuario como si fuera el escritorio real. Al apagar la máquina virtual, el sistema debería volver a la pantalla de login.

Bien, independientemente de que sea una buena o mala solución utilizar VMs, el concepto es interesante.

¿Es posible? Veamos si se puede realizar en forma sencilla con VirtualBox…

1. Preparando el Host

1.1. Instalar con el sistema operativo, en este ejemplo será Debian GNU/Linux 5.0 Lenny con una instalación base. Ni “entorno de escritorio”, ni “sistema estándar”, ni nada de eso: la idea es mantenerlo lo más sencillo posible.

1.2. Una vez instalado, generalmente desactivo la instalación de paquetes recomendados para no cargar el sistema con paquetes prescindibles. Para ello:

# echo "APT::Install-Recommends \"false\";" >> /etc/apt/apt.conf

1.3. Sobre el S.O. instalar Xorg, LXDE para la administración y GDM como gestor de sesiones. En realidad, es posible utilizar Openbox o Fluxbox solamente y prescindir de LXDE, pero a fines didácticos dejaremos el entorno completo.

# aptitude install xorg lxde gdm

1.4. Sobre esto instalar VirtualBox OSE y los módulos requeridos, que serán cargados automáticamente al iniciar el sistema real.

# aptitude install virtualbox-ose virtualbox-ose-modules-`uname -r`
# echo vboxdrv >> /etc/modules

2. Creando las cuentas de usuario

2.1. Ahora es el turno de crear las cuentas de usuario que tendrán acceso a las máquinas virtuales. Para este ejemplo definiremos tres usuarios que llamaremos asterix, obelix y getafix (algún patrón conocido):

# adduser asterix
# adduser obelix
# adduser getafix

2.2. Es necesario añadir estos usuarios al grupo vboxusers para que puedan utilizar las máquinas virtuales. Es posible hacerlo en la creación, pasando un parámetro al comando adduser, pero así queda bien explícito:

# adduser asterix vboxusers
# adduser obelix vboxusers
# adduser getafix vboxusers

2.3. Reiniciar el equipo para que tome los cambios. Alternativamente es posible cargar vboxdrv y e iniciar GDM. En cualquier caso, al finalizar se verá la pantalla de inicio de sesión. Opcionalmente puede configurarse el gestor gráfico para que muestre la lista de usuarios disponibles (Menú Acciones / Configurar el gestor de entrada).

3. Creando la máquina virtual para un usuario

3.1. Ingresar bajo el nombre de usuario cuya VM se desea crear e iniciar VirtualBox.

3.2. Allí definir una máquina virtual de la manera tradicional, nombrándola igual que el usuario (asterix, en este ejemplo) y estableciendo la memoria a utilizar, el sistema operativo, el tamaño de disco, etc…

3.3. Una vez creada la VM, iniciarla y proceder a instalar el sistema operativo deseado mas las aplicaciones requeridas. Adicionalmente, instalar las “Aplicaciones del huésped” (guest tools) en la máquina virtual.

3.4. Al finalizar, apagar la VM correctamente y cerrar VirtualBox.

4. Estableciendo el inicio de la máquina virtual al inicio de sesión

4.1 Crear un archivo de texto llamado .xsession en el home del usuario, conteniendo lo siguiente:

#!/bin/sh
exec VBoxSDL -vm $USER -fullscreen

4.2. Cerrar la sesión de usuario y volver a iniciar sesión. La máquina virtual deberá iniciar automáticamente en pantalla completa.

4.3. Para salir / cerrar, apagar del sistema operativo virtual, o bien pulsar CtrlDer+H, o CtrlDer+Q. El sistema deberá cerrarse correctamente y volver a la pantalla de inicio de sesión.

5. Crear las máquinas para los restantes usuarios

… procediendo de manera análoga al caso anterior.

6. ¡Listo!

Ya tenemos una VM Jukebox en el equipo, o algo por el estilo. Ahora a por una buena taza de café.

I. Algunas notas adicionales

I.1. Es posible utilizar VirtualBox 2.1.4 (en vez de 1.6.6), añadiendo el repositorio testing en /etc/apt/sources.list e instalando los módulos apropiados mediante module-assistant.

I.2. Se puede cambiar la configuración de inicio de cada VM desde el mismo script en .xsession. Por ejemplo, si se desea iniciar la máquina virtual con 64 MB de ram, el script deberá contener

exec VBoxSDL -vm $USER -fullscreen -m 64

o para iniciar con una imagen ISO en la unidad de CD virtual:

exec VBoxSDL -vm $USER -fullscreen -cdrom ARCHIVO.ISO -boot d

I.3. Para cambiar la tecla con la cual se administra la máquina virtual, por ejemplo con la tecla WIN Derecha (en vez de con Ctrl Derecha), utilizar:

exec VBoxSDL -vm $USER -fullscreen -hostkey 312 0

donde el valor del parámetro hostkey define la tecla a utilizar. Ejecutando el comando VBoxSDL -detecthostkey en una terminal es posible obtener el parámetro correspondiente al conjunto de pulsaciones deseado.

Bueno, todo esto para ver si la idea era posible usar una máquina virtual como escritorio. Pues resulta que sí, con algunos comandos y tres líneas de código (4.1).
Creo que no me olvidé ningún paso, en caso contrario, me avisan.

Suerte y saludos!

Actualización 2010: Charly (un maestro!) me ha hecho saber que en Ubuntu 9.10 Karmic, el archivo .xsession es ignorado totalmente, por lo cual al iniciar sesión el usuario vuelve al escritorio de Gnome en vez de ver iniciar la máquina virtual. No tengo idea qué es lo que tuvo en mente la gente de Ubuntu con este extraño comportamiento, pero ya hay varios bugs reportados [398300, 459122, 465349] con algunos parches posibles.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress