svn commit: r48830 - head/de_DE.ISO8859-1/books/handbook/linuxemu

Bjoern Heidotting bhd at FreeBSD.org
Wed May 18 19:55:48 UTC 2016


Author: bhd
Date: Wed May 18 19:55:47 2016
New Revision: 48830
URL: https://svnweb.freebsd.org/changeset/doc/48830

Log:
  Update to r48090:
  
  Patch to get straight to r48090.
  
  Reviewed by:	bcr
  Differential Revision:	https://reviews.freebsd.org/D6440

Modified:
  head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml

Modified: head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml
==============================================================================
--- head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml	Wed May 18 00:18:50 2016	(r48829)
+++ head/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.xml	Wed May 18 19:55:47 2016	(r48830)
@@ -5,10 +5,10 @@
 
      $FreeBSD$
      $FreeBSDde: de-docproj/books/handbook/linuxemu/chapter.xml,v 1.94 2012/04/30 17:13:51 bcr Exp $
-     basiert auf: r40979
+     basiert auf: r48090
 -->
 <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="linuxemu">
-  <info><title>Linux-Binärkompatibilität</title>
+  <info><title>&linux;-Binärkompatibilität</title>
     <authorgroup>
       <author><personname><firstname>Jim</firstname><surname>Mock</surname></personname><contrib>Restrukturiert und teilweise aktualisiert von </contrib></author>
      <!-- 22 Mar 2000 -->
@@ -22,8 +22,6 @@
       </authorgroup>
   </info>
 
-  
-
   <sect1 xml:id="linuxemu-synopsis">
     <title>Übersicht</title>
     <indexterm>
@@ -34,298 +32,182 @@
       <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>&adobe; &acrobat;</application>,
-      <application>&realplayer;</application>,
-      <application>&oracle;</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>&os; bietet 32-Bit-Binärkompatibilität zu &linux;, so dass
+      Benutzer 32-Bit &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
+      die 32-Bit &linux; Anwendungen auf &os; besser laufen als unter
+      &linux;.</para>
+
+    <para>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.</para>
+
+    <para>Nach dem Lesen dieses Kapitels werden Sie wissen:</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>
+	<para>Wie Sie die &linux;-Binärkompatibilität
+	  aktivieren.</para>
       </listitem>
 
       <listitem>
-	<para>Wissen, wie man zusätzliche Linux-Systembibliotheken
-	  unter FreeBSD installiert.</para>
+	<para>Wie zusätzliche &linux;-Systembibliotheken installiert
+	  werden.</para>
       </listitem>
 
       <listitem>
-	<para>Linux-Anwendungen unter FreeBSD installieren können.</para>
+	<para>Wie Sie &linux;-Anwendungen unter &os;
+	  installieren.</para>
       </listitem>
 
       <listitem>
-	<para>Wissen, wie die Linux-Binärkompatibilität
-	  unter FreeBSD verwirklicht wurde.</para>
+	<para>Wie die &linux;-Binärkompatibilität unter &os;
+	  implementiert ist.</para>
       </listitem>
     </itemizedlist>
 
-    <para>Bevor Sie dieses Kapitel lesen, sollten Sie</para>
+    <para>Bevor Sie dieses Kapitel lesen, sollten Sie wissen:</para>
 
     <itemizedlist>
       <listitem>
-	<para>wissen, wie man Software Dritter installiert
-	  (<xref linkend="ports"/>).</para>
+	<para>Wie Sie <link linkend="ports">
+	    Software von Drittanbietern installieren</link>.</para>
       </listitem>
     </itemizedlist>
 
   </sect1>
 
   <sect1 xml:id="linuxemu-lbc-install">
-    <title>Installation</title>
+    <title>Konfiguration der &linux;-Binärkompatibilität</title>
 
-    <indexterm><primary>KLD (kernel loadable object)</primary></indexterm>
+    <indexterm><primary>Ports-Sammlung</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>
+    <para>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.</para>
 
-    <screen>&prompt.root; <userinput>kldload linux</userinput></screen>
+    <para>Bevor Sie versuchen den Port zu bauen, laden Sie das
+      &linux;-Kernelmodul, da ansonsten der Bau fehlschlägt:</para>
 
-    <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>
+    <screen>&prompt.root; <userinput>kldload linux</userinput></screen>
 
-    <para>Der &man.kldstat.8;-Befehl kann benutzt werden, um
-      festzustellen, ob KLD geladen wurde:</para>
+    <para>Prüfen Sie, ob das Modul 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>
+
+    <para>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
+      <package>emulators/linux_base-c6</package>.  So installieren Sie
+      das Paket:</para>
+
+    <screen>&prompt.root; <userinput>printf "compat.linux.osrelease=2.6.18\n" >> /etc/sysctl.conf</userinput>
+&prompt.root; <userinput>sysctl compat.linux.osrelease=2.6.18</userinput>
+&prompt.root; <userinput>pkg install emulators/linux_base-c6</userinput></screen>
+
+    <para>Wollen Sie die &linux;-Binärkompatibilität beim Systemstart
+      aktivieren, fügen Sie folgende Zeile in
+      <filename>/etc/rc.conf</filename> hinzu:</para>
+
+    <programlisting>linux_enable="YES"</programlisting>
+
     <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>
