(Paravirtualização com Xen de acordo com o manual oficial)
Neste artigo será mostrado como paravirtualizar um GNU/Linux com Xen. Todos os procedimentos aqui adotados, estão de acordo com o manual official do Xen http://www.xen.org. Elaborei este artigo, pois o manual oficial do Xen é muito superficial, não mostrando vários detalhes e procedimentos técnicos.
Para deixar mais prático este artigo, serão adotados valores para o HD, mas eles podem ser mudados de acordo com cada situação. Então, o HD é de 120GB, particionado da seguinte forma: hda1=swap=100MB ; hda2=raiz=reisersfs=50GB ; hda3=extended ; hda5=LinuxLVM=70GB.
Primeiramente, particione o HD deixando-o da seguinte forma:
(caso o Debian já esteja instalado e particionado, utilize o comando "fdisk")

Instalando pacotes necessários:
# apt-get install iproute bridge-utils gcc binutils make zlib1g-dev python-dev libncurses5-dev commit-tool gawk libssl-dev libx11-dev gettext fig2ps tetex-extra tetex-base gs-esp module-init-tools initramfs-tools (iproute+bridge-utils=ferramentas para configurar uma bridge | gcc+make=compilar o kernel | commit-tool=provê o comando "hg" da Mercurial | gettext+fig2ps+tetex-extra+tetex-base+gs-esp=ferramentas para construir a documentação do Xen | gs-esp=provê o comando "ps2pdf", caso esse pacote não exista, instale o "cupsys" | module-init-tools=utilitários para os módulos do Kernel | initramfs-tools=gera o initrd, ou seja, uma parte da RAM que trabalha com um Disco)
Agora é necessário fazer o download do Xen. Então, siga os procedimentos a seguir:
# mkdir /usr/src/xen
Acesse o site http://www.xen.org, clique no link "Download" e baixe o "Xen" para o diretório "/usr/src/xen". A versão utilizada neste artigo foi "xen-3.2.1.tar.gz", conforme destacado em vermelho na figura a seguir:

