Xen 3 en stable/testing

-Xen es un \"hipervisor\" para la arquitectura x86 que permite ejecutar multiples máquinas virtuales manteniedo un alto nivel de rendimiento. Para más información: http://es.wikipedia.org/wiki/Xen

-La versión actual es la 3.0.0, la cual puede ser descargada desde http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ . Se ha empaquetado la versión 2.0.7 para la rama inestable de Debian, y existen paquetes para la 3.0.0 en algunos repositorios: http://packages.debianbase.de

-Para facilitar la creación de los \"discos duros\" es recomendable instalar el paquete xen-tools, solo disponible en la rama inestable. Este paquete carece de dependencias propias de la rama inestable y dudo mucho que pueda afectar lo más mínimo a la estabilidad del sistema, pues se trata de unos scripts en perl que automatizan el proceso para conseguir un sistema listo para ser ejecutado por Xen. Realmente merece la pena instalarlo, aunque también se pueden realizar los pasos manualmente:
-crea los archivos correspondientes a la partición raiz, la swap, y formatearlos.
-hace debootstrap instalando el sistema mínimo.
-edita los archivos /etc/network/interfaces, /etc/hosts, /etc/hostname, /etc/fstab y /etc/inittab.
-crea el fichero de configuración de la máquina virtual utilizado por el Xen para lanzar la máquina virtual.
(Al final de este documento dejo varios enlaces).

-Para instalar xen-tools permaneciendo en la misma distribución, editamos (ó creamos en caso de que no exista) el fichero /etc/apt/preferences, quedando algo así (cambia \"stable\" por \"testing\" si estás en esta última):

Package: *
Pin: release a=stable
Pin-Priority: 900

Package: xen-tools
Pin: release a=unstable
Pin-Priority: 700

Package: *
Pin: release a=unstable
Pin-Priority: -1

-Editamos (ó creamos) el archivo /etc/apt/apt.conf, que contendrá una única línea (al igual que en el anterior, sustituye \"stable\" por \"testing\" si se dá el caso):

APT::Default-Release \"stable\";

-Añadimos las entradas de los repositorios de la inestable, y ya de paso los necesarios para instalar twisted-python (necesario para Xen) añadiendo las siguientes líneas en el archivo /etc/apt/sources.list:

# Python Twisted (no es inestable)
deb http://twisted.sourceforge.net/debian/ ./

# Unstable
deb http://ftp.oleane.net/pub/debian/ sid main
deb-src http://ftp.oleane.net/pub/debian/ sid main

-Ahora ya lo tenemos todo listo, solo queda instalar:
apt-get update ; apt-get install xen-tools iproute bridge-utils python2.3-dev python2.3-twisted libcurl3 libcurl3-dev libncurses5 libncurses5-dev patch debootstrap grub

-Decir que el Xen necesita Grub para poder arrancar, no es posible con LiLo. La instalación de Grub es fácil, lo instalas con apt, lo instalas en el MBR con \"grub-install /dev/hda2\" (sustituye \'hda2\' según tu caso), y \"update-grub\" para añadir todos los kernels disponibles en /boot. Luego puedes editar el archivo /boot/grub/menu.lst dejando los kernels que te interesen.

-Más adelante usaremos el xen-tools, ahora veamos algo sobre el Xen: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-3.0.0-src.t...

-El Xen 3.0.0 descarga el kernel 2.6.12, lo parchea y genera dos kernels: el linux-2.6.12-xen0 y el linux-2.6.12-xenU. La \"U\" viene de \"unprivileged\", ese kernel no tiene privilegios, y será usado por las máquinas virtuales. Y el \"0\" (cero) viene de Domain0, que se refiere al kernel de la máquina física: puede lanzar nuevos \"dominios\", estancias ó máquinas virtuales \"no privilegiadas\".

debian:/home/jasus/XEN# tar zvxf xen-3.0.0-src.tgz
debian:/home/jasus/XEN# cd xen-3.0.0
debian:/home/jasus/XEN/xen-3.0.0# ls
buildconfigs Config.mk docs install.sh Makefile README xen
ChangeLog COPYING extras linux-2.6-xen-sparse patches tools

-Ahora nos armamos de paciencia:
debian:/home/jasus/XEN/xen-3.0.0# make dist
debian:/home/jasus/XEN/xen-3.0.0# make world
debian:/home/jasus/XEN/xen-3.0.0# make install

-Añadimos las siguientes líneas en /boot/grub/menu.lst:

title Xen 3.0 / XenLinux 2.6.12
root (hd0,1)
kernel /boot/xen.gz dom0_mem=786432
module /boot/vmlinuz-2.6.12-xen0 root=/dev/hda2 ro

-Si te fijas, se usa el xen0 para arrancar nuestra máquina, y con dom0_mem le pasamos la memoría que nos reservamos. Ahora, más que nada para ver si vamos por buen camino, podemos reiniciar con el kernel xen0 para ver si todo ha ido correctamente. Este kernel no está configurado (módulos), así que seguramente no reconoce gran parte del hardware. Una vez dentro del sistema, entramos en una tty, nos logueamos como root y ejecutamos \"xend start\". Deberían de aparecernos unos cuantos mensajes sobre los nuevos dispositivos de red. Si aparecen mensajes de error haciendo referencia a python... revisa los pasos y los enlaces del final de este documento (tienes un problema). En caso contrario, reinicia y vuelve al kernel en el que estabas anteriormente (querrás disponer de todo mientras compilas otra vez... sigue leyendo).

-Bien, llegados a este punto el kernel Xen y xend funcionan correctamente, pero necesitas un kernel personalizado. Entramos al directorio donde estabamos, y configuramos los 2 kernels:

debian:/home/jasus/XEN/xen-3.0.0# make -C linux-2.6.12-xen0 ARCH=xen menuconfig
debian:/home/jasus/XEN/xen-3.0.0# make -C linux-2.6.12-xenU ARCH=xen menuconfig

-A la hora de configurarlos debemos de activar para el kernel-xen0:
[*] Privileged Guest (domain 0)
[*] Block-device backend driver
[*] Network-device backend driver
[*] Scrub memory before freeing it to Xen

-Y para el kernel-xenU:
[*] Block-device frontend driver
[*] Network-device frontend driver

-Por lo general, el kernel xen0 será más pesado que el xenU. Seguimos con la paciencia:
debian:/home/jasus/XEN/xen-3.0.0# make all
debian:/home/jasus/XEN/xen-3.0.0# make install

-Ahora toca reiniciar, si has configurado correctamente el kernel xen0 dispondrás de soporte para tu hardware. Una vez dentro; lo de siempre: entra en un tty como root y ejecuta \"xend start\".

-Según el equipo de desarrollo Xen es aconsejable mover las librerías TLS en xen0 (ó sea, en el sistema \"real\"): mv /lib/tls /lib/tls.disabled

-Lanzamos la red: /etc/xen/scripts/network-bridge start

-Usaremos el xen-tools para crear los discos duros virtuales. Editamos el archivo /etc/xen-tools/xen-tools.conf, este fichero ha sido creado para minimizar el nº de parámetros a utilizar en consola (son las opciones por defecto). Hay pocas, y son las siguientes:

dir = /home/jasus/XEN/VM
# Directorio donde se guardarán las imágenes. Tal y como lo tengo yo, viene a quedarse algo así:
# debian:/home/jasus/XEN# ls -R VM
# VM:
# domains
#
# VM/domains:
# xen1
#
# VM/domains/xen1:
# disk.img swap.img

gateway = 172.16.1.1
netmask = 255.255.255.0
# Para configurar el nuevo sistema con ip estática, tomará esos valores
# (deberemos pasarle el parámetro --ip con la ip para el nuevo dominio -máquina virtual-)
# Para configurarlo con dhcp descomentaremos la siguiente línea:
# dhcp = 1

kernel = /boot/vmlinuz-2.6.12-xenU
# kernel xenU para las máquinas virtuales

-Las demás opciones no requieren explicación. Para ver la ayuda \"man xen-create-image\" ó \"xen-create-image --help\". Visto esto creamos el nuevo dominio:

debian:/home/jasus# xen-create-image --ip=172.16.1.8 --hostname=xen1

-Con esto las imágenes serán creadas en /home/jasus/XEN/VM/domains/xen1, y tras finalizar nos mostrará unos cuantos comandos para personalizar el nuevo sistema antes de ser lanzado con el Xen (aunque puede ser configurado posteriormente). Ejecutamos los comandos tal y como nos dice:

debian:/home/jasus# mkdir /mnt/tmp
debian:/home/jasus# mount -t ext3 -o loop /home/jasus/XEN/VM/domains/xen1/disk.img /mnt/tmp
debian:/home/jasus# chroot /mnt/tmp /bin/bash
debian:/# apt-get install localeconf console-data
debian:/# dpkg-reconfigure console-data
debian:/# base-config

-Al ejecutar el xen-create-image como root, el script a podido leer los archivos /etc/passwd y /etc/shadow, así que seguramente tienes los mismos usuarios en la máquina virtual que en tu máquina (edita estos dos archivos y borra las líneas correspondientes si quieres eliminarlos -los directorios de los usuarios no están creados, no hace falta borrar nada-). Cambiamos el passwd de root:

debian:/# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

debian:/# exit
debian:/home/jasus# umount /mnt/tmp

-Además de configurarnos el nuevo dominio, el xen-create-image ha creado el archivo de configuración para que Xen puede arrancarla (ubicado en /etc/xen/xen1.cfg, en mi caso). Todos los dominios cuyos archivos de configuración han sido guardados /etc/xen/auto, serán lanzados automáticamente al ejecutar \"xend start\".

*Para lanzar el dominio manualmente: xen create -c /etc/xen/xen1.cfg
*Para meternos en el dominio por shh: ssh root@172.16.1.8
*Para meternos en la consola (solo una conexión): xm console ID
*Para ver los ID de cada dominio: xm list
*Para \"destruir\" un dominio: xm destroy ID

-Como comentario, en el archivo /etc/inttab de la máquina virtual, la línea \"1:2345:respawn:/sbin/getty 38400 tty1\" debe ser editada, cambiando \'tty1\' por \'console\' (de hecho, el xen-create-image lo hace por nosotros). Lo malo es que cuando le doy a ^C pasa olímpicamente, en cambio con \'tty1\' funciona perfectamente.

-Otro error, es que cuando arranca el sistema salen unos cuantos mensajes \"Couldnt get a file descriptor referring to the console\" (^C y listo). Estos mensajes me salen tanto con \'tty1\' como con \'console\'. En la lista de correo encontré una \"posible solución\" (a mi no me ha dado resultado), y aunque estos mensajes no parecen afectar al sistema, me dan mal rollo... xD La solución era:

debian:/# install-keymap NONE
debian:/# rm /etc/console/boottime.kmap.gz

-No es necesario compilar los dos kernels cada vez, esto se puede evitar editando la línea \"KERNELS ?= linux-2.6-xen0 linux-2.6-xenU\" del Makefile.

-Para volver a dejar todo como estaba editar ó eliminar /etc/apt/apt.conf, preferences; y quitar las entradas de inestable del sources.list (pero nos quedamos con el xen-tools instalado -las entradas del Twisted Python no son ningún peligro-).

-Para desinstalar el xen:

debian:/home/jasus/XEN/xen-3.0.0# make uninstall
(ejecuta \"make help\" para ver todas las opciones).

-A partir de aquí cada uno ya puede investigar por su cuenta :)

* User\'s Manual Xen v3.0
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html

* Run your entire network on a single server: Xen
http://julien.danjou.info/xen.html

* Howto for XEN with Debian Sarge on a remote server
http://www.xmlvalidation.com/xen_howto_sarge.0.html

* Quick instructions for installing a Debian Sarge VM on Xen
http://mark.foster.cc/wiki/index.php/Debian_Sarge_on_Xen

* Guide to deploying Xen 3.0.x on Debian Sarge
http://mark.foster.cc/wiki/index.php/Xen_3.0.x_on_Debian_Sarge

* DebianDomU
http://wiki.xensource.com/xenwiki/DebianDomU

* The Perfect Xen Setup For Debian And Ubuntu
http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu

* Installing & Configuring Xen (2.0-testing) under Linux
http://www.vislab.uq.edu.au/research/accessgrid/xenag/configuring_xen.ht...

* Xen-Tools
http://www.steve.org.uk/Software/xen-tools/

* Installing Xen 3.0 upon Debian Unstable, with a custom Kernel
http://www.debian-administration.org/articles/320

* Architecture Xen Hypervisor
http://veillard.com/Talks/2005LinuxTag/architecture.gif

Enviado por longo el 25 Enero, 2006 - 00:30.

Llevo usando Vmware un par de años y con muy buenos resultados (la verdad es que sólo lo uso para el PSpice y un programa de idiomas que no hay forma de arrancarlos con wine...).
¿Xen consigue mejores resultados que VMware?
Es que había leido que quemu daba mejores resultados que VMware en los test pero para mí,que he probado los dos, me resulta más manejable VMware por la suavidad que aportaba al ratón,la resolución de la pantalla,etc...

Enviado por jasus el 25 Enero, 2006 - 00:57.

Respuesta a Llevo usando Vmware un par

El vmware es un emulador, emula todo el sistema (la targeta gráfica, la de sonido,... todo). El Xen no es un emulador, es un paravirtualizador, y no puedes arrancar el Windows por un tema de licencias (y aunque pudieses deberías de instalarle un VNC para poder ver la pantalla).

Xen de momento solo puede arrancar sistemas NetBSD, Linux, FreeBSD y Plan 9. Es como un chroot ó un UML, pero... a lo bestia, ejeje

Para el uso que le quieres dar,,, vmware hasta nuevo aviso.