+    <para>Benutzer, die es vorziehen, &linux;-Binärkompatibilität
+      statisch in den Kernel zu linken, müssen
+      <literal>options COMPAT_LINUX</literal> in die
+      Kernelkonfigurationsdatei aufnehmen und anschließend einen neuen
+      Kernel installieren.  Dies ist in <xref linkend="kernelconfig"/>
+      beschrieben.</para>
+
+    <sect2 xml:id="linuxemu-libs-manually">
+      <title>Manuelle Installation zusätzlicher Bibliotheken</title>
 
-    <sect2>
-      <title>Linux-Laufzeitbibliotheken installieren</title>
       <indexterm>
-	<primary>Linux</primary>
-	<secondary>Linux-Laufzeitbibliotheken installieren</secondary>
+	<primary>Gemeinsam benutzte Bibliotheken</primary>
       </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 xml: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
-          <link xlink:href="file://localhost/usr/ports/">Ports-Sammlung</link>.
-	  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
-            <package>emulators/linux_base-fc4</package>
-            anstatt <package>emulators/linux_base-f10</package>
-            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 <package>emulators/linux_base</package>.
-	    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 xml: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 <systemitem class="username">root</systemitem> 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>
+      <para>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.</para>
+
+      <para>Mit <command>ldd</command> können Sie unter &linux;
+	bestimmen, welche gemeinsam benutzten Bibliotheken eine
+	Anwendung benötigt.  Wenn Sie herausfinden wollen, welche
+	Bibliotheken <command>linuxdoom</command> benötigt, können Sie
+	folgenden Befehl auf einem &linux;-System ausführen, welches
+	<application>Doom</application> installiert hat:</para>
 
-	  <screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
+      <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>
+      <para>Kopieren Sie alle Dateien aus der letzten Spalte der
+	Ausgabe von einem &linux;-System auf das &os;-System in das
+	Verzeichnis <filename>/compat/linux</filename>.  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:</para>
 
-	  <screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
+      <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>
+      <para>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.</para>
+
+      <para>Folgende Bibliotheken existieren bereits auf dem
+	&os;-System:</para>
 
-	      <screen>/compat/linux/lib/libc.so.4.6.27
+      <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>
+      <para><command>ldd</command> zeigt an, dass eine Anwendung eine
+	neuere Version benötigt:</para>
 
-	      <screen>/compat/linux/lib/libc.so.4.6.29
+      <screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen>
+
+      <para>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 <filename>libc.so</filename>
+	durch die neuere Version ersetzen:</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>
+      <para>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.</para>
     </sect2>
 
     <sect2>
-      <title>Linux ELF-Binärdateien installieren</title>
+      <title>&linux; ELF-Binärdateien installieren</title>
+
       <indexterm>
 	<primary>Linux</primary>
 	<secondary>ELF-Binärdatei</secondary>
@@ -333,75 +215,81 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/
 
       <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>
+	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
+      <para>Damit der &os;-Kernel eine &linux;-ELF-Datei von einer
+	&os;-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>
+
+      <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.</para>
     </sect2>
 
     <sect2>
-      <title>Installieren einer beliebigen RPM-basierten Linuxanwendung</title>
+      <title>Installieren einer <acronym>RPM</acronym>-basierten
+	&linux;-Anwendung</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>
+      <para>Wenn Sie eine &linux; <acronym>RPM</acronym>-basierte
+	Anwendung installieren möchten, installieren Sie zunächst den
+	Port oder das Paket <package>archivers/rpm4</package>.
+	Anschließend kann der Superuser das folgende Kommando
+	benutzen, um ein <filename>.rpm</filename> zu
+	installieren:</para>
 
       <screen>&prompt.root; <userinput>cd /compat/linux</userinput>
-&prompt.root; <userinput>rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id</userinput></screen>
+&prompt.root; <userinput>rpm2cpio < /pfad/zum/linux.archiv.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>
+      <para>Fall notwendig, benutzen Sie <command>brandelf</command>
+	auf den installierten ELF-Binärdateien.  Beachten Sie, dass
+	dies eine saubere Deinstallation verhindert.</para>
     </sect2>
 
     <sect2>
       <title>Namensauflösung konfigurieren</title>
 
-      <para>Wenn DNS nicht funktioniert, oder Sie folgende Fehlermeldung
-	erhalten:</para>
+      <para>Wenn <acronym>DNS</acronym> nicht funktioniert, oder die
+	folgende Fehlermeldung erscheint:</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>
+      <para>müssen Sie
+	<filename>/compat/linux/etc/host.conf</filename> wie folgt
+	bearbeiten:</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/hosts</filename> und anschließend
+	<acronym>DNS</acronym> durchsucht werden.  Wenn
+	<filename>/compat/linux/etc/host.conf</filename> nicht
+	vorhanden ist, nutzen &linux;-Anwendungen
 	<filename>/etc/host.conf</filename> und
-	beschweren sich über die inkompatible FreeBSD-Syntax.  Wenn Sie
-	keinen Nameserver (in <filename>/etc/resolv.conf</filename>)
+	beschweren sich über die inkompatible &os;-Syntax.  Wenn Sie
+	in <filename>/etc/resolv.conf</filename> keinen Nameserver
 	konfiguriert haben, sollten Sie den Eintrag
 	<literal>bind</literal> entfernen.</para>
     </sect2>
   </sect1>
 
+  <?ignore
+
+  While the installer works, the binaries do not.  As of Oct 2013,
+  Linux emulation is 32-bit but the trial version of Mathematica is
+  only available as 64-bit.  This section should be revisited if Linux
+  emulation gets 64-bit binary support.
+
   <sect1 xml:id="linuxemu-mathematica">
     <info><title>&mathematica; installieren</title>
       <authorgroup>
@@ -1290,169 +1178,126 @@ export PATH</programlisting>
 	genau so, wie Sie dies auch unter Linux tun würden.</para>
     </sect2>
   </sect1>
+  ?>
 
   <sect1 xml: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 at primenet.com</email>)
-      an die FreeBSD-Chat-Mailingliste
-      (<email>freebsd-chat at FreeBSD.org</email>) geschrieben wurde
-      (Message ID: <literal><199906020108.SAA07001 at usr09.primenet.com></literal>).</para>
+    <para>Dieser Abschnitt beschreibt wie die
+      &linux;-Binärkompatibilität funktioniert.  Die folgenden
+      Informationen stammen aus einer E-Mail, die von Terry Lambert
+      (<email>tlambert at primenet.com</email>) an &a.chat; geschrieben
+      wurde (Message ID:
+      <literal><199906020108.SAA07001 at 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>&os; 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>Historisch gesehen untersuchte der einzige, auf
-	UNIX-Plattformen vorhandene Lader die "magische Zahl"
+	&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>
+	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
+	<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>
+	wurde stattdessen die &man.csh.1;-Shell aufgerufen.</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>
+      <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>
 
       <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>
+      <para>Für die &linux; <acronym>ABI</acronym>-Unterstützung
+	erkennt &os; die magische Zahl als ELF-Binärdatei.  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 &os; funktionieren, müssen
+	sie mit &man.brandelf.1; als <literal>Linux</literal>
+	<emphasis>gekennzeichnet</emphasis> werden:</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>
+	<primary>ELF</primary>
+	<secondary>Kennzeichnung</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,
+	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
+	Behandlung erfährt und das &linux;-Kernelmodul verschiedene
 	kleinere Korrekturen vornehmen kann.</para>
 
-      <para>Der Linux-Systemaufrufvektor enthält neben anderen
+      <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>Wenn ein &linux;-Programm einen Systemaufruf ausführt,
+	dereferenziert die Trap-Behandlungsroutine den Zeiger für den
+	Systemaufruf aus der <literal>proc</literal>-Struktur und
+	erhält damit die &linux;-Eintrittspunkte für den
+	Systemaufruf.</para>
 
       <para>Zusätzlich <emphasis>verändert</emphasis> der
-	Linuxmodus die Systempfade dynamisch; genauso, wie dies die
+	&linux;-Modus 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/Originalpfad</filename>
-	gesucht, <emphasis>danach</emphasis>, wenn sie dort nicht gefunden
-	wurde, wird sie im FreeBSD-Verzeichnis
-	<filename>/Originalpfad</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>
+	macht.  Zuerst wird die Datei im Verzeichnis
+	<filename>/compat/linux/Originalpfad</filename> gesucht, wenn
+	sie dort nicht gefunden wurde, wird sie im Verzeichnis
+	<filename>/Originalpfad</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 <acronym>ABI</acronym> 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
+	<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
+	&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;-<emphasis>glue</emphasis>-Funktionen verwendet werden.
+	&linux;-Binärdateien hingegen verwenden die
+	&linux;-<emphasis>glue</emphasis>-Funktionen.
+	&os;-<emphasis>glue</emphasis>-Funktionen sind statisch in
+	den Kernel gelinkt,
+	&linux;-<emphasis>glue</emphasis>-Funktionen sind statisch
+	gelinkt oder können über ein ladbares Kernelmodul eingebunden
+	werden.</para>
+
+      <para>Technisch gesehen ist dies nicht wirklich eine Emulation,
+	sondern eine <acronym>ABI</acronym>-Implementation.  Es wird
+	manchmal <quote>&linux; Emulation</quote> 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.</para>
   </sect1>
 </chapter>


More information about the svn-doc-all mailing list