Arquivos históricos do BR-Linux.org apresenta:

User Mode Linux

Este artigo de minha autoria foi publicado originalmente na Revista do Linux, e explica detalhes sobre o uso de uma ferramenta que permite rodar uma instância virtual do Linux, excelente para treinamentos e testes, além de tar diversas outras aplicações práticas.

Linux dentro do Linux

Augusto C. Campos (brain@matrix.com.br)
Texto originalmente publicado na Revista do Linux.


A idéia de rodar uma versão virtual do Linux "dentro" do Linux, simulando a presença de um segundo computador, totalmente virtual e incluindo seus próprios discos, arquivos, configurações e processos não parece nada fora do comum para quem quer que já tenha utilizado softwares como o VMware (vmware.com), sistema comercial que emula um computador PC virtual rodando totalmente em software, permitindo acrobacias como rodar uma sessão de Windows dentro do Linux ou vice-versa, sem interferir no funcionamento do computador hospedeiro.

De fato, o conceito de máquinas virtuais é muito mais antigo que softwares como o VMware, e é lugar comum há muito tempo em arquiteturas de maior porte. Mas o sistema analisado neste mês, embora guarde alguma semelhança com o VMware e as máquinas virtuais dos mainframes, apresenta também características técnicas surpreendentes, que veremos em detalhes a seguir.

O User-mode Linux

Se você acompanha esta seção da RdL, já sabe que o kernel do Linux é a interface entre os programas do usuário e os recursos físicos do equipamento, tais como portas seriais, discos, o console, a memória e os demais componentes do seu computador. Como o Linux atualmente suporta uma série de arquiteturas diferentes, como os PCs, Macs, SPARCs e Alphas, o seu kernel inclui código específico para lidar com as particularidades de cada uma delas.

O User-mode Linux (ou UML, mas cuidado para não confundir com a mais bem conhecida Unified Modeling Language, que também adota a mesma sigla) é especial neste particular, pois ele é uma implementação do kernel do Linux onde a arquitetura suportada é... outro kernel do Linux! É isto mesmo - vamos explicar melhor: normalmente, os programas aplicativos fazem suas requisições ao kernel, que por sua vez aciona os recursos de hardware da máquina conforme solicitado (sem esquecer que este kernel sempre é específico para a arquiteura do computador em questão). Mas no caso do UML, os programas do usuário fazem requisições ao kernel e, embora eles não suspeitem disso (ou seja, você não precisa realizar nenhuma configuração especial neles), este kernel vai passar todas as requisições para o kernel "real" da máquina hospedeira, e este sim vai fazer a comunicação com o hardware.

Como funciona

A descrição acima é muito árida e pode não dar uma idéia completa do que ocorre quando você cria uma máquina virtual com o UML. Para transmitir melhor a idéia, vamos a uma descrição completa de uma sessão de emulação.

Para começar, você precisará do kernel do UML e de um sistema de arquivos especialmente preparado no qual ele possa dar boot (contendo os diretórios /dev, /etc e todos os demais componentes necessários para a execução normal do Linux). O site oficial do projeto (user-mode-linux.sourceforge.net) contém este kernel, bem como sistemas de arquivos completos de várias distribuições (tais como Debian, Slackware e SuSE), já preparados e prontos para você fazer o download e instalar.

Para o exemplo deste artigo, obtive o kernel 2.4.1 e um sistema de arquivos populado com a distribuição Debian 2.2, totalizando menos de 20MB de download (ou 45 minutos em um modem doméstico). Após a descompactação de praxe, minha instalação do UML se resumia a dois arquivos: linux-2.4.1 e root_fs_debian2.2_small, sendo que o primeiro é o kernel do UML (e deve ser tornado executável, através do comando 'chmod a+x linux-2.4.1'), e o segundo é a concatenação de um sistema de arquivos contendo uma distribuição Debian 2.2 completa. (Note que por razões didáticas e de espaço eu optei por não compilar ou preparar nada, simplesmente fiz o download diretamente do site e descompactei. Se você se interessar, pode montar seu próprio sistema de arquivos e preparar seu próprio kernel...)

Após descompactar os arquivos e o usar comando chmod conforme descrito acima, minha primeira ação foi executar o UML, sem antes tentar nenhum tipo de configuração. Cruzei os dedos, abri um xterm e digitei:

./linux-2.4.1 ubd0=root_fs_debian2.2_small

