Index: head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml (revision 53773) +++ head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml (revision 53774) @@ -1,1336 +1,1336 @@ &linux;-Binärkompatibilität Jim Mock Restrukturiert und teilweise aktualisiert von Brian N. Handy Beigetragen von Rich Murphey Johann Kois Übersetzt von Übersicht Linux-Binärkompatibilität Binärkompatibilität Linux &os; bietet Binärkompatibilität zu &linux;, so dass Benutzer &linux; Anwendungen auf einem &os;-System installieren und ausführen können, ohne die Binärdatei ändern zu müssen. Es wurde sogar berichtet, dass in einigen Situationen &linux; Anwendungen auf &os; besser laufen als unter &linux;. Allerdings werden einige &linux;-spezifischen Merkmale nicht von &os; unterstützt. &linux;-Anwendungen, die &i386;-spezifische Aufrufe, wie bspw. die Aktivierung des virtuellen 8086-Modus verwenden, werden derzeit nicht unterstützt. Die Unterstützung für 64-Bit-Binärkompatibilität für &linux; wurde in &os; 10.3 hinzugefügt. Nach dem Lesen dieses Kapitels werden Sie wissen: Wie Sie die &linux;-Binärkompatibilität aktivieren. Wie zusätzliche &linux;-Systembibliotheken installiert werden. Wie Sie &linux;-Anwendungen unter &os; installieren. Wie die &linux;-Binärkompatibilität unter &os; implementiert ist. Bevor Sie dieses Kapitel lesen, sollten Sie wissen: Wie Sie Software von Drittanbietern installieren. Konfiguration der &linux;-Binärkompatibilität Ports-Sammlung Die &linux;-Binärkompatibilität ist per Voreinstellung nicht aktiviert und auch &linux;-Bibliotheken werden nicht installiert. &linux;-Bibliotheken können entweder manuell, oder aus der &os; Ports-Sammlung installiert werden. Bevor Sie versuchen den Port zu bauen, laden Sie das &linux;-Kernelmodul, da ansonsten der Bau fehlschlägt: &prompt.root; kldload linux Für 64-Bit Kompatibilität: &prompt.root; kldload linux64 Prüfen Sie, ob das Modul geladen wurde: &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko Der einfachste Weg um einen Basissatz von &linux;-Bibliotheken und Binärdateien auf einem &os;-System zu installieren, ist über den Port oder das Paket - emulators/linux_base-c6. So installieren Sie + emulators/linux_base-c7. So installieren Sie das Paket: - &prompt.root; pkg install emulators/linux_base-c6 + &prompt.root; pkg install emulators/linux_base-c7 Wollen Sie die &linux;-Binärkompatibilität beim Systemstart aktivieren, fügen Sie folgende Zeile in /etc/rc.conf hinzu: linux_enable="YES" Auf 64-Bit Maschinen wird das Modul für die 64-Bit Emulation automatisch von /etc/rc.d/abi geladen. Kerneloptionen COMPAT_LINUX Seitdem die &linux;-Binärkompatibilität Unterstützung für die Ausführung von 32- und 64-Bit-&linux;-Binärdateien erhalten hat, ist es nicht mehr möglich, die Emulationsfähigkeit in einen angepassten Kernel zu integrieren. Manuelle Installation zusätzlicher Bibliotheken Gemeinsam benutzte Bibliotheken Wenn sich eine &linux;-Anwendung über fehlende Bibliotheken beschwert nachdem die &linux;-Binärkompatibilität installiert wurde, finden Sie heraus welche Bibliothken die Anwendung benötigt und installieren Sie diese manuell. Mit ldd können Sie unter &linux; bestimmen, welche gemeinsam benutzten Bibliotheken eine Anwendung benötigt. Wenn Sie herausfinden wollen, welche Bibliotheken linuxdoom benötigt, können Sie folgenden Befehl auf einem &linux;-System ausführen, welches Doom installiert hat: &prompt.user; ldd linuxdoom 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 Kopieren Sie alle Dateien aus der letzten Spalte der Ausgabe von einem &linux;-System auf das &os;-System in das Verzeichnis /compat/linux. Nach dem Kopieren erstellen Sie symbolische Links auf die Namen in der ersten Spalte. In diesem Beispiel werden folgende Dateien auf dem &os;-System installiert: /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 Wenn Sie bereits eine &linux;-Bibliothek einer zur ersten Spalte passenden Hauptversionsnummer besitzen, muss sie nicht mehr kopiert werden, da die bereits vorhandene Version funktionieren sollte. Hat die Bibliothek jedoch eine neuere Versionsnummer, sollten Sie sie dennoch kopieren. Sie können die alte Version löschen, solange Sie einen symbolischen Link auf die neue Version anlegen. Folgende Bibliotheken existieren bereits auf dem &os;-System: /compat/linux/lib/libc.so.4.6.27$ /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 ldd zeigt an, dass eine Anwendung eine neuere Version benötigt: libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 Wenn diese Bibliotheken sich nur um ein oder zwei Stellen in der Unterversionsnummer unterscheiden, sollte das Programm dennoch mit der älteren Version funktionieren. Wenn Sie wollen, können Sie die bestehende libc.so durch die neuere Version ersetzen: /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 Der Mechanismus der symbolischen Links wird nur für &linux;-Binärdateien benötigt. Nach einer Weile wird es eine ausreichende Menge an &linux;-Bibliotheken auf dem System geben, sodass Sie neu installierte &linux;-Anwendungen ohne zusätzlichen Aufwand auf dem System laufen lassen können. &linux; ELF-Binärdateien installieren Linux ELF-Binärdatei ELF-Binärdateien benötigen manchmal eine zusätzliche Kennzeichnung. Wenn Sie versuchen, eine nicht gekennzeichnete ELF-Binärdatei auszuführen, werden Sie eine Fehlermeldung ähnlich der folgenden erhalten: &prompt.user; ./my-linux-elf-binary ELF binary type not known Abort Damit der &os;-Kernel eine &linux;-ELF-Datei von einer &os;-ELF-Datei unterscheiden kann, gibt es das Werkzeug &man.brandelf.1;. &prompt.user; brandelf -t Linux my-linux-elf-binary GNU Werkzeuge Die GNU Werkzeuge schreiben nun automatisch die passende Kennzeichnungsinformation in die ELF-Binärdateien, so dass Sie diesen Schritt in Zukunft nur noch selten benötigen. Installieren einer <acronym>RPM</acronym>-basierten &linux;-Anwendung Wenn Sie eine &linux; RPM-basierte Anwendung installieren möchten, installieren Sie zunächst den Port oder das Paket archivers/rpm4. Anschließend kann der Superuser das folgende Kommando benutzen, um ein .rpm zu installieren: &prompt.root; cd /compat/linux &prompt.root; rpm2cpio < /pfad/zum/linux.archiv.rpm | cpio -id Fall notwendig, benutzen Sie brandelf auf den installierten ELF-Binärdateien. Beachten Sie, dass dies eine saubere Deinstallation verhindert. Namensauflösung konfigurieren Wenn DNS nicht funktioniert, oder die folgende Fehlermeldung erscheint: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword müssen Sie /compat/linux/etc/host.conf wie folgt bearbeiten: order hosts, bind multi on Diese Reihenfolge legt fest, dass zuerst /etc/hosts und anschließend DNS durchsucht werden. Wenn /compat/linux/etc/host.conf nicht vorhanden ist, nutzen &linux;-Anwendungen /etc/host.conf und beschweren sich über die inkompatible &os;-Syntax. Wenn Sie in /etc/resolv.conf keinen Nameserver konfiguriert haben, sollten Sie den Eintrag bind entfernen. &mathematica; installieren BorisHollasFür Mathematica 5.x aktualisiert von Linux-Anwendungen Mathematica Dieses Dokument beschreibt die Installation der Linux-Version von &mathematica; 5.x auf einem FreeBSD-System. Die Linux-Version von &mathematica; oder &mathematica; für Studenten kann direkt von Wolfram unter http://www.wolfram.com/ bestellt werden. Den &mathematica;-Installer starten Zuerst müssen Sie &os; mitteilen, dass die Linux-Binärversion von &mathematica; die Linux-ABI verwendet. Dies erreichen Sie am einfachsten, indem Sie die Standard-ELF-Kennzeichnung für alle ungekennzeichneten Binärdateien auf Linux festlegen: &prompt.root; sysctl kern.fallback_elf_brand=3 Danach wird FreeBSD annehmen, dass alle ungekennzeichneten ELF-Binärdateien die Linux-ABI verwenden und es wäre nun möglich, das Installationsprogramm direkt von der CD-ROM zu starten. Unter &os; müssen allerdings die Datei MathInstaller in ein lokales Verzeichnis Ihrer Festplatte kopieren: &prompt.root; mount /cdrom &prompt.root; cp /cdrom/Unix/Installers/Linux/MathInstaller /LokalesVerzeichnis/ In dieser Datei ersetzen Sie in der ersten Zeile den Wert /bin/sh durch /compat/linux/bin/sh. Dadurch wird sichergestellt, dass der Installer von der Linux-Version von &man.sh.1; aufgerufen wird. Danach ersetzen Sie durch das im nächsten Abschnitt zu findende Skript oder über einen Texteditor alle Vorkommen von Linux) durch FreeBSD). Dadurch ist es dem &mathematica;-Installer möglich, durch den Einsatz von uname -s das Betriebssystem zu bestimmen. &os; wird dabei als Linux-artiges Betriebssystem behandelt. Durch den Aufruf von MathInstaller kann &mathematica; anschließend installiert werden. Die &mathematica;-Programmdateien anpassen Das von &mathematica; während der Installation erzeugte Shell-Skript muss angepasst werden, bevor Sie es einsetzen können. Wenn Sie die &mathematica;-Programmdateien unter /usr/local/bin installieren, finden Sie in diesem Verzeichnis die symbolische Links math, mathematica, Mathematica, sowie MathKernel. In jeder dieser Dateien müssen Sie jedes Vorkommen von Linux) durch FreeBSD) ersetzen (entweder über einen Texteditor oder durch das folgende Shellskript): #!/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 Ihr &mathematica;-Passwort anfordern Ethernet MAC-Adresse Wenn Sie &mathematica; das erste Mal starten, werden Sie nach einem Passwort gefragt. Haben Sie noch kein Passwort von Wolfram erhalten, müssen Sie zuerst im Installationsverzeichnis mathinfo aufrufen, um Ihre Rechner-ID zu bestimmen. Diese Rechner-ID basiert ausschließlich auf der MAC-Adresse Ihrer ersten Netzwerkkarte. Daher ist es nicht möglich, Ihre &mathematica;-Kopie auf verschiedenen Rechnern zu installieren. Wenn Sie sich bei Wolfram registrieren (durch E-Mail, Telefon oder Fax), teilen Sie Ihre Rechner-ID mit und erhalten dafür ein aus Zahlengruppen bestehendes Passwort. Das &mathematica;-Frontend über ein Netzwerk ausführen &mathematica; verwendet einige spezielle Schriftarten, um Zeichen anzuzeigen, die in den Standardzeichensätzen nicht vorhanden sind (z.B. Integrale, Summen, griechische Buchstaben). Das X-Protokoll verlangt allerdings, dass diese Schriftarten lokal installiert sind. Das bedeutet, dass Sie diese Schriftarten von der CD-ROM oder von einem Rechner, auf dem &mathematica; installiert ist, auf Ihren Rechner kopieren müssen. Diese Schriftarten befinden sich normalerweise in /cdrom/Unix/Files/SystemFiles/Fonts (&mathematica;-CD) oder in /usr/local/mathematica/SystemFiles/Fonts (Festplatte). Die aktuellen Schriftarten befinden sich dabei in den Unterverzeichnissen Type1 und X. Um diese Schriftarten zu verwenden, gibt es mehrere Möglichkeiten, die nun beschrieben werden: Die erste Möglichkeit besteht darin, die Schriftarten in eins der bereits existierenden Schriftartenverzeichnisse unter /usr/X11R6/lib/X11/fonts zu kopieren. Dies bedeutet, dass Sie fonts.dir editieren müssen, indem Sie die Schriftnamen hinzufügen und die Anzahl der Schriftarten in der ersten Zeile ändern. Alternativ ist es auch möglich, im Verzeichnis, in das Sie die Schriftarten kopiert haben, das Kommando &man.mkfontdir.1; auszuführen. Die zweite Möglichkeit, besteht darin, die Verzeichnisse nach /usr/X11R6/lib/X11/fonts zu kopieren: &prompt.root; cd /usr/X11R6/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; cd /usr/X11R6/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir Nun fügen Sie die neuen Schriftartenverzeichnisse in Ihren Pfad ein: &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash Wenn Sie den &xorg;-Server verwenden, können Sie die Schriftarten-Verzeichnisse automatisch laden lassen, wenn Sie sie in Ihrer xorg.conf angeben. Schriftarten Wenn Sie noch kein /usr/X11R6/lib/X11/fonts/Type1-Verzeichnis haben, können Sie das MathType1-Verzeichnis im vorherigen Beispiel in Type1 umbenennen. &maple; installieren AaronKaplanBeigetragen von RobertGetschmannMit Unterstützung durch Linux-Anwendungen Maple &maple; ist ein mit &mathematica; vergleichbares kommerzielles Mathematikprogramm. Sie können dieses Programm unter http://www.maplesoft.com/ kaufen und sich anschließend registrieren, um eine Lizenz zu erhalten. Um dieses Programm unter FreeBSD zu installieren, gehen Sie wie folgt vor: Führen Sie das INSTALL-Shell-Skript der Softwaredistribution aus. Wählen Sie die RedHat-Option aus, wenn Sie das Installationsprogramm danach fragt. Ein typisches Installationsverzeichnis wäre z.B. /usr/local/maple. Wenn Sie dies noch nicht gemacht haben, besorgen Sie sich nun eine &maple;-Lizenz von Maple Waterloo Software (http://register.maplesoft.com) und kopieren Sie diese nach /usr/local/maple/license/license.dat. Installieren Sie den FLEXlm-Lizenz-Manager, indem Sie das INSTALL_LIC-Installations-Shellskript ausführen, das mit &maple; ausgeliefert wird. Geben Sie Ihren primären Rechnernamen für den Lizenz-Server an. Verändern Sie /usr/local/maple/bin/maple.system.type wie folgt: ----- snip ------------------ *** 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 ----- snip end of patch ----- Bitte beachten Sie, dass nach "FreeBSD"|\ kein anderes Zeichen eingefügt werden darf. Dieser Patch weist &maple; an, FreeBSD als eine Art von Linux-System zu erkennen. Das Shell-Skript bin/maple ruft das Shell-Skript bin/maple.system.type auf, welches wiederum uname -a verwendet, um den Namen des Betriebssystems herauszufinden. Abhängig vom Betriebssystem weiß das System nun, welche Binärdateien verwendet werden sollen. Starten Sie den Lizenz-Server. Das folgende, als /usr/local/etc/rc.d/lmgrd installierte Shell-Skript ist ein komfortabler Weg, um lmgrd zu starten: ----- snip ------------ #! /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 ----- snip ------------ Versuchen Sie, &maple; zu starten: &prompt.user; cd /usr/local/maple/bin &prompt.user; ./xmaple Nun sollte das Programm laufen und alles funktionieren. Falls ja, vergessen Sie nicht, an Maplesoft zu schreiben und sie wissen zu lassen, dass Sie gerne eine native FreeBSD-Version hätten. Häufige Fehlerquellen Der FLEXlm-Lizenzmanager kann schwierig zu bedienen sein. Zusätzliche Dokumentation zu diesem Thema finden Sie unter http://www.globetrotter.com/. Es ist bekannt, dass lmgrd sehr pingelig ist, wenn es um die Lizenzdatei geht. Gibt es Probleme, führt dies zu einem Speicherauszug (core dump). Ein korrekte Lizenzdatei sollte ähnlich der folgenden aussehen: # ======================================================= # 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 Seriennummer und Schlüssel wurden durch mehrere X unkenntlich gemacht. chillig ist ein Rechnername. Veränderungen an der Lizenzdatei sind möglich, solange Sie die FEATURE-Zeile nicht verändern (diese ist durch den Lizenzschlüssel geschützt). &matlab; installieren DanPellegBeigesteuert von Linux-Anwendungen MATLAB Im Folgenden wird die Installation der Linux-Anwendung &matlab; Version 6.5 auf &os; beschrieben. Mit Ausnahme der &java.virtual.machine; (siehe ) läuft die Anwendung auch ganz gut. Die Linux-Version von &matlab; können Sie direkt bei The MathWorks bestellen. Vergewissern Sie sich, dass Sie die Lizenz-Datei oder eine Anleitung zum Erstellen der Lizenz-Datei erhalten haben. Wenn Sie mit MathWorks in Kontakt stehen, weisen Sie bitte auf die fehlende &os;-Version der Software hin. Das &matlab;-Installationsskript Um &matlab; zu installieren, gehen Sie wie folgt vor: Hängen Sie die Installations-CD ein und wechseln Sie zu root, wie im Installations-Skript gefordert. Starten Sie die Installation mit dem folgenden Kommando: &prompt.root; /compat/linux/bin/sh /cdrom/install Die Installation erfordert eine graphische Benutzeroberfläche. Wenn Sie die Fehlermeldung erhalten, dass das Display nicht geöffnet werden konnte, führen Sie das folgende Kommando aus: &prompt.root; setenv HOME ~USER Für USER setzen Sie den Benutzer ein, von dem aus Sie root geworden sind. Beantworten Sie die Frage nach dem &matlab;-Root-Verzeichnis mit: /compat/linux/usr/local/matlab. Den langen Pfad werden Sie noch öfter brauchen. Die Tipparbeit können Sie sich mit dem folgenden Befehl erleichtern: &prompt.root; set MATLAB=/compat/linux/usr/local/matlab Editieren Sie die Lizenz-Datei entsprechend der Anweisung, die Sie beim Erwerb der Lizenz erhalten haben. Sie können die Datei schon vorher mit Ihrem Lieblingseditor bearbeiten. Kopieren Sie die Lizenz-Datei nach $MATLAB/license.dat bevor das Installationsprogramm Sie auffordert, die Datei zu editieren. Schließen Sie die Installation ab. Die &matlab;-Installation ist jetzt abgeschlossen. Die folgenden Schritte passen &matlab; an &os; an. Den Lizenzmanager starten Erstellen Sie symbolische Links zu den Startskripten des Lizenzmanagers: &prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW &prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW Erstellen Sie das Startskript /usr/local/etc/rc.d/flexlm. Das folgende Beispiel ist eine geänderte Version des mitgelieferten Skripts $MATLAB/etc/rc.lm.glnx86. Angepasst wurden die Pfade zu den Dateien und der Start des Lizenzmanagers unter der Linux-Emulation. #!/bin/sh case "$1" in start) if [ -f /usr/local/etc/lmboot_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && 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 Machen Sie Datei ausführbar: &prompt.root; chmod +x /usr/local/etc/rc.d/flexlm Ersetzen Sie im Skript username durch einen existierenden Benutzer Ihres Systems (bitte keinesfalls root). Starten Sie den Lizenzmanager: &prompt.root; service flexlm start Einrichten der &java;-Laufzeitumgebung Erstellen Sie einen symbolischen Link auf eine unter &os; laufende &java;-Laufzeitumgebung (JRE): &prompt.root; cd $MATLAB/sys/java/jre/glnx86/ &prompt.root; unlink jre; ln -s ./jre1.1.8 ./jre Ein &matlab;-Startskript erstellen Kopieren Sie das folgende Skript nach /usr/local/bin/matlab: #!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@" Machen Sie das Skript ausführbar: &prompt.root; chmod +x /usr/local/bin/matlab Abhängig von der Version des Ports emulators/linux_base kann das Skript auf Fehler laufen. Die Fehler können Sie vermeiden, indem Sie die Datei /compat/linux/usr/local/matlab/bin/matlab editieren. Ändern Sie die nachstehende Zeile if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then (mit Version 13.0.1 in der Zeile 410) in die folgende um: if test -L $newbase; then Stopp-Skript für &matlab; erstellen Das nachstehende Skript beendet &matlab; ordnungsgemäß. Erstellen Sie die Datei $MATLAB/toolbox/local/finish.m mit dem nachstehenden Inhalt: ! $MATLAB/bin/finish.sh Übernehmen Sie die Zeichenkette $MATLAB unverändert. Im selben Verzeichnis befinden sich die Dateien finishsav.m und finishdlg.m. Die Dateien sichern die Einstellungen der Arbeitsfläche bevor &matlab; beendet wird. Wenn Sie eine der beiden Dateien benutzen, fügen Sie die obige Zeile unmittelbar nach dem save-Kommando ein. Erstellen Sie die Datei $MATLAB/bin/finish.sh mit nachstehendem Inhalt: #!/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0 Machen Sie die Datei ausführbar: &prompt.root; chmod +x $MATLAB/bin/finish.sh &matlab; benutzen Jetzt können Sie &matlab; mit dem matlab starten. &oracle; installieren MarcelMoolenaarBeigetragen von Linux-Anwendungen Oracle Übersicht Dieses Dokument beschreibt die Installation von &oracle; 8.0.5 und &oracle; 8.0.5.1 Enterprise Edition für Linux auf einem FreeBSD-Rechner. Installation der Linux-Umgebung Stellen Sie sicher, dass Sie sowohl emulators/linux_base und devel/linux_devtools aus der Ports-Sammlung installiert haben. Wenn Sie mit diesen Ports Schwierigkeiten haben, müssen Sie vielleicht ältere Versionen der Linux-Umgebung aus der Ports-Sammlung installieren. Wenn Sie den Intelligent-Agent verwenden wollen, müssen Sie zusätzlich das RedHat Tcl-Paket installieren: tcl-8.0.3-20.i386.rpm. Zur Installation von RPM-Paketen wir der Port archivers/rpm benötigt. Ist der Port installiert, lassen sich RPM-Pakete anschließend mit dem nachstehenden Befehl installieren: &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package Die Installation der RPM-Pakete sollte ohne Fehlermeldung ablaufen. Die &oracle;-Umgebung erzeugen Bevor Sie &oracle; installieren können, müssen Sie eine entsprechende Umgebung erzeugen. Dieses Dokument beschreibt nur, was Sie im Speziellen tun müssen, um die Linux-Version von &oracle; unter FreeBSD zu installieren, nicht aber, was bereits in der Installationsanleitung von &oracle; beschrieben wird. Kernel-Tuning Kernel Tuning Wie in der Installationsanleitung von &oracle; beschrieben, müssen Sie die maximale Shared-Memory Größe festlegen. Verwenden Sie SHMMAX nicht unter FreeBSD. SHMMAX wird lediglich aus SHMMAXPGS und PGSIZE berechnet. Definieren Sie stattdessen SHMMAXPGS. Alle anderen Optionen können wie in der Anleitung beschrieben verwendet werden. Zum Beispiel: options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 Passen Sie diese Optionen entsprechend dem von Ihnen gewünschten Einsatzzweck von &oracle; an. Stellen Sie außerdem sicher, dass Sie folgende Optionen in Ihren Kernel kompilieren: options SYSVSHM #SysV shared memory options SYSVSEM #SysV semaphores options SYSVMSG #SysV interprocess communication &oracle;-Benutzer anlegen Legen Sie den Account oracle an. Der Account unterschiedet sich von normalen Accounts dadurch, dass er eine Linux-Shell zugeordnet bekommen muss. Fügen Sie /compat/linux/bin/bash in die Datei /etc/shells ein und setzen Sie die Shell für den oracle-Account auf /compat/linux/bin/bash. Umgebung Neben den normalen &oracle;-Variablen, wie z.B. ORACLE_HOME und ORACLE_SID müssen Sie die folgenden Variablen setzen: Variable Wert LD_LIBRARY_PATH $ORACLE_HOME/lib CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip PATH /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 Es ist empfehlenswert, alle Variablen in der Datei .profile zu setzen. Ein komplettes Beispiel sieht folgendermaßen aus: 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 &oracle; installieren Auf Grund einer kleinen Unregelmäßigkeit im Linux-Emulator müssen Sie das Verzeichnis .oracle unter /var/tmp erzeugen, bevor Sie das Installationsprogramm starten. Das Verzeichnis muss dem Account oracle gehören. Sie sollten &oracle; nun ohne Probleme installieren können. Treten dennoch Probleme auf, überprüfen Sie zuerst Ihre &oracle;-Distribution und Ihre Konfiguration. Nachdem Sie &oracle; erfolgreich installiert haben, installieren Sie die Patches wie in den zwei folgenden Abschnitten beschrieben: Ein häufiges Problem ist, dass der TCP Protokoll-Adapter nicht korrekt installiert wird. Daraus folgt, dass Sie keine TCP-Listener starten können. Dieses Problem kann durch folgende Schritte behoben werden: &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk ntcontab.o &prompt.root; cd $ORACLE_HOME/lib &prompt.root; ar r libnetwork.a ntcontab.o &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk install Vergessen Sie nicht, root.sh nochmals auszuführen! root.sh patchen Während der &oracle;-Installation werden einige Aktionen, die als root ausgeführt werden müssen, in ein Shell-Skript mit dem Namen root.sh gespeichert. Dieses Skript befindet sich im Verzeichnis orainst. Verwenden Sie folgenden Patch für root.sh, damit es das richtige chown Kommando verwendet, oder lassen Sie das Skript alternativ unter einer Linux-Shell ablaufen: *** 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 Wenn Sie &oracle; nicht von CD-ROM installieren, können Sie Quelldatei für root.sh verändern. Sie heißt rthd.sh und befindet sich im orainst-Verzeichnis des Quellcodebaums. genclntsh patchen Das Skript genclntsh wird verwendet, um eine Shared-Library für Clients zu erzeugen. Diese wird bei der Erzeugung der Demos verwendet. Verwenden Sie folgenden Patch, um die Definition von PATH auszukommentieren: *** 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 &oracle; starten Wenn Sie den Anweisungen gefolgt sind, sollten Sie nun in der Lage sein, &oracle; zu starten, genau so, wie Sie dies auch unter Linux tun würden. ?> Weiterführende Themen Dieser Abschnitt beschreibt wie die &linux;-Binärkompatibilität funktioniert. Die folgenden Informationen stammen aus einer E-Mail, die von Terry Lambert (tlambert@primenet.com) an &a.chat; geschrieben wurde (Message ID: <199906020108.SAA07001@usr09.primenet.com>). execution class loader &os; verfügt über eine execution class loader genannte Abstraktion. Dabei handelt es sich um einen Eingriff in den &man.execve.2; Systemaufruf. Historisch gesehen untersuchte der einzige, auf &unix;-Plattformen vorhandene Lader die magische Zahl (in der Regel die ersten 4 oder 8 Bytes der Datei), um festzustellen, ob der Binärtyp dem System bekannt war. War dies der Fall, wurde der Binärlader aufgerufen. Wenn es sich nicht um den zum System gehörigen Binärtyp handelte, gab &man.execve.2; einen Fehler zurück, und die Shell versuchte stattdessen, die Datei als Shell-Befehl auszuführen. Dabei wurde als Standardeinstellung was auch immer die aktuelle Shell ist festgelegt. Später wurde ein Hack in &man.sh.1; eingefügt, der die zwei ersten Zeichen untersuchte. Wenn diese :\n entsprachen, wurde stattdessen die &man.csh.1;-Shell aufgerufen. &os; verfügt über eine Liste von Ladern, anstelle eines einzigen, auf #! zurückgreifenden Laders, um Shell-Interpreter oder Shell-Skripte auszuführen. ELF Solaris Für die &linux; ABI-Unterstützung erkennt &os; die magische Zahl als ELF-Binärdatei. Der ELF-Lader sucht nach einer speziellen Kennzeichnung, die aus einem Kommentarabschnitt in der ELF-Datei besteht, und die in SVR4/&solaris; ELF Binärdateien nicht vorhanden ist. Damit &linux;-Binärdateien unter &os; funktionieren, müssen sie mit &man.brandelf.1; als Linux gekennzeichnet werden: &prompt.root; brandelf -t Linux file ELF Kennzeichnung Wenn der ELF-Lader die Linux-Kennzeichnung sieht, wird ein Zeiger in der proc-Struktur ersetzt. Alle Systemaufrufe werden durch diesen Zeiger indiziert. Der Prozess wird weiterhin speziell gekennzeichnet, so dass der Trap-vector im Signal-trampoline-code eine spezielle Behandlung erfährt und das &linux;-Kernelmodul verschiedene kleinere Korrekturen vornehmen kann. Der &linux;-Systemaufrufvektor enthält neben anderen Dingen eine Liste der sysent[]-Einträge, deren Adressen sich im Kernelmodul befinden. Wenn ein &linux;-Programm einen Systemaufruf ausführt, dereferenziert die Trap-Behandlungsroutine den Zeiger für den Systemaufruf aus der proc-Struktur und erhält damit die &linux;-Eintrittspunkte für den Systemaufruf. Zusätzlich verändert der &linux;-Modus die Systempfade dynamisch; genauso, wie dies die Option beim Einbinden von Dateisystemen macht. Zuerst wird die Datei im Verzeichnis /compat/linux/Originalpfad gesucht, wenn sie dort nicht gefunden wurde, wird sie im Verzeichnis /Originalpfad gesucht. Dadurch wird sichergestellt, dass Binärdateien, die zur Ausführung andere Binärdateien benötigen, ausgeführt werden können (so dass alle &linux;-Werkzeuge unter der ABI laufen). Dies bedeutet auch, dass &linux;-Binärdateien &os;-Binärdateien laden und ausführen können, wenn keine passenden &linux;-Binärdateien vorhanden sind. Ein in /compat/linux plaziertes &man.uname.1; kann damit &linux;-Programmen vorgaukeln, dass sie auf einem &linux;-System laufen. Im Endeffekt gibt es einen &linux;-Kernel innerhalb des &os;-Kernels. Die Sprungtabellen für &linux;- beziehungsweise &os;-Systemaufrufe verweisen allerdings auf dieselben Funktionen, die Kerneldienste wie Dateisystemoperationen, Operationen für den virtuellen Speicher, Signalübermittlung und System V IPC bereitstellen. Der einzige Unterschied ist, dass Binärdateien unter &os; &os;-glue-Funktionen verwendet werden. &linux;-Binärdateien hingegen verwenden die &linux;-glue-Funktionen. &os;-glue-Funktionen sind statisch in den Kernel gelinkt, &linux;-glue-Funktionen sind statisch gelinkt oder können über ein ladbares Kernelmodul eingebunden werden. Technisch gesehen ist dies nicht wirklich eine Emulation, sondern eine ABI-Implementation. Es wird manchmal &linux; Emulation genannt, da es zu einer Zeit implementiert wurde, in der es kein anderes Wort gab, das beschrieb, was vor sich ging. Es war falsch zu behaupten, &os; würde &linux;-Binärprogramme ausführen, da der Code nicht unter &os; übersetzt wurde.