Date: Thu, 20 Mar 2014 14:40:52 +0000 (UTC) From: Dru Lavigne <dru@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r44294 - head/en_US.ISO8859-1/books/handbook/linuxemu Message-ID: <201403201440.s2KEercY065755@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dru Date: Thu Mar 20 14:40:52 2014 New Revision: 44294 URL: http://svnweb.freebsd.org/changeset/doc/44294 Log: Some more edits to Linux Emulation. Sponsored by: iXsystems Modified: head/en_US.ISO8859-1/books/handbook/linuxemu/chapter.xml Modified: head/en_US.ISO8859-1/books/handbook/linuxemu/chapter.xml ============================================================================== --- head/en_US.ISO8859-1/books/handbook/linuxemu/chapter.xml Thu Mar 20 04:13:05 2014 (r44293) +++ head/en_US.ISO8859-1/books/handbook/linuxemu/chapter.xml Thu Mar 20 14:40:52 2014 (r44294) @@ -146,52 +146,24 @@ Id Refs Address Size Name described in <xref linkend="kernelconfig"/>.</para> <sect2 xml:id="linuxemu-libs-manually"> - <title>Installing Libraries Manually</title> - - <para>While using the Ports Collection is recommended, &linux; - libraries can be installed manually. The &linux; shared - libraries required by a program and the runtime linker should - be copied to <filename>/compat/linux</filename>. Any shared - libraries opened by &linux; programs run under &os; will look - in this directory first. For example, if a &linux; program - loads <filename>/lib/libc.so</filename>, &os; will first try - to open <filename>/compat/linux/lib/libc.so</filename>, and if - that does not exist, it will then try - <filename>/lib/libc.so</filename>. Shared libraries should be - installed to <filename>/compat/linux/lib</filename> rather - than to the paths that the &linux; <command>ld.so</command> - reports.</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 imported - &linux; binaries without any extra work.</para> - - <sect3> - <title>How to Install Additional Shared Libraries</title> + <title>Installing Additional Libraries Manually</title> <indexterm> <primary>shared libraries</primary> </indexterm> - <para>If the <literal>linux_base</literal> port is installed - and an application still complains about missing shared - libraries, there are two methods - <systemitem class="username">root</systemitem> can use to - determine which shared libraries the &linux; binaries - need.</para> - - <para>If a &linux; system is available, determine which shared - libraries the application needs, and copy them to the &os; - system.</para> - - <informalexample> - <para>In this example, FTP was used to download the &linux; - binary of <application>Doom</application> on a &linux; - system . To check which shared libraries it needs, run - <command>ldd linuxdoom</command>:</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> <screen>&prompt.user; <userinput>ldd linuxdoom</userinput> libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 @@ -201,10 +173,10 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/ <indexterm> <primary>symbolic links</primary> </indexterm> - <para>Copy all the files in the last column into + <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, with the names in the first column as - symbolic links pointing to them. This example will result + 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 @@ -214,8 +186,6 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/ /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen> - <blockquote> - <note> <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 @@ -223,61 +193,53 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/ 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. For example, these - libraries exist on the system:</para> + link points to the new one.</para> + + <para>For example, these + libraries already exist on the &os; system:</para> <screen>/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen> - <para>and a binary claims to require a later version - according to the output of - <command>ldd</command>:</para> + <para>and <command>ldd</command> indicates that a binary requires a later version:</para> <screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen> - <para>If it is only one or two versions out of date - in the trailing digit, do not worry about copying - <filename>/lib/libc.so.4.6.29</filename>, because - the program should work fine with the slightly older + <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 - <filename>libc.so</filename>:</para> + existing <filename>libc.so</filename> with the newer version:</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>The symbolic link mechanism is - <emphasis>only</emphasis> needed for &linux; binaries - as the &os; runtime linker takes care of looking for - matching major revision numbers.</para> - </note> - </blockquote> - </informalexample> - </sect3> + <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; ELF Binaries</title> + <title>Installing &linux; <acronym>ELF</acronym> Binaries</title> <indexterm> <primary>Linux</primary> <secondary>ELF binaries</secondary> </indexterm> - <para>ELF binaries sometimes require an extra step of - <quote>branding</quote>. If an unbranded ELF binary is - executed, it will generate an error message like the - following:</para> + <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> ELF binary type not known Abort</screen> <para>To help the &os; kernel distinguish between a &os; - ELF 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> @@ -285,49 +247,44 @@ Abort</screen> <primary>GNU toolchain</primary> </indexterm> <para>Since the GNU toolchain places the appropriate branding - information into ELF binaries automatically, this step is + information into <acronym>ELF</acronym> binaries automatically, this step is usually not necessary.</para> </sect2> <sect2> - <title>Installing a &linux; RPM Based Application</title> + <title>Installing a &linux; <acronym>RPM</acronym> Based Application</title> - <para>&os; uses its own package database to track all software - installed from the Ports Collection. However, the &linux; RPM - database is not supported.</para> - - <para>In order to install a &linux; RPM-based application, first + <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> as - follows:</para> + command to install a <filename>.rpm</filename>:</para> <screen>&prompt.root; <userinput>cd /compat/linux</userinput> &prompt.root; <userinput>rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id</userinput></screen> <para>If necessary, <command>brandelf</command> the installed - ELF binaries, but <emphasis>not</emphasis> the libraries. + <acronym>ELF</acronym> binaries. Note that this will prevent a clean uninstall.</para> </sect2> <sect2> <title>Configuring the Hostname Resolver</title> - <para>If DNS 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 + <para>configure <filename>/compat/linux/etc/host.conf</filename> as follows:</para> <programlisting>order hosts, bind multi on</programlisting> - <para>This order specifies that <filename>/etc/hosts</filename> - is searched first and DNS is searched second. When + <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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201403201440.s2KEercY065755>