Para aumentar minha admiração pelas surpresas que o software livre nos reserva, imediatamente vi as mensagens típicas do boot do kernel do Linux e da inicialização do Debian - reconhecimento de memória e dispositivos, inicialização dos daemons, checagem de sistemas de arquivos, etc. Ao final do boot do UML, dois xterms adicionais foram abertos (cada um equivale a um console virtual) e em todos vi a familiar mensagem:

    Debian GNU/Linux 2.2 usermode ttys/1
    usermode login:

E enquanto isto, na janela ao lado, o editor de textos onde este artigo estava sendo escrito continuava em operação normalmente, alheio ao fato de que um segundo kernel do Linux estava em operação na máquina, e que havia uma instância do Debian GNU/Linux rodando em paralelo ao SuSE Linux que já estava em operação na máquina. Para ter uma melhor noção das diferenças entre a máquina virtual rodando Debian e a máquina real hospedeira rodando SuSE, usei ferramentas de diagnóstico comuns, como os comandos 'ps' e 'free', e exames nos arquivos do /proc (exemplo: 'cat /proc/interrupts'), podendo perceber que o kernel do UML roda sobre uma máquina virtual que não necessariamente corresponde à sua configuração física, incluindo os dispositivos, sistemas de arquivos, quantidade de memória, interfaces de rede e tudo o mais. Aliás, a máquina virtual do UML suporta interface de rede, podendo ter seu próprio IP e comunicar-se com o hospedeiro e com outras máquinas da sua rede local. Você pode até rodar múltiplas máquinas virtuais no seu computador, cada uma com seu próprio IP comunicando-se com as demais!

Conclusão

O uso de uma máquina virtual pode ser útil em várias situações. Que tal finalmente descobrir o que acontece se você digitar 'rm -rf /' no seu sistema? Ou testar programas que precisam ser rodados como root, sem colocar em risco o seu computador como um todo? Você pode até mesmo usar o UML para testar e experimentar novos kernels sem ter que ficar reiniciando fisicamente o computador - o velho sonho de testar o boot do sistema sem ter que fechar o Netscape e o IRC subitamente torna-se realidade, sem que para isto você tenha que adquirir um segundo computador.

De fato, a estabilidade e os usos potenciais do UML são tão grandes que, segundo a edição de 15 de fevereiro do Linux Weekly News, Linus Torvalds e Alan Cox consideram sua inclusão na árvore "oficial" do kernel do Linux, como uma nova arquitetura suportada.

Experimentar o uso do UML não exige experiência avançada com o kernel do Linux, e de fato a maior dificuldade nas instalações de teste foi o download dos arquivos. Certamente você poderá encontrar utilidades criativas para este recurso, e seu uso é mais do que recomendado! Postado por brain em maio 21, 2003 11:17 AM

Comentários para "User Mode Linux"

» Postado por: Daniel em agosto 2, 2003 02:07 PM, 200.225.194:

 

» Postado por: carlos eduardo em agosto 3, 2003 06:42 PM, 200.100.149:

 

» Postado por: Fernando Ricardo em outubro 20, 2003 01:55 PM, 200.140.108:

 

» Postado por: Bruno em outubro 22, 2003 12:41 AM, 200.163.72.:

 

» Postado por: Bruno em outubro 22, 2003 12:42 AM, 200.163.72.:

 

» Postado por: fernandoo em outubro 30, 2003 09:07 AM, 200.97.10.2:

 

» Postado por: Wosley Pansini em fevereiro 28, 2004 03:07 PM, 200.216.179:

 

» Postado por: AxShi em abril 20, 2004 04:42 PM, 200.201.80.:

 

» Postado por: GNUser em julho 2, 2004 04:30 PM, 200.245.27.:

 

» Postado por: marriage-interracial em julho 20, 2004 10:24 AM, 66.98.226.5:

 

» Postado por: Zithromax em setembro 24, 2004 11:37 AM, 65.75.139.9:

 

» Postado por: Amoxicillin online em outubro 4, 2004 05:37 PM, 65.75.139.9:

 

» Postado por: Cialis em outubro 8, 2004 09:47 PM, 67.19.91.50:

 

» Postado por: Levaquin em outubro 12, 2004 06:26 PM, 67.19.91.50:

 

» Postado por: Seasonale em outubro 14, 2004 04:56 PM, 65.75.139.9:

 

» Postado por: Remeron em outubro 22, 2004 07:33 PM, 65.75.139.9:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.