White space fix only. Translators can ignore.

Sponsored by: iXsystems
This commit is contained in:
Dru Lavigne 2014-03-20 14:51:31 +00:00
parent 8a8aeb09bf
commit 4fe406539c
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=44295

View file

@ -51,17 +51,17 @@
<secondary>Linux</secondary>
</indexterm>
<para>&os; provides 32-bit binary compatibility with &linux;, allowing
users to install and run most 32-bit &linux; binaries on a &os; system
without having to first modify the binary. It has even been
reported that, in some situations, 32-bit &linux; binaries perform
better on &os; than they do on &linux;.</para>
<para>&os; provides 32-bit binary compatibility with &linux;,
allowing users to install and run most 32-bit &linux; binaries
on a &os; system without having to first modify the binary. It
has even been reported that, in some situations, 32-bit &linux;
binaries perform better on &os; than they do on &linux;.</para>
<para>However, some &linux;-specific operating system features
are not supported under &os;. For example, &linux; binaries
will not work on &os; if they overly use &i386; specific
calls, such as enabling virtual 8086 mode. In addition, 64-bit
&linux; binaries are not supported at this time.</para>
will not work on &os; if they overly use &i386; specific calls,
such as enabling virtual 8086 mode. In addition, 64-bit &linux;
binaries are not supported at this time.</para>
<para>After reading this chapter, you will know:</para>
@ -103,21 +103,21 @@
<indexterm><primary>Ports Collection</primary></indexterm>
<para>By default, &linux; libraries are not installed and
&linux; binary compatibility is not enabled.
&linux; libraries can either be installed manually or from the &os; Ports
<para>By default, &linux; libraries are not installed and &linux;
binary compatibility is not enabled. &linux; libraries can
either be installed manually or from the &os; Ports
Collection.</para>
<para>The <package>emulators/linux-base-f10</package> package or
port is the easiest way to
install a base set of &linux; libraries and binaries on
a &os; system. To install the port:</para>
port is the easiest way to install a base set of &linux;
libraries and binaries on a &os; system. To install the
port:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base-f10</userinput>
&prompt.root; <userinput>make install distclean</userinput></screen>
<para>Once installed, enable &linux; binary
compatibility by loading the <literal>linux</literal> module:</para>
<para>Once installed, enable &linux; binary compatibility by
loading the <literal>linux</literal> module:</para>
<screen>&prompt.root; <userinput>kldload linux</userinput></screen>
@ -128,8 +128,8 @@ Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.ko</screen>
<para>In order for &linux; compatibility to be enabled at
boot time, add the following line to
<para>In order for &linux; compatibility to be enabled at boot
time, add the following line to
<filename>/etc/rc.conf</filename>:</para>
<programlisting>linux_enable="YES"</programlisting>
@ -148,90 +148,92 @@ Id Refs Address Size Name
<sect2 xml:id="linuxemu-libs-manually">
<title>Installing Additional Libraries Manually</title>
<indexterm>
<primary>shared libraries</primary>
</indexterm>
<indexterm>
<primary>shared libraries</primary>
</indexterm>
<para>If a &linux;
application complains about missing shared
libraries after configuring &linux; binary compatibility,
determine which shared libraries the &linux; binary
needs and install them manually.</para>
<para>If a &linux; application complains about missing shared
libraries after configuring &linux; binary compatibility,
determine which shared libraries the &linux; binary needs and
install them manually.</para>
<para>From a &linux; system,
<command>ldd</command> can be used to determine which shared
libraries the application needs. For example, to
check which shared libraries <command>linuxdoom</command> needs, run
this command from a &linux; system that has
<application>Doom</application> installed:</para>
<para>From a &linux; system, <command>ldd</command> can be used
to determine which shared libraries the application needs.
For example, to check which shared libraries
<command>linuxdoom</command> needs, run this command from a
&linux; system that has <application>Doom</application>
installed:</para>
<screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
<screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
libXt.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<indexterm>
<primary>symbolic links</primary>
</indexterm>
<para>Then, copy all the files in the last column of the output from the &linux; system into
<filename>/compat/linux</filename> on
the &os; system. Once copied, create symbolic links to the names in the first column.
This example will result
in the following files on the &os; system:</para>
<indexterm>
<primary>symbolic links</primary>
</indexterm>
<screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
<para>Then, copy all the files in the last column of the output
from the &linux; system into
<filename>/compat/linux</filename> on the &os; system. Once
copied, create symbolic links to the names in the first
column. This example will result in the following files on
the &os; system:</para>
<screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -&gt; libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -&gt; libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
<para>If a &linux; shared library already exists with a
matching major revision number to the first column of
the <command>ldd</command> output, it does not need to
be copied to the file named in the last column, as the
existing library should work. It is advisable to copy
the shared library if it is a newer version, though.
The old one can be removed, as long as the symbolic
link points to the new one.</para>
<para>If a &linux; shared library already exists with a
matching major revision number to the first column of the
<command>ldd</command> output, it does not need to be copied
to the file named in the last column, as the existing library
should work. It is advisable to copy the shared library if it
is a newer version, though. The old one can be removed, as
long as the symbolic link points to the new one.</para>
<para>For example, these
libraries already exist on the &os; system:</para>
<para>For example, these libraries already exist on the &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 -&gt; libc.so.4.6.27</screen>
<para>and <command>ldd</command> indicates that a binary requires a later version:</para>
<para>and <command>ldd</command> indicates that a binary
requires a later version:</para>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
<para>Since the existing library is only one or two versions out of date
in the last digit,
the program should still work with the slightly older
version. However, it is safe to replace the
existing <filename>libc.so</filename> with the newer version:</para>
<para>Since the existing library is only one or two versions out
of date in the last digit, the program should still work with
the slightly older version. However, it is safe to replace
the existing <filename>libc.so</filename> with the newer
version:</para>
<screen>/compat/linux/lib/libc.so.4.6.29
<screen>/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
<para>Generally, one will need to look for the shared
libraries that &linux; binaries depend on only the first few
times that a &linux; program is installed on &os;. After a
while, there will be a sufficient set of &linux; shared
libraries on the system to be able to run newly installed
&linux; binaries without any extra work.</para>
<para>Generally, one will need to look for the shared libraries
that &linux; binaries depend on only the first few times that
a &linux; program is installed on &os;. After a while, there
will be a sufficient set of &linux; shared libraries on the
system to be able to run newly installed &linux; binaries
without any extra work.</para>
</sect2>
<sect2>
<title>Installing &linux; <acronym>ELF</acronym> Binaries</title>
<title>Installing &linux; <acronym>ELF</acronym>
Binaries</title>
<indexterm>
<primary>Linux</primary>
<secondary>ELF binaries</secondary>
</indexterm>
<para><acronym>ELF</acronym> binaries sometimes require an extra step.
When an unbranded <acronym>ELF</acronym> binary is
<para><acronym>ELF</acronym> binaries sometimes require an extra
step. When an unbranded <acronym>ELF</acronym> binary is
executed, it will generate an error message:</para>
<screen>&prompt.user; <userinput>./my-linux-elf-binary</userinput>
@ -239,53 +241,57 @@ ELF binary type not known
Abort</screen>
<para>To help the &os; kernel distinguish between a &os;
<acronym>ELF</acronym> binary and a &linux; binary, use &man.brandelf.1;:</para>
<acronym>ELF</acronym> binary and a &linux; binary, use
&man.brandelf.1;:</para>
<screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen>
<indexterm>
<primary>GNU toolchain</primary>
</indexterm>
<para>Since the GNU toolchain places the appropriate branding
information into <acronym>ELF</acronym> binaries automatically, this step is
usually not necessary.</para>
information into <acronym>ELF</acronym> binaries
automatically, this step is usually not necessary.</para>
</sect2>
<sect2>
<title>Installing a &linux; <acronym>RPM</acronym> Based Application</title>
<title>Installing a &linux; <acronym>RPM</acronym> Based
Application</title>
<para>In order to install a &linux; <acronym>RPM</acronym>-based application, first
install the <package>archivers/rpm2cpio</package> package or
port. Once installed,
<systemitem class="username">root</systemitem> can use this
command to install a <filename>.rpm</filename>:</para>
<para>In order to install a &linux; <acronym>RPM</acronym>-based
application, first install the
<package>archivers/rpm2cpio</package> package or port. Once
installed, <systemitem class="username">root</systemitem> can
use this command to install a
<filename>.rpm</filename>:</para>
<screen>&prompt.root; <userinput>cd /compat/linux</userinput>
&prompt.root; <userinput>rpm2cpio -q &lt; /path/to/linux.archive.rpm | cpio -id</userinput></screen>
<para>If necessary, <command>brandelf</command> the installed
<acronym>ELF</acronym> binaries.
Note that this will prevent a clean uninstall.</para>
<acronym>ELF</acronym> binaries. Note that this will prevent
a clean uninstall.</para>
</sect2>
<sect2>
<title>Configuring the Hostname Resolver</title>
<para>If <acronym>DNS</acronym> does not work or this error appears:</para>
<para>If <acronym>DNS</acronym> does not work or this error
appears:</para>
<screen>resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword</screen>
<para>configure
<filename>/compat/linux/etc/host.conf</filename> as
follows:</para>
<para>configure <filename>/compat/linux/etc/host.conf</filename>
as follows:</para>
<programlisting>order hosts, bind
multi on</programlisting>
<para>This specifies that <filename>/etc/hosts</filename>
is searched first and <acronym>DNS</acronym> is searched second. When
<filename>/compat/linux/etc/host.conf</filename> does not
<para>This specifies that <filename>/etc/hosts</filename> is
searched first and <acronym>DNS</acronym> is searched second.
When <filename>/compat/linux/etc/host.conf</filename> does not
exist, &linux; applications use
<filename>/etc/host.conf</filename> and complain about the
incompatible &os; syntax. Remove <literal>bind</literal> if a