A seguir será mostrado duas maneiras compilar e configurar o Kernel do Xen. A primeira maneira é voltada para a criação de um Kernel único que servirá tanto para a máquina real (xen0), quanto para a paravirtual (xenU). A segunda maneira é voltada para criação de dois Kernel, um para a máquina real (xen0) e outro para a paravirtual (xenU).
A diferença é que na primeira opção, o Kernel é maior contendo todos os drivers dos dispositivos físicos e drivers dos dipositivos paravirtuais (Xen), consequentemente ele é maior e mais lento na hora de compilar.
Já na segundo opção, há a divisão do Kernel em dois (xen0 para a máq. real e xenU para a paravirtual), com isso eles serão particularmente menores, onde o Kernel XenU conterá somente módulos selecionados para os dipositivos paravirtuais, ideal para as máquinas paravirtuais (xenU - guest domain). Vale ressaltar que o Kernel Xen0, também é bem pequeno, onde várias opções e módulos foram retirados. Segundo o manual oficial do Xen, a divisão do Kernel em dois é ideal primeiramente para desenvolvedores que não gostam de esperar pela compilação de um Kernel grande. Se for pensar bem, isso é verdade, às vezes a compilação de um Kernel pode levar até mais de 4 horas :-(. O interessante de possuir dois Kernel é a possibilidade de configurar opções individuais para a máq. real e para a máq. paravirtual.
De acordo com a explicação acima escolha entre a Primeira Opção (Kernel único) e a Segunda Opção (Kernel duplo)
(Kernel único)
Depois do download:
# cd /usr/src/xen
# tar -zxvf xen-3.2.1.tar.gz
# hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg(comando que faz o download do Kernel GNU/Linux para o Xen)
# cd /usr/src/xen/xen-3.2.1
# make world(aparecerá uma pergunta sobre MSI "Message Signaled Interrupts", aperte "Enter". Agora, vá tomar um cafezinho ;-), pois esta etapa vai demorar. Este comando cria dentro de "/usr/src/xen/xen-3.2.1/" um diretório chamado "build-linux-2.6.18-xen_x86_32")
# make install(depois desse comando, é criado em "/boot" o arquivo "config-2.6.18.8-xen". Também é criado o diretório "/lib/modules/2.6.18.8-xen/". Poderia-se usar "make dist" depois de executar o comando "make install", ele instala todos os scripts udev e hotplug, Kernel, xen, tools e docs em "/usr/src/xen/xen-3.2.1/dist/", ideal para transportar para outras máquinas o HD ou o diretórios como "dist/")
# depmod -a 2.6.18.8-xen(segundo o manual do Xen, esse comando cria uma lista de dependência dos módulos, determina qual símbolos são exportados e quais são necessitados -> símbolos=serviços. Módulos do Kernel podem prover serviços para outros módulos, se um segundo módulo necessitar desses serviços, este segundo módulo precisará do primeiro módulo. O comando "depmod" cria um lista de dependência dos módulos. Leia a observação destacada em vermelho a seguir)
# mkinitramfs 2.6.18.8-xen -o /boot/initrd.img-2.6.18.8-xen(cria um "Initial RAM Drive", ou seja, um pedaço da RAM que será visto como um disco rígido. Leia a observação destacada em vermelho a seguir)
Obs: o "2.6.18.8-xen" foi obtido em "/lib/modules/2.6.18.8-xen". Cada Kernel tem o seu. O "initrd.img-2.6.18.8-xen" é o nome da imagem que será gerada no diretório "/boot".
Adicionar uma entrada do Xen no Grub
# vi /boot/grub/menu.lst(entra no arquivo de configuração do Grub. Adicione as linha a seguir)
title Debian GNU/Linux, kernel 2.6.18.8-xen
root (hd0,1)
kernel /boot/xen-3.2.1.gz
module /boot/vmlinuz-2.6.18.8-xen root=/dev/hda2 ro console=tty0
module /boot/initrd.img-2.6.18.8-xen
savedefault
Salve e sai do arquivo
(Kernel duplo)
Depois do download:
# cd /usr/src/xen
# tar -zxvf xen-3.2.1.tar.gz
# hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg(comando que faz o download do Kernel GNU/Linux para o Xen)
# cd /usr/src/xen/xen-3.2.1
# make world KERNELS="linux-2.6-xen0 linux-2.6-xenU"(aparecerá uma pergunta sobre MSI "Message Signaled Interrupts", aperte "Enter". Agora, vá tomar um cafezinho ;-), pois esta etapa vai demorar. Este comando cria dentro de "/usr/src/xen/xen-3.2.1/" os diretórios chamados "build-linux-2.6.18-xen0_x86_32" e "build-linux-2.6.18-xenU_x86_32")
# make install KERNELS="linux-2.6-xen0 linux-2.6-xenU"(depois desse comando, são criado em "/boot" os arquivos "config-2.6.18.8-xen0" e "config-2.6.18.8-xenU". Também são criados os diretório chamados "/lib/modules/2.6.18.8-xen0/" e "/lib/modules/2.6.18.8-xenU/". Poderia-se usar "make dist" depois de executar o comando "make install", ele instala todos os scripts udev e hotplug, Kernel, xen, tools e docs em "/usr/src/xen/xen-3.2.1/dist/", ideal para transportar para outras máquinas o HD ou o diretório "dist/")
# depmod -a 2.6.18.8-xen0(segundo o manual do Xen, esse comando cria uma lista de dependência dos módulos, determina qual símbolos são exportados e quais são necessitados -> símbolos=serviços. Módulos do Kernel pode prover serviços para outros módulos, se um segundo módulos necessitar desse serviço, este segundo módulo precisará do primeiro módulo. O comando "depmod" cria um lista de dependência dos módulos. Leia a observação destacada em vermelho a seguir)
# depmod -a 2.6.18.8-xenU(idem)
# mkinitramfs 2.6.18.8-xen0 -o /boot/initrd.img-2.6.18.8-xen0(cria um "Initial RAM Drive" para a máquina real, ou seja, um pedaço da RAM que será visto como um disco rígido. Leia a observação destacada em vermelho a seguir)
# mkinitramfs 2.6.18.8-xenU -o /boot/initrd.img-2.6.18.8-xenU(idem para a máquina virtual)
Obs: o "2.6.18.8-xen" foi obtido em "/lib/modules/2.6.18.8-xen". Cada Kernel tem o seu. O "initrd.img-2.6.18.8-xen" é o nome da imagem que será gerada no diretório "/boot".
Adicionar uma entrada do Xen no Grub
# vi /boot/grub/menu.lst(entra no arquivo de configuração do Grub. Adicione as linha a seguir)
title Debian GNU/Linux, kernel 2.6.18.8-xen0
root (hd0,1)
kernel /boot/xen-3.2.1.gz
module /boot/vmlinuz-2.6.18.8-xen0 root=/dev/hda2 ro console=tty0
module /boot/initrd.img-2.6.18.8-xen0
savedefault
Salve e sai do arquivo
Mude o conteúdo do arquivo abaixo:
# vi /etc/sysctl.conf(insira ou descomente a linha abaixo)
kernel.printk = 4 4 1 7(evita o surgimento de erros quando a RAM for menor que 4GB)
Salve e sai do arquivo
# sysctl -p(no Debian GNU/Linux também pode usar "/etc/init.d/procps.sh start")
# mv /lib/tls /lib/tls.disabled(evita que o Xen fique lento)
Dica:
Reinicie o sistema e escolha no Grub o novo Kernel do Xen
# init 6(Reinicia o sistema)

ATENÇÃO: ao iniciar o sistema com o novo Kernel Xen, alguns harwares (placa de rede, som etc) e funcionalidades (suporte ao IPv6, criptografia, smbfs etc) poderão não ser reconhecidos por padrão. Isso é normal, pois o Kernel do Xen e bem enxuto. Caso isso ocorra, vá ao final deste artigo onde tem o título "Recompilando o Kernel do Xen". Lá é mostrado como recompilar o Kernel para adicionar novas funcionalidades.
Além disso, ao reiniciar com o Kernel do Xen poderá ocorrer um "Kernel Panic" relacionado ao recurso ACPI. Em consequência o sistema não será iniciado. Se isso ocorrer, entre no "SETUP" do computador e desabilite o recurso de ACPI ou edite o grub e acrescente no final da linha "kernel" a opção "acpi=off". Se mesmo assim não resolver, entre no sistema com um outro Kernel e vá ao final deste artigo para saber como recompilar o Kernel do Xen de acordo com a arquitetura de hardware (principalmente se os processadores forem AMD). Para maiores informações sobre "Kernel Panic" e "ACPI" clique aqui
# rcconf (será aberta um tela de dialog. Selecione "xend", "xendomains" e aperte "OK")
# apt-get update ; apt-get install debootstrap ()
# mkdir /modelo (diretório onde será instalado um GNU/Linux. O conteúdo deste diretório servirá como modelo para a criação das máquinas paravirtuais)
# debootstrap etch /modelo http://ftp.br.debian.org/debian (instala o Debian GNU/linux dentro do diretório "/modelo". Aguade, pois irá demorar. Poderia usar um CDROM do Debian em vez do 'http://", bastanto montar o drive de CD em "/media/cdrom" e usar o comando "debootstrap etch /modelo file:/media/cdrom". Caso se tenha um proxy "apt-get" como "APT-CACHER" ou " APT-PROXY", use-o dessa maneira: debootstrap etch /modelo http://172.16.200.1:3142/ftp.br.debian.org/debian . Onde o IP e Porta de tal proxy é 172.16.200.1 e 3142, respectivamente)
# cp -av /etc/apt/* /modelo/etc/apt/ ()
# cp -v /etc/fstab /etc/hosts /modelo/etc/ ()
# cp -v /etc/network/interfaces /modelo/etc/network/ ()
# cd /usr/src/xen/xen-3.2.1
# "make dist DESTDIR=/modelo/" ou "make dist KERNELS="linux-2.6-xenU" DESTDIR=/modelo/" (esse comando instala vários arquivos em "/modelo/boot" como: config-2.6.18.8-xenU, vmlinuz-2.6.18.8-xenU, xen-3.2.gz, xen.gz, System.map-2.6.18.8-xenU, xen-3.2.1.gz, xen-3.gz, xen-syms-3.2.1. Também contrói o diretório: "/modelo/lib/modules/2.6.18.8-xenU/")
# chroot /modelo/ ()
# mount /proc/ ()
# apt-get update ; apt-get install w3m w3m-img locales less rcconf sendmail tz-brasil ntpdate vim module-init-tools reiserfsprogs
# tzconfig (siga as instruções e escolha a zona que você está)
# dpkg-reconfigure locales (selecione "pt_BR ISO-8859-1" e "pt_BR.UTF-8 UTF-8". Depois escolha "pt_BR.UTF-8")
# pwconv (cria o "shadow" a partir do "passwd")
# vi /etc/hosts (altere o nome de host para modelo e o endereço IP para qualquer um outro)
# vi /etc/hostname (altere o nome de host para modelo)
# vi /etc/network/interfaces (troque "peth0" por "eth0". Apague as linhas "bridge_ports" e "bridge_maxwait". Mude o endereço IP caso esteja usando IP fixo de acordo com "vi /etc/hosts". Assim na primeira vez que a máquina paravirtual iniciar pela primeira vez, não entrará em conflito com a máquina real)
# vi /etc/fstab (deixe conforme figura a seguir)

# vi /etc/inittab ()

# vi /etc/sysctl.conf(insira ou descomente a linha abaixo)
kernel.printk = 4 4 1 7(evita o surgimento de erros quando a RAM for menor que 4GB)
Salve e sai do arquivo
# mv /lib/tls /lib/tls.disabled(evita que o Xen fique lento)
# export TMOUT=1200 ()
# apt-get dist-upgrade (caso apareça alguma messagem, basta apertar "Enter")
# "depmod -a 2.6.18.8-xen" ou "depmod -a 2.6.18.8-xenU" ()
# apt-get clean ()
# umount /proc/ ()
# exit ()
Obs: o diretório "/modelo", que contém um Debian GNU/Linux, tem somente 270MB.
Alterando as configurações de IP fixo da rede para inserir uma bridge entre a maquina real e a paravirtual
# vi /etc/network/interfaces(arquivo de configuração das interfaces rede. Abaixo tem um exemplo de como est arquivo deve ficar)
auto lo
iface lo inet loopback
allow-hotplug peth0 (caso ocorra algum problema de rede troque "allow-hotplug" por "auto")
iface peth0 inet static (informa que a interface br-xen vai ter um IP fixo)
address 172.16.200.1 (endereço IP)
netmask 255.255.255.0 (máscara de subrede)
network 172.16.200.0 (endereço de subrede)
bradcast 172.16.200.255 (endereço de broadcast)
gateway 172.16.200.254 (gateway padrão)
bridge_ports eth0 (associa a ponte à interface eth0)
bridge_maxwait 0
Salve e saia do arquivo
Caso o endereço IP seja obtido de maneira automática através de um DHCP Server, utilize os procedimentos a seguir:
# vi /etc/network/interfaces (arquivo que configura as interfaces de rede)
auto lo
iface lo inet loopback
allow-hotplug peth0 (caso ocorra algum problema de rede troque "allow-hotplug" por "auto")
iface peth0 inet dhcp (informa que a interface br-xen vai ser um cliente DHCP)
bridge_ports eth0 (associa a ponte à interface eth0)
bridge_maxwait 0
Salve e saia do arquivo
# init 6 ()
Depois de reiniciado digite o comando a seguir para verificar como as interfaces de rede estão configuradas:
# ifconfig ()
Obs1: nos teste que realizei, a minha placa de rede on-board (sis900) não foi reconhecida. Então recompilei o Kernel e adicionei essa placa. A partir daí ela foi reconhecida. Mas na hora de configurar a bridge, de acordo com os procedimentos acima, não funcionou. Então, coloquei um outra placa de rede (eth1 = 3Com-3c905c) que funcionou perfeitamente ;-)
Obs2: Nas etapas abaixo, se fará a criação das partição para as máquinas paravirtuais. Assim, deverá ser escolhido entre a "OPÇÃO 1" e "OPÇÃO 2". A "OPÇÃO 1" é a mais díficil, mas é a que tem um maior flexibilidade, pois trabalha com LVM (Logical Volume Manager). A "OPÇÃO 2" é a mais simples, pois se utilizará o comando "fdisk", mas haverá algumas limitações relacionadas ao próprio sistema de particionamento. Então, para prosseguir se deve escolher entre a "OPÇÃO 1" e a "OPÇÃO 2".
O interssante em qualquer uma das opções, casa haja a necessidade de formatar a partição da máquna real (hda2), as máquinas paravirtuais já criadas não serão prejudicadas. Basta não formatar as partições das máquinas paravirtuais ;-)
(OPÇÃO 1)
Nesta etapa será criado um PV (Physical Volume - Volume Físico), um VG (Volume Group - Grupo de Volume) e um LV (Logical Volume - Volume Lógico)
# apt-get update ; apt-get install lvm2(pacote que provê os recursos para o LVM)
# umount /dev/hda5(a partição que receberá os volumes lógicos deve está desmontada)
# pvcreate /dev/hda5(cria um PV - Physical Volume. Inicializa ou prepara um disco ou uma partição física para trabalha com LVM. Para remover "pvremove /dev/hda5")
# pvs(visualiza o PV criada anteriormente)
# vgcreate vm /dev/hda5(cria um VG - Volume Group chamado "vm". A criação de uma VG é necessária, pois ele tem a função de unir dois ou mais PVs em um único grupo. Por exemplo, se tivéssemos criado uma PV em "/dev/hdc3" e outra em "/dev/hdd6", poderíamos unir os dois com o comando "vgcreate vm /dev/hdc3 /dev/hdd6". Para remover "vgremove vm")
# vgs(visualiza a VG criada anteriormente)
# lvcreate -L4G -n vm1.raiz vm(cria um LV - Logical Volume - de 4GB chamado "vm1.raiz" dentro da VG chamada "vm". Uma LV pode ser entendida com uma partição que neste caso será o "/" do sistema, local onde será instalado o GNU/Linux. Para remover "lvremove vm")
Obs: é criado um dispositivo "/dev/vm/vm1.raiz". Digite o comando "lvscan".
# lvcreate -L40M -n vm1.swap vm(cria um LV de 50MB chamado "vm1.swap" dentro da VG chamada "vm". Uma LV pode ser entendida com uma partição que neste caso será o "swap" do sistema. Para remover "lvremove vm")
Obs: é criado um dispositivo "/dev/vm/vm1.swap". Digite o comando "lvscan".
# lvs(visualiza as LV criada anteriormente)
Agora que foram criadas as LVs, é necessário formatá-las como se fossem partições comuns:
# mkfs.reiserfs /dev/vm/vm1.raiz(formata em reiserfs. Cuidado, pois apagará todo o conteúdo)
# mkswap /dev/vm/vm1.swap(formata em swap)
Obs1: um LV pode ser entendido como um dispositivo de armazenamente igual aos outros. Então tudo o que se faz com partições como "/dev/hda1, /dev/sda1 etc", podem ser feitos nas LVs.
Obs2: o LVM é um serviço e como tal pode ser parado, iniciado e reiniciado ( /etc/init.d/lvm )
Monte a LV chamada "vm1.raiz"
# mkdir -p /mnt/hda5/vm/vm1.raiz(cria um diretório)
# mkdir -p /mnt/hda5/vm/vm1.swap(cria um diretório)
# mount /dev/vm/vm1.raiz /mnt/hda5/vm/vm1.raiz/(monta a partição LV criada anteriormente)
# df -h(veja as partições montadas, inclusive a "vm1.raiz". Conforme figura a seguir)

