O NetBSD reescrito para as máquinas i386 é capaz de executar também uma grande parte dos programas do Linux em modo de emulação. Geralmente, quando se fala de emulação, pensa-se em algo de muito lento e ineficiente já que, habitualmente, as emulações comportam a reprodução através de softwares de arquiteturas de hardware muito diferentes daquela em que se trabalha. No caso da emulação do Linux, todavia, trata-se simplesmente do acréscimo de um sutil estrato de softwares já "adaptados" a uma série de chamadas do sistema que já são muito similares ao sistema emulado. O código do próprio aplicativo já foi elaborado nativamente para a mesma CPU e, portanto, não se deve temer redução da performance. Há até mesmo quem, não sem uma dose de exagero, chega a dizer que os programas para Linux definitivamente rodam melhor no NetBSD.
No presente capítulo explica-se como configurar a emulação do Linux para instalar um programa nativo desse sistema que, no exemplo, será o conhecidíssimo Acrobat Reader versão 4.
A página do manual compat_linux(8) descreve em detalhe a instalação do emulador de Linux em um sistema NetBSD. Trata-se de uma das páginas mais amigáveis do manual: fica clara a intenção de ajudar o usuário a realizar uma operação, ao invés de fornecer um pacote de especificações e de detalhes técnicos. Para instalar a emulação Linux são necessários dois passos:
Configurar o kernel.
Instalar as bibliotecas Linux.
A primeira operação a cumprir é a compilação de um kernel que suporte a compatibilidade com o Linux. Quem usa o kernel GENERIC não deve fazer nada porque ele já está habilitado para a compatibilidade com o Linux. Quem usa um kernel personalizado, todavia, deve ativar as opções:
option COMPAT_LINUX option EXEC_ELF32
quando o kernel estiver pronto pode-se passar à instalação do software necessário.
As bibliotecas Linux podem ser retiradas de uma distribuição Linux, contanto que suficientemente atualizada. Para simplificar a operação convém recorrer ao sistema de gerenciamento dos pacotes, que efetua a instalação de modo automático, utilizando bibliotecas do Suse Linux. As principais operações que serão realizadas são:
A criação de um diretório root secundário, que será utilizado para os programas do Linux. Este diretório é /emul/linux/. Os programas Linux em emulação no NetBSD farão referência a esse diretório como se fosse o diretório raiz do sistema.
A instalação das bibliotecas compartilhadas para Linux. A maior parte dos programas são, de fato, ligados dinamicamente e esperam, portanto, encontrar as bibliotecas necessárias instaladas no sistema. No que diz respeito ao Acrobat Reader, entrando-se no diretório /usr/pkgsrc/print/acroread e escrevendo make depends, obtém a seguinte mensagem:
===> acroread-4.0 requires Linux glibc2 libraries - see compat_linux(8).
Ambas as operações serão realizadas pelo sistema de gerenciamento dos pacotes, sem necessidade de intervenções manuais por parte do usuário.
Antes de passar à instalação das bibliotecas propriamente ditas, carece instalar o pacote necessário para a gestão dos arquivos em formato RPM. Trata-se do rpm-2.5.4, que permitirá a extração dos arquivos das bibliotecas do Suse.
A seguir é necessário instalar o pacote suse_base. Os arquivos RPM Suse podem ser obtidos por download diretamente do sistema de pacotes ou, quem tem um CD-ROM Suse pode copiá-los no diretório /usr/pkgsrc/distfiles/suse e depois executar make e make install.
Com o mesmo método instalam-se suse_compat, suse_libc5 e suse_x11, obtendo-se ao fim esta configuração:
# pkg_info -a | grep suse suse_base-6.1p1 Linux compatibility package suse_x11-6.1p1 Linux compatibility package for X11 binaries suse_compat-6.1p1 Linux compatibility package with old shared libraries suse_libc5-6.1p1 Linux compatibility package for libc5 binaries
Agora tudo está pronto para a instalação do programa Acrobat Reader (ou de outros programas Linux, naturalmente). Basta entrar no diretório /usr/pkgsrc/print/acroread e executar os comandos usuais:
make make install
O script de instalação do Acrobat pede que se aceite as condições da licença. Feito isso, o programa está pronto para ser executado.
Examinando os resultados da instalação das bibliotecas e do programa, constatamos que /emul/linux é um link simbólico que aponta para /usr/pkg/emul/linux, onde se encontram os seguintes diretórios:
bin/ boot/ cdrom/ dev/ etc/ floppy/ home/ lib/ mnt/ opt/ proc/ root/ sbin/ usr/
Nota: note-se que é sempre bom fazer referência a /emul/linux. O fato de que se trate de um link simbólico com /usr/pkg/emul/linux é um detalhe de implementação que poderia mudar em futuras versões do NetBSD.
Quanto espaço é necessário para instalar a emulação do Linux? Com a instalação já feita a estimativa do espaço dá os seguintes resultados:
# cd /usr/pkg/emul # du -k linux ... 60525 linux/
Acrobat Reader, o programa propriamente dito, foi instalado no diretório usual dos pacotes pré-compilados, /usr/pkg/bin/.