[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] Xen compilation : doc : help


  • To: xen-users@xxxxxxxxxxxxxxxxxxx
  • From: Jorge Armando Medina <jmedina@xxxxxxxxxxxxxxx>
  • Date: Mon, 03 May 2010 12:41:07 -0500
  • Delivery-date: Mon, 03 May 2010 10:42:45 -0700
  • List-id: Xen user discussion <xen-users.lists.xensource.com>
  • Openpgp: id=28E40632; url=

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

  

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.