Il port per i386 di NetBSD è in grado di eseguire anche una gran parte di programmi Linux in modalità emulazione. Generalmente, quando si parla di emulazione si pensa a qualcosa di molto lento e inefficiente poiché, solitamente, le emulazioni comportano la riproduzione via software di architetture hardware spesso molto differenti da quella su cui si lavora. Nel caso dell'emulazione Linux, invece, si tratta semplicemente dell'aggiunta di un sottile strato di software che "adatti" una serie di chiamate di sistema già in partenza molto simili. Il codice dell'applicazione stessa viene elaborato nativamente dalla CPU e quindi, nessuna paura di performance scadenti, anzi c'è chi, con una buona dose di esagerazione, arriva a dire che i programmi per Linux girano addirittura meglio sotto NetBSD.
In questo capitolo viene spiegato come configurare l'emulazione Linux per installare un programma per Linux, che, nell'esempio, sarà il ben noto Acrobat Reader versione 4.
La pagina di manuale compat_linux(8) descrive in dettaglio l'installazione dell'emulazione Linux su un sistema NetBSD. Si tratta di una delle pagine più user-friendly del manuale; per una volta tanto appare chiara l'intenzione di aiutare l'utente a compiere un'operazione anziché di fornire una elenco di specifiche e di dettagli tecnici. Per installare l'emulazione Linux sono necessari solo due passi:
Configurare il kernel.
Installare le librerie Linux.
La prima operazione da compiere è la compilazione di un kernel che supporti la compatibilità Linux. Chi usa il kernel generico non deve fare nulla perché GENERIC è già abilitato per la compatibilità con Linux. Chi usa un kernel personalizzato, invece, deve attivare le opzioni
option COMPAT_LINUX option EXEC_ELF32
quando il kernel è pronto, si può passare all'installazione del software necessario.
Le librerie Linux si possono ricavare da una distribuzione Linux, purché sufficientemente aggiornata. Per semplificare l'operazione conviene ricorrere al sistema dei package, che effettua l'installazione in modo automatico, utilizzando le librerie di Suse Linux. Le operazioni principali che verranno compiute sono:
La creazione di una directory root secondaria, da utilizzare per i programmi Linux. Questa directory è /emul/linux/. I programmi Linux in emulazione su NetBSD faranno riferimento a questa directory come se fosse la directory radice del sistema.
L'installazione delle librerie condivise per Linux. La maggior parte dei programmi sono infatti collegati dinamicamente e si aspettano quindi di trovare le librerie necessarie sul sistema. Per quanto riguarda Acrobat Reader, portandosi nella directory /usr/pkgsrc/print/acroread e scrivendo make depends si ottiene il seguente messaggio:
===> acroread-4.0 requires Linux glibc2 libraries - see compat_linux(8).
Entrambe le operazioni verranno compiute dal sistema dei package, senza bisogno di interventi manuali da parte dell'utente.
Prima di passare all'installazione delle librerie vere e proprie, bisogna installare il pacchetto necessario per la gestione dei file in formato RPM: si tratta di rpm-2.5.4, che consentirà l'estrazione dei file delle librerie Suse.
Successivamente bisogna installare il pacchetto suse_base. I file RPM Suse possono essere scaricati automaticamente dal sistema dei package oppure, chi ha un cdrom Suse li può copiare nella directory /usr/pkgsrc/distfiles/suse e poi eseguire make e make install.
Con lo stesso metodo si installano, suse_compat, suse_libc5 e suse_x11 ottenendo alla fine questa configurazione:
# 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
Ora tutto è pronto per l'installazione del programma Acrobat Reader (o di altri programmi Linux, naturalmente). Basta portarsi nella directory /usr/pkgsrc/print/acroread e dare i soliti comandi:
make make install
Lo script di installazione di Acrobat chiede di accettare le condizioni della licenza; fatto ciò il programma è pronto per essere lanciato.
Esaminando i risultati dell'installazione delle librerie e del programma, troviamo che /emul/linux è un link simbolico che punta a /usr/pkg/emul/linux, dove si trovano le seguenti directory:
bin/ boot/ cdrom/ dev/ etc/ floppy/ home/ lib/ mnt/ opt/ proc/ root/ sbin/ usr/
Nota: si noti che è sempre bene fare riferimento a /emul/linux. Il fatto che si tratti di un link simbolico e /usr/pkg/emul/linux è un dettaglio di implementazione che potrebbe cambiare nelle future release.
Quanto spazio è necessario per installare l'emulazione Linux? A installazione avvenuta, la valutazione dello spazio da' i seguenti risultati:
# cd /usr/pkg/emul # du -k linux ... 60525 linux/
Acrobat Reader, il programma vero e proprio, è stato installato nella consueta directory dei package, /usr/pkg/bin/.