cp -av /modelo/* /mnt/hda5/vm/vm1.raiz/()
Revisando a máquina paravirtual recém criada. Ajuste-a, verificando os arquivos abaixo:
chroot /mnt/hda5/vm/vm1.raiz/()
# vi /etc/hostname (mude o nome de host)
# vi /etc/network/interfaces (mude o endereço IP caso esteja usando IP fixo)
# vi /etc/fstab (verifique)
# vi /etc/resolv.conf(verifique
# vi /etc/hosts (mude o nome de host. Caso o IP seja fixo, mude o IP de acordo com o arquivo "/etc/network/interfaces". A seguir é mostrado o conteúdo do arquivo "/etc/hosts" em um sistema que tem o IP fixo)

(se o endereço IP é automático através de um DHCP, então o conteúdo do arquivo "/etc/hosts" será conforme figura a seguir)

# exit
# umount /dev/vm/vm1.raiz
Arquivo de configuração da máquina paravirtual chamada "vm1"
# vi /etc/xen/vm1()
Escolha entre as duas opções a seguir: kernel = "/boot/vmlinuz-2.6.18.8-xen" ou kernel = "/boot/vmlinuz-2.6.18.8-xenU" (a primeira opção é quando se tem um Kernel único para a máquina real e paravirtual. A segunda é quando se tem dois Kernels um para a máquina real e outro para a paravirtual)
Escolha entre as duas opções a seguir: ramdisk = "/boot/initrd.img-2.6.18.8-xen" ou ramdisk = "/boot/initrd.img-2.6.18.8-xenU" (a primeira opção é quando se tem um Kernel único para a máquina real e paravirtual. A segunda é quando se tem dois Kernels um para a máquina real e outro para a paravirtual)
memory = 128(quantidade de RAM da máq. paravirtual. Ao iniciar uma máquina paravirtual, a quantidade de memória definida aqui é retirada da máquina real e alocada unicamente para a a virtual. Antes e depois de iniciar uma máq. virtual digite o comando "free -m" na máq. real para ver a diferença. Verifique que a quantidade total e livre de memória diminuiram na mesma proporção do valor definido nesse campo. Assim, fica impossibilitado o uso dessa memória pela máquina real e pelas outras virtuais. Um grande problema depois de iniciada a máquina virtual é que ao desligá-la a quantidade de memória alocada continuará alocada e a máquina real não mais conseguirá utilizá-la. Pelo menos ao reiniciar a máq. virtual novamente não consumirá mais memória do que já está alocada. Uma das maneiras de se resolver isso é reiniciar a máquina real. Existe duas opções interessantes que podem minimizar esse problema que são o "maxmem" e "shadow_memory". No XEN ao alterar a quantidade de memória RAM da máquina virtual, será necessário desligá-la e ligá-la novamente. No VMWare acontece o mesmo, mas será necessário desligá-la para alterar. No XEN pode alterar em qualquer momento, mas só terá efeito despois que desligar e ligar novamente)
name = "vm1"(A name for your domain. All domains must have different names)
vif = [ 'bridge=peth0' ](nome da interface de rede da máquina real que tem o endereço IP para a com comunicação via rede. Em caso de dúvida verifique o arquivo "/etc/network/interfaces" da máq. real. O endereço MAC da máq. paravirtual é criado automáticamente, mas se quiser definir um, então faça "vif=[ 'mac 00:11:2F:6C:DB:B1, bridge=br-xen' ] )
disk = [ 'phy:/dev/vm/vm1.raiz,hda2,w', 'phy:/dev/vm/vm1.swap,hda1,w' ](esta linha é muito importante, pois explica vários procedimentos já realizados neste artigo. Este linha diz que a partição "/dev/vm/vm1.raiz" criada na máq. real será mapeada para a partição "hda2" da máquina paravirtual e o "w" significa que tem permissão de escrita. Também diz que a partição "/dev/vm/vm1.swap" criada na máq. real será mapeada para a partição "hda1" da máquina paravirtual e o "w" significa que tem permissão de escrita. Sempre verificar o arquivo "/etc/fstab" da máq. paravirtual configurado anteriormente)
root = "/dev/hda2 ro"(partição raiz, ou seja, o "/" da máq. paravirtual)
extra = "4"(Sets runlevel 4)
(OPÇÃO 2)
Inicialização a máquina paravirtual "vm1" (xenU)
# xm create -c vm1(a opção "-c" faz com que o console apareça assim que o sistema inicilizar. Para a inicialização em background não utiliza essa chave)
passwd()
aperta as teclas "CTRL + ]"(para volta para a máq. real)
# xm console vm1(volta para a máq. paravitual)
Reinicie o equipamento para que o novo Kernel do Xen entre em ação
# init 6
xxxxx()
xxxxx()
Reinicie o equipamento para que o novo Kernel do Xen entre em ação
# init 6
xxxxx()
xxxxx()
Recompilando o Kernel do Xen
Muitas vezes é necessário recompilar o Kernel para adição de novas funções, retiradas de outras ou para adequá-lo ao hardware. Então, a seguir se tem os procedimentos, mostrando como fazer ;-). O primeiro está voltada a instalação anteriormente realizada de um único Kernel Xen. O segundo é para quem instalalou dois Kernel, um para a máqunina real (xen0) e outro para máquina paravirtual (xenU).
(Recompilação quando existe um único Kernel do Xen)
Dentro do sistema que tem o Kernel do Xen instalado digite:
# cd /usr/src/xen/xen-3.2.1/build-linux-2.6.18-xen_x86_32/(esse diretório dependerá da versão usada)
# make menuconfig(será aperto um dialog com vários menus e opções que poderam ser escolhidos. Selecione de acordo com a sua necessidade. É neste momento que se poderá adinionar um hardware ou funcionalidade especifica)
Salve e Sai do dialog(um arquivo ".config" será criado e um outro chamado ".config.old" terá as configurações antigas. Segundo o manual oficial do Xen, o comando deveria ser "make ARCH=xen xconfig", mas a arquitetura Xen no diretórios do Kernel não existe e também, precisaria instalar alguns outros pacotes como: pkg-config qt3-apps-dev g++)
# cd /usr/src/xen/linux-2.6.18-xen.hg
# make mrproper
# cd /usr/src/xen/xen-3.2.1
# make(vá tormar um cafezinho, pois este comando vai demorar)
# make install(depois desse comando, é criado em "/boot" o arquivo "config-2.6.18.8-xen" com as novas opções. Caso tenha modificado algo importante para a máquina para virtual execute também os comandos: "make dist DESTDIR=/modelo/", "chroot /modelo", "mount /proc/", "depmod -a 2.6.18.8-xen", "umount /proc/" e "exit". Depois digite: "mount /dev/vm/vm1.raiz /mnt/hda5/vm/vm1.raiz/", "make dist DESTDIR=/mnt/hda5/vm/vm1.raiz/", "chroot /mnt/hda5/vm/vm1.raiz/", "mount /proc/", "depmod -a 2.6.18.8-xen", "umount /proc/", "exit" e "umount /dev/vm/vm1.raiz")
# depmod -a 2.6.18.8-xen
# mkinitramfs 2.6.18.8-xen -o /boot/initrd.img-2.6.18.8-xen(Initial RAM Drive)
# init 6
(Recompilação quando existem um dois Kernels - Xen0 e XenU)
Dentro do sistema que tem o Kernel do Xen instalado digite:
# cd /usr/src/xen/xen-3.2.1/build-linux-2.6.18-xen0_x86_32/(esse diretório dependerá da versão usada)
# make menuconfig(será aperto um dialog com vários menus e opções que poderam ser escolhidos. Selecione de acordo com a necessidade da máquina real. É neste momento que se poderá adinionar um hardware ou funcionalidade especifica para a máquina real)
Salve e Sai do dialog(um arquivo ".config" será criado e um outro chamado ".config.old" terá as configurações antigas. Segundo o manual oficial do Xen, o comando deveria ser "make ARCH=xen xconfig", mas a arquitetura Xen no diretórios do Kernel não existe e também, precisaria instalar alguns outros pacotes como: pkg-config qt3-apps-dev g++)
# cd /usr/src/xen/xen-3.2.1/build-linux-2.6.18-xenU_x86_32/(esse diretório dependerá da versão usada)
# make menuconfig(É neste momento que se poderá adinionar um hardware ou funcionalidade especifica para a máquina paravirtual)
Salve e Sai do dialog
# cd /usr/src/xen/linux-2.6.18-xen.hg
# make mrproper
# cd /usr/src/xen/xen-3.2.1
# make KERNELS="linux-2.6-xen0 linux-2.6-xenU"(vá tormar um cafezinho, pois este comando vai demorar)
# make install KERNELS="linux-2.6-xen0 linux-2.6-xenU"(depois desse comando, são criado em "/boot" os arquivos "config-2.6.18.8-xen0" e "config-2.6.18.8-xenU" com as novas opções. Caso tenha modificado algo importante para a máquina para virtual execute também o comando: make dist KERNELS="linux-2.6-xenU" DESTDIR=/modelo/, "chroot /modelo", "mount /proc/", "depmod -a 2.6.18.8-xenU", "umount /proc/" e "exit" )
# depmod -a 2.6.18.8-xen0
# depmod -a 2.6.18.8-xenU
# mkinitramfs 2.6.18.8-xen0 -o /boot/initrd.img-2.6.18.8-xen0(Initial RAM Drive)
# mkinitramfs 2.6.18.8-xenU -o /boot/initrd.img-2.6.18.8-xenU(idem)
# init 6
(Desinstalando o Xen)
Digite os comandos a seguir:
# cd /usr/src/xen/xen-3.2.1
# make uninstall
Remova entrada do Xen no Grub
# vi /boot/grub/menu.lst(entra no arquivo de configuração do Grub. Remova as linhas relacionadas ao Xen)
Salve e Sai do arquivo
# init 6
