diff options
Diffstat (limited to 'nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml')
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml | 1480 |
1 files changed, 0 insertions, 1480 deletions
diff --git a/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml deleted file mode 100644 index 90279d9afd..0000000000 --- a/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml +++ /dev/null @@ -1,1480 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> -<!-- - The FreeBSD Dutch Documentation Project - - $FreeBSD$ - - %SOURCE% en_US.ISO8859-1/books/handbook/linuxemu/chapter.sgml - %SRCID% 39544 ---> - -<chapter id="linuxemu"> - <chapterinfo> - <authorgroup> - <author> - <firstname>Jim</firstname> - <surname>Mock</surname> - <contrib>Geherstructureerd en delen bijgewerkt door </contrib> - </author> - <!-- 22 Mar 2000 --> - </authorgroup> - <authorgroup> - <author> - <firstname>Brian N.</firstname> - <surname>Handy</surname> - <contrib>Origineel bijgedragen door </contrib> - </author> - <author> - <firstname>Rich</firstname> - <surname>Murphey</surname> - </author> - </authorgroup> - <authorgroup> - <author> - <firstname>René</firstname> - <surname>Ladan</surname> - <contrib>Vertaald door </contrib> - </author> - </authorgroup> - </chapterinfo> - - <title>&linux; binaire compatibiliteit</title> - - <sect1 id="linuxemu-synopsis"> - <title>Overzicht</title> - - <para>&os; levert binaire compatibiliteit met verscheidene andere - &unix; achtige besturingssystemen, waaronder &linux;. Op dit - moment kan de vraag gesteld worden waarom &os; nu precies - &linux;-binairen moet kunnen draaien. Het antwoord is dat veel - bedrijven en ontwikkelaars alleen ontwikkelen voor &linux;, omdat - dat het nieuwste <quote>hebbeding</quote> is in de wereld van - computers. Dat laat &os; gebruikers al zeurend achter bij - diezelfde bedrijven en ontwikkelaars om originele &os; versies - van hun applicaties. Het probleem is dat veel van deze bedrijven - zich niet goed realiseren hoeveel mensen hun product zouden - gebruiken als er ook &os; versies van waren en de meesten blijven - alleen voor &linux; ontwikkelen. Dus wat moet een &os; gebruiker - doen? Hier komt de &linux; binaire compatibiliteit van &os; om - de hoek kijken.</para> - - <para>In een notendop stelt de compatibiliteit &os; in staat om - rond de 90% van alle &linux; applicaties zonder wijzigingen te - draaien. Dit omvat applicaties zoals - <application>&staroffice;</application>, de &linux; versie van - <application>&netscape;</application>, - <application>&adobe; &acrobat;</application>, - <application>&realplayer;</application>, - <application>&oracle;</application>, - <application>&wordperfect;</application>, - <application>Doom</application>, - <application>Quake</application> en meer. Er wordt zelfs gemeld - dat in sommige gevallen &linux;-binairen beter presteren op &os; - dan op &linux;.</para> - - <para>Er zijn echter enkele &linux;-specifieke - besturingssysteemeigenschappen die niet door &os; ondersteund - worden. &linux;-binairen werken niet op &os; als ze overvloedig - gebruik maken van &i386; specifieke aanroepen, zoals het - aanzetten van de virtuele 8086 modus.</para> - - <para>Na het lezen van dit hoofdstuk weet de lezer:</para> - - <itemizedlist> - <listitem> - <para>Hoe &linux; binaire compatibiliteit op een systeem aan - te zetten;</para> - </listitem> - - <listitem> - <para>Hoe aanvullende &linux; gedeelde bibliotheken te - installeren;</para> - </listitem> - - <listitem> - <para>Hoe &linux; applicaties op een &os; systeem te - installeren;</para> - </listitem> - - <listitem> - <para>De implementatiedetails van &linux; compatibiliteit in - &os;.</para> - </listitem> - </itemizedlist> - - <para>Aangeraden voorkennis:</para> - - <itemizedlist> - <listitem> - <para>Hoe extra software van derden te installeren (<xref - linkend="ports"/>).</para> - </listitem> - </itemizedlist> - </sect1> - - <sect1 id="linuxemu-lbc-install"> - <title>Installatie</title> - - <indexterm><primary>KLD (kernel loadable object)</primary></indexterm> - - <para>&linux; binaire compatibiliteit staat standaard niet aan. De - gemakkelijkste manier om deze functionaliteit aan te zetten is - door het <literal>linux</literal> KLD object (<quote>Kernel - LoaDable object</quote>) te laden. Deze module kan geladen - worden door het volgende commando als <username>root</username> - uit te voeren:</para> - - <screen>&prompt.root; <userinput>kldload linux</userinput></screen> - - <para>Als &linux; compatibiliteit altijd aan moet staan, dan moet - de volgende regel aan <filename>/etc/rc.conf</filename> - toegevoegd worden:</para> - - <programlisting>linux_enable="YES"</programlisting> - - <para>Met &man.kldstat.8; kan gecontroleerd worden of de KLD - geladen is:</para> - - <screen>&prompt.user; <userinput>kldstat</userinput> -Id Refs Address Size Name - 1 2 0xc0100000 16bd8 kernel - 7 1 0xc24db000 d000 linux.ko</screen> - - <indexterm> - <primary>kernelopties</primary> - - <secondary>COMPAT_LINUX</secondary> - </indexterm> - - <para>Als het om enige reden ongewenst of onmogelijk is de KLD te - laden, dan kan de &linux; binaire compatibiliteit statisch in de - kernel gecompileerd worden door - <literal>options COMPAT_LINUX</literal> aan het - kernelinstellingenbestand toe te voegen. Daarna kan de nieuwe - kernel zoals beschreven in <xref linkend="kernelconfig"/> - geïnstalleerd worden.</para> - - <sect2> - <title>&linux; runtime bibliotheken installeren</title> - - <indexterm> - <primary>&linux;</primary> - - <secondary>&linux; bibliotheken installeren</secondary> - </indexterm> - - <para>Dit kan op twee manieren gedaan worden: door de <link - linkend="linuxemu-libs-port">linux_base</link> port te - gebruiken of door ze <link - linkend="linuxemu-libs-manually">handmatig</link> te - installeren.</para> - - <sect3 id="linuxemu-libs-port"> - <title>Installeren uit de linux_base port</title> - - <indexterm><primary>Portscollectie</primary></indexterm> - - <para>Dit is verreweg de gemakkelijkste weg om te bewandelen om de - runtime bibliotheken te installeren. Het is net als het installeren - van andere ports uit de <link linkend="ports">Portscollectie</link>. - Dit kan met het volgende commando:</para> - - <screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base-f10</userinput> -&prompt.root; <userinput>make install distclean</userinput></screen> - - <note> - <para>Op &os;-systemen vóór &os; 8.0 dient u de - port <filename role="package">emulators/linux_base-fc4</filename> in - plaats van <filename - role="package">emulators/linux_base-f10</filename> te - gebruiken.</para> - </note> - - <para>Nu is er werkende &linux; binaire compatibiliteit. - Sommige programma's kunnen klagen over onjuiste kleine - versies van de systeembibliotheken. Over het algemeen - schijnt dit echter geen probleem te zijn.</para> - - <note> - <para>Er kunnen verschillende versies van de <filename - role="package">emulators/linux_base</filename> port - beschikbaar zijn, overeenkomend met verschillende versies - van verscheidene &linux; distributies. Het is verstandig - de port te installeren die het meest voldoet aan de eisen - van de &linux; applicaties die geïnstalleerd gaan - worden.</para> - </note> - </sect3> - - <sect3 id="linuxemu-libs-manually"> - <title>Bibliotheken handmatig installeren</title> - - <para>Als de Portscollectie niet is geïnstalleerd, kunnen - de bibliotheken met de hand geïnstalleerd worden. Om - alles te laten werken moeten de &linux; gedeelde bibliotheken - waarvan het programma afhankelijk is en de runtime linker - geïnstalleerd worden. Ook moet een <quote>shadow - root</quote> map aangemaakt worden, - <filename>/compat/linux</filename>, voor &linux; bibliotheken - op een &os; systeem. Elke gedeelde bibliotheek die wordt - geopend door &linux; programma's die op &os; draaien, kijken - eerst in deze boomstructuur. Dus als een &linux; programma - bijvoorbeeld <filename>/lib/libc.so</filename> laadt, - probeert &os; eerst - <filename>/compat/linux/lib/libc.so</filename> te openen, en - als die niet bestaat, probeert het - <filename>/lib/libc.so</filename> proberen. Gedeelde - bibliotheken moeten in de schaduwmapstructuur - geïnstalleerd worden in plaats van in de paden die het - &linux; <command>ld.so</command> rapporteert.</para> - - <para>In het algemeen geldt dat alleen de eerste paar keer - dat een &linux; binary wordt geïnstalleerd op een &os; - systeem naar de gedeelde bibliotheken gezocht wordt waar - &linux;-binairen van afhankelijk zijn. Na een tijd is de - verzameling van &linux; gedeelde bibliotheken op een systeem - voldoende groot om nieuw geïmporteerde &linux;-binairen - te kunnen draaien zonder enig extra werk.</para> - </sect3> - - <sect3> - <title>Extra gedeelde bibliotheken installeren</title> - - <indexterm><primary>gedeelde bibliotheken</primary></indexterm> - - <para>Wat als de <filename>linux_base</filename> port is - geïnstalleerd en een applicatie nog steeds klaagt over - ontbrekende gedeelde bibliotheken? Op zich zijn er twee - mogelijkheden (voor het opvolgen van deze instructies zijn - <username>root</username> rechten op een &os; systeem - vereist).</para> - - <para>Als er toegang is tot een &linux; systeem kan gekeken - worden welke gedeelde bibliotheken de applicatie nodig heeft - en kunnen ze gekopieerd worden naar het &os systeem. Dit - wordt toegelicht in het volgende voorbeeld:</para> - - <informalexample> - <para>Stel dat FTP gebruikt is om de &linux; binary van - <application>Doom</application> op te halen en die op een - &linux; systeem staat waar toegang tot is. Dan kan met - <command>ldd linuxdoom</command> gecontroleerd worden welke - gedeelde bibliotheken er nodig zijn:</para> - - <screen>&prompt.user; <userinput>ldd linuxdoom</userinput> -libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 -libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 -libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29</screen> - - <indexterm><primary>symbolische links</primary></indexterm> - - <para>Alle bestanden uit de laatste kolom zijn nodig en - moeten onder <filename>/compat/linux</filename> komen te - staat en de namen uit de eerste kolom moeten er als - symbolische links naar verwijzen. Dit betekent dat - uiteindelijk deze bestanden op een &os; systeem - staan:</para> - - <screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0 -/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 -/compat/linux/usr/X11/lib/libX11.so.3.1.0 -/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 -/compat/linux/lib/libc.so.4.6.29 -/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen> - - <blockquote> - <note> - <para>Als er al een &linux; gedeelde bibliotheek met een - groot revisienummer overeenstemmend met de eerste kolom - van de <command>ldd</command> uitvoer is, dan hoeft het - bestand uit de laatste kolom niet naar een systeem - gekopieerd te worden. Het bestand dat er al staat moet - werken. Het is aan te raden om de gedeelde bibliotheek - sowieso te kopiëren als het een nieuwere versie - is. De oude kan verwijderd worden, zolang de - symbolische link maar naar de nieuwe wijst. Dus als - deze bibliotheken op een systeem staan:</para> - - <screen>/compat/linux/lib/libc.so.4.6.27 -/compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen> - - <para>en een nieuwe binary zegt een latere versie nodig - te hebben volgens de uitvoer van - <command>ldd</command>:</para> - - <screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen> - - <para>Als slechts één of twee versies - verouderd zijn in het laatste cijfer, dan hoeft - <filename>/lib/libc.so.4.6.29</filename> niet - gekopieerd te worden, omdat het programma goed moet - werken met de ietwat oudere versie. Als er echter - behoefte aan is, kan besloten worden om - <filename>libc.so</filename> sowieso te verplaatsen, - en dat resulteert in:</para> - - <screen>/compat/linux/lib/libc.so.4.6.29 -/compat/linux/libc.so.4 -> lbic.so.4.6.29</screen> - </note></blockquote> - - <blockquote> - <note> - <para>Het symbolische linkmechanisme is - <emphasis>alleen</emphasis> nodig voor - &linux;-binairen. De &os; runtime linker zorgt zelf - voor het kijken naar passende grote revisienummers en - daar hoeft geen zorg over te bestaan.</para> - </note></blockquote> - </informalexample> - </sect3> - </sect2> - - <sect2> - <title>&linux; ELF-binairen installeren</title> - - <indexterm> - <primary>&linux;</primary> - - <secondary>ELF-binairen</secondary> - </indexterm> - - <para>ELF-binairen hebben soms een extra stap van - <quote>branding</quote> nodig. Als er ongemerkte ELF-binairen - worden gedraaid, ontstaat er een foutmelding zoals de - volgende:</para> - - <screen>&prompt.user; <userinput>./mijn-linux-elf-binary</userinput> -ELF binary type not known -Abort</screen> - - <para>Om de &os; kernel te helpen &os; ELF-binairen en &linux; - binairen uit elkaar te houden, kan &man.brandelf.1; gebruikt - worden.</para> - - <screen>&prompt.user; <userinput>brandelf -t Linux mijn-linux-elf-binary</userinput></screen> - - <indexterm><primary>GNU gereedschapskist</primary></indexterm> - - <para>De GNU gereedschapskist plaatst nu automatisch de juiste - merkinformatie in ELF-binairen , dus deze stap zou steeds - overbodiger moeten worden in de toekomst.</para> - </sect2> - - <sect2> - <title>Een willekeurige toepassing gebaseerd op Linux RPM - installeren</title> - - <para>&os; heeft zijn eigen pakketdatabase die wordt gebruikt om alle - ports te volgen (ook &linux; ports). De &linux; RPM-database wordt dus - niet gebruikt (noch ondersteund).</para> - - <para>Als u echter een willekeurige toepassing die op &linux; RPM is - gebaseerd moet installeren kan dit bereikt worden met:</para> - - <screen>&prompt.root; <userinput>cd /compat/linux</userinput> -&prompt.root; <userinput>rpm2cpio -q < /pad/naar/linux.archief.rpm | cpio -id</userinput></screen> - - <para>Draai daarna brandelf op de geïnstalleerde ELF-binairen (niet - de bibliotheken!). Een schone deïnstallatie is niet mogelijk, maar - het kan helpen met testen.</para> - </sect2> - - <sect2> - <title>De hostnaamresolver instellen</title> - - <screen>resolv+: "bind" is an invalid keyword resolv+: -"hosts" is an invalid keyword</screen> - - <para>Als DNS niet werkt of de bovenstaande melding ontstaat, dan - moet <filename>/compat/linux/etc/host.conf</filename> ingesteld - worden met daarin:</para> - - <programlisting>order hosts, bind -multi on</programlisting> - - <para>De volgorde geeft aan dat <filename>/etc/hosts</filename> - als eerste doorzocht wordt en DNS als tweede. Als - <filename>/compat/linux/etc/host.conf</filename> niet - geïnstalleerd is, vinden &linux; applicaties - <filename>/etc/host.conf</filename> van &os; en klagen ze over - de incompatibele &os; syntaxis. <literal>bind</literal> moet - verwijderd worden als er geen naamserver is ingesteld die - gebruik maakt van <filename>/etc/resolv.conf</filename>.</para> - </sect2> - </sect1> - - <sect1 id="linuxemu-mathematica"> - <sect1info> - <authorgroup> - <author> - <firstname>Boris</firstname> - <surname>Hollas</surname> - <contrib>Bijgewerkt voor Mathematica 5.X door </contrib> - </author> - </authorgroup> - </sect1info> - <title>&mathematica; installeren</title> - - <indexterm> - <primary>applicaties</primary> - - <secondary><application>&mathematica;</application></secondary> - </indexterm> - - <para>Dit document beschrijft het installatieproces van de &linux; - versie van <application>&mathematica; 5.X</application> op een - &os; systeem.</para> - - <para>De &linux; versie van <application>&mathematica;</application> - of <application>&mathematica; for Students</application> kan - direct bij Wolfram besteld worden op <ulink - url="http://www.wolfram.com/"></ulink>.</para> - - <sect2> - <title>De &mathematica; Installer draaien</title> - - <para>Ten eerste dient &os; te weten dat de Linux-binairen van - <application>&mathematica;</application> de Linux ABI gebruiken. - De gemakkelijkste manier om dit te doen is om het standaard - ELF-merk op Linux te zetten voor alle ongemerkte binairen met - het commando:</para> - - <screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen> - - <para>Dit laat &os; aannemen dat alle ongemerkte ELF-binairen de - Linux ABI gebruiken en dus zou de installer rechtstreeks van - de CD-ROM moeten kunnen draaien.</para> - - <para>Kopieer nu het bestand <filename>MathInstaller</filename> - naar de harde schijf:</para> - - <screen>&prompt.root; <userinput>mount /cdrom</userinput> -&prompt.root; <userinput>cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/</userinput></screen> - - <para>Vervang binnen dit bestand <literal>/bin/sh</literal> op de - eerste regel door <literal>/compat/linux/bin/sh</literal>. Dit - zorgt ervoor dat de installer door de Linux-versie van - &man.sh.1; wordt uitgevoerd. Vervang vervolgens met een - tekstverwerker of het onderstaande script in de volgende sectie - alle voorkomens van <literal>Linux)</literal> door - <literal>FreeBSD)</literal>. Dit zorgt ervoor dat de - <application>&mathematica;</application> installer, dat - <command>uname -s</command> gebruikt om het besturingssysteem te - bepalen, om &os; als een Linux-achtig besturingssysteem te - behandelen. Het aanroepen van <command>MathInstaller</command> - zal nu <application>&mathematica;</application> installeren.</para> - </sect2> - - <sect2> - <title>De &mathematica;-executables wijzigen</title> - - <para>De shellscripts die <application>&mathematica;</application> - aanmaakte tijdens de installatie moeten gewijzigd worden voordat - u ze kunt gebruiken. Als u <filename - class="directory">/usr/local/bin</filename> kiest als de map - om <application>&mathematica;</application>-executables in te - plaatsen, zult u in deze map symbolische links naar bestanden - genaamd <filename>math</filename>, - <filename>mathematica</filename>, - <filename>Mathematica</filename>, en - <filename>MathKernel</filename> aantreffen. Vervang met een - tekstverwerker of het volgende shellscript in elk van - deze <literal>Linux)</literal> door <literal>&os;</literal>:</para> - - <programlisting>#!/bin/sh -cd /usr/local/bin -for i in math mathematica Mathematica MathKernel - do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp - sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i - rm $i.tmp - chmod a+x $i -done</programlisting> - </sect2> - - <sect2> - <title>&mathematica; wachtwoord opvragen</title> - - <indexterm> - <primary>Ethernet</primary> - - <secondary>MAC-adres</secondary> - </indexterm> - - <para>Wanneer u <application>&mathematica;</application> voor de - eerste keer start, zal u om een wachtwoord gevraagd worden. Als - u nog geen wachtwoord van Wolfram heeft verkregen, draait u het - programma <command>mathinfo</command> in de installatiemap om uw - <quote>machine-ID</quote> te verkrijgen. Dit machine-ID is - alleen op het MAC-adres van uw eerste Ethernetkaart gebaseerd, - zodat u uw kopie van <application>&mathematica</application> - niet op andere machines kunt draaien.</para> - - <para>Bij een registratie bij Wolfram, per email, telefoon of - fax, wordt het <quote>machine ID</quote> opgegeven en zij - reageren met een overeenkomstig wachtwoord dat uit groepen - getallen bestaat.</para> - </sect2> - - <sect2> - <title>Het &mathematica; frontend over een netwerk - draaien</title> - - <para><application>&mathematica;</application> gebruikt enkele - speciale lettertypen om tekens af te beelden die niet aanwezig - zijn in een standaard lettertypeverzameling (integralen, - sommen, Griekse letters, enzovoort). Het X-protocol vereist - dat deze lettertypen <emphasis>lokaal</emphasis> worden - geïnstalleerd. Dit betekent dat deze lettertypen - gekopieerd moeten worden vanaf de CD-ROM of vanaf een host met - <application>&mathematica;</application> erop naar de lokale - machine. Deze lettertypen worden meestal opgeslagen in - <filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> op de - CD-ROM of in - <filename>/usr/local/mathematica/SystemFiles/Fonts</filename> - op de harde schijf. De eigenlijke lettertypen staan in de - submap <filename>Type1</filename> en <filename>X</filename>. - Er zijn verschillende manieren om ze te installeren, zoals - hieronder staat beschreven.</para> - - <para>De eerste manier is om ze te kopiëren in - één van de bestaande lettertypenmappen in - <filename>/usr/X11R6/lib/X11/fonts</filename>. Hiertoe dient - <filename>fonts.dir</filename> bewerkt te worden door de namen - van de lettertypen eraan toe te voegen het aantal lettertypen - op de eerste regel te veranderen. Als alternatief kan ook - eenvoudig &man.mkfontdir.1; in de map gedraaid worden waar de - lettertypen heen zijn gekopieerd.</para> - - <para>De tweede manier om dit te doen is door de mappen naar - <filename>/usr/X11R6/lib/X11/fonts</filename> te - kopiëren:</para> - - <screen>&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts</userinput> -&prompt.root; <userinput>mkdir X</userinput> -&prompt.root; <userinput>mkdir MathType1</userinput> -&prompt.root; <userinput>cd /cdrom/Unix/Files/SystemFiles/Fonts</userinput> -&prompt.root; <userinput>cp X/* /usr/X11R6/lib/X11/fonts/X</userinput> -&prompt.root; <userinput>cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1</userinput> -&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts/X</userinput> -&prompt.root; <userinput>mkfontdir</userinput> -&prompt.root; <userinput>cd ../MathType1</userinput> -&prompt.root; <userinput>mkfontdir</userinput></screen> - - <para>Voeg nu de nieuwe lettertypenmappen toe aan het - lettertypenpad:</para> - - <screen>&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/X</userinput> -&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/MathType1</userinput> -&prompt.root; <userinput>xset fp rehash</userinput></screen> - - <para>Als de <application>&xorg;</application> server gebruikt - wordt, kunnen deze lettertypenmappen automatisch geladen worden - door ze aan <filename>xorg.conf</filename> toe te - voegen.</para> - - <indexterm><primary>lettertypen</primary></indexterm> - - <para>Als er nog <emphasis>geen</emphasis> map - <filename>/usr/X11R6/lib/X11/fonts/Type1</filename> bestaat, - kan de naam van de map <filename>MathType1</filename> in het - bovenstaande voorbeeld veranderd worden naar - <filename>Type1</filename>.</para> - </sect2> - </sect1> - - <sect1 id="linuxemu-maple"> - <sect1info> - <authorgroup> - <author> - <firstname>Aaron</firstname> - <surname>Kaplan</surname> -<!-- <address><email>aaron@lo-res.org</email></address>--> - <contrib>Bijgedragen door </contrib> - </author> - </authorgroup> - - <authorgroup> - <author> - <firstname>Robert</firstname> - <surname>Getschmann</surname> -<!-- <address><email>rob@getschmann.org</email></address>--> - <contrib>Met dank aan </contrib> - </author> - </authorgroup> - </sect1info> - - <title>&maple; installeren</title> - - <indexterm> - <primary>applicaties</primary> - - <secondary><application>Maple</application></secondary> - </indexterm> - - <para><application>&maple;</application> is een commercieel - wiskundeprogramma vergelijkbaar met - <application>&mathematica;</application>. De software is te koop - op <ulink url="http://www.maplesoft.com/"></ulink> en kan daar - ook geregistreerd worden voor een licentiebestand. Om deze - software op &os; te installeren kunnen de volgende eenvoudige - stappen gevolgd worden:</para> - - <procedure> - <step> - <para>Voer het <filename>INSTALL></filename> shellscript - uit van de productdistributie. Kies de <quote>RedHat</quote> - optie als daarom wordt gevraagd door het - installatieprogramma. Een typische installatiemap zou - <filename class="directory">/usr/local/maple</filename> - zijn.</para> - </step> - - <step> - <para>Bestel, als dat nog niet gedaan is, een licentie voor - <application>&maple;</application> van Maple Waterloo - Software (<ulink - url="http://register.maplesoft.com/"></ulink>) en kopieer - deze naar - <filename>/usr/local/maple/license/license.dat</filename>.</para> - </step> - - <step> - <para>Installeer de <application>FLEXlm</application> - licentiebeheerder met het installatieshellscript - <filename>INSTALL_LIC</filename>, dat geleverd wordt bij - <application>&maple;</application>. Stel de primaire - hostnaam voor de machine in voor de licentieserver.</para> - </step> - - <step> - <para>Patch het bestand - <filename>/usr/local/maple/bin/maple.system.type</filename> - met het volgende:</para> - - <programlisting> ----- knip ------------------ -*** maple.system.type.orig Sun Jul 8 16:35:33 2001 ---- maple.system.type Sun Jul 8 16:35:51 2001 -*************** -*** 72,77 **** ---- 72,78 ---- - # the IBM RS/6000 AIX case - MAPLE_BIN="bin.IBM_RISC_UNIX" - ;; -+ "FreeBSD"|\ - "Linux") - # the Linux/x86 case - # We have two Linux implementations, one for Red Hat and - ----- knip einde van patch -----</programlisting> - - <para>Achter <literal>"FreeBSD"|</literal> mogen geen verdere - witvelden staan.</para> - - <para>Deze patch instrueert <application>&maple;</application> - om <quote>&os;</quote> als een &linux; systeem te herkennen. - Het shellscript <filename>bin/maple</filename> roept het - shellscript <filename>bin/maple.system.type</filename> aan, - dat op zijn beurt <command>uname -a</command> aanroept om - achter de naam van het besturingssysteem te komen. - Afhankelijk van de naam van het besturingssysteem zoekt het - uit welke binairen het moet gebruiken.</para> - </step> - - <step> - <para>Start de licentieserver.</para> - - <para>Het volgende script, geïnstalleerd als - <filename>/usr/local/etc/rc.d/lmgrd.sh</filename>, is een - gemakkelijke manier om <command>lmgrd</command> op te - starten:</para> - - <programlisting> ----- knip ------------ - -#! /bin/sh -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin -PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX -export PATH - -LICENSE_FILE=/usr/local/maple/license/license.dat -LOG=/var/log/lmgrd.log - -case "$1" in -start) - lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2 - echo -n " lmgrd" - ;; -stop) - lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2 - ;; -*) - echo "Usage: `basename $0` {start|stop}" 1>&2 - exit 64 - ;; -esac - -exit 0 - ----- knip ------------</programlisting></step> - - <step> - <para><application>&maple;</application> testen:</para> - - <screen>&prompt.user; <userinput>cd /usr/local/maple/bin</userinput> -&prompt.user; <userinput>./xmaple</userinput></screen> - - <para>Nu hoort het programma te draaien. Het is belangrijk om - Maplesoft te schrijven om ze te laten weten dat een echte - &os; versie gewenst is!</para> - </step> - </procedure> - - <sect2> - <title>Gemeenschappelijke verborgen gevaren</title> - - <itemizedlist> - <listitem> - <para>De <application>FLEXlm</application> - licentiebeheerder kan een lastig programma zijn om mee te - werken. Aanvullende documentatie staat op <ulink - url="http://www.globetrotter.com/"></ulink>.</para> - </listitem> - - <listitem> - <para><command>lmgrd</command> staat er bekend om erg - kieskeurig over het licentiebestand te zijn en core te - dumpen als er een probleem is. Een correct licentiebestand - ziet er zo uit:</para> - - <programlisting># ======================================================= -# License File for UNIX Installations ("Pointer File") -# ======================================================= -SERVER chillig ANY -#USE_SERVER -VENDOR maplelmg - -FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \ - PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \ - ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \ - SN=XXXXXXXXX</programlisting> - - <note> - <para>Het serienummer en de sleutel zijn vervangen door - <quote>X</quote>'en. <hostid>chillig</hostid> is de - hostnaam.</para> - </note> - - <para>Het bewerken van het licentiebestand lukt zolang de - regel <quote>FEATURE</quote> niet verandert (die - beschermd is door de licentiesleutel).</para> - </listitem> - </itemizedlist> - </sect2> - </sect1> - - <sect1 id="linuxemu-matlab"> - <sect1info> - <authorgroup> - <author> - <firstname>Dan</firstname> - <surname>Pelleg</surname> - <contrib>Bijgedragen door </contrib> - </author> - <!-- daniel+handbook@pelleg.org --> - </authorgroup> - </sect1info> - - <title>&matlab; installeren</title> - - <indexterm> - <primary>applicaties</primary> - - <secondary><application>&matlab;</application></secondary> - </indexterm> - - <para>Dit document beschrijft het installatieproces van de &linux; - versie van <application>&matlab; 6.5</application> op een &os; - systeem. Het werkt best goed, met uitzondering van de - <application>&java.virtual.machine;</application> (zie <xref - linkend="matlab-jre"/>).</para> - - <para>De &linux; versie van <application>&matlab;</application> kan - besteld worden bij The MathWorks op <ulink - url="http://www.mathworks.com"></ulink>. Er dient ook een - licentiebestand of instructies hoe dat te maken te zijn. Het is - belangrijk om Maplesoft te schrijven om ze te laten weten dat een - echte &os; versie gewenst is!</para> - - <sect2> - <title>&matlab; installeren</title> - - <para>Om <application>&matlab;</application> te - installeren:</para> - - <procedure> - <step> - <para>Laad de installatie-CD-ROM en koppel die aan. Start het - installatiescript als <username>root</username>:</para> - - <screen>&prompt.root; <userinput>/compat/linux/bin/sh /cdrom/install</userinput></screen> - - <tip> - <para>Het is een grafisch installatieprogramma. Als er - foutmeldingen verschijnen dat het programma geen scherm - kan openen, kan <command>setenv HOME - ~<replaceable>GEBRUIKER</replaceable></command> - uitgevoerd worden, waar - <replaceable>GEBRUIKER</replaceable> de gebruiker is - waarmee &man.su.1; is gedaan.</para> - </tip> - </step> - - <step> - <para>Als om de <application>&matlab;</application> rootmap - wordt gevraagd, dient - <userinput>/compat/linux/usr/local/matlab</userinput> - opgegeven te worden.</para> - - <tip> - <para>Voer op de commandoregel het volgende uit om de - rest van het installatieproces gemakkelijk te houden: - <command>set - MATLAB=/compat/linux/usr/local/matlab</command>.</para> - </tip> - </step> - - <step> - <para>Wijzig het licentiebestand zoals aangegeven tijdens het - verkrijgen van de licentie voor - <application>&matlab;</application>.</para> - - <tip> - <para>Dit bestand kan van tevoren gemaakt worden met een - tekstverwerker en door het te kopiëren naar - <filename>$MATLAB/license.dat</filename> voordat het - installatieprogramma vraagt om het te bewerken.</para> - </tip> - </step> - - <step> - <para>Maak het installatieproces af.</para> - </step> - </procedure> - - <para>Nu is de installatie van - <application>&matlab;</application> compleet. De volgende - stappen <quote>lijmen</quote> het aan het &os; systeem.</para> - </sect2> - - <sect2> - <title>Licentiebeheerder starten</title> - - <procedure> - <step> - <para>Maak symbolische links voor de scriptbestanden van de - licentiebeheerder:</para> - - <screen>&prompt.root; <userinput>ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW</userinput> -&prompt.root; <userinput>ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW</userinput></screen> - </step> - - <step> - <para>Maak een opstartbestand in - <filename>/usr/local/etc/rc.d/flexlm.sh</filename>. - Onderstaand voorbeeld is een gewijzigde versie van het - meegeleverde <filename>$MATLAB/etc/rc.lm.glnx86</filename>. - De wijzigingen omvatten bestandslocaties en het starten - van de licentiebeheerder onder &linux;-emulatie.</para> - - <programlisting>#!/bin/sh -case "$1" in - start) - if [ -f /usr/local/etc/lmboot_TMW ]; then - /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u <replaceable>gebruikersnaam</replaceable> && echo 'MATLAB_lmgrd' - fi - ;; - stop) - if [ -f /usr/local/etc/lmdown_TMW ]; then - /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1 - fi - ;; - *) - echo "Usage: $0 {start|stop}" - exit 1 - ;; -esac - -exit 0</programlisting> - - <important> - <para>Het bestand moet uitvoerbaar zijn:</para> - - <screen>&prompt.root; <userinput>chmod +x /usr/local/etc/rc.d/flexlm.sh</userinput></screen> - - <para>Ook moet bovenstaande - <replaceable>gebruikersnaam</replaceable> vervangen - worden door een geldige gebruikersnaam op het systeem - (maar niet door <username>root</username>).</para> - </important> - </step> - - <step> - <para>Start de licentiebeheerder op met het commando:</para> - - <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/flexlm.sh start</userinput></screen> - </step> - </procedure> - </sect2> - - <sect2 id="matlab-jre"> - <title>De &java; runtime-omgeving linken</title> - - <para>Verander de <application>&java;</application> Runtime - Environment Link naar een die werkt op &os;:</para> - - <screen>&prompt.root; <userinput>cd $MATLAB/sys/java/jre/glnx86</userinput> -&prompt.root; <userinput>unlink jre; ln -s ./jre1.1.8 ./jre</userinput></screen> - </sect2> - - <sect2> - <title>&matlab; opstartscript maken</title> - - <procedure> - <step> - <para>Plaats het volgende startscript in - <filename>/usr/local/bin/matlab</filename>:</para> - - <programlisting>#!/bin/sh -/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"</programlisting> - </step> - - <step> - <para>Geef vervolgens het commando - <command>chmod +x /usr/local/bin/matlab</command>.</para> - </step> - </procedure> - - <tip> - <para>Afhankelijk van de versie van <filename - role="package">emulators/linux_base</filename>, kunnen er - fouten optreden als dit script draait. Om dat te voorkomen, - dient in - <filename>/compat/linux/usr/local/matlab/bin/matlab</filename> - de regel:</para> - - <programlisting>if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then</programlisting> - - <para>(in versie 13.0.1 staat dit op regel 410) veranderd te - worden in:</para> - - <programlisting>if test -L $newbase; then</programlisting> - </tip> - </sect2> - - <sect2> - <title>&matlab; afsluitscript maken</title> - - <para>Het volgende is nodig om een probleem op te lossen dat - samenhangt met het onjuist afsluiten van &matlab;.</para> - - <procedure> - <step> - <para>Maak het bestand - <filename>$MATLAB/toolbox/local/finish.m</filename> dat - alleen de volgende regel bevat:</para> - - <programlisting>! $MATLAB/bin/finish.sh</programlisting> - - <note> - <para><literal>$MATLAB$</literal> is hier letterlijk - bedoeld.</para> - </note> - - <tip> - <para>In dezelfde map staan de bestanden - <filename>finishsav.m</filename> en - <filename>finishdlg.m</filename>, die de mogelijkheid - geven om de werkomgeving te bewaren vóór - het afsluiten. Als één van deze scripts - gebruikt wordt, dient de bovenstaande regel direct na het - commando <literal>save</literal> ingevoegd te - worden.</para> - </tip> - </step> - - <step> - <para>Maak het bestand - <filename>$MATLAB/bin/finish.sh</filename>, dat het - volgende bevat:</para> - - <programlisting>#!/compat/linux/bin/sh -(sleep 5; killall -1 matlab_helper) & -exit 0</programlisting> - </step> - - <step> - <para>Maak het bestand uitvoerbaar:</para> - - <screen>&prompt.root; <userinput>chmod +x $MATLAB/bin/finish.sh</userinput></screen> - </step> - </procedure> - </sect2> - - <sect2 id="matlab-using"> - <title>&matlab; gebruiken</title> - - <para>Nu kan met <command>matlab</command> het programma gestart - worden.</para> - </sect2> - </sect1> - - <sect1 id="linuxemu-oracle"> - <sect1info> - <authorgroup> - <author> - <firstname>Marcel</firstname> - <surname>Moolenaar</surname> - <contrib>Bijgedragen door </contrib> - </author> - <!-- marcel@cup.hp.com --> - </authorgroup> - </sect1info> - - <title>&oracle; installeren</title> - - <indexterm> - <primary>applicaties</primary> - - <secondary><application>Oracle</application></secondary> - </indexterm> - - <sect2> - <title>Voorwoord</title> - - <para>Hieronder wordt het installatieproces van - <application>&oracle; 8.0.5</application> en - <application>&oracle; 8.0.5.1 Enterprise - Edition</application> voor &linux; op een &os;-machine - beschreven.</para> - </sect2> - - <sect2> - <title>De &linux;-omgeving installeren</title> - - <para>Uit de Portscollectie dienen <filename - role="package">emulators/linux_base</filename> en <filename - role="package">devel/linux_devtools</filename> - geïnstalleerd te zijn. Als er problemen zijn met deze - ports, kan het zijn dat de pakketten of oudere versies uit de - Portscollectie gebruikt moeten worden.</para> - - <para>Om de intelligente agent te draaien, moet ook het Red Hat - Tcl package geïnstalleerd worden: - <filename>tcl-8.0.3-20.i386.rpm</filename>. Het algemene - commando om pakketten te installeren met de officiële - <application>RPM</application> port (<filename - role="package">archivers/rpm</filename>) is:</para> - - <screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>package</replaceable></userinput></screen> - - <para>De installatie van het <replaceable>package</replaceable> - hoort foutloos te verlopen.</para> - </sect2> - - <sect2> - <title>De &oracle;-omgeving creëren</title> - - <para>Voordat <application>&oracle;</application> - geïnstalleerd kan worden, moet een juiste omgeving - opgezet worden. Dit document beschrijft alleen welke - <emphasis>speciale</emphasis> dingen gedaan moeten worden om - <application>&oracle;</application> voor &linux; op &os; te - draaien, en niet wat beschreven staat in de - <application>&oracle;</application> - installatiehandleiding.</para> - - <sect3 id="linuxemu-kernel-tuning"> - <title>Kerneloptimalisatie</title> - - <indexterm><primary>kerneloptimalisatie</primary></indexterm> - - <para>Zoals beschreven staat in de - <application>&oracle;</application> installatiehandleiding - moet de maximale grootte van het gedeelde geheugen ingesteld - worden. Op &os; moet <literal>SHMMAX</literal> niet gebruikt - worden. <literal>SHMMAX</literal> wordt slechts uit - <literal>SHMMAXPGS</literal> en <literal>PGSIZE</literal> - berekend. Daarom dient <literal>SHMMAXPGS</literal> - gedefinieerd te worden. Alle andere opties kunnen gebruikt - worden zoals in de handleiding staat beschreven. - Bijvoorbeeld:</para> - - <programlisting>options SHMMAXPGS=10000 -options SHMMNI=100 -options SHMSEG=10 -options SEMMNS=200 -options SEMMNI=70 -options SEMMSL=61</programlisting> - - <para>Deze opties kunnen naargelang het gebruik van - <application>&oracle;</application> ingesteld worden.</para> - - <para>Ook de volgende opties dienen in het - kernelinstellingenbestand te staan:</para> - - <programlisting>options SYSVSHM #SysV gedeeld geheugen -options SYSVSEM #SysV semaforen -options SYSVMSG #SysV interprocescommunicatie</programlisting> - </sect3> - - <sect3 id="linuxemu-oracle-account"> - - <title>&oracle; account</title> - - <para>Creeër een <username>oracle</username> account op - dezelfde manier als elk ander account. Het - <username>oracle</username> account is alleen bijzonder in - het opzicht dat het een &linux; shell moet hebben. Dat kan - door <literal>/compat/linux/bin/bash</literal> toe te voegen - aan <filename>/etc/shells</filename> en de shell voor het - <username>oracle</username> account in te stellen op - <filename>/compat/linux/bin/bash</filename>.</para> - </sect3> - - <sect3 id="linuxemu-environment"> - <title>Omgeving</title> - - <para>Naast de normale <application>&oracle;</application> - variabelen als <envar>ORACLE_HOME</envar> en - <envar>ORACLE_SID</envar> moeten de volgende - omgevingsvariabelen ingesteld worden:</para> - - <informaltable frame="none"> - <tgroup cols="2"> - - <colspec colwidth="1*"/> - <colspec colwidth="2*"/> - <thead> - <row> - <entry>Variabele</entry> - - <entry>Waarde</entry> - </row> - </thead> - - <tbody> - <row> - <entry><envar>LD_LIBRARY_PATH</envar></entry> - - <entry><literal>$ORACLE_HOME/lib</literal></entry> - </row> - - <row> - <entry><envar>CLASSPATH</envar></entry> - - <entry><literal>$ORACLE_HOME/jdbc/lib/classes111.zip</literal></entry> - </row> - - <row> - <entry><envar>PATH</envar></entry> - - <entry><literal>/compat/linux/bin; -/compat/linux/sbin; -/compat/linux/usr/bin; -/compat/linux/usr/sbin; -/bin; -/sbin; -/usr/bin; -/usr/sbin; -/usr/local/bin; -$ORACLE_HOME/bin</literal></entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>Het is aan te raden om alle omgevingsvariabelen in - <filename>.profile</filename> in te stellen. Een volledig - voorbeeld is:</para> - - <programlisting>ORACLE_BASE=/oracle; export ORACLE_BASE -ORACLE_HOME=/oracle; export ORACLE_HOME -LD_LIBRARY_PATH=$ORACLE_HOME/lib -export LD_LIBRARY_PATH -ORACLE_SID=ORCL; export ORACLE_SID -ORACLE_TERM=386x; export ORACLE_TERM -CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip -export CLASSPATH -PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin -PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin -PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin -export PATH</programlisting> - </sect3> - </sect2> - - <sect2> - <title>&oracle; installeren</title> - - <para>Wegens een kleine inconsistentie in de &linux; emulator - moet de map <filename>.oracle</filename> aangemaakt worden - in <filename>/var/tmp</filename> voordat het - installatieprogramma wordt gestart. De gebruiker - <username>oracle</username> moet de eigenaar van deze map - zijn. Nu hoort <application>&oracle;</application> zonder - problemen te installeren. Bij problemen dienen eerst de - <application>&oracle;</application> distributie en/of de - instellingen gecontroleerd te worden! Nadat - <application>&oracle;</application> is geïnstalleerd, - moeten de patches uit de volgende twee secties - geïnstalleerd worden.</para> - - <para>Een veelvoorkomend probleem is dat de adapter voor het - TCP-protocol niet goed is geïnstalleerd. De consequentie - daarvan is dat er geen TCP-listeners gestart kunnen worden. De - volgende acties helpen om dit probleem op te lossen:</para> - - <screen>&prompt.root; <userinput>cd $ORACLE_HOME/network/lib</userinput> -&prompt.root; <userinput>make -f ins_network.mk ntcontab.o</userinput> -&prompt.root; <userinput>cd $ORACLE_HOME/lib</userinput> -&prompt.root; <userinput>ar r libnetwork.a ntcontab.o</userinput> -&prompt.root; <userinput>cd $ORACLE_HOME/network/lib</userinput> -&prompt.root; <userinput>make -f ins_network.mk install</userinput></screen> - - <para>Hierna dient <filename>root.sh</filename> nogmaals te - draaien!</para> - - <sect3 id="linuxemu-patch-root"> - <title><filename>root.sh</filename> patchen</title> - - <para>Als <application>&oracle;</application> - geïnstalleerd wordt, worden sommige acties die als - <username>root</username> moeten worden uitgevoerd - geregistreerd in een shellscript met de naam - <filename>root.sh</filename>. Dit script komt in de map - <filename>orainst</filename> te staan. De volgende patch - dient uitgevoerd te worden op <filename>root.sh</filename> om - het de juiste locatie van <command>chown</command> te laten - gebruiken of als alternatief kan het script onder een - originele &linux; shell gedraaid worden</para> - - <programlisting>*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 ---- orainst/root.sh Mon Dec 28 15:58:53 1998 -*************** -*** 31,37 **** -# This is the default value for CHOWN -# It will redefined later in this script for those ports -# which have it conditionally defined in ss_install.h -! CHOWN=/bin/chown -# -# Define variables to be used in this script ---- 31,37 ---- -# This is the default value for CHOWN -# It will redefined later in this script for those ports -# which have it conditionally defined in ss_install.h -! CHOWN=/usr/sbin/chown -# -# Define variables to be used in this script</programlisting> - - <para>Als <application>&oracle;</application> niet vanaf - een CD-ROM wordt geïnstalleerd, kan de broncode van - <filename>root.sh</filename> aangepast worden. Die heet - <filename>rthd.sh</filename> en staat in de map - <filename>orainst</filename> in de broncodestructuur.</para> - </sect3> - - <sect3 id="linuxemu-patch-tcl"> - <title>genclntsh patchen</title> - - <para>Het script <command>genclntsh</command> wordt gebruikt om - é´n enkele gedeelde bibliotheek voor de - cliënt aan te maken. Het wordt gebruikt tijdens het - maken van de demonstraties. Met de volgende patch wordt de - definitie van <envar>PATH</envar> uitgecommentarieerd:</para> - - <programlisting>*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 ---- bin/genclntsh Tue Dec 22 15:36:49 1998 -*************** -*** 32,38 **** -# -# Explicit path to ensure that we're using the correct commands -#PATH=/usr/bin:/usr/ccs/bin export PATH -! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH -# -# each product MUST provide a $PRODUCT/admin/shrept.lst ---- 32,38 ---- -# -# Explicit path to ensure that we're using the correct commands -#PATH=/usr/bin:/usr/ccs/bin export PATH -! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH -# -# each product MUST provide a $PRODUCT/admin/shrept.lst</programlisting> - </sect3> - </sect2> - - <sect2> - <title>&oracle; draaien</title> - - <para>Als de instructies worden gevolgd, draait - <application>&oracle;</application> als op &linux; zelf.</para> - </sect2> - </sect1> - - <sect1 id="linuxemu-advanced"> - <title>Gevorderde onderwerpen</title> - - <para>Hier wordt beschreven hoe de &linux; binaire compatibiliteit - werkt. Het meeste van wat nu volgt is sterk gebaseerd op een - e-mailbericht van Terry Lambert - <email>tlambert@primenet.com</email> aan &a.chat; (Message ID: - <literal><199906020108.SAA07001@usr09.primenet.com></literal>).</para> - - <sect2> - <title>Hoe werkt het?</title> - - <indexterm><primary>uitvoerklasselader</primary></indexterm> - - <para>&os; heeft een abstractie met de naam <quote>execution - class loader</quote>. Dit is een wig in de systeemaanroep - &man.execve.2;.</para> - - <para>Wat er gebeurt is dat &os; een lijst van loaders heeft, in - plaats van een enkele loader die terugvalt op de - <literal>#!</literal> loader voor het draaien van elke - shellinterpreter of shellscript.</para> - - <para>Vroeger onderzocht de enige loader op het &unix; platform - het magische getal (in het algemeen de eerste 4 of 8 bytes van - het bestand) om te zien of het een binary was die het systeem - kende en als dat het geval was laadde het de binaire - loader.</para> - - <para>Als het niet het binaire type voor het systeem was, faalde - de aanroep naar &man.execve.2; en probeerde de shell het als - shellopdrachten uit te voeren.</para> - - <para>Deze aanname was een standaard voor <quote>wat de huidige - shell ook is.</quote></para> - - <para>Later werd er een hack gemaakt voor &man.sh.1; om de eerste - twee tekens te onderzoeken en als die bestonden uit - <literal>:\n</literal> voerde het in plaats hiervan de - &man.csh.1; shell uit (het idee is dat SCO de hack als eerste - maakte).</para> - - <para>Wat &os; nu doet is door een lijst van loaders gaan - met een generieke <literal>#!</literal> loader die kennis heeft - van interpreters in de zin van de karakters die volgen op de - volgende witruimte tot de laatste, met uiteindelijk een - terugval op <filename>/bin/sh</filename>.</para> - - <indexterm><primary>ELF</primary></indexterm> - - <para>Voor &linux; ABI-ondersteuning ziet &os; het magische getal - als een ELF-binary (het maakt op dit punt geen onderscheid - tussen &os;, &solaris;, &linux; of elk ander besturingssysteem - dat een ELF-beeldtype heeft).</para> - - <indexterm><primary>&solaris;</primary></indexterm> - - <para>De ELF loader zoekt naar een gespecialiseerd - <emphasis>merk</emphasis>, dat een commentaargedeelte in het - ELF-beeld is en dat niet aanwezig is in SVR4/&solaris; - ELF-binairen.</para> - - <para>Om &linux;-binairen werkend te krijgen, moeten ze - <emphasis>gemerkt</emphasis> worden als het type - <literal>Linux</literal> met &man.brandelf.1;:</para> - - <screen>&prompt.root; <userinput>brandelf -t Linux bestand</userinput></screen> - - <para>Als dit gedaan is, ziet de ELF loader het - <literal>Linux</literal>-merk in het bestand.</para> - - <indexterm> - <primary>ELF</primary> - - <secondary>merken</secondary> - </indexterm> - - <para>Als de ELF loader het <literal>Linux</literal>-merk - tegenkomt, verplaatst de loader een pointer in de - <literal>proc</literal>-structuur. Alle systeemaanroepen - worden met deze pointer geïndexeerd (in een traditioneel - &unix; systeem is dit de - <literal>sysent[]</literal>-structuurarray, die de - systeemaanroepen bevat). Ook wordt het proces gemerkt voor - speciale behandeling door de valstrikvector van de - signaal-trampolinecode samen met nog meer (kleine) aanpassingen - die door de &linux; kernelmodule worden afgehandeld.</para> - - <para>De &linux; kernelmodule bevat naast andere dingen een lijst - van <literal>sysent[]</literal>-ingangen waarvan de adressen - in de kernelmodule staan.</para> - - <para>Als een systeemaanroep door de &linux;-binary wordt - aangeroepen, verwijdert de valstrikcode de referentie aan de - functiepointer van de systeemaanroep en geeft die de - ingangspunten van de systeemaanroep van &linux; en niet van - &os;.</para> - - <para>Verder <emphasis>reroot</emphasis> de &linux;-modus - dynamisch lookups. Dit is wat de optie <option>union</option> - (<emphasis>niet</emphasis> het <literal>unionfs</literal> - bestandssysteemtype!) voor het aankoppelen van bestandssystemen - effectief doet. Eerst wordt een poging gedaan om het bestand - in de map - <filename>/compat/linux/<replaceable>origineel-pad</replaceable></filename> - op te zoeken en <emphasis>vervolgens</emphasis> alleen als dat - mislukt, wordt het bestand in - <filename>/<replaceable>origineel-pad</replaceable></filename> - opgezocht. Dit zorgt ervoor dat binairen die andere binairen - nodig hebben kunnen draaien (zo kan bijvoorbeeld de - &linux;-gereedschapskist geheel onder &linux; ABI-ondersteuning - draaien). Dit betekent ook dat &linux;-binairen &os;-binairen - kunnen laden en draaien als er geen overeenkomende - &linux;-binairen zijn en dat er een &man.uname.1;-opdracht in - de mappenstructuur <filename>/compat/linux</filename> gezet kan - worden om er zeker van te zijn dat &linux;-binairen niet kunnen - weten dat ze niet op &linux; draaien.</para> - - <para>Effectief bevindt er zich een &linux;-kernel in de - &os;-kernel. De verschillende onderliggende functies die alle - functies implementeren die de kernel aanbiedt, zijn dezelfde - tabelingangen voor de systeemaanroepen van &os; als van - &linux;: bestandssysteembewerkingen, bewerkingen op het - virtuële geheugen, signaalaflevering, System V IPC, - enzovoort. Het enige verschil is dat &os;-binairen de - <emphasis>lijm</emphasis> functies voor &os; krijgen en dat de - &linux;-binairen de <emphasis>lijm</emphasis>-functies voor - &linux; krijgen (de meeste oudere besturingssystemen hadden - alleen hun eigen <emphasis>lijm</emphasis>-functies: adressen - van functies die in een statische globale - <literal>sysent[]</literal> structuurarray werden opgeslagen, - in plaats van adressen van functies waarvan dynamisch een - geïnitialiseerde pointer wordt verwijderd in de - <literal>proc</literal>-structuur van het proces dat de aanroep - doet).</para> - - <para>Welke is de eigenlijke &os; ABI? Dat maakt niet uit. - Eigenlijk is het enige verschil dat (op dit moment; dit kan - eenvoudig veranderen in een toekomstige uitgave, en dat gebeurt - waarschijnlijk na deze uitgave) de - <emphasis>lijm</emphasis>-functies van &os; statisch gelinkt - zijn in de kernel en dat de <emphasis>lijm</emphasis>-functies - van &linux; zowel statisch gelinkt kunnen worden als dat ze - door een kernelmodule worden benaderd.</para> - - <para>Maar is dit nu echt emulatie? Nee. Het is een - ABI-implementatie, geen emulatie. Er is geen emulator (of - simulator, om de volgende vraag voor te zijn) bij - betrokken.</para> - - <para>Dus waarom wordt het dan soms - <quote>&linux;-emulatie</quote> genoemd? Om het moeilijk te - maken om &os; te verkopen! Serieus, het is zo omdat de - historische implementatie in een tijd werd gedaan toen er echt - geen ander woord was om te beschrijven wat er aan de hand was, - om te zeggen dat &os; &linux;-binairen draaide was niet waar - als de code niet in de kernel gecompileerd werd of als een - module geladen werd en er moest een woord zijn voor hetgeen - geladen werd. Vandaar <quote>de &linux;-emulator</quote>.</para> - </sect2> - </sect1> -</chapter> |