old-www/HOWTO/Linux+FreeBSD-6.html

95 lines
3.4 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux+FreeBSD mini-HOWTO: Running foreign binaries</TITLE>
<LINK HREF="Linux+FreeBSD-7.html" REL=next>
<LINK HREF="Linux+FreeBSD-5.html" REL=previous>
<LINK HREF="Linux+FreeBSD.html#toc6" REL=contents>
</HEAD>
<BODY>
<A HREF="Linux+FreeBSD-7.html">Next</A>
<A HREF="Linux+FreeBSD-5.html">Previous</A>
<A HREF="Linux+FreeBSD.html#toc6">Contents</A>
<HR>
<H2><A NAME="s6">6. Running foreign binaries</A><!--FreeBSD dualboot!foreign binaries--></H2>
<H2><A NAME="ss6.1">6.1 Running FreeBSD binaries under Linux</A>
<!--FreeBSD dualboot!foreign binaries!FreeBSD in Linux--></H2>
<P>The <CODE>iBCS</CODE> package has support for running FreeBSD binaries under Linux;
but it's old and unmaintained. I cannot get it to work. Please let me know if
you have had better luck with this.
<P>
<H2><A NAME="ss6.2">6.2 Running Linux binaries under FreeBSD</A>
<!--FreeBSD dualboot!foreign binaries!Linux in FreeBSD--></H2>
<P>FreeBSD has the ability to run Linux binaries, both in a.out and ELF formats.
To do this you have to take the following three steps:
<P>
<OL>
<LI>You have to enable Linux compatibility. To do this (in FreeBSD 2.2.2 ---
details may vary in other versions) you have to edit your <CODE>/etc/rc.conf</CODE>
file and change
<PRE>
linux_enable="NO"
</PRE>
to
<PRE>
linux_enable="YES"
</PRE>
and reboot. Another way to load the Linux binary support is to execute the
command <CODE>/usr/bin/linux</CODE>. This way you don't have to reboot, and you
don't always have the Linux binary support loaded (i.e. you save memory.)
Remember to add the line
<PRE>
options COMPAT_LINUX
</PRE>
to the FreeBSD kernel config file if you build a new FreeBSD kernel.
</LI>
<LI>You have to install the Linux shared libraries if your Linux binaries are
dynamically linked. The libraries are included in FreeBSD 2.2.{2,5,6}
as the package <CODE>linux_lib-2.4.tgz</CODE> (newer versions might be
available.)
Run the following command to install the package:
<PRE>
pkg_add &lt;path_to_package>/linux_lib-2.4.tgz
</PRE>
&lt;path_to_package&gt; is the directory where the package
is stored. You may also load it off the net by:
<PRE>
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgz
</PRE>
or by re-running <CODE>/stand/sysinstall</CODE>. Enter ``Configure'', ``Packages''
and use the menus. You should execute the following command if you are running
statically linked Linux binaries:
<PRE>
brandelf -t Linux &lt;name_of_statically_linked_linux_binary>
</PRE>
</LI>
<LI>Install the Linux program(s) you want to run. The program(s) can be
installed on either UFS or ext2fs filesystems. See section
<A HREF="Linux+FreeBSD-5.html#ext2fs">Mounting ext2fs filesystems under FreeBSD</A> for more information about
using ext2fs filesystems under FreeBSD.
</LI>
</OL>
<P>I have successfully run the Linux versions of Applixware 4.3 and Netscape 3.01
(both ELF format) under FreeBSD 2.2.2 using this method (yes, I know there is
a native FreeBSD version of Netscape 4.) The Linux versions of acroread and
StarOffice 3 and 4 also work well under FreeBSD. StarOffice 5 depends on
native Linux threads and currently do not work under FreeBSD. Read the FreeBSD
documentation for more information on this topic.
<P>
<HR>
<A HREF="Linux+FreeBSD-7.html">Next</A>
<A HREF="Linux+FreeBSD-5.html">Previous</A>
<A HREF="Linux+FreeBSD.html#toc6">Contents</A>
</BODY>
</HTML>