Virtualización en GNU/Linux

Software
Existen un sinnúmero de aplicaciones que proveen el uso de máquinas virtuales. Estas funcionan de una determinada manera, de acuerdo a las necesidades que posea el usuario que las va a utilizar. Algunas de las que hablaremos en este documento son las siguientes:

- VirtualBox
- QEMU
- Xen
- VMWare

Cuando utilizamos estas aplicaciones existen dos elementos fundamentales en este proceso:

- Sistema operativo anfitrión (Desde donde corremos el virtualizador) - Sistema operativo invitado (El que instalamos en el virtualizador)

Para este documento hemos utilizado la distribución de Linux, OpenSUSE 10.3. La instalación de estos entornos de virtualización para otras distribuciones es similar, para lo que se mencionara como hacerlo con Ubuntu y Fedora (asumiremos que se

VirtualBox
¿Qué "abstrae" VirtualBox?

VirtualBox abstraerá al crear una máquina virtual a los siguientes componentes de hardware:

- Los Discos duros se emulan como imágenes que se encuentran en el disco del sistema operativo anfitrión. Estos aparecen como archivos *.vdi.
- Pueden utilizarse imágenes de discos ópticos (archivos *.iso) como unidades de CD/DVD virtualizadas.
- Se virtualiza una tarjeta de vídeo estándar VESA con 8MB de VRAM. El desempeño puede mejorar aplicando la extes "Guest Additions", que esta disponible para GNU/Linux y Microsoft Windows.
- Virtualiza una tarjeta de red Ethernet AMD PCNet.
- Virtualiza una tarjeta de sonido Intel AC'97.

Sistemas operativos soportados
VirtualBox soporta oficialmente estos sistemas operativos. Otros pueden funcionar, aunque no se garantiza que su rendimiento sea óptimo.

- GNU/Linux 2.x
- OS/2 Warp (3, 4, 4.5)
- Novell Netware
- Sun Solaris
- OpenBSD / FreeBSD / NetBSD
- Microsoft Windows (XP, Vista, Server 2003, NT, 9x, 3.1)
- MS-DOS
- L4
- Mac OS X (Basado en Intel y solo en la edición para Mac OS X)

Funciones Básicas en VirtualBox
VirtualBox es un administrador de máquinas virtuales originalmente desarrollado por Innotek y ahora mantenido por Sun después que esta ultima adquiriera a la primera en febrero pasado. Cuenta con características como las de seamless virtualization, shared folders, remote display, etc.
Lo podemos encontrar en los repositorios de la mayorí­a de las distribuciones, para instalarlo podemos ejecutar :

En OpenSUSE:
$ sudo yast install virtualbox


En Ubuntu:
$ sudo apt-get install virtualbox


En Fedora (Previo"su"):
# yum localinstall virtualbox


Una vez instalado el administrador de máquinas virtuales procederemos a ejecutarlo.
Este virtualizador, abstrae un procesador del tipo x86, con lo que podemos correr cualquier sistema operativo que corra en esta plataforma. VirtualBox tiene una interfaz GUI que permite un manejo sencillo de una o mas máquinas virtuales. A continuación crearemos una máquina virtual en la que podamos trabajar.
- Hacemos clic en "New" o bien hacemos Ctrl+N. Luego"Next".
- Escribimos el nombre del sistema operativo y seleccionamos el tipo de sistema operativo a utilizar en virtualización. Luego "Next".

Ahora ajustaremos la memoria que va a utilizar la máquina virtual. Escogemos esto según los requerimientos del sistema operativo invitado.


Ahora necesitamos virtualizar un disco duro en donde podamos instalar el sistema operativo invitado. Para ello podemos crear uno nuevo o utilizar alguno creado anteriormente. En este Asistente, puede virtualizarse este disco duro de forma sencilla (aunque claro, si uno desea puede generarlo luego y hacer cambios después). En esta fase, seleccionamos "New" para crear un nuevo disco. En el caso que ya exista uno, seleccionamos"Existing" para buscarlo.


VirtualBox provee dos posibilidades para crear un disco duro. Una de ellas es la de"Expansión dinámica" en la cual el disco duro va utilizando espacio según lo requiera, en otras palabras, el tamaño del disco virtualizado sera solo de la cantidad de información que posea, sin embargo este disco es un poco lento. Otra opción es crear un disco con"Tamaño Fijo". Con ello, el disco virtual tendrá exactamente el mismo tamaño que uno real, es mas rápido comparado con el de expansión dinámica.


Luego de haber escogido el tipo de disco virtualizado se escoge un tamaño indicado (esto debe ser según los requerimientos técnicos del sistema operativo invitado que vamos a instalar). De ahí, "Next ".


Si estamos de acuerdo con las especificaciones finales, debemos ir a "Finish ". Se ha creado así el disco duro virtualizado donde se instalara el SO. Se generará un archivo *.vdi. Esto servirá por si mas adelante se desea crear otra máquina virtual y queremos usar el mismo disco virtual.


Ahora que hay un disco duro disponible para la instalación, puede continuarse configurando la máquina virtual. En la lista se muestran las especificaciones. Si todo esta correcto se termina con "Finish ". La máquina virtual ya está creada y lista para utilizarse.


Podemos administrar las máquinas virtuales en el panel derecho de VirtualBox. Si deseamos realizar cambios mas adelante podemos hacer doble clic en "Settings " seleccionando la máquina virtual a modificar.


Es posible usar la imagen de un CD o DVD y utilizarlo virtualmente. Con ello también podemos instalar el sistema operativo invitado. Para ello se puede ir, en esta pantalla, al lado izquierdo y hacer clic en "CD/DVD-ROM " donde podemos elegir una unidad física o una imagen.

VirtualBox permite guardar el estado de una máquina virtual durante su ejecución. Para ello, durante la ejecución, vamos al menú "Machine " y guardamos el estado (snapshoot).
 
Otras funciones de VirtualBox:

Virtualización "Seamless "

VirtualBox tiene la capacidad de virtualización Seamless para Microsoft Windows por medio de la instalación de sus complementos (llamados "Guest Additions"). Estos vienen en la imagen de un CD.

Este tipo de virtualización permite que el sistema operativo invitado, en este caso Windows haga parecer que sus programas se ejecutan "nativamente " en el sistema operativo anfitrión (en este caso Linux).
En VirtualBox bastara con entrar al Modo Seamless para poder usar esta característica.

Redes Virtuales

VirtualBox es capaz de virtualizar una red entre los sistemas operativos invitados que se encuentren instalados en las máquinas virtuales y/o el sistema operativo anfitrión.

Carpetas compartidas

En VirtualBox es la opción "Shared Folders " permite compartir un directorio, el que el usuario elija, para intercambiar archivos entre el sistema operativo invitado y el sistema operativo anfitrión.

VMWare

Este es un administrador de maquinas virtuales que es un Freeware y es Software Propietario, por lo que no se profundizara mucho sobre el mismo. Sus cualidades son similares a las de VirtualBox. VMWare Server esta disponible para Linux y Windows. Esta disponible una version similar para Mac OS X, llamada VMWare Fusion y que ademas permite virtualizacion Seamless. Las ediciones cliente de este virtualizador como VMware Workstation no son freeware.

Para instalarlo debemos dirigirnos a la web de vmware y descargarlo, pues por no ser software libre puede que no lo encontremos en los repositorios, luego lo instalamos de acuerdo a la forma en la que se realiza con el administrador de paquetes de la distribución que estemos utilizando.


Sistemas operativos soportados

- Microsoft Windows (Solo ediciones 32 bits)

- GNU/Linux

- Novell Netware

- Solaris

Otras caracterí­sticas

- Carpetas compartidas
- Virtualizacion "Seamless " (Sólo VMWare Fusion, aunque se puede realizar un procedimiento parecido al que se realizará luego con QEMU para obtenerlo en las versiones gratuitas)

QEMU

Es es realidad un emulador de procesadores y un administrador de virtualización libre disponible para sistemas operativos Unix-like. También puede correr en Windows haciendo uso de algunas librerías (bibliotecas) propietarias.

No cuenta con una interfaz gráfica (GUI), ya que toda configuración se realiza por medio de linea de comandos (CLI). Es muy flexible, y puede emular varios tipos de procesador.

¿Qué "abstrae " QEMU?

QEMU emula casi cualquier tipo de procesador como x86, x86-64, PowerPC, MIPS, SPARC, etc.

 
Funciones Básicas en QEMU

Por ser Software Libre podemos encontrarlo en varios repositorios. Para instalarlo desde Terminal (Consola) ejecutaremos los siguientes comandos:

OpenSUSE
$ sudo yast -i qemu


Ubuntu
$ sudo apt-get install qemu


Fedora (antes "su ")
# yum localinstall qemu


A continuación se dan las pautas básicas para generar una máquina virtual de acuerdo a lo que indica la web oficial de QEMU. Para mayor información se puede revisar la documentación en esa web.

- Primero debemos crear un disco duro virtual en donde instalaremos nuestro sistema operativo invitado. Para lo siguiente escribiremos en Terminal.
$ qemu-img create -f qcow2 nombre_disco.img xG

Donde nombre_disco.img es la imagen de disco y x es el tamaño.
- Ahora que tenemos el disco, iniciaremos la máquina virtual con el siguiente comando. Como aun el disco no tiene SO instalado, debemos bootear con algún disco que lo contenga. Para ello bootearemos de CD. Podemos usar una imagen o la unidad física.
$ qemu -cdrom /dev/cdrom -hda disco.img -m x -boot d

Donde disco.img es la imagen de disco.
- Con esto iniciaremos la máquina virtual.


Para controlar la máquina virtual bastará con hacer CTRL+ALT+2 que nos llevará a la consola. Desde ahí podemos realizar varias funciones como guardar el estado de la máquina virtual, ver información acerca de la misma, reiniciar y/o apagar, cambiar de CD, etc. Para recibir ayuda, basta con escribir "help" (sin comillas). Para regresar a la máquina virtual, hacemos CTRL+ALT+1.

Luego de haber instalado el sistema operativo invitado en la máquina virtual, podemos acceder a ella con el siguiente comando desde Terminal.
$ qemu -hda disco.img -m x

Donde disco.img es la imagen de disco.
QEMU no tiene activado por defecto el sonido, así que si lo que se desea es trabajar con sonido en una máquina virtual, cuando ejecutemos la máquina virtual escribamos (se emula una SoundBlaster 16).
$ qemu -hda disco.img -m x -soundhw sb16


Para establecer la hora local se usa el parámetro -localtime al iniciar.

Otras funciones de QEMU

El Modulo kQEMU

Este es un modulo que provee de aceleración para la emulación con QEMU. De acuerdo a lo que indica su documentación, este logra acelerar una máquina virtual con un procesador x86 a una rapidez cercana a la nativa.

Podemos encontrarlo, ya compilado en los repositorios de la mayoría de distribuciones. Sin embargo, no esta en todas, así que en algunos casos sera necesario compilarlo. En este documento no explicaremos como compilar un programa en Linux, las instrucciones pueden encontrarse en la web oficial.

Si ya lo tenemos instalado, para utilizarlo, podemos agregar el parámetro

"-kernel-kqemu " (sin comillas) al iniciar.

Para comprobar que nuestra máquina virtual usa kqemu debemos ir a la consola (CTRL+ALT+1) y escribir "info kqemu" (sin comillas). El mensaje "enabled for user and kernel mode " significa que estamos corriendo la MV con kQEMU.


Virtualizacion Seamless

QEMU no provee por si mismo un modo directo de utilizar este tipo de virtualización Sin embargo, para Windows como SO invitado, existen métodos que hacen uso de "rdesktop", una herramienta para escritorios remotos, con los que se puede obtener esta característica Bastara con iniciar nuestra máquina virtual Â­: (windows.img es el disco donde tenemos MS-Windows)

qemu -m 384 -redir tcp:3389::3389 windows.img


Activando el acceso remoto dentro de Windows e instalando en el mismo el paquete "seamlessrdp", ejecutaremos rdesktop con esta forma:
rdesktop -A -s "c:\\seamlessrdp\\seamlessrdpshell.exe " :3389 -u administrator -p password

Xen

Es una herramienta para virtualización muy potente, orientada principalmente a servidores. Admite varias máquinas virtuales corriendo en una sola computadora, al mismo tiempo.

La forma en la que virtualiza Xen es un poco distinta a las de otros virtualizadores, puesto que se basa en algo llamado "Paravirtualización ". Esto hace que el virtualizador se ejecute en un nivel de privilegio (o "ring") mas alto que el sistema operativo invitado y así tiene un poder mayor que este ultimo. La paravirtualización solo es posible con sistemas operativos abiertos, pues es necesario que modificarlos para correr de esta forma.

Sin embargo, Xen también puede usar una forma de virtualización completa, por la cual se puede lograr esto mismo sin modificaciones en el sistema operativo.

Funciones Básicas en Xen

Para instalar Xen escribimos los siguiente desde Terminal:

sudo yast -i xen

sudo apt-get install xen

yum install xen

Luego, abrimos YaST y seleccionamos "Instalar Hypervisor y herramientas ". Después de esto se habrá agregado al GRUB la opción de "XEN", con la que iniciaremos. Necesitamos reiniciar el PC.


Ahora abrimos nuevamente YaST y en la sección de Virtualizacion tendremos dos nuevos iconos: "Crear una máquina virtual " y "Administrador de máquina virtual".

Se selecciona el sistema operativo invitado. Luego "Next ".

Finalmente se asigna el disco virtual y se configuran algunas otras opciones. El Administrador de máquina Virtual que aparece en el YaST, provee un mejor manejo.


Sistemas Operativos Soportados

En un principio, como se mencionó antes, Xen solo soportaba sistemas operativos libres y/o de fuente abierta, pues debían ser modificados para poder correr de forma diferente. Sin embargo, a la fecha se ha provisto soporte a nuevos sistemas operativos ya que tecnologías nuevas de Intel y AMD aportan soluciones que hacen innecesaria la modificación de los SO para poder virtualizarlos. Algunos de los sistemas operativos soportados por Xen son:

- GNU/Linux
- Novell Netware
- Novell Open Enterprise Server (Netware kernel)
- Novell Open Enterprise Server (Linux kernel)
- Microsoft Windows*
- Solaris

Fuentes:

    http://en.wikipedia.org/wiki/Virtualbox

    http://en.wikipedia.org/wiki/Qemu

    http://bellard.org/qemu/user-doc.html

    http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/QuickStartGuide

    https://help.ubuntu.com/community/SeamlessVirtualization

    http://en.opensuse.org/Xen_Virtual_Machine_Overview

    http://en.opensuse.org/Xen_Full_Virtualization_Example

    http://en.wikipedia.org/wiki/Xen


Editado: La descarga ya está disponible.

Para mayores detalles, puedes descargar el PDF de este articulo, en donde encontrarás algunos screenshots:

Vínculo: Descargar PDF