1502 lines
55 KiB
XML
1502 lines
55 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/linuxemu/chapter.sgml,v 1.94 2012/04/30 17:13:51 bcr Exp $
|
|
basiert auf: 1.147
|
|
-->
|
|
|
|
<chapter id="linuxemu">
|
|
<chapterinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Jim</firstname>
|
|
<surname>Mock</surname>
|
|
<contrib>Restrukturiert und teilweise aktualisiert von </contrib>
|
|
</author>
|
|
<!-- 22 Mar 2000 -->
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Brian N.</firstname>
|
|
<surname>Handy</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
<author>
|
|
<firstname>Rich</firstname>
|
|
<surname>Murphey</surname>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Johann</firstname>
|
|
<surname>Kois</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</chapterinfo>
|
|
|
|
<title>Linux-Binärkompatibilität</title>
|
|
|
|
<sect1 id="linuxemu-synopsis">
|
|
<title>Übersicht</title>
|
|
<indexterm>
|
|
<primary>Linux-Binärkompatibilität</primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>Binärkompatibilität</primary>
|
|
<secondary>Linux</secondary>
|
|
</indexterm>
|
|
|
|
<para>FreeBSD bietet Binärkompatibilität zu verschiedenen
|
|
anderen &unix; Betriebssystemen, darunter auch Linux. Nun
|
|
könnten Sie sich fragen, warum FreeBSD in der Lage sein
|
|
muss, Linux-Binärprogramme auszuführen? Die Antwort
|
|
auf diese Frage ist sehr einfach. Viele Unternehmen und Entwickler
|
|
programmieren bzw. entwickeln nur für Linux, da es
|
|
<quote>das Neueste und Beste</quote> in der Computerwelt ist.
|
|
Für uns FreeBSD-Anwender heißt dies, genau diese Unternehmen
|
|
und Entwickler zu bitten, FreeBSD-Versionen ihrer Programme
|
|
herauszubringen. Das Problem dabei ist nur, dass die meisten dieser
|
|
Firmen trotzdem nicht erkennen, wie viele zusätzliche
|
|
Anwender ihre Produkte benutzen würden, wenn es auch
|
|
FreeBSD-Versionen gäbe, und daher weiterhin
|
|
ausschließlich für Linux entwickeln. Was also kann ein
|
|
FreeBSD-Anwender tun? Genau an diesem Punkt kommt die Linux-
|
|
Binärkompatibilität ins Spiel.</para>
|
|
|
|
<para>Um es auf den Punkt zu bringen, genau diese Kompatibilität
|
|
erlaubt es FreeBSD-Anwendern, etwa 90 % aller Linux-Anwendungen
|
|
ohne Code-Änderungen zu verwenden. Dies schließt
|
|
solche Anwendungen wie <application>&staroffice;</application>,
|
|
<application>Open Office</application>, die Linux-Versionen von
|
|
<application>&netscape;</application>,
|
|
<application>&adobe; &acrobat;</application>,
|
|
<application>&realplayer;</application>,
|
|
<application>&oracle;</application>,
|
|
<application>&wordperfect;</application>,
|
|
<application>Doom</application>,
|
|
<application>Quake</application> und viele andere ein. Es wird
|
|
sogar berichtet, dass diese Linux-Anwendungen in manchen
|
|
Fällen unter FreeBSD eine bessere Leistung als unter
|
|
Linux aufweisen.</para>
|
|
|
|
<para>Allerdings gibt es nach wie vor einige Linux-spezifische
|
|
Betriebssystem-Eigenschaften, die unter FreeBSD nicht
|
|
unterstützt werden. Linux-Anwendungen, die
|
|
&i386;-spezifische Aufrufe (wie die Aktivierung des
|
|
virtuellen 8086-Modus) verwenden, funktionieren
|
|
unter FreeBSD leider nicht.</para>
|
|
|
|
<para>Nach dem Lesen dieses Kapitels werden Sie</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>wissen, wie Sie die Linux-Binärkompatibilität
|
|
installieren bzw. aktivieren.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man zusätzliche Linux-Systembibliotheken
|
|
unter FreeBSD installiert.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Linux-Anwendungen unter FreeBSD installieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie die Linux-Binärkompatibilität
|
|
unter FreeBSD verwirklicht wurde.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Bevor Sie dieses Kapitel lesen, sollten Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>wissen, wie man Software Dritter installiert
|
|
(<xref linkend="ports"/>).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="linuxemu-lbc-install">
|
|
<title>Installation</title>
|
|
|
|
<indexterm><primary>KLD (kernel loadable object)</primary></indexterm>
|
|
|
|
<para>Die Linux-Binärkompatibilität ist per Voreinstellung
|
|
nicht aktiviert. Der einfachste Weg, dies zu tun, ist das
|
|
<literal>Linux</literal> KLD (<quote>Kernel LoaDable object</quote>)
|
|
zu laden. Dies erreichen Sie durch die Eingabe des folgenden
|
|
Befehls:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kldload linux</userinput></screen>
|
|
|
|
<para>Wollen Sie die Linux-Binärkompatibilität dauerhaft
|
|
aktivieren, sollten Sie die folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> einfügen:</para>
|
|
|
|
<programlisting>linux_enable="YES"</programlisting>
|
|
|
|
<para>Der &man.kldstat.8;-Befehl kann benutzt werden, um
|
|
festzustellen, ob KLD geladen wurde:</para>
|
|
|
|
<screen>&prompt.user; <userinput>kldstat</userinput>
|
|
Id Refs Address Size Name
|
|
1 2 0xc0100000 16bdb8 kernel
|
|
7 1 0xc24db000 d000 linux.ko</screen>
|
|
<indexterm>
|
|
<primary>Kerneloptionen</primary>
|
|
<secondary>COMPAT_LINUX</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie das KLD nicht laden können oder wollen, besteht
|
|
auch die Möglichkeit, die Linux-Binärkompatibiltät
|
|
statisch in den Kernel einzubinden. Dazu fügen Sie Ihrer
|
|
Kernelkonfigurationsdatei den Eintrag
|
|
<literal>options COMPAT_LINUX</literal>
|
|
hinzu. Anschließend installieren Sie Ihren neuen Kernel
|
|
wie in <xref linkend="kernelconfig"/> beschrieben.</para>
|
|
|
|
<sect2>
|
|
<title>Linux-Laufzeitbibliotheken installieren</title>
|
|
<indexterm>
|
|
<primary>Linux</primary>
|
|
<secondary>Linux-Laufzeitbibliotheken installieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>Dies kann auf zwei Arten geschehen, entweder über den
|
|
<link linkend="linuxemu-libs-port">linux_base</link>-Port
|
|
oder durch <link linkend="linuxemu-libs-manually">manuelle
|
|
Installation</link> der Bibliotheken.</para>
|
|
|
|
<sect3 id="linuxemu-libs-port">
|
|
<title>Installation unter Verwendung des linux_base-Ports</title>
|
|
<indexterm><primary>Ports-Sammlung</primary></indexterm>
|
|
|
|
<para>Dies ist die einfachste Methode, um die Laufzeitbibliotheken
|
|
zu installieren. Sie funktioniert genauso wie die
|
|
Installation eines beliebigen anderen Ports aus der
|
|
<ulink type="html"
|
|
url="file://localhost/usr/ports/">Ports-Sammlung</ulink>.
|
|
Dazu machen Sie einfach folgendes:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base-f10</userinput>
|
|
&prompt.root; <userinput>make install distclean</userinput></screen>
|
|
|
|
<note>
|
|
<para>Bei &os;-Systemen vor &os; 8.0 müssen Sie den Port
|
|
<filename role="package">emulators/linux_base-fc4</filename>
|
|
anstatt <filename
|
|
role="package">emulators/linux_base-f10</filename>
|
|
installieren.</para>
|
|
</note>
|
|
|
|
<para>Sie sollten nun über eine funktionierende
|
|
Linux-Binärkompatibilität verfügen. Einige
|
|
Programme könnten sich zwar über falsche
|
|
Unterversionsnummern der Systembibliotheken beschweren, dies ist
|
|
im Allgemeinen aber kein Problem.</para>
|
|
|
|
<note>
|
|
<para>Unter Umständen gibt es mehrere Versionen des
|
|
Ports <filename role="package">emulators/linux_base</filename>.
|
|
Die Ports entsprechen unterschiedlichen Versionen
|
|
verschiedener Linux-Distributionen Sie sollten den
|
|
Port installieren, der am besten die Anforderungen
|
|
der Linux-Anwendung erfüllt.</para>
|
|
</note>
|
|
</sect3>
|
|
|
|
<sect3 id="linuxemu-libs-manually">
|
|
<title>Manuelle Installation der Bibliotheken</title>
|
|
|
|
<para>Wenn Sie die <quote>Ports</quote>-Sammlung nicht installiert
|
|
haben, können Sie die Bibliotheken auch manuell
|
|
installieren. Dazu brauchen Sie die jeweiligen
|
|
Linux-Systembibliotheken, die das zu installierende Programm
|
|
verwendet sowie den Laufzeit-Linker. Zusätzlich müssen
|
|
Sie auf Ihrem FreeBSD-System einen
|
|
<quote>virtuellen</quote> Verzeichnisbaum für die
|
|
Linux-Bibliotheken einrichten. Alle unter FreeBSD gestarteten
|
|
Linux-Programme suchen zuerst in diesem Verzeichnisbaum
|
|
nach Systembibliotheken. Wenn also ein Linuxprogramm beispielsweise
|
|
<filename>/lib/libc.so</filename> lädt, versucht FreeBSD
|
|
zuerst, <filename>/compat/linux/lib/libc.so</filename> laden.
|
|
Ist diese Datei nicht vorhanden, wird
|
|
<filename>/lib/libc.so</filename> geladen. Systembibliotheken
|
|
sollten daher besser in den <quote>virtuellen</quote> Verzeichnisbaum
|
|
<filename>/compat/linux/lib</filename> als in den vom
|
|
Linux-<command>ld.so</command> vorgeschlagenen installiert
|
|
werden.</para>
|
|
|
|
<para>Im Allgemeinen müssen Sie nur zu Beginn nach den
|
|
Systembibliotheken suchen, die von Linuxprogrammen
|
|
benötigt werden. Nach den ersten Installationen von
|
|
Linuxprogrammen auf Ihrem FreeBSD-System verfügen Sie
|
|
über eine Sammlung von Linux-Systembibliotheken,
|
|
die es Ihnen ermöglichen wird, neue Linuxprogramme
|
|
ohne Zusatzarbeit zu installieren.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Installation zusätzlicher Systembibliotheken</title>
|
|
<indexterm><primary>Shared-Libraries</primary></indexterm>
|
|
|
|
<para>Was passiert, wenn Sie den <filename>linux_base</filename>-Port
|
|
installieren, und Ihr Programm beschwert sich trotzdem
|
|
über fehlende Systembibliotheken? Woher wissen Sie,
|
|
welche Systembibliotheken von Linux-Binärprogrammen
|
|
benötigt werden, und wo Sie diese finden? Grundsätzlich
|
|
gibt es dafür zwei Möglichkeiten (um dieser
|
|
Anleitung zu folgen, müssen Sie unter
|
|
FreeBSD als Benutzer <username>root</username> angemeldet
|
|
sein):</para>
|
|
|
|
<para>Wenn Sie Zugriff auf ein Linux-System haben, können
|
|
Sie dort nachsehen, welche Systembibliotheken eine Anwendung
|
|
benötigt, und diese auf Ihr FreeBSD-System kopieren.
|
|
Dazu folgendes Beispiel:</para>
|
|
|
|
<informalexample>
|
|
<para>Nehmen wir an, Sie haben FTP verwendet, um die
|
|
Linux-Binärversion von <application>Doom</application>
|
|
zu bekommen und haben sie auf Ihrem Linux-System installiert.
|
|
Nun können Sie überprüfen, welche
|
|
Systembibliotheken das Programm benötigt, indem Sie
|
|
<command>ldd linuxdoom</command> eingeben. Das Resultat
|
|
sieht dann so aus:</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>Sie müssten nun alle Dateien aus der
|
|
letzten Spalte kopieren und sie unter
|
|
<filename>/compat/linux</filename> speichern, wobei
|
|
die Namen der ersten Spalte als symbolische Links auf
|
|
diese Dateien zeigen. Damit haben Sie schließlich
|
|
folgende Dateien auf Ihrem FreeBSD-System:</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>Beachten Sie, dass wenn Sie bereits eine
|
|
Linux-Systembibliothek einer zur ersten Spalte
|
|
passenden Hauptversionsnummer (laut
|
|
<command>ldd</command>-Ausgabe) besitzen, Sie die Datei
|
|
aus der zweiten Spalte nicht mehr kopieren müssen,
|
|
da die bereits vorhandene Version funktionieren sollte.
|
|
Hat die Systembibliothek 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. Wenn Sie also folgende Bibliotheken
|
|
auf Ihrem System installiert haben:</para>
|
|
|
|
<screen>/compat/linux/lib/libc.so.4.6.27
|
|
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen>
|
|
|
|
<para>und Sie haben eine neue Binärdatei, die
|
|
laut <command>ldd</command>
|
|
eine neuere Bibliothek benötigt:</para>
|
|
|
|
<screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen>
|
|
|
|
<para>Wenn diese sich nur um ein oder zwei Stellen
|
|
in der Unterversionsnummer unterscheiden, müssen
|
|
Sie <filename>/lib/libc.so.4.6.29</filename>
|
|
nicht auf Ihr System kopieren, da das Programm auch
|
|
mit der etwas älteren Version ohne Probleme
|
|
funktionieren sollte. Wenn Sie wollen,
|
|
können Sie <filename>libc.so</filename> aber
|
|
dennoch ersetzen (das heißt aktualisieren), was dann zu
|
|
folgender Ausgabe führt:</para>
|
|
|
|
<screen>/compat/linux/lib/libc.so.4.6.29
|
|
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
|
|
</note>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<note>
|
|
<para>Der Mechanismus der symbolischen Links wird
|
|
<emphasis>nur</emphasis> für Linux-Binärdateien
|
|
benötigt. Der FreeBSD-Laufzeitlinker sucht
|
|
sich die passenden Hauptversionsnummern selbst,
|
|
das heißt Sie müssen sich nicht darum
|
|
kümmern.</para>
|
|
</note>
|
|
</blockquote>
|
|
</informalexample>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Linux ELF-Binärdateien installieren</title>
|
|
<indexterm>
|
|
<primary>Linux</primary>
|
|
<secondary>ELF-Binärdatei</secondary>
|
|
</indexterm>
|
|
|
|
<para>ELF-Binärdateien benötigen manchmal eine zusätzliche
|
|
<quote>Kennzeichnung</quote>. Wenn Sie versuchen, eine nicht
|
|
gekennzeichnete ELF-Binärdatei auszuführen,
|
|
werden Sie eine Fehlermeldung ähnlich der folgenden
|
|
erhalten:</para>
|
|
|
|
<screen>&prompt.user; <userinput>./my-linux-elf-binary</userinput>
|
|
ELF binary type not known
|
|
Abort</screen>
|
|
|
|
<para>Damit der FreeBSD-Kernel eine Linux-ELF-Datei von einer
|
|
FreeBSD-ELF-Datei unterscheiden kann, gibt es das Werkzeug
|
|
&man.brandelf.1;.</para>
|
|
|
|
<screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen>
|
|
|
|
<indexterm><primary>GNU Werkzeuge</primary></indexterm>
|
|
<para>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
|
|
werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Installieren einer beliebigen RPM-basierten Linuxanwendung</title>
|
|
|
|
<para>&os; besitzt seine eigene Paketdatenbank und diese wird dazu
|
|
verwendet, um alle Ports (auch &linux;-Ports) zu verfolgen. Deshalb
|
|
wird die &linux; RPM-Datenbank nicht benutzt (fehlende
|
|
Unterstützung).</para>
|
|
|
|
<para>Falls Sie jedoch eine beliebige RPM-basierte &linux;-Anwendung
|
|
installieren wollen, erreichen Sie das mittels:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /compat/linux</userinput>
|
|
&prompt.root; <userinput>rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id</userinput></screen>
|
|
|
|
<para>Benutzen Sie dann brandelf auf die installierten
|
|
ELF-Binärdateien (nicht die Bibliotheken!). Sie werden keine
|
|
saubere Deinstallation hinbekommen, aber evtl. helfen ein paar Tests
|
|
weiter.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Namensauflösung konfigurieren</title>
|
|
|
|
<para>Wenn DNS nicht funktioniert, oder Sie folgende Fehlermeldung
|
|
erhalten:</para>
|
|
|
|
<screen>resolv+: "bind" is an invalid keyword resolv+:
|
|
"hosts" is an invalid keyword</screen>
|
|
|
|
<para>müssen sie <filename>/compat/linux/etc/host.conf</filename>
|
|
wie folgt anlegen:</para>
|
|
|
|
<programlisting>order hosts, bind
|
|
multi on</programlisting>
|
|
|
|
<para>Diese Reihenfolge legt fest, dass zuerst
|
|
<filename>/etc/hosts</filename> und anschließend DNS
|
|
durchsucht werden. Wenn
|
|
<filename>/compat/linux/etc/host.conf</filename> nicht vorhanden
|
|
ist, finden Linux-Anwendungen FreeBSD's
|
|
<filename>/etc/host.conf</filename> und
|
|
beschweren sich über die inkompatible FreeBSD-Syntax. Wenn Sie
|
|
keinen Nameserver (in <filename>/etc/resolv.conf</filename>)
|
|
konfiguriert haben, sollten Sie den Eintrag
|
|
<literal>bind</literal> entfernen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="linuxemu-mathematica">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Boris</firstname>
|
|
<surname>Hollas</surname>
|
|
<contrib>Für Mathematica 5.x aktualisiert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>&mathematica; installieren</title>
|
|
|
|
<indexterm>
|
|
<primary>Linux-Anwendungen</primary>
|
|
<secondary><application>Mathematica</application></secondary>
|
|
</indexterm>
|
|
|
|
<para>Dieses Dokument beschreibt die Installation der Linux-Version von
|
|
<application>&mathematica; 5.x</application> auf einem
|
|
FreeBSD-System.</para>
|
|
|
|
<para>Die Linux-Version von <application>&mathematica;</application>
|
|
oder <application>&mathematica; für Studenten</application> kann
|
|
direkt von Wolfram unter <ulink url="http://www.wolfram.com/"></ulink>
|
|
bestellt werden.</para>
|
|
|
|
<sect2>
|
|
<title>Den &mathematica;-Installer starten</title>
|
|
|
|
<para>Zuerst müssen Sie &os; mitteilen, dass die
|
|
Linux-Binärversion von
|
|
<application>&mathematica;</application> die Linux-ABI
|
|
verwendet. Dies erreichen Sie am einfachsten, indem Sie die
|
|
Standard-ELF-Kennzeichnung für alle ungekennzeichneten
|
|
Binärdateien auf Linux festlegen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Unter &os; müssen allerdings die Datei
|
|
<filename>MathInstaller</filename> in ein lokales Verzeichnis
|
|
Ihrer Festplatte kopieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount /cdrom</userinput>
|
|
&prompt.root; <userinput>cp /cdrom/Unix/Installers/Linux/MathInstaller /LokalesVerzeichnis/</userinput></screen>
|
|
|
|
<para>In dieser Datei ersetzen Sie in der ersten Zeile den Wert
|
|
<literal>/bin/sh</literal> durch
|
|
<literal>/compat/linux/bin/sh</literal>. 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 <literal>Linux)</literal>
|
|
durch <literal>FreeBSD)</literal>. Dadurch ist es dem
|
|
<application>&mathematica;</application>-Installer möglich,
|
|
durch den Einsatz von <command>uname -s</command> das
|
|
Betriebssystem zu bestimmen. &os; wird dabei als
|
|
Linux-artiges Betriebssystem behandelt. Durch den Aufruf von
|
|
<command>MathInstaller</command> kann
|
|
<application>&mathematica;</application> anschließend
|
|
installiert werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Die &mathematica;-Programmdateien anpassen</title>
|
|
|
|
<para>Das von <application>&mathematica;</application> während
|
|
der Installation erzeugte Shell-Skript muss angepasst werden,
|
|
bevor Sie es einsetzen können. Wenn Sie die
|
|
<application>&mathematica;</application>-Programmdateien unter
|
|
<filename class="directory">/usr/local/bin</filename> installieren,
|
|
finden Sie in diesem Verzeichnis die symbolische Links
|
|
<filename>math</filename>, <filename>mathematica</filename>,
|
|
<filename>Mathematica</filename>, sowie
|
|
<filename>MathKernel</filename>. In jeder dieser Dateien
|
|
müssen Sie jedes Vorkommen von <literal>Linux)</literal>
|
|
durch <literal>FreeBSD)</literal> ersetzen (entweder über
|
|
einen Texteditor oder durch das folgende Shellskript):</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>Ihr &mathematica;-Passwort anfordern</title>
|
|
|
|
<indexterm>
|
|
<primary>Ethernet</primary>
|
|
<secondary>MAC-Adresse</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie <application>&mathematica;</application> das erste
|
|
Mal starten, werden Sie nach einem Passwort gefragt. Haben Sie
|
|
noch kein Passwort von Wolfram erhalten, müssen Sie zuerst
|
|
im Installationsverzeichnis <command>mathinfo</command>
|
|
aufrufen, um Ihre <quote>Rechner-ID</quote> zu bestimmen. Diese
|
|
Rechner-ID basiert ausschließlich auf der MAC-Adresse
|
|
Ihrer ersten Netzwerkkarte. Daher ist es nicht möglich,
|
|
Ihre <application>&mathematica;</application>-Kopie auf
|
|
verschiedenen Rechnern zu installieren.</para>
|
|
|
|
<para>Wenn Sie sich bei Wolfram registrieren (durch E-Mail,
|
|
Telefon oder Fax), teilen Sie
|
|
Ihre <quote>Rechner-ID</quote> mit und erhalten dafür
|
|
ein aus Zahlengruppen bestehendes Passwort.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das &mathematica;-Frontend über ein Netzwerk
|
|
ausführen</title>
|
|
|
|
<para><application>&mathematica;</application> 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
|
|
<emphasis>lokal</emphasis> installiert sind.
|
|
Das bedeutet, dass Sie diese Schriftarten von der CD-ROM oder
|
|
von einem Rechner, auf dem <application>&mathematica;</application>
|
|
installiert ist, auf Ihren Rechner kopieren müssen.
|
|
Diese Schriftarten befinden sich normalerweise in
|
|
<filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename>
|
|
(&mathematica;-CD) oder in
|
|
<filename>/usr/local/mathematica/SystemFiles/Fonts</filename>
|
|
(Festplatte). Die aktuellen Schriftarten befinden sich dabei
|
|
in den Unterverzeichnissen <filename>Type1</filename> und
|
|
<filename>X</filename>. Um diese Schriftarten zu verwenden,
|
|
gibt es mehrere Möglichkeiten, die nun beschrieben werden:</para>
|
|
|
|
<para>Die erste Möglichkeit besteht darin, die Schriftarten
|
|
in eins der bereits existierenden Schriftartenverzeichnisse unter
|
|
<filename>/usr/X11R6/lib/X11/fonts</filename> zu kopieren.
|
|
Dies bedeutet, dass Sie <filename>fonts.dir</filename> 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.</para>
|
|
|
|
<para>Die zweite Möglichkeit, besteht darin,
|
|
die Verzeichnisse nach
|
|
<filename>/usr/X11R6/lib/X11/fonts</filename> zu kopieren:</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>Nun fügen Sie die neuen Schriftartenverzeichnisse in
|
|
Ihren Pfad ein:</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>Wenn Sie den &xorg;-Server verwenden, können Sie die
|
|
Schriftarten-Verzeichnisse automatisch laden lassen, wenn Sie sie
|
|
in Ihrer <filename>xorg.conf</filename> angeben.</para>
|
|
|
|
<indexterm><primary>Schriftarten</primary></indexterm>
|
|
|
|
<para>Wenn Sie <emphasis>noch kein</emphasis>
|
|
<filename>/usr/X11R6/lib/X11/fonts/Type1</filename>-Verzeichnis
|
|
haben, können Sie das
|
|
<filename>MathType1</filename>-Verzeichnis im vorherigen
|
|
Beispiel in <filename>Type1</filename> umbenennen.</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>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Robert</firstname>
|
|
<surname>Getschmann</surname>
|
|
<!-- <address><email>rob@getschmann.org</email></address>-->
|
|
<contrib>Mit Unterstützung durch </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>&maple; installieren</title>
|
|
|
|
<indexterm>
|
|
<primary>Linux-Anwendungen</primary>
|
|
<secondary><application>Maple</application></secondary>
|
|
</indexterm>
|
|
|
|
<para><application>&maple;</application> ist ein mit
|
|
<application>&mathematica;</application> vergleichbares kommerzielles
|
|
Mathematikprogramm. Sie können dieses Programm unter
|
|
<ulink url="http://www.maplesoft.com/"></ulink> kaufen und sich
|
|
anschließend registrieren, um eine Lizenz zu erhalten. Um
|
|
dieses Programm unter FreeBSD zu installieren, gehen Sie wie
|
|
folgt vor:</para>
|
|
|
|
<procedure>
|
|
<step><para>Führen Sie das
|
|
<filename>INSTALL</filename>-Shell-Skript
|
|
der Softwaredistribution aus. Wählen Sie die
|
|
<quote>RedHat</quote>-Option aus, wenn Sie das
|
|
Installationsprogramm danach fragt. Ein typisches
|
|
Installationsverzeichnis wäre z.B.
|
|
<filename class="directory">/usr/local/maple</filename>.</para></step>
|
|
|
|
<step><para>Wenn Sie dies noch nicht gemacht haben, besorgen Sie
|
|
sich nun eine <application>&maple;</application>-Lizenz von
|
|
Maple Waterloo Software
|
|
(<ulink url="http://register.maplesoft.com"></ulink>)
|
|
und kopieren Sie diese nach
|
|
<filename>/usr/local/maple/license/license.dat</filename>.</para></step>
|
|
|
|
<step><para>Installieren Sie den
|
|
<application>FLEXlm</application>-Lizenz-Manager, indem Sie
|
|
das <filename>INSTALL_LIC</filename>-Installations-Shellskript
|
|
ausführen, das mit <application>&maple;</application>
|
|
ausgeliefert wird. Geben Sie Ihren primären
|
|
Rechnernamen für den Lizenz-Server an.</para></step>
|
|
|
|
<step><para>Verändern Sie
|
|
<filename>/usr/local/maple/bin/maple.system.type</filename>
|
|
wie folgt:</para>
|
|
|
|
<programlisting> ----- 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 -----</programlisting>
|
|
|
|
<para>Bitte beachten Sie, dass nach
|
|
<literal>"FreeBSD"|\</literal> kein anderes
|
|
Zeichen eingefügt werden darf.</para>
|
|
|
|
<para>Dieser Patch weist <application>&maple;</application> an,
|
|
FreeBSD als <quote>eine Art von Linux-System</quote> zu erkennen.
|
|
Das Shell-Skript <filename>bin/maple</filename> ruft das
|
|
Shell-Skript <filename>bin/maple.system.type</filename> auf,
|
|
welches wiederum <command>uname -a</command> verwendet,
|
|
um den Namen des Betriebssystems herauszufinden.
|
|
Abhängig vom Betriebssystem weiß das System nun,
|
|
welche Binärdateien verwendet werden sollen.</para></step>
|
|
|
|
<step><para>Starten Sie den Lizenz-Server.</para>
|
|
|
|
<para>Das folgende, als
|
|
<filename>/usr/local/etc/rc.d/lmgrd.sh</filename>
|
|
installierte Shell-Skript ist ein komfortabler Weg,
|
|
um <command>lmgrd</command> zu starten:</para>
|
|
|
|
<programlisting> ----- 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 ------------</programlisting></step>
|
|
|
|
|
|
<step><para>Versuchen Sie, <application>&maple;</application>
|
|
zu starten:</para>
|
|
|
|
<screen>&prompt.user; <userinput>cd /usr/local/maple/bin</userinput>
|
|
&prompt.user; <userinput>./xmaple</userinput></screen>
|
|
|
|
<para>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.</para></step>
|
|
</procedure>
|
|
|
|
<sect2>
|
|
<title>Häufige Fehlerquellen</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Der
|
|
<application>FLEXlm</application>-Lizenzmanager kann schwierig
|
|
zu bedienen sein. Zusätzliche Dokumentation
|
|
zu diesem Thema finden Sie unter <ulink
|
|
url="http://www.globetrotter.com/"></ulink>.</para></listitem>
|
|
|
|
<listitem><para>Es ist bekannt, dass <command>lmgrd</command>
|
|
sehr pingelig ist, wenn es um die Lizenzdatei geht. Gibt
|
|
es Probleme, führt dies zu einem Speicherauszug
|
|
(<foreignphrase>core dump</foreignphrase>). Ein
|
|
korrekte Lizenzdatei sollte ähnlich der
|
|
folgenden aussehen:</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>Seriennummer und Schlüssel wurden durch mehrere
|
|
<literal>X</literal> unkenntlich gemacht. <hostid>chillig</hostid> ist ein
|
|
Rechnername.</para></note>
|
|
|
|
<para>Veränderungen an der Lizenzdatei sind möglich,
|
|
solange Sie die <literal>FEATURE</literal>-Zeile nicht
|
|
verändern (diese ist durch den Lizenzschlüssel
|
|
geschützt).</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="linuxemu-matlab">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Dan</firstname>
|
|
<surname>Pelleg</surname>
|
|
<contrib>Beigesteuert von </contrib>
|
|
</author>
|
|
<!-- daniel+handbook@pelleg.org -->
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>&matlab; installieren</title>
|
|
|
|
<indexterm>
|
|
<primary>Linux-Anwendungen</primary>
|
|
<secondary><application>MATLAB</application></secondary>
|
|
</indexterm>
|
|
|
|
<para>Im Folgenden wird die Installation der Linux-Anwendung
|
|
<application>&matlab;</application> Version 6.5 auf
|
|
&os; beschrieben. Mit Ausnahme der
|
|
<application>&java.virtual.machine;</application> (siehe
|
|
<xref linkend="matlab-jre"/>) läuft die Anwendung
|
|
auch ganz gut.</para>
|
|
|
|
<para>Die Linux-Version von <application>&matlab;</application>
|
|
können Sie direkt bei <ulink
|
|
url="http://www.mathworks.com">The MathWorks</ulink> 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.</para>
|
|
|
|
<sect2>
|
|
<title>Das &matlab;-Installationsskript</title>
|
|
|
|
<para>Um <application>&matlab;</application> zu installieren,
|
|
gehen Sie wie folgt vor:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Hängen Sie die Installations-CD ein und
|
|
wechseln Sie zu <username>root</username>, wie im
|
|
Installations-Skript gefordert. Starten Sie die
|
|
Installation mit dem folgenden Kommando:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/compat/linux/bin/sh /cdrom/install</userinput></screen>
|
|
|
|
<tip>
|
|
<para>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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>setenv HOME ~<replaceable>USER</replaceable></userinput></screen>
|
|
|
|
<para>Für <replaceable>USER</replaceable> setzen Sie
|
|
den Benutzer ein, von dem aus Sie <username>root</username>
|
|
geworden sind.</para>
|
|
</tip>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Beantworten Sie die Frage nach dem
|
|
<application>&matlab;</application>-Root-Verzeichnis mit:
|
|
<userinput>/compat/linux/usr/local/matlab</userinput>.</para>
|
|
|
|
<tip>
|
|
<para>Den langen Pfad werden Sie noch öfter brauchen.
|
|
Die Tipparbeit können Sie sich mit dem folgenden
|
|
Befehl erleichtern:</para>
|
|
|
|
<screen>&prompt.root; <userinput>set MATLAB=/compat/linux/usr/local/matlab</userinput></screen>
|
|
</tip>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Editieren Sie die Lizenz-Datei entsprechend der
|
|
Anweisung, die Sie beim Erwerb der Lizenz
|
|
erhalten haben.</para>
|
|
|
|
<tip>
|
|
<para>Sie können die Datei schon vorher mit Ihrem
|
|
Lieblingseditor bearbeiten. Kopieren Sie die Lizenz-Datei
|
|
nach <filename>$MATLAB/license.dat</filename>
|
|
bevor das Installationsprogramm Sie auffordert, die
|
|
Datei zu editieren.</para>
|
|
</tip>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Schließen Sie die Installation ab.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Die <application>&matlab;</application>-Installation
|
|
ist jetzt abgeschlossen. Die folgenden Schritte passen
|
|
<application>&matlab;</application> an &os; an.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Den Lizenzmanager starten</title>
|
|
<procedure>
|
|
<step>
|
|
<para>Erstellen Sie symbolische Links zu den Startskripten
|
|
des Lizenzmanagers:</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>Erstellen Sie das Startskript
|
|
<filename>/usr/local/etc/rc.d/flexlm.sh</filename>. Das
|
|
folgende Beispiel ist eine geänderte Version des
|
|
mitgelieferten Skripts
|
|
<filename>$MATLAB/etc/rc.lm.glnx86</filename>.
|
|
Angepasst wurden die Pfade zu den Dateien und der
|
|
Start des Lizenzmanagers unter der Linux-Emulation.</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>username</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>Machen Sie Datei ausführbar:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod +x /usr/local/etc/rc.d/flexlm.sh</userinput></screen>
|
|
|
|
<para>Ersetzen Sie im Skript <replaceable>username</replaceable>
|
|
durch einen existierenden Benutzer Ihres Systems
|
|
(bitte keinesfalls <username>root</username>).</para>
|
|
</important>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Starten Sie den Lizenzmanager:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/flexlm.sh start</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
<sect2 id="matlab-jre">
|
|
<title>Einrichten der &java;-Laufzeitumgebung</title>
|
|
|
|
<para>Erstellen Sie einen symbolischen Link auf eine
|
|
unter &os; laufende &java;-Laufzeitumgebung (JRE):</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>Ein &matlab;-Startskript erstellen</title>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Kopieren Sie das folgende Skript nach
|
|
<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>Machen Sie das Skript ausführbar:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod +x /usr/local/bin/matlab</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
|
|
<tip>
|
|
<para>Abhängig von der Version des Ports
|
|
<filename role="package">emulators/linux_base</filename>
|
|
kann das Skript auf Fehler laufen. Die Fehler können
|
|
Sie vermeiden, indem Sie die Datei
|
|
<filename>/compat/linux/usr/local/matlab/bin/matlab</filename>
|
|
editieren. Ändern Sie die nachstehende Zeile</para>
|
|
|
|
<programlisting>if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then</programlisting>
|
|
<para>(mit Version 13.0.1 in der Zeile 410) in
|
|
die folgende um:</para>
|
|
|
|
<programlisting>if test -L $newbase; then</programlisting>
|
|
</tip>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Stopp-Skript für &matlab; erstellen</title>
|
|
|
|
<para>Das nachstehende Skript beendet &matlab;
|
|
ordnungsgemäß.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Erstellen Sie die Datei
|
|
<filename>$MATLAB/toolbox/local/finish.m</filename> mit
|
|
dem nachstehenden Inhalt:</para>
|
|
|
|
<programlisting>! $MATLAB/bin/finish.sh</programlisting>
|
|
|
|
<note>
|
|
<para>Übernehmen Sie die Zeichenkette
|
|
<literal>$MATLAB</literal> unverändert.</para>
|
|
</note>
|
|
|
|
<tip>
|
|
<para>Im selben Verzeichnis befinden sich die
|
|
Dateien <filename>finishsav.m</filename> und
|
|
<filename>finishdlg.m</filename>. 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
|
|
<literal>save</literal>-Kommando ein.</para>
|
|
</tip>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Erstellen Sie die Datei
|
|
<filename>$MATLAB/bin/finish.sh</filename> mit
|
|
nachstehendem Inhalt:</para>
|
|
|
|
<programlisting>#!/compat/linux/bin/sh
|
|
(sleep 5; killall -1 matlab_helper) &
|
|
exit 0</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Machen Sie die Datei ausführbar:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod +x $MATLAB/bin/finish.sh</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
<sect2 id="matlab-using">
|
|
<title>&matlab; benutzen</title>
|
|
|
|
<para>Jetzt können Sie <application>&matlab;</application>
|
|
mit dem <command>matlab</command> starten.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="linuxemu-oracle">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Marcel</firstname>
|
|
<surname>Moolenaar</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
<!-- marcel@cup.hp.com -->
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>&oracle; installieren</title>
|
|
|
|
<indexterm>
|
|
<primary>Linux-Anwendungen</primary>
|
|
<secondary><application>Oracle</application></secondary>
|
|
</indexterm>
|
|
|
|
<sect2>
|
|
<title>Übersicht</title>
|
|
<para>Dieses Dokument beschreibt die Installation von
|
|
<application>&oracle; 8.0.5</application>
|
|
und <application>&oracle; 8.0.5.1 Enterprise Edition</application>
|
|
für Linux auf einem FreeBSD-Rechner.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Installation der Linux-Umgebung</title>
|
|
|
|
<para>Stellen Sie sicher, dass Sie sowohl
|
|
<filename role="package">emulators/linux_base</filename> und
|
|
<filename role="package">devel/linux_devtools</filename>
|
|
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.</para>
|
|
|
|
<para>Wenn Sie den Intelligent-Agent verwenden wollen,
|
|
müssen Sie zusätzlich das RedHat Tcl-Paket
|
|
installieren: <filename>tcl-8.0.3-20.i386.rpm</filename>.
|
|
Zur Installation von RPM-Paketen wir der Port
|
|
<filename role='package'>archivers/rpm</filename> benötigt.
|
|
Ist der Port installiert, lassen sich RPM-Pakete
|
|
anschließend mit dem nachstehenden Befehl
|
|
installieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>package</replaceable></userinput></screen>
|
|
|
|
<para>Die Installation der RPM-Pakete sollte ohne
|
|
Fehlermeldung ablaufen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Die &oracle;-Umgebung erzeugen</title>
|
|
|
|
<para>Bevor Sie <application>&oracle;</application> installieren
|
|
können, müssen Sie eine entsprechende Umgebung erzeugen.
|
|
Dieses Dokument beschreibt nur, was Sie
|
|
<emphasis>im Speziellen</emphasis> tun müssen, um die
|
|
Linux-Version von <application>&oracle;</application> unter FreeBSD
|
|
zu installieren, nicht aber, was bereits in der Installationsanleitung
|
|
von <application>&oracle;</application> beschrieben wird.</para>
|
|
|
|
<sect3 id="linuxemu-kernel-tuning">
|
|
<title>Kernel-Tuning</title>
|
|
<indexterm><primary>Kernel Tuning</primary></indexterm>
|
|
|
|
<para>Wie in der Installationsanleitung von
|
|
<application>&oracle;</application> beschrieben,
|
|
müssen Sie die maximale Shared-Memory Größe
|
|
festlegen. Verwenden Sie
|
|
<literal>SHMMAX</literal> nicht unter FreeBSD.
|
|
<literal>SHMMAX</literal> wird lediglich aus
|
|
<literal>SHMMAXPGS</literal> und <literal>PGSIZE</literal>
|
|
berechnet. Definieren Sie stattdessen
|
|
<literal>SHMMAXPGS</literal>. Alle anderen Optionen
|
|
können wie in der Anleitung beschrieben verwendet werden.
|
|
Zum Beispiel:</para>
|
|
|
|
<programlisting>options SHMMAXPGS=10000
|
|
options SHMMNI=100
|
|
options SHMSEG=10
|
|
options SEMMNS=200
|
|
options SEMMNI=70
|
|
options SEMMSL=61</programlisting>
|
|
|
|
<para>Passen Sie diese Optionen entsprechend dem von Ihnen
|
|
gewünschten Einsatzzweck von
|
|
<application>&oracle;</application> an.</para>
|
|
|
|
<para>Stellen Sie außerdem sicher, dass Sie folgende
|
|
Optionen in Ihren Kernel kompilieren:</para>
|
|
|
|
<programlisting>options SYSVSHM #SysV shared memory
|
|
options SYSVSEM #SysV semaphores
|
|
options SYSVMSG #SysV interprocess communication</programlisting>
|
|
</sect3>
|
|
|
|
<sect3 id="linuxemu-oracle-account">
|
|
|
|
<title>&oracle;-Benutzer anlegen</title>
|
|
|
|
<para>Legen Sie den Account <username>oracle</username> an.
|
|
Der Account unterschiedet sich von normalen Accounts
|
|
dadurch, dass er eine Linux-Shell zugeordnet bekommen muss.
|
|
Fügen Sie <literal>/compat/linux/bin/bash</literal> in die
|
|
Datei <filename>/etc/shells</filename> ein und setzen Sie die
|
|
Shell für den <username>oracle</username>-Account auf
|
|
<filename>/compat/linux/bin/bash</filename>.</para>
|
|
</sect3>
|
|
|
|
<sect3 id="linuxemu-environment">
|
|
<title>Umgebung</title>
|
|
|
|
<para>Neben den normalen
|
|
<application>&oracle;</application>-Variablen, wie z.B.
|
|
<envar>ORACLE_HOME</envar> und <envar>ORACLE_SID</envar>
|
|
müssen Sie die folgenden Variablen setzen:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="2*"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Variable</entry>
|
|
|
|
<entry>Wert</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>Es ist empfehlenswert, alle Variablen in der Datei
|
|
<filename>.profile</filename> zu setzen. Ein komplettes
|
|
Beispiel sieht folgendermaßen aus:</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; installieren</title>
|
|
|
|
<para>Auf Grund einer kleinen Unregelmäßigkeit
|
|
im Linux-Emulator müssen Sie das Verzeichnis
|
|
<filename>.oracle</filename> unter <filename>/var/tmp</filename>
|
|
erzeugen, bevor Sie das Installationsprogramm starten.
|
|
Das Verzeichnis muss dem Account <username>oracle</username>
|
|
gehören. Sie sollten <application>&oracle;</application> nun
|
|
ohne Probleme installieren können. Treten dennoch Probleme
|
|
auf, überprüfen Sie zuerst Ihre
|
|
<application>&oracle;</application>-Distribution und Ihre
|
|
Konfiguration. Nachdem Sie <application>&oracle;</application>
|
|
erfolgreich installiert haben, installieren Sie die Patches
|
|
wie in den zwei folgenden Abschnitten beschrieben:</para>
|
|
|
|
<para>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:</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>Vergessen Sie nicht, <filename>root.sh</filename>
|
|
nochmals auszuführen!</para>
|
|
|
|
<sect3 id="linuxemu-patch-root">
|
|
<title>root.sh patchen</title>
|
|
|
|
<para>Während der
|
|
<application>&oracle;</application>-Installation werden einige
|
|
Aktionen, die als <username>root</username>
|
|
ausgeführt werden müssen, in ein Shell-Skript
|
|
mit dem Namen <filename>root.sh</filename> gespeichert.
|
|
Dieses Skript befindet sich im Verzeichnis
|
|
<filename>orainst</filename>. Verwenden Sie folgenden
|
|
Patch für <filename>root.sh</filename>, damit es
|
|
das richtige <command>chown</command> Kommando
|
|
verwendet, oder lassen Sie das
|
|
Skript alternativ unter einer Linux-Shell ablaufen:</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>Wenn Sie <application>&oracle;</application> nicht
|
|
von CD-ROM installieren, können
|
|
Sie Quelldatei für <filename>root.sh</filename>
|
|
verändern. Sie heißt <filename>rthd.sh</filename>
|
|
und befindet sich im <filename>orainst</filename>-Verzeichnis
|
|
des Quellcodebaums.</para>
|
|
</sect3>
|
|
|
|
<sect3 id="linuxemu-patch-tcl">
|
|
<title>genclntsh patchen</title>
|
|
|
|
<para>Das Skript <command>genclntsh</command> 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 <envar>PATH</envar>
|
|
auszukommentieren:</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; starten</title>
|
|
|
|
<para>Wenn Sie den Anweisungen gefolgt sind, sollten Sie nun
|
|
in der Lage sein, <application>&oracle;</application> zu starten,
|
|
genau so, wie Sie dies auch unter Linux tun würden.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="linuxemu-advanced">
|
|
<title>Weiterführende Themen</title>
|
|
|
|
<para>Wenn Sie sich fragen, wie die Linux-Binärkompatibilität
|
|
unter FreeBSD realisiert wurde, sollten Sie diesen Abschnitt lesen.
|
|
Der Großteil der folgenden Informationen stammt aus einer
|
|
E-Mail, die von Terry Lambert (<email>tlambert@primenet.com</email>)
|
|
an die FreeBSD-Chat-Mailingliste
|
|
(<email>freebsd-chat@FreeBSD.org</email>) geschrieben wurde
|
|
(Message ID: <literal><199906020108.SAA07001@usr09.primenet.com></literal>).</para>
|
|
|
|
<sect2>
|
|
<title>Wie funktioniert es?</title>
|
|
<indexterm><primary>execution class loader</primary></indexterm>
|
|
|
|
<para>FreeBSD verfügt über eine <quote>execution class
|
|
loader</quote> genannte Abstraktion. Dabei handelt es sich um einen
|
|
Eingriff in den &man.execve.2; Systemaufruf.</para>
|
|
|
|
<para>FreeBSD verfügt über eine Liste von Ladern, anstelle
|
|
eines einzigen, auf <literal>#!</literal>
|
|
zurückgreifenden Laders, um Shell-Interpreter oder Shell-Skripte
|
|
auszuführen.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Dabei wurde als Standardeinstellung <quote>was auch immer die
|
|
aktuelle Shell ist</quote> festgelegt.</para>
|
|
|
|
<para>Später wurde ein Hack in &man.sh.1; eingefügt,
|
|
der die zwei ersten Zeichen untersuchte. Wenn diese
|
|
<literal>:\n</literal> entsprachen,
|
|
wurde stattdessen die &man.csh.1;-Shell aufgerufen
|
|
(wir glauben, dass dies zuerst von SCO umgesetzt wurde).</para>
|
|
|
|
<para>FreeBSD versucht heute eine Liste von Ladern, unter denen
|
|
sich ein allgemeiner Lader für Interpreter befindet. Der
|
|
auszuführende Interpreter wird im ersten, durch
|
|
Leerzeichen getrennten Feld, der <literal>#!</literal>-Zeile
|
|
angegeben. Lässt sich der Interpreter nicht ermitteln,
|
|
wird auf <filename>/bin/sh</filename> zurückgegriffen.</para>
|
|
|
|
<indexterm><primary>ELF</primary></indexterm>
|
|
|
|
<para>Für die Linux ABI-Unterstützung erkennt FreeBSD
|
|
die magische Zahl als ELF-Binärdatei (Zu diesem Zeitpunkt wird
|
|
nicht zwischen FreeBSD, &solaris;, Linux oder anderen Systemen
|
|
unterschieden, die über ELF-Binärdateien
|
|
verfügen.).</para>
|
|
|
|
<indexterm><primary>Solaris</primary></indexterm>
|
|
|
|
<para>Der ELF-Lader sucht nach einer speziellen
|
|
<emphasis>Kennzeichnung</emphasis>, die aus einem Kommentarabschnitt
|
|
in der ELF-Datei besteht, und die in SVR4/&solaris; ELF
|
|
Binärdateien nicht vorhanden ist.</para>
|
|
|
|
<para>Damit Linux-Binärdateien (unter FreeBSD) funktionieren,
|
|
müssen sie als <literal> Linux</literal>
|
|
<emphasis>gekennzeichnet</emphasis> werden, und zwar durch
|
|
&man.brandelf.1;:</para>
|
|
|
|
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
|
|
|
|
<para>Nachdem dies geschehen ist, erkennt der ELF-Lader die
|
|
<literal>Linux</literal>-Kennzeichnung der Datei.</para>
|
|
<indexterm>
|
|
<primary>ELF</primary>
|
|
<secondary><command>brandelf</command></secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn der ELF-Lader die <literal>Linux</literal>-Kennzeichnung
|
|
sieht, wird ein Zeiger in der <literal>proc</literal>-Struktur
|
|
ersetzt. Alle Systemaufrufe werden durch diesen Zeiger indiziert
|
|
(in einem traditionellen &unix; System wäre das ein
|
|
<literal>sysent[]</literal>-Strukturfeld, das die Systemaufrufe
|
|
enthält). 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.</para>
|
|
|
|
<para>Der Linux-Systemaufrufvektor enthält neben anderen
|
|
Dingen eine Liste der <literal>sysent[]</literal>-Einträge,
|
|
deren Adressen sich im Kernelmodul befinden.</para>
|
|
|
|
<para>Wenn ein Linux-Programm einen Systemaufruf ausführt,
|
|
dereferenziert die Trap-Behandlungsroutine den Zeiger auf die
|
|
Eintrittspunkte für die Systemaufrufe und erhält damit die
|
|
Linux-Eintrittspunkte und nicht die FreeBSD-Eintrittspunkte.</para>
|
|
|
|
<para>Zusätzlich <emphasis>verändert</emphasis> der
|
|
Linuxmodus die Systempfade dynamisch; genauso, wie dies die
|
|
Option <option>union</option> beim Einbinden von Dateisystemen
|
|
macht (Achtung: <emphasis>nicht</emphasis> das Dateisystem unionfs!).
|
|
Zuerst wird die Datei im Verzeichnis <filename>/compat/linux/<replaceable>Originalpfad</replaceable></filename>
|
|
gesucht, <emphasis>danach</emphasis>, wenn sie dort nicht gefunden
|
|
wurde, wird sie im FreeBSD-Verzeichnis
|
|
<filename>/<replaceable>Originalpfad</replaceable></filename>
|
|
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 FreeBSD-Binärdateien
|
|
laden und ausführen können, wenn keine passenden
|
|
Linux-Binärdateien vorhanden sind. Ein in
|
|
<filename>/compat/linux</filename> plaziertes &man.uname.1; kann
|
|
damit Linux-Programmen vorgaukeln, dass sie auf einem Linux-System
|
|
laufen.</para>
|
|
|
|
<para>Im Endeffekt gibt es einen Linux-Kernel innerhalb des
|
|
FreeBSD-Kernels. Die Sprungtabellen für Linux-
|
|
beziehungsweise FreeBSD-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 FreeBSD
|
|
FreeBSD-<emphasis>glue</emphasis>-Funktionen verwenden.
|
|
Linux-Binärdateien hingegen verwenden die
|
|
Linux-<emphasis>glue</emphasis>-Funktionen. Die meisten
|
|
älteren Betriebssysteme hatten ihre eigenen
|
|
<emphasis>glue</emphasis>-Funktionen: Funktionsadressen
|
|
in einem globalen, statischen <literal>sysent[]</literal>
|
|
Strukturfeld an Stelle von Funktionsadressen, die durch
|
|
einen dynamisch initialisierten Zeiger aus der
|
|
<literal>proc</literal> Struktur, die den Aufruf gemacht hatte,
|
|
dereferenziert wurden.</para>
|
|
|
|
<para>Welche ist die echte FreeBSD-ABI? Das spielt keine Rolle.
|
|
Grundsätzlich ist der einzige Unterschied (zurzeit
|
|
ist das so; dies könnte sich in zukünftigen
|
|
Versionen leicht ändern und wird sich wahrscheinlich
|
|
auch ändern), dass die
|
|
FreeBSD-<emphasis>glue</emphasis>-Funktionen statisch in
|
|
den Kernel gelinkt sind, und dass die
|
|
Linux-<emphasis>glue</emphasis>-Funktionen statisch gelinkt
|
|
oder über ein Modul eingebunden werden können.</para>
|
|
|
|
<para>Ja, aber ist das wirkliche eine Emulation? Nein. Es ist eine
|
|
Implementierung eines ABIs, keine Emulation. Es ist kein Emulator
|
|
(oder Simulator, um der nächsten Frage zuvorzukommen)
|
|
beteiligt.</para>
|
|
|
|
<para>Warum wird es manchmal <quote>Linux-Emulation</quote> genannt?
|
|
Um es schwerer zu machen, FreeBSD zu verkaufen. Wirklich, das kommt
|
|
daher, weil dies zu einer Zeit implemtiert wurde,
|
|
in der es kein anderes Wort
|
|
(als Emulation) gab, das beschrieb, was vor sich ging.
|
|
Wenn der Kernel nicht entsprechend konfiguriert wurde oder das
|
|
Modul geladen wurde, war es falsch zu behaupten, FreeBSD würde
|
|
Linux-Binärprogramme ausführen. Man benötigte
|
|
ein Wort, das beschrieb, was da geladen
|
|
wurde – daher <quote>Der Linux-Emulator</quote>.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|