Hoofdstuk 8. Linux emulatie

Inhoudsopgave

8.1. Emulatie setup
8.1.1. Configuratie van de kernel
8.1.2. Installatie van de Linux libraries
8.1.3. Installatie van Acrobat Reader
8.2. Directory structuur

De NetBSD port voor i386 machines kan een groot aantal Linux programma's draaien met behulp van de Linux emulatielaag. Over het algemeen denkt men bij emulatie aan iets langzaams en inefficiënts omdat de meeste emulaties hardware-instructies moeten reproduceren en zelfs volledige architecturen (meestal van oude machines). In het geval van Linux emulatie is dit een heel ander verhaal: het is alleen een dunne softwarelaag voor system calls die vaak sterk overeenkomstig zijn tussen de twee systemen. De applicatiecode wordt met volledige snelheid uitgevoerd door uw CPU, dus u krijgt geen in snelheid gedegradeerde programma's. Het verschil met NetBSD programma's zult u waarschijnlijk niet eens merken.

Dit hoofdstuk legt uit hoe u de Linux emulatie kunt configureren aan de hand van een voorbeeld: de installatie van Acrobat Reader versie 4.

8.1. Emulatie setup

De installatie van de Linux emulatie is beschreven in de compat_linux(8) man page; met het package systeem zijn slechts twee stappen nodig.

  1. Configuratie van de kernel.

  2. Installatie van de Linux libraries.

8.1.1. Configuratie van de kernel

Als u een GENERIC kernel gebruikt hoeft u niks te doen omdat Linux emulatie dan al actief is.

Als u een aangepaste kernel gebruikt moeten de volgende opties in de kernelconfiguratie staan:

option COMPAT_LINUX
option EXEC_ELF32
      

als u een kernel gecompileerd heeft met deze opties kunt u de vereiste software gaan installeren.

8.1.2. Installatie van de Linux libraries

U kunt de Linux libraries uit elke Linux distributie halen, met de voorwaarde dat de distributie niet te oud is, maar het is aan te raden het package systeem te gebruiken voor een automatische installatie van de libraries (de SuSE libraries worden gebruikt). Het volgende wordt gedaan wanneer u de libraries installeert:

  • Er wordt een tweede root directory gemaakt die gebruikt zal worden voor Linux programma's. Dit is de directory /emul/linux/. De Linux programma's die gebruik maken van de emulatie gebruiken deze directory als hun root directory.

  • De gedeelde bibliotheken zijn geïnstalleerd. De meeste applicaties zijn dynamisch gelinkt en benodigen de noodzakelijke libraries. Laten we Acrobat Reader als voorbeeld nemen. Als u naar de /usr/pkgsrc/print/acroread directory gaat en daar het make depends commando uitvoert krijgt u de volgende uitvoer:

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

Beide operaties zullen afgehandeld worden door het package systeem zonder de noodzaak van handmatig ingrijpen van de gebruiker (ik veronderstel dat u al van de package systeem begint te houden...)

Om de libraries te installeren moet een programma geïnstalleerd worden dat om kan gaan met het RPM formaat: het is rpm-2.5.4, wat gebruikt zal worden om de SuSE libraries uit te pakken.

Daarna moet de suse_base package geïnstalleerd worden. De SuSE RPM bestanden kunnen gedownload worden door het package systeem of u kunt ze, als u een SuSE CD heeft, kopieëren naar de /usr/pkgsrc/distfiles/suse directory en dan de make en make install commado's uitvoeren.

Installeer op dezelfde wijze suse_compat, suse_libc5 en suse_x11. De uiteindelijke configuratie is:

# 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
      

8.1.3. Installatie van Acrobat Reader

Nu is alles gereed voor de installatie van het Acrobat Reader programma (of andere Linux programma's). Ga naar /usr/pkgsrc/print/acroread/ en voer de gewoonlijke commando's uit:

make
make install
      

De Acrobat Reader installatiescripts zullen vragen of u de licentie wilt accepteren. Als u dit gedaan heeft kunt u het programma starten.

8.2. Directory structuur

Als we de installatie van de Linux libraries analyseren zullen we zien dat /emul/linux een symbolische link is die verwijst naar /usr/pkg/emul/linux, waarin de volgende directories aangemaakt zijn:

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

Opmerking

verwijs altijd naar /emul/linux en niet naar /usr/pkg/emul/linux. De laatste directory is inherent aan de huidige implementatie en dit zou in de toekomst kunnen veranderen.

Hoeveel schijfruimte is er nodig voor de Linux emulatie software? Op mijn systeem krijg ik de volgende uitkomst:

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

Acrobat Reader, het programma, is in de gewoonlijke directory voor package binaries geïnstalleerd: /usr/pkg/bin/.