sexta-feira, 1 de junho de 2012

Off por um tempo, mas vivo

Olá pessoas,

Como vocês puderam notar, estive fora por um bom  tempo, houve várias mudanças na minha vida.

Mudei de cidade,
de emprego,
de mulher, filhos  - opa, não vamos exagerar, hehehe

Mas enfim, logo logo estarei re-escrevendo no blog.

E o próximo artigo será uma atualização do Gentoo, mas, no Xen 6.

Grande abraço

quinta-feira, 31 de março de 2011

Gentoo paravirtualizado (domU) no XenServer

Olá pessoas, conforme prometido anteriormente, estou disponibilizando agora um howto de como instalar um Gentoo paravirtualizado, rodando sob o XenServer, com xs-tools instalado. :)

Para tal vamos precisar de:
- Um servidor com XenServer
- Um cd com o Gentoo (aqui estou usando o minimal)
- Conhecimento prévio sobre o processo de instalação do Gentoo.
- Um pouco de paciência (mas só um pouco)
- Uma máquina com windows (tá, tá, eu sei...) rodando o XenCenter.

Vou demonstrar apenas os passos mínimos para ter o SO rodando, sem me preocupar com o restante dos pacotes que vocês já devem estar acostumados a instalar nesta distro.

Então, vamos lá, o primeiro passo é criar a máquina virtual lá no XenCenter, para isto basta clicar no botão New VM (ou digitar Ctrl-N).
Abrirá uma tela para você configurar esta máquina virtual. Preencha de acordo com o exemplo abaixo (sinta-se à vontade para configurar de maneira diferente).

Primeiro item, Template: Escolha Other install media;
Name: Preencha com 'Gentoo Exemplo', sem descrição;
Installation Media: Deixe selecionado a unidade de CD/DVD do servidor;
Home Server: Selecione em qual servidor esta máquina irá residir;
CPU & Memory: Ajuste de acordo com suas necessidades;
Storage: Crie um disco para conter o seu SO, como exemplo, criei um com 8 GB.
Networking: Aceite o padrão.
Finish: Lembre-se de colocar o CD do Gentoo no drive do servidor, desmarque a opção para ele iniciar a máquina virtual e clique em Finish.

Aguarde a máquina ser criada, e logo após, selecione-a. Vá para a aba storage e verifique se o dispositivo (HD criado) está na posição 0. Caso não esteja, a forma mais rápida de colocá-lo como 0 é desanexando e reanexando em seguida (Detach, Attach).
Clique agora em Start e logo o boot será efetuado. Acompanhe o processo de boot pelo XenCenter (selecione a máquina virtual à esquerda, e no painel da direita, abra a aba console).

Após o prompt ser apresentado, vamos instalar efetivamente o nosso Gentoo. A instalação é praticamente igual ao que faríamos num Gentoo normal.

Para isso, vamos começar com o particionamento do disco. Neste exemplo, criarei 2 partições apenas, o / e o swap.

dê um fdisk -l para saber qual dispositivo foi criado para você, no meu caso, o HD foi reconhecido como /dev/sda:
# fdisk -l
.
.
Disk /dev/sda doesn't contain a valid partition table
 Com o disco reconhecido, vamos particioná-lo, no esquema comentado acima (uma partição com 7GB para o / e o restante para swap). As duas partições como primárias.

Na sequência, formatamos elas:
# mkfs.ext3 /dev/sda1
# mkswap /dev/sda2
e as montamos
# mount /dev/sda1 /mnt/gentoo
# swapon /dev/sda2
Com isso, agora basta baixar e descompactar o stage3 e o portage, conforme o usual.
# cd /mnt/gentoo
# wget stage3_do_seu_mirror_preferido
# wget portage_do_seu_mirror_preferido
# # Pessoalmente, eu faço o download pelo links :)
# tar xpf stage3_baixado
# cd usr
# tar xf ../portage_baixado
Como você pode ter percebido, até aqui, nada além do mínimo esperado na instalação. A partir daqui a coisa começa a ficar interessante. Após a descompactação dos arquivos baixados, entramos no sistema propriamente dito, com o chroot.
Não instalaremos todos os pacotes que normalmente são instalados (syslog, cron, etc...), vamos apenas baixar o que realmente é necessário para fazer o gentoo funcionar. Mas, se preferir, sinta-se à vontade para fazê-lo.
Então, mãos à obra:
# mount -t proc none /mnt/gentoo/proc
# cp /etc/resolv.conf /mnt/gentoo/etc
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# emerge --sync
# # Pra mim, acusou atualização no portage, recomendável fazê-lo.
# emerge portage
# emerge gentoo-sources
# cd /usr/src/linux
# make menuconfig
# # O que ? Eu não uso o genkernel? Hehe, não.
Configure o kernel como de costume, mas, obrigatoriamente você deve selecionar as seguintes opções:

Processor type and features --->
    [*] Paravirtualized guest support --->
        [*] Xen guest support
Device Drivers --->
    [*] Block devices (NEW) --->
        <*> Xen virtual block device support (NEW)
    [*] Network devices support --->
        <*> xen network device frontend driver (NEW)
    Input device support --->
        <*> Xen virtual keyboard and mouse support
    Graphics support --->
        <*> Xen virtual frame buffer support (NEW)
    Xen driver support --->
        [*] Xen memory balloon driver (NEW)
        [*]    Scrub pages before returning them to system (NEW)
        <*> Xen /dev/xen/evtchn device (NEW)
        <*> Xen filesystem (NEW)
        [*]    Create compatibility mount pount /proc/xen (NEW)
        [*] Create xen entries under /sys/hypervisor (NEW)
        <M> xen platform pci device driver (NEW)
Kernel configurado, é hora de compilar ele e jogá-lo para o diretório padrão:

# make -j2 && make -j2 modules_install
# cp arch/x86/boot/bzImage /boot/kernel-2.6.36-xen
# # Anote o nome do kernel usado aqui.
Importante, não instale o grub. Ele não é necessário.
Criamos então a configuração do grub para que o Xen consiga dar boot nesta nova máquina virtual.
# mkdir /boot/grub
# nano /boot/grub/grub.conf
Jogue o seguinte conteúdo para dentro deste arquivo:
default 0
timeout 10
title Gentoo paravirtualizado - 2.6.36-Xen
    root (hd0,0)
    kernel /boot/kernel-2.6.36-xen root=/dev/xvda1 ro console=hvc0
Ei, espera um pouco, eu to configurando o /dev/sda, e não o /dev/xvda. Sim, exato. Estamos mexendo com sda justamente por que o Gentoo não tá rodando sob o XenServer de forma paravirtualizada. Quando paravirtualizarmos ele, o primeiro disco virará xvda.

Agora, vamos fazer alguns ajustes na configuração:
No arquivo /etc/fstab, elimine a linha /dev/BOOT, e altere as linhas /dev/ROOT e /dev/SWAP para
/dev/xvda1    /    ext3    noatime    0 1
/dev/xvda2    none    swap    sw    0 0
respectivamente e acrescente a seguinte linha
none   /proc/xen    xenfs    defaults   0 0
No arquivo /etc/securetty, acrescente uma linha contendo
hvc0
No arquivo /etc/inittab, adicione a linha
h0:12345:respawn:/sbin/agetty -L 9600 hvc0 screen
Estamos quase lá, troque a senha do root para o que preferir (enquanto estou instalando, eu gosto de usar alguma senha fraca, de fácil digitação, como 'a' ou '123').
Configure também sua rede, e, por precaução, deixe o sshd inicializando no boot (caso o console não funcione por algum motivo).

# nano /et/conf.d/net
# rc-update add sshd default
# rc-update add net.eth0 default
# exit
# cd /
# umount /mnt/gentoo/proc
# umount /mnt/gentoo
# swapoff /dev/sda2
# halt

Assim que a máquina virtual desligar, retire o CD do drive do servidor.
Com isso, acabamos a primeira parte. Instalamos o kernel e configuramos o sistema com os parâmetros necessários para o bom funcionamento sob o XenServer.

Neste ponto, o gentoo está configurado para ser paravirtualizado, mas o XenServer não sabe disso. Configurar o XenServer para que ele funcione da maneira correta é simples, e é aqui que toda a mágica acontece.
Ainda no XenCenter, selecione o servidor XenServer e abra a aba console.
neste prompt de comando, execute:
# xe vm-list
encontre a máquina recém criada e anote o UUID dela, e em seguida:
# xe vm-param-set uuid=UUID_ANOTADO PV-kernel=/boot/kernel-2.6.36-xen PV-bootloader=pygrub HVM-boot-policy=""
Isto ensina o XenServer que esta máquina deve ser paravirtualizada (mais especificamente o parâmetro HVM-boot-policy, onde estamos dizendo que ela não roda mais no modo HVM - o que sobra é a paravirtualização).
Selecione no XenCenter a máquina virtual criada, selecione a primeira aba (General) e clique em Properties.
Selecione a opção Startup Options, e dentro dela, mude o boot de DVD para HD.

Clique em Start novamente, e, se tudo ocorreu como o esperado, sua máquina irá dar boot. :)

Agora, vamos nos preocupar em instalar o XenTools para podermos usufruir de tudo que o XenServer nos proporciona.
Na aba Console, selecione em DVD Drive 1 a imagem xs-tools.iso.
Faça login como root na sua nova máquina (às vezes, o console não funciona como esperado, mas, se você configurou a rede, você deve acesso SSH).
Instale o pacote rpm2targz e
# emerge rpm2targz
# mount /dev/xvdd /mnt/cdrom
# cp /mnt/cdrom/Linux/xe-guest-utilities-xenstore-5.6.100-647.x86_64.rpm .
# cp /mnt/cdrom/Linux/xe-guest-utilities-5.6.100-647.x86_64.rpm .
# rpm2targz xe-guest-utilities-xenstore-5.6.100-647.x86_64.rpm# rpm2targz xe-guest-utilities-5.6.100-647.x86_64.rpm
# cd /
# tar xf root/xe-guest-utilities-xenstore-5.6.100-647.x86_64.tar.gz
# tar xf root/xe-guest-utilities-5.6.100-647.x86_64.tar.gz
# rc-update add xe-linux-distribution default
# /etc/init.d/xe-linux-distribution start
No final do último comando, você deve ter visto algo como
Detecting Linux distribution version: Failed
Starting xe daemon: OK
A primeira linha não importa muito, já que é apenas para reconhecer a versão do linux instalada.
O importante é a segunda linha, com o OK. Isto quer dizer que a integração com o XenServer está completa. Para ter certeza, basta voltar ao XenCenter, selecionar o servidor XenServer onde a máquina virtual está localizada e selecionar a aba Search.
Note que agora não tem mais a linha dizendo que não tem o xentools instalado. Além desta mudança, você também verá o uso da CPU, memória, disco, rede, endereços IP e o uptime.

Com isto, chegamos ao final deste passo-a-passo de instalação. Espero ter ajudado vocês (e não ter esquecido de nada).

A quem interessar, posso disponibilizar a configuração do kernel que eu tenho aqui. :) Peçam nos comentários.

Uma versão em inglês deste tutorial está a caminho.

Grande abraço

sexta-feira, 25 de março de 2011

Apresentações / motivações

Olá amigos.

Este é o primeiro post deste blog. Gostaria de dar as boas vindas a todos que aqui chegaram.

Me motivei a criar este blog para ajudar vocês, que como eu, sofreram (ou talvez, ainda sofram) com a instalação de distribuições linux paravirtualizadas rodando sob o XenServer.

Minha primeira briga (e este será o assunto do próximo post) foi para instalar um Gentoo (www.gentoo.org) totalmente paravirtualizado, com xentools, live migration e tudo mais.

Foi uma briga bonita (para não dizer medonha), houve muita pesquisa, muito google sendo usado. Mas, devido a um golpe de sorte, consegui concluir.

Hoje sou um cara um pouco mais feliz, já tenho o gentoo rodando redondinho.

Minha intenção é pegar algumas distribuições principais que não tem suporte oficial (nem templates já preparados) e gerar templates prontos para serem usados, disponibilizando-os livremente.

Talvez, se eu tiver paciência, eu monte algumas receitinhas de bolo de como fiz os templates.

Grande abraço, e até o próximo post.