Chapitre 15. Émulation Linux

Table des matières
15.1. Mise en place
15.2. Structure des répertoires

Le portage de NetBSD pour i386 peut exécuter un grand nombre de programmes natifs de Linux en utilisant la couche d'émulation Linux. Généralement, lorsque l'on parle d'émulation, on imagine quelque chose de lent et d'assez peu fiable car, la plupart du temps, l'émulateur doit reproduire les instructions du matériel et même des architectures (souvent d'anciennes machines) de façon logicielle. Le cas de l'émulation Linux est tout à fait différent : il s'agit d'un tout petit logiciel, la grande majorité des appels systèmes étant similaires entre les deux systèmes. Le code de l'application lui-même est exécuté avec la pleine vitesse du processeur dont les performances ne sont pas dégradées par l'émulation. L'impression est la même que pour les applications natives de NetBSD.

Ce chapitre explique comment configurer l'émulation Linux en prenant un exemple : l'installation d'un programme bien connu, Acrobat Reader en version 4.

15.1. Mise en place

L'installation de l'émulateur Linux est décrite dans la page de manuel compat_linux(8). A l'aide du système de paquetages, seules deux étapes sont nécessaires :

  1. Configurer le noyau.

  2. Installer les bibliothèques de Linux.

15.1.1. Configurer le noyau

Si vous utilisez un noyau GENERIC, vous n'avez rien à faire car la compatibilité avec Linux est déjà assurée.

Si vous utilisez un noyau personnel, vérifiez que les options suivantes sont activées :

option COMPAT_LINUX
option EXEC_ELF32      

Une fois le noyau compilé avec ces options, vous pouvez installer les logiciels.

15.1.2. Installer les bibliothèques de Linux

Vous pouvez les obtenir à partir de n'importe quelle distribution de Linux à condition qu'elle ne soit pas trop ancienne. La méthode conseillée est plutôt de les prendre dans le système de paquetages et de les installer automatiquement (ce sont celles de Suse qui sont utilisées). Voici ce qu'il se passe lors de l'installation :

  • Un deuxième répertoire racine est créé pour les programmes Linux. Il s'appelle /emul/linux/. Les programmes Linux en mode émulation utiliseront ce répertoire comme répertoire racine.

  • Les bibliothèques partagées de Linux sont installées. La plupart des applications sont dynamiquement liées et s'attendent à trouver les librairies voulues dans le système. Par exemple, pour Acrobat Reader, si vous allez dans le répertoire /usr/pkgsrc/print/acroreadet tapez la commande make depends, vous obtiendrez le message suivant :

    ===>  acroread-4.0 requires Linux glibc2 libraries - see compat_linux(8).      

Ces deux étapes sont automatiquement gérées par le système de paquetages sans intervention manuelle de l'utilisateur (j'imagine que, maintenant, vous commencez à aimer le système de paquetages...)

Pour installer les bibliothèques, un programme doit être présent pour gérer les formats RPM : il s'agit de rpm-2.5.4, qui sera utilisé pour extraire les bibliothèques de Suse.

Ensuite, le paquetage suse_base doit être installé. Les fichiers RPM de Suse peuvent être téléchargés par le système de paquetages ou, si vous avez le cédérom de Suse, vous pouvez les copier dans le répertoire /usr/pkgsrc/distfiles/suse et lancer les commandes make et make install.

De la même manière, installez suse_compat, suse_libc5 et suse_x11. La configuration finale est :

# 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      

15.1.3. Installer Acrobat Reader

Maintenant que tout est prêt, nous pouvons commencer à installer Acrobat Reader (ou d'autres programmes Linux). Allez dans le répertoire /usr/pkgsrc/print/acroread et tapez les commandes habituelles :

make
make install      

Le script d'installation d'Acrobat Reader vous demande si vous acceptez la licence. Si oui, vous pouvez alors utiliser le programme.

15.2. Structure des répertoires

En examinant le résultat de l'installation des bibliothèques et programmes Linux, nous nous apercevons que /emul/linux est, en fait, un lien symbolique vers le répertoire /usr/pkg/emul/linux, dans lequel les sous-répertoires suivants ont été créés :

bin/
boot/
cdrom/
dev/
etc/
floppy/
home/
lib/
mnt/
opt/
proc/
root/
sbin/
usr/    

Note : prenez toujours le répertoire /emul/linux comme référence et non /usr/pkg/emul/linux. Ce dernier est un détail dans l'implémentation et peut changer dans le futur.

Combien de place faut-il pour le logiciel d'émulation Linux ? Sur mon système, voici ce que j'obtiens :

# cd /usr/pkg/emul
# du -k linux
...
60525   linux/    

Acrobat Reader, le programme, a été installé dans le répertoire normal de tous les binaires de paquetages : /usr/pkg/bin/.