xen people wrote:
> Hi ,
>
> I would like to compile xen 4 on my debian system.
> could you please help me or let me know the documents available for
> this.
> it would be really great if you give me some direction.
Based on Jean Baptiste and Boris Derzhavets and other post on the wiki I
have managed to instalal kde 4.0.0 on ubuntu 10.04 LTS server amd64 with
kernel 2.6.31.13 PVOPS, you can find what I wrote yesterday.
It is in spanish but I think it is easy to follow.
Best regards.
>
> Thanks in advance.
>
> Regards,
> Swami
> ------------------------------------------------------------------------
>
> _______________________________________________
> Xen-users mailing list
> Xen-users@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-users
--
Jorge Armando Medina
Computación Gráfica de México
Web: http://www.e-compugraf.com
Tel: 55 51 40 72, Ext: 124
Email: jmedina@xxxxxxxxxxxxxxx
GPG Key: 1024D/28E40632 2007-07-26
GPG Fingerprint: 59E2 0C7C F128 B550 B3A6 D3AF C574 8422 28E4 0632
Instalando Xen 4.0.0 en Ubuntu 10.04 LTS Server usando un kernel 2.6.31.13 PVOPS
==Instalando las dependencias para compilar Xen 4.0.0==
Para más información acerca de las dependencias lea el archivo README:
# apt-get install bcc bin86 build-essential patch bzip2 gcc gawk make binutils
bridge-utils iproute udev flex \
module-init-tools iasl git-core mercurial gcc-multilib gettext mercurial gitk \
transfig tgif texinfo texlive-latex-base texlive-latex-recommended
texlive-fonts-extra texlive-fonts-recommended \
libc6-dev libsdl-dev libcurl3 libcurl4-openssl-dev libvncserver-dev
libvncserver0 libjpeg62-dev zlib1g-dev \
libncurses5-dev libssl-dev libx11-dev libbz2-dev e2fslibs-dev pciutils-dev
uuid-dev dpkg-dev debhelper xserver-xorg-dev \
python python-dev python-pyopenssl python-pam python-twisted
NOTA: Si su sistema tiene soporte para PCI passthrough debe instalar el paquete
pciutils-dev antes
de compilar xen-tools, más info:
NOTA: Si el sistema es de 64bit instale el paquete gcc-multilib
==Compilando y empaquetando el kernel 2.6.32.12 para Xen==
Clonamos el repositorio git de jeremy:
# cd /usr/src
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git
linux-2.6-xen
# cd linux-2.6-xen
Para ver las ramas:
# git branch -r
Hacemos checkout de la versión estable del kernel PVOPS, en este caso
2.6.31.13:
# git checkout origin/xen/master -b xen/master
Si desea instalar la versión más reciente de la rama 2.6.32 use:
# git checkout origin/xen/stable-2.6.32.x -b xen/stable-2.6.32.x
Configuramos el kernel con soporte Xen Dom0 y DomU:
# make menuconfig
Entrar a "Proccessor type and features":
[*] Paravirtualized guest support --->
=! Hardy CONFIG_XEN_PRIVILEGED_GUEST=y ???
[*] Xen guest support/CONFIG_XEN=y
== Hardy
(32) Maximum allowed size of a domain in
gigabytes/CONFIG_XEN_MAX_DOMAIN_MEMORY
[*] Enable Xen privileged domain support/CONFIG_XEN_DOM0
[*] Enable support for Xen PCI passthrough
devices/CONFIG_XEN_PCI_PASSTHROUGH
[*] AMD IOMMU support/CONFIG_AMD_IOMMU
Entrar a "Bus options (PCI etc.)"
<M> PCI Stub driver/CONFIG_PCI_STUB
<M> Xen PCI Frontend/CONFIG_XEN_PCIDEV_FRONTEND
=! Hardy CONFIG_XEN_PCIDEV_FRONTEND=y
Entrar a "Device drivers":
[*] Block devices --->
<M> Xen virtual block device support/CONFIG_XEN_BLKDEV_FRONTEND
=! Hardy CONFIG_XEN_BLKDEV_FRONTEND=y
-*- Network device support --->
<M> Xen network device frontend driver/CONFIG_XEN_NETDEV_FRONTEND
=! Hardy CONFIG_XEN_NETDEV_FRONTEND=y
<*> Net channel 2 support/CONFIG_XEN_NETCHANNEL2
[*] Net channel 2 backend support (NEW)/
[*] Net channel 2 frontend support (NEW)
[*] Net channel 2 bypassee support (NEW)/CONFIG_XEN_NETDEV2_BYPASSABLE
[*] Net channel 2 bypass endpoint support
(NEW)/CONFIG_XEN_NETDEV2_BYPASS_ENDPOINT
[*] Automatically manage netchannel2 bypasses
(NEW)/CONFIG_XEN_NETDEV2_AUTOMATIC_BYPASS
Character devices --->
[*] Xen Hypervisor Console support/CONFIG_HVC_XEN
=! Hardy NO???
[*] Xen memory balloon driver/CONFIG_XEN_BALLOON=y
== Hardy
[*] Scrub pages before returning them to system/CONFIG_XEN_SCRUB_PAGES
== Hardy
<*> Xen /dev/xen/evtchn device/CONFIG_XEN_DEV_EVTCHN=y
=! Hardy NO??
[*] Backend driver support (NEW)/CONFIG_XEN_BACKEND=y
== Hardy
<*> Block-device backend driver/CONFIG_XEN_BLKDEV_BACKEND=y
== Hardy
<*> Block-device tap backend driver/CONFIG_XEN_BLKDEV_TAP=y
== Hardy
<*> Xen backend network device/CONFIG_XEN_NETDEV_BACKEND=y
== Hardy
<*> PCI-device backend driver (NEW)/CONFIG_XEN_PCIDEV_BACKEND=y
== Hardy
PCI Backend Mode (Virtual PCI) ---> CONFIG_XEN_PCIDEV_BACKEND_VPCI=y
== Hardy ????
PCI Backend Debugging (NEW)
<*> Xen filesystem/CONFIG_XENFS=y
== Hardy NO???
[*] Create compatibility mount point /proc/xen/CONFIG_XEN_COMPAT_XENFS=y
[*] Create xen entries under /sys/hypervisor/CONFIG_XEN_SYS_HYPERVISOR=y
OTROS en hardy:
CONFIG_XEN_XENBUS_DEV=y
CONFIG_XEN_NETDEV_LOOPBACK=y
CONFIG_XEN_FRAMEBUFFER=y
CONFIG_XEN_KEYBOARD=y
CONFIG_XEN_CONSOLE=y
CONFIG_BLK_DEV_LOOP=m
Compilamos el kernel:
# make
Si tiene dos nucleos:
# make -j2
Compilamos e instalamos los modulos:
# make modules_install install
Veamos que se instalo la imagen del kernel, el System.map y config
correspondientes
a la versión 2.6.31.13:
# ls -ltr /boot/
-rw-r--r-- 1 root root 3923616 2010-05-02 02:32 vmlinuz-2.6.31.13
-rw-r--r-- 1 root root 2027977 2010-05-02 02:32 System.map-2.6.31.13
-rw-r--r-- 1 root root 104620 2010-05-02 02:32 config-2.6.31.13
Se creó el directorio de modulos para el kernel:
# ls /lib/modules/
2.6.31.13 2.6.32-21-server
Cambiamos permisos al directorio /usr/src:
# ls -ld /usr/src
drwxrwsr-x 5 root src 4096 2010-05-01 23:34 /usr/src
# chmod g-s /usr/src -R
# ls -ld /usr/src
drwxrwxr-x 5 root src 4096 2010-05-01 23:34 /usr/src
OPCIONALMENTE
Creamos paquete:
# make deb-pkg
Instalamos los paquetes del kernel:
# dpkg -i ../linux-image-2.6.31.13_2.6.31.13-6_amd64.deb
Construimos dependencias de modulos:
# depmod 2.6.31.13
Creamos initram para kernel de xen:
# update-initramfs -c -k 2.6.31.13
==Instalando Xen 4 desde las fuentes==
# cd /usr/src
# wget http://bits.xensource.com/oss-xen/release/4.0.0/xen-4.0.0.tar.gz
# tar -zxvf xen-4.0.0.tar.gz
# cd xen-4.0.0/
Editar archivo de grubconf:
# vim tools/pygrub/src/GrubConf.py
Aproximadamente en la linea 379
Cambiar:
title_match = re.match('^menuentry "(.*)" (.*){',
Por:
title_match = re.match('^menuentry ["\'](.*)["\'] (.*){', l)
Compilar el Hypervisor Xen:
# make xen
Ahora compilamos Xen Tools:
# make tools
OPCIONALMENTE Compilar Xen Stub Domains:
# make stubdom
NOTA: Al compilar stubdom va a requerir acceso a internet ya que se descargaran
algunas bibliotecas.
Instalar el hypervisor Xen:
# make install-xen
Instalar xen tools:
# make install-tools PYTHON_PREFIX_ARG=
OPCIONALMENTE instalar xen stub domains:
# make install-stub
Otras opciones de make:
make help
make clean
Agregando el demonio xend y xendomains al arranque:
# update-rc.d xend defaults 20 21
# update-rc.d xendomains defaults 21 20
Agregar entrada al menu de grub para arrancar el kernel 2.6.31.13 PVOPS:
# vim /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the â??exec tailâ?? line above.
menuentry 'Xen 4 / Ubuntu 10.04 LTS, Linux 2.6.31.13' --class ubuntu --class
gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 16e392a7-79be-47ea-82f7-d15fb4da3c79
multiboot (hd0,1)/xen.gz dummy=dummy
module (hd0,1)/vmlinuz-2.6.31.13 dummy=dummy
root=UUID=77eebfa4-b5fa-4781-8cc6-c53dd2afeeb7 ro
module (hd0,1)/initrd.img-2.6.31.13
}
Version origianl de /boot/grug/grub.conf
menuentry 'Ubuntu, with Linux 2.6.32-21-server' --class ubuntu --class
gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 16e392a7-79be-47ea-82f7-d15fb4da3c79
linux /vmlinuz-2.6.32-21-server
root=UUID=77eebfa4-b5fa-4781-8cc6-c53dd2afeeb7 ro quiet
initrd /initrd.img-2.6.32-21-server
}
Ejecutar update-grub para actualizar el archivo /boot/grub/grub.cfg
# update-grub
Cambiar default:
# vim /etc/default/grub
de
GRUB_DEFAULT=0
a
GRUB_DEFAULT=6
NOTA: Si no configuró el nuevo kernel como default, presione la tecla shift
antes de que grub inicie
el kernel default para entrar al menú de grub2.
Por default, la mayorÃa de distribuciones Linux solo permiten la creación de
8 dispositivos loop,
los cuales son usados para usar imagenes de disco para las maquinas virtuales.
Para permitir la creación de más de 8 dispositivos loop agregue la opción
max_loop al modulo loop,
usando los archivos en el directorio /etc/modprobe.d/por ejemplo:
# echo "options loop max_loop=128" > /etc/modprobe.d/loop
Ahora si re inicie el sistema para arrancar con el kernel pvops:
# reboot
==Iniciando el sistema con soporte Xen Dom0 PVOPS==
Si el sistema inicio correctamente, y se nos presenta el shell, debemos
verificar cierta información
para confirmar que la instalación del kernel pvos y Xen 4.0.0 fué exitosa:
Validando la versión del kernel:
# uname -a
Linux xh4l.example.com 2.6.31.13 #6 SMP Sun May 2 12:07:14 CDT 2010 x86_64
GNU/Linux
Note que ya muestra un kernel 2.6.31.13 SMP X86_64 lo cual indica que todo fue
bien.
Ahora verifiquemos que el demonio xend este iniciado:
# ps -fea | grep xend
root 3365 1 0 13:51 ? 00:00:00 /usr/bin/python /usr/sbin/xend
start
root 3366 3365 0 13:51 ? 00:00:00 /usr/bin/python /usr/sbin/xend
start
Perfecto, el demonio si esta en ejecución, ahora veamos si nos podemos
comunicar con xend
a través del comando xm, por ejemplo:
Consultando la información de Xen con el comando xm info:
# xm info
host : xh4l.example.com
release : 2.6.31.13
version : #6 SMP Sun May 2 12:07:14 CDT 2010
machine : x86_64
nr_cpus : 2
nr_nodes : 1
cores_per_socket : 2
threads_per_core : 1
cpu_mhz : 2611
hw_caps :
178bf3ff:ebd3fbff:00000000:00000010:00002001:00000000:0000011f:00000000
virt_caps : hvm
total_memory : 1772
free_memory : 129
node_to_cpu : node0:0-1
node_to_memory : node0:129
node_to_dma32_mem : node0:129
max_node_id : 0
xen_major : 4
xen_minor : 0
xen_extra : .0
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : unavailable
xen_commandline :
cc_compiler : gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
cc_compile_by : root
cc_compile_domain : example.com
cc_compile_date : Sun May 2 13:10:40 CDT 2010
xend_config_format : 4
En la salida anterior podemos ver información importante sobre el sistema, por
ejemplo:
virt_caps : hvm
El sistema tiene soporte para full virtualization
total_memory : 1772
El sistema tiene un total de memoria de 1772.
free_memory : 129
El sistema Dom0 tiene 129 MB libres.
xen_major : 4
La versión mayor del hypervisor es 4.
xen_minor : 0
La versión meno del hypervisor es 0.
xen_extra : .0
La versión extra del hypervisor es 0.
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
El hypervisor soporta las capacidades para ejecutar maquinas:
xen-3.0-x86_64 - PV 64bit
xen-3.0-x86_32p - PV 32bit con PAE
hvm-3.0-x86_32 - HVM 32bit
hvm-3.0-x86_32p - HVM 32bit con PAE
hvm-3.0-x86_64 - HVM 64bit
xend_config_format : 4
El formato de configuración predeterminado es la 4.
Ahora usemos el comando xm con la opción list para ver las maquinas virtuales
en ejecución:
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1829 2 r----- 22.4
==Configurando la red de Xen en modo bridge o switch virtual==
Xen por default crea un bridge usando la primer interfaz de red detectada, por
ejemplo eth0,
En este caso vamos a manejar el bridge de red usando las configuraciones de
Debian/Ubuntu usando
el archivo /etc/network/interfaces, por ejemplo:
# vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto br0
iface br0 inet static
address 192.168.1.45
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
Re iniciar el servicio de red:
# /etc/init.d/networking restart
Edite el archivo de configuración del demonio xend para desactivar la
creación del bridge.
# vim /etc/xen/xend-config.sxp
#(network-script network-bridge)
Re inicie el sistema para que xend cargue sin la creación del bridge.
Verificar la configuración de las interfaces de red:
# ifconfig
Verificar la configuración del bridge:
# brctl show
En las siguientes secciones veremos como crear maquinas virtuales en diferentes
modos.
==Instalación y configuración de xen-tools para creación DomUs==
Instalando las dependencias de compilación y ejecución de xen-tools:
# apt-get install libtest-pod-perl libtext-template-perl debootstrap \
perl-modules libtext-template-perl libconfig-inifiles-perl libfile-slurp-perl
Descargamos e instalamos xen-tools:
# cd /usr/src/
# git clone git://gitorious.org/xen-tools/xen-tools.git
# cd xen-tools/
# make install
El directorio principal de configuración de xen-tools es /etc/xen-tools, en
dicho directorio encontramos
los hooks en el subdirectorio hooks.d, los esquemas de particionamiento en el
directorio partitions.d,
los roles en el directorio roles.d.
En el directorio /usr/lib/xen-tools se crearon las plantillas para la creación
de VMs, encontramos
plantillas para centos4, centos5, fedora4-13, Debian sarge,etch,lenny,squeeze,
sid y testing, gentoo,
Ubuntu dapper, edty, feisty, gutsy, hardy, intrepid, jaunty, karmic y lucid.
Las páginas del manual se instalaron en el directorio /usr/share/man/man8.
Creando directorio de imagenes:
# mkdir /var/xenimages
Creando una maquina virtual basada en archivos de imagen:
Que se necesita para crear una VM?
Nombre de la maquina virtual: --hostname
Tipo de configuración de red: --dhcp, --ip
Directorio para almacenar las imagenes: --dir
Tamaño para el disco raÃz: --size?
Tamaño para el disco swap: ??
Memoria RAM asignada: --mem??
Archivo del kernel a usar? --kernel?
Archivo de la imagen initrd: --initrd??
Por ejemplo, para crear una maquina virtual basada en archivos de imagen, con
configuración
DHCP y con el nombre test use el comando:
# xen-create-image --hostname test --dhcp --dir=/var/xenimages/
General Information
--------------------
Hostname : test
Distribution : lucid
Partitions : swap 128Mb (swap)
/ 4Gb (ext3)
Image type : sparse
Memory size : 128Mb
Kernel path : /boot/vmlinuz-2.6.31.13
Initrd path : /boot/initrd.img-2.6.31.13
Networking Information
----------------------
IP Address : DHCP [MAC: 00:16:3E:9E:45:7D]
...
...
El comando anterior creó el archivo de configuración /etc/xen/test.cfg, por
ejemplo:
# cat /etc/xen/test.cfg
==Recursos adicionales==
What is Xen?:
http://wiki.xensource.com/xenwiki/XenOverview
Xen.org History:
http://www.xen.org/community/xenhistory.html
Xen dom0 kernels:
http://wiki.xensource.com/xenwiki/XenDom0Kernels
Xen Hypervisor Boot Options:
http://wiki.xensource.com/xenwiki/XenHypervisorBootOptions
Xen Kernel Features:
http://wiki.xensource.com/xenwiki/XenKernelFeatures
Best Practices for Xen:
http://wiki.xensource.com/xenwiki/XenBestPractices
Configuring Xen to use and log to a serial console:
http://wiki.xensource.com/xenwiki/XenSerialConsole
Answers to some common problems and questions about Xen:
http://wiki.xensource.com/xenwiki/XenCommonProblems
Xen Configuration File Options:
http://wiki.xensource.com/xenwiki/XenConfigurationFileOptions
Steps to try Xen 4.0.0 Release Candidate 8 on Ubuntu Lucid 10.04 64 Bits:
http://blog.xen.org/index.php/2010/03/26/steps-to-try-xen-4-0-0-release-candidate-8-on-ubuntu-lucid-10-04-64-bits/
Running Xen 4.0.0-rc8 with Linux 2.6.32.10 paravirt_ops dom0:
http://lists.xensource.com/archives/html/xen-users/2010-03/msg00878.html
xen-tools:
http://xen-tools.org/software/xen-tools/
http://gitorious.org/xen-tools
Experimental Xen and Ubuntu. Part 1: kernel:
http://virtually-a-machine.blogspot.com/2009/12/experimental-xen-and-ubuntu-part-1.html
Experimental Xen and Ubuntu. Part 2: hypervisor:
http://virtually-a-machine.blogspot.com/2009/12/experimental-xen-and-ubuntu-part-2.html
signature.asc
Description: OpenPGP digital signature
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
|