Lguest: um hypervisor didático

“If unsure, say N. If curious, say M. If masochistic, say Y “

(Linux kernel config for lguest module)

Um hypervisor é uma máquina virtual monitora (virtual machine monitor) que possibilita executar diversos sistemas operacionais em uma mesma máquina. Isso significa que você pode executar o Windows e o OpenBSD em máquinas virtuais executando em cima do Gentoo, Fedora, ou outra plataforma GNU/Linux.

Exemplos

No kernel existem pelo menos 8 sistema de virtualização distintos: Xen, KVM, VMWares’s VMI, IBM’s System p, IBM’s System z, User Mode Linux, lguest e IBM’s legacy iSeries.

O que é o lguest ?

O projeto lguest, desenvolvido por Rusty Russel, do iptables, é um projeto simples de virtualização. Este permite a virtualização completa de kernels. Atualmente, apenas o kernel Linux é suportado como convidado (guest) e somente em hardware x86 (32bits).

Utilização: instalação

A primeira coisa a fazer é ler a documentação oficial lguest.txt. Não se esqueça de ativar o .config as seguintes opções:

.
CONFIG_EXPERIMENTAL=y
CONFIG_PARAVIRT=y
CONFIG_LGUEST_GUEST=y
CONFIG_HIGHMEM64G=n
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_VIRTIO_BLK=m
CONFIG_VIRTIO_NET=m
CONFIG_TUN=m
CONFIG_LGUEST=m

Utilização: executando

Depois de compilar o kernel, carrege os módulos lg e tun e dê um make dentro do diretório Documentation/lguest/ para compilar uma ferramenta chamada lguest que será utilzada para iniciar o lguest. Depois para rodar:

Documentation/lguest/lguest 128 vmlinux –tunnet=192.168.254.10 –block=rootfile root=/dev/vda

Algumas explicações:

  • vmlinux: a imagem do kernel (pode-se utilizar também o bzImage)
  • rootfile: Para ter o mínimo de usabilidade, você precisa testar o kernel em cima de algum sistema de arquivos. Uma maneira rápida para testar é usar um ramdisk, clique no rootfile acima para baixar a imagem a substitua pelo nome do arquivo (initrd-1.1-i386.img).
  • tunnet: configura um dispositivo “tap”
  • root=/dev/vda parâmetros do kernel (pode ser qualquer opção compatível como parâmetro do kernel)

Na documentação há ensinado como utilizar uma distribuição (a partir de uma ISO) com o qemu para trabalhos mais sérios.

Dica: acesso via NFS

Em vez de ficar criando uma imagem ou mesmo usando o qemu eu acho que é mais rápido montar uma partição via NFS e usá-la para acessar os arquivos.

Documentation/lguest/lguest –tunnet=<target-ip> vmlinux ip=<target-ip>:<server-ip>:<gateway-ip>:<netmask>:<hostname>:<device>:<PROTO> nfsroot=<server-ip>:/caminho/para/rootfs root=/dev/nfs

No meu caso eu uso uma variação nos pacotes do stage3 do Gentoo.

E o didático dessa história?

O lguest possui um Quest (dividido em 7 partes) bem interessante para quem quer entender o funcionamento de um virtualizador vendo o “código”, acessem do diretório drivers/lguest/README no código-fonte do kernel para saber como começar.

Referências

http://lguest.ozlabs.org/

http://en.wikipedia.org/wiki/Hypervisor

http://lwn.net/Articles/218766/

Uma resposta

  1. […] por Mauro Rodrigues (maurus·rodriguesΘgmail·com) – referência […]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: