User-Mode Linux

por Joe "Zonker" Brockmeier

Eu sempre estive fascinado pela idéia de rodar um sistema operacional sob outro sistema operacional. É legal hackear um equipamento fazendo ele trabalhar dobrado (ou triplicado, ou quadruplicado...) rodando máquinas virtuais. Eu ouvi tanto estas coisas boas sobre o User-Mode Linux (UML), que eu tinha que experimentar.

Existem algumas arestas não aparadas no UML. No geral, entretanto, o UML é um excelente software que pode ser bem útil para administradores e desenvolvedores Linux.

Para que ele serve?

Além da diversão de rodar o Linux sob o Linux, existem alguns usos sérios para o UML. O UML permite que se experimente configurações e torture um sistema virtual sem colocar em risco o seu próprio sistema estável ou manter um sistema extra para testes. Em vez disso, você pode trabalhar com uma ou mais máquinas virtuais UML e provocar todo o dano que quiser sem se preocupar em detonar seu sistema enquanto testa drivers de dispositivo e coisas deste tipo. Se suas atribuições incluem testar o último kernel em desenvolvimento, por exemplo, o UML é uma grande forma de fazer o que você precisa sem ter que usar um kernel instável em sua estação. Há um bom número de outros cenários de testse onde vem bem a calhar poder configurar um punhado de máquinas virtuais em vez de usar múltiplas máquinas físicas.

Alternativamente, você pode dividir um único sistema em um número de máquinas virtuais independentes. O UML está sendo utilizado por várias companhias de hospedagem comerciais para prover hosts virtuais Linux. O UML também é uma ótima ferramenta educacional que pode dar aos alunos suas próprias máquinas Linux virtuais, em vez de ter que fornecer a cada estudante sua própria máquina física - E os estudantes podem ter a senha de superusuário de suas máquinas sem interferir com os outros estudantes.

Pode-se também usar o UML como uma espécie de "caixa de areia" para serviços. Rodar os serviços dentro de uma máquina UML significa que o processo não tem acesso à máquina externa. Por exemplo, digamos que você quer prover serviços FTP para alguns arquivos, mas não quer executar um servidor FTP no seu servidor Web, e não quer instalar uma segunda máquina (que pode ser cara se você está usando um serviço de co-locação ou tem que pagar pela hospedagem). Simplesmente configure uma máquina virtual UML para prover o FTP. Se alguém encontrar uma vulnerabilidade no seu servidor FTP e usar a mesma para invadir o teu sistema, ele terá acesso a uma máquina virtual que pode ser apagada e recriada com o mínimo de dificuldade.

Também pode-se usar o UML como um "honeypot" para distrair crackers, fornecendo a eles um sistema fácil de invadir. Informações para criar um honeypot UML podem ser encontradas em http://user-mode-linux.sourceforge.net/honeypots.html.

Instalação e Configuração

Eu peguei o UML RPM e instalei em um Mandrake 9.1 sem problemas. Se por configuração entendemos como o deixar o UML rodando, o download não vai levar mais tempo que a instalação e configuração propriamente ditas. Ler a documentação disponível na homepage do UML vai levar muito mais tempo que a configuração em si. Eu recomendo que se gaste algum tempo lendo a documentação, já que há muitas informações úteis nela.

Comece com um sistema UML "pré-fabricado". A forma de ter o UML funconando é instalar o UML RPM, pacote Debian, ou compilar e instalar o UML daquela forma (eu recomendo o método do pacote se for possível). A seguir, é preciso um filesystem. Um filesystem UML basicamente é um arquivo contendo um filesystem Ext2 raiz.

Começando e Usando o UML

Existem vários filesystem pré-fabricados prontos. Isto é bastante útil, e provavelmente a melhor forma de começar com o UML. O processo de criar um novo filesystem não é muito difícil, mas é muito mais fácil simplesmente usar um que esteja pronto. Eu baixei o filesystem Debian, descompactei o mesmo e renomeei para "root_fs" (que é o que o UML espera encontrar no diretório atual) e rodei o comando "linux".

Foi inicializado um sistema virtual Debian com duas janelas "console" virtuais. A configuração de rede deve ser feita manualmente, o que definitivamente é problemático. Felizmente, há uma solução, que eu vou tratar mais tarde. No geral, a instalação e configuração é relativamente fácil - a não ser pela parte complicada da rede. Eu só queria que houvesse uma forma fácil de fazer "crescer" o tamanho do filesystem virtual, uma vez ele fosse criado. O sistema Debian que é fornecido tem muito pouco espaço livre, o que o torna inapropriado se você quer acrescentar alguns softwares. Também existem filesystems prontos com Red Hat, Slackware, Mandrake, e outros.

Pode-se usar o UML para tudo que se usa um sistema Linux normal. O UML suporta tudo que não seja "hardware specific", de acordo com a documentação. Isto significa que você não irá jogar Quake III sob o UML, mas rodar um servidor Web e ouvir MP3s está dentro dos usos do UML (ele pode direcionar a saída de som para o sistema hospedeiro).

Melhor ainda, pode-se fazer cópias backup de máquinas virtuais apenas copiando o arquivo root_fs. Se você está usando o UML para testes, você pode detonar um sistema e apagá-lo em seguida, para recomeçar do zero com um backup. Se você já está acostumado a administrar sistemas Linux, não terá problemas para configurar o UML.

Criando seu próprio filesystem

Uma vez que você tenha tomado pé com um sistema pré-fabricado, provavelmente irá querer montar o seu próprio. Existem várias ferramentas disponíveis para ajudar a criar seu próprio filesystem. Eu experimentei o UML Builder, que é uma ferramenta de linha de comando e GUI (dependendo do seu gosto), para a criação de filesystems em sistemas baseados em RPM. Ele pede a cópia de RPMs para um diretório de seu disco rígido e a execução de um programa de linha de comando ou GUI para a configuração do sistema.

Eu usei o UML Builder para criar um filesystem Red Hat 8.0, e estou realmente impressionado com a facilidade que foi. De fato, é mais rápido criar uma instalação Red Hat usando o UML Builder que instalar o Red Hat em um sistema normal! Incluindo a cópia dos RPMs dos CD-ROMs.

O UML Builder está um pouco atrasado em termos de distribuições suportadas. Ele ainda não suporta o Red Hat 9.0 ou o Mandrake 9.1, por exemplo, e você só pode usar o mesmo com distribuições baseadas em RPM. Assim, se você quiser um sistema Slackware ou Debian (ou outro sistema que não use RPMs), terá que experimentar uma das outras ferramentas para criar seu filesystem.

Ele é para mim?

Se você está precisando de alguns sistemas Linux "adicionais", e não tem as máquinas adicionais, o UML definitivamente é para você. Como mencionei antes, existem algumas arestas a serem aparadas, mas elas são mínimas. Os benefícios do UML definitivamente ultrapassam as poucas falhas. Foi muito mais fácil de configurar do que eu esperava. A maioria dos administradores deve estar apto a ter um sistema UML rodando em menos de meia hora depois de fazer o download do RPM e do filesystem.

Naturalmente, existem poucas desvantagens em experimentar o UML - ele é gratuito, afinal de contas, e você só vai perder algumas horas de testes se decidir que não gosta dele. Eu recomendaria o UML mesmo que ele tivesse preço similar ao VMware Workstation. Ele vale o dinheiro, mesmo que não seja cobrado.

Copyright © 2001 Sys Admin.