jump to navigation

Virtualización de escritorios en Linux 14 septiembre, 2008

Posted by ubanov in Informática-Linux.
Tags: , , , , ,
trackback

Ultimamente está muy de moda (informáticamente hablando) el configurar en grandes empresas los puestos virtualizados (utilizando productos como, o bien algunas de las opciones de Citrix o VDI de VMware). Para probar he decidido preparar una instalación de máquinas virtualizadas desde linux, empleando para ello sólo software libre.

Para ello lo que he preparado, ha sido una máquina con Debian 4.0 como servidor, xen como software de virtualización y varios software como sistema operativo (en concreto Debian, Ubuntu y Windows XP).

A las máquinas virtualizadas se va a acceder por VNC, de esta forma acabaré la instalación poniendo máquinas sin disco duro que arranquen por PXE desde la red, carguen un software de cliente ligero y se conecten por VNC contra su máquina virtual.

Para empezar con el servidor lo que hay que hacer es instalar Debian 4.0 y el DomU Xen, para ello he seguido lo que he escrito en la página: https://ubanov.wordpress.com/2008/08/26/virtualizacion-con-xen-en-debian/

Después debemos de empezar a instalar el software cliente. Para ello lo primero que he preparado es una máquina Debian e interface de usuario Gnome. Para instalarlo lo que he hecho es crear una copia de /etc/xen-tools/role.d/gdm, sobre el fichero /etc/xen-tools/role.d/gnome y he hecho los siguientes cambios sobre el fichero:

# IVAN: aniadir gnome, firefox, thunderbird y openoffice
#installDebianPackage ${prefix} icewm-experimental
installDebianPackage ${prefix} gnome
installDebianPackage ${prefix} openoffice.org
installDebianPackage ${prefix} mozilla-firefox
installDebianPackage ${prefix} mozilla-thunderbird

#
#  Add a new section to the GDM configuration file.
#
# IVAN: esto no es correcto (quitar el X11) y aniadir el 0=VNC
cat <<EOF >> ${prefix}/etc/gdm/gdm.conf
0=VNC

[server-VNC]
name=VNC server
command=/usr/bin/Xvnc -geometry 800×600 -depth 24
flexible=true
EOF

#
#  Make the new section the default
#
# IVAN: esto tampoco
#perl -pi.bak -e ‘s/^0=Standard/0=VNC/g’ ${prefix}/etc/X11/gdm/gdm.conf

 

Una vez configurado este fichero podemos crear la nueva máquina virtual con:

xen-create-image –hostname=plantillapuesto –role=gnome –memory=256

Pasado un buen rato (descarga todos los paquetes de Internet), nos creará nuestra máquina virtual. Podremos arrancarla con “xm create plantillapuesto.cfg”. Una vez creada nos podemos conectar con ella (xm console plantillapuesto) y hacer las configuraciones básicas: lo mínimo sería poner password a root (passwd root) y crear un usuario (adduser usuario). Mejor aún seríaconectar con un sistema de directorio de usuarios centralizados… esto otro día😀

Una vez hecho todo esto podríamos conectarnos por VNC contra la dirección IP de la máquina virtual (la podemos ver con ifconfig dentro del xm console). En teoría Xen tiene opciones para poder exportar la máquina por VNC. Yo esto lo he conseguido hacer con máquinas totalmente virtualizadas, pero no con máquinas paravirtualizadas… por lo tanto en este caso ya sabéis, si alguien me dice cómo conectar por VNC contra toda la máquina que me lo cuente por favor.

Para conectarnos con VNC podemos bajar el Tight VNC Viewer para windows o hacer un apt-get install xtightvncviwer en linux.

Una vez creada la primera imagen, deberíamos parametrizarla según nuestros gustos (añadir otro software con apt-get, cambiar los parámetros que fuese…). Mi idea es utilizar esa imagen como plantilla e ir creando luego máquinas basadas en ella.

Una vez tengamos la máquina como queremos, quitariamos de /etc/xen-tools/xend-config.sxp la línea de debootstrap=1 y crearíamos máquinas con:

mkdir /mnt/tmp ; mount /home/xen/domains/plantillapuesto/disk.img /mnt/tmp -o loop
xen-create-image –hostname=puesto1 –memory=256 –copy=/mnt/tmp
xen-create-image –hostname=puesto2 –memory=256 –copy=/mnt/tmp
umount /mnt/tmp

Una vez hecho esto podremos arrancar las máquinas como siempre: “xm create puesto1.cfg; xm create puesto2.cfg”, pero van a tener un pequeño problema, no van a tener la red configurada. Lo que ocurre es que cuando al clonar la máquina y “cambiar de hardware” (es decir de máquina virtual) cambia la dirección mac de la tarjeta de red. Cuando cambia esta, el sistema le ha reservado a eth0 a la tarjeta de red que ya no tiene, y a la nueva tarjeta la ha llamado eth1. La forma fácil de solucionar esto es borrar todas las líneas del fichero /etc/udev/rules.d/z25_persistent-net.rules y reiniciar.

Ya podremos conectarnos con dos puestos, contra las dos máquinas virtuales, utilizando VNC (a cada máquina con su IP correspondiente).

El siguiente paso a hacer es crear máquinas sin paravirtualización. Es decir con emulación completa del hardware. Para hacer esto necesitamos que la máquina soporte las instrucciones de virtualización (VT de Intel o AMD-V de AMD). Podemos comprobarlo haciendo “grep flags /proc/cpuinfo”, debería aparecer vmx o svm

Para crear la nueva máquina virtual ejecutamos:

mkdir /home/xen/domains/maquinahvm
dd if=/dev/zero of=/home/xen/domains/maquinahvm/disk.img bs=1M seek=4095 count=1
cat >/etc/xen/maquinahvm.cfg <<EOF
kernel=’/usr/lib/xen/boot/hvmloader’
builder=’hvm’
memory=’256′
device_model=’/usr/lib/xen/bin/qemu-dm’

disk= [ ‘file:/home/xen/domains/maquinahvm/disk.img,ioemu:hda,w’,
  ‘file:/dev/cdrom,ioemu:hdc:cdrom,r’ ]

name=’pruebahvm’

vif= [‘type=ioemu,bridge=xenbr0′]
boot=’d’

acpi=1
apic=1

vnc=1
#vncviewer=1
sdl=0
EOF

Arrancando esta sesión nos arrancará desde el CD o DVD que tengamos (ya sea Ubuntu, XP o lo que sea). Para acceder a la máquina virtual nos conectaremos por VNC (contra la dirección de la máquina dom0 y generalmente en el puerto 5900).

Lo malo que esto sistemas operativos no son tan fácilmente clonables como la anterior.

Como paso siguiente haber si os describo la configuración que tengo para que arranque por PXE una máquina sin disco duro y que se conecte a estas sesiones VNC

Comentarios»

1. Sebastian - 30 diciembre, 2008

Ivan, sigo leyendo tus post y me parecen muy interesantes.

Sobre este tengo algunas dudas, te consulto, es posible tomar contacto vía msn/jabber/gtalk?

Muchas Gracias.

2. Virtualización con Xen en Debian 5 (Lenny) « El Weblog de Ivan Ricondo (Ubanov) - 13 abril, 2009

[…] Si lo que quieres es emular puestos en lugar de servidores mira el siguiente link: https://ubanov.wordpress.com/2008/09/14/virtualizacion-de-escritorios-en-linux/ […]

3. Pato - 6 agosto, 2009

Felicidades, buenísimo post.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: