White space only changes to fix long lines.

This commit is contained in:
David E. O'Brien 1999-09-15 19:29:38 +00:00
parent 19d4d8cc1a
commit 44173f163e
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=5634
2 changed files with 172 additions and 150 deletions

View file

@ -12,19 +12,19 @@
<sect1>
<title>How to Install the Linux Mode</title>
<para>Linux binary compatibility in FreeBSD has reached a point where it is possible
to run a large fraction of Linux binaries in both a.out and ELF format.
The Linux compatibility in the 2.1-STABLE branch is capable of running Linux
DOOM and Mathematica; the version present in &rel.current;-RELEASE is
vastly more capable and runs all these as well as Oracle8,
WordPerfect, StarOffice, Acrobat, Quake, Abuse, IDL, and
<para>Linux binary compatibility in FreeBSD has reached a point where it
is possible to run a large fraction of Linux binaries in both a.out and
ELF format. The Linux compatibility in the 2.1-STABLE branch is capable
of running Linux DOOM and Mathematica; the version present in
&rel.current;-RELEASE is vastly more capable and runs all these as well
as Oracle8, WordPerfect, StarOffice, Acrobat, Quake, Abuse, IDL, and
netrek for Linux and a whole host of other programs.</para>
<para>There are some Linux-specific operating system features that are not
supported on FreeBSD. Linux binaries will not work on FreeBSD if they
overly use the Linux <filename>/proc</filename> filesystem (which is different
from the optional FreeBSD <filename>/proc</filename> filesystem) or
i386-specific calls, such as enabling virtual 8086 mode.</para>
overly use the Linux <filename>/proc</filename> filesystem (which is
different from the optional FreeBSD <filename>/proc</filename> filesystem)
or i386-specific calls, such as enabling virtual 8086 mode.</para>
<para>Depending on which version of FreeBSD you are running, how you get
Linux mode up will vary somewhat:</para>
@ -33,10 +33,11 @@
<title>Installing Linux Mode in 3.0-RELEASE and later</title>
<para>It is no longer necessary to specify <literal>options
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an KLD object (&ldquo;Kernel LoaDable object&rdquo;)
so it can be installed on the fly without having to reboot. You will
need the following things in your startup files, however:</para>
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an KLD object (&ldquo;Kernel LoaDable
object&rdquo;) so it can be installed on the fly without having to
reboot. You will need the following things in your startup files,
however:</para>
<orderedlist>
<listitem>
@ -59,7 +60,8 @@ fi</programlisting>
</listitem>
</orderedlist>
<para>If you want to verify that the KLD is loaded, <command>kldstat</command> will do that:</para>
<para>If you want to verify that the KLD is loaded,
<command>kldstat</command> will do that:</para>
<screen>&prompt.user; kldstat
Id Refs Address Size Name
@ -67,25 +69,26 @@ Id Refs Address Size Name
7 1 0xc24db000 d000 linux.ko</screen>
<para>If for some reason you do not want to or cannot load the
Linux KLD, then statically link the binary compatibility in the kernel by
adding
Linux KLD, then statically link the binary compatibility in the kernel
by adding
<programlisting>
options LINUX</programlisting>
to your kernel config file. Then run <command>config</command> and install the new
kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
to your kernel config file. Then run <command>config</command> and install
the new kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
</sect2>
<sect2>
<title>Installing Linux Mode in 2.2.2-RELEASE and later 2.2.x versions</title>
<para>It is no longer necessary to specify <literal>options
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an LKM (&ldquo;Loadable Kernel Module&rdquo;)
so it can be installed on the fly without having to reboot. You will
need the following things in your startup files, however:</para>
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an LKM (&ldquo;Loadable Kernel
Module&rdquo;) so it can be installed on the fly without having to
reboot. You will need the following things in your startup files,
however:</para>
<orderedlist>
<listitem>
@ -122,9 +125,9 @@ EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod</screen>
<programlisting>
options LINUX</programlisting>
to your kernel config file. Then run <command>config</command> and install the new
kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
to your kernel config file. Then run <command>config</command> and
install the new kernel as described in the
<link linkend="kernelconfig">kernel configuration</link> section.</para>
</sect2>
<sect2>
@ -132,12 +135,12 @@ options LINUX</programlisting>
<para>The <filename>GENERIC</filename> kernel in 2.1-STABLE is not
configured for Linux compatibility so you must reconfigure your kernel
for it. There are two ways to do this: 1. linking the binary compatibility
statically in the kernel itself and 2. configuring your kernel to
dynamically load the Linux loadable kernel module (LKM).</para>
for it. There are two ways to do this: 1. linking the binary
compatibility statically in the kernel itself and 2. configuring your
kernel to dynamically load the Linux loadable kernel module (LKM).</para>
<para>To enable Linux binary compatibility, add the following to your configuration
file (c.f. <filename>/sys/i386/conf/LINT</filename>):</para>
<para>To enable Linux binary compatibility, add the following to your
configuration file (c.f. <filename>/sys/i386/conf/LINT</filename>):</para>
<programlisting>
options COMPAT_LINUX</programlisting>
@ -154,15 +157,15 @@ options SYSVSHM</programlisting>
<programlisting>
options "COMPAT_43"</programlisting>
<para>If you prefer to statically link the binary compatibility in the kernel rather
than use the loadable kernel module (LKM), then add</para>
<para>If you prefer to statically link the binary compatibility in the
kernel rather than use the loadable kernel module (LKM), then add</para>
<programlisting>
options LINUX</programlisting>
<para>Then run <command>config</command> and install the new kernel as described in the
<link linkend="kernelconfig">kernel configuration</link>
section.</para>
<para>Then run <command>config</command> and install the new kernel as
described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
<para>If you decide to use the LKM you must also install the loadable
module. A mismatch of versions between the kernel and loadable module
@ -193,9 +196,10 @@ Module Name EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator</screen>
<programlisting>
linux=YES</programlisting>
by changing it from <literal>NO</literal> to <literal>YES</literal>. FreeBSD 2.1 RELEASE and earlier do not
have such a line and on those you will need to edit
<filename>/etc/rc.local</filename> to add the following line.</para>
by changing it from <literal>NO</literal> to <literal>YES</literal>.
FreeBSD 2.1 RELEASE and earlier do not have such a line and on those you
will need to edit <filename>/etc/rc.local</filename> to add the following
line.</para>
<programlisting>
linux</programlisting>
@ -215,13 +219,14 @@ linux</programlisting>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
<para>and you should have working Linux binary compatibility. Legend (and the
mail archives <!-- smiley -->:-) seems to hold that Linux mode
works best with Linux binaries linked against the ZMAGIC libraries;
QMAGIC libraries (such as those used in Slackware V2.0) may tend to
give the Linux mode heartburn. Also, expect some programs to
complain about incorrect minor versions of the system libraries. In
general, however, this does not seem to be a problem.</para>
<para>and you should have working Linux binary compatibility. Legend
(and the mail archives <!-- smiley -->:-) seems to hold that Linux
mode works best with Linux binaries linked against the ZMAGIC
libraries; QMAGIC libraries (such as those used in Slackware V2.0)
may tend to give the Linux mode heartburn. Also, expect some
programs to complain about incorrect minor versions of the system
libraries. In general, however, this does not seem to be a
problem.</para>
</sect3>
<sect3>
@ -368,9 +373,10 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>Create the file
<filename>/compat/linux/etc/ld.so.conf</filename>, containing the
directories in which the Linux runtime linker should look for shared
libraries. It is a plain text file, containing a directory name on each
line. <filename>/lib</filename> and <filename>/usr/lib</filename>
are standard, you could add the following:</para>
libraries. It is a plain text file, containing a directory name on
each line. <filename>/lib</filename> and
<filename>/usr/lib</filename> are standard, you could add the
following:</para>
<programlisting>
/usr/X11/lib
@ -384,8 +390,8 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<filename>/compat/linux/usr/X11/lib/libX11.so</filename>, etc.) in
order for the Linux ABI loader to find them.</para>
<para>Those running FreeBSD 2.2-RELEASE should run the Linux <command>ldconfig</command>
program.</para>
<para>Those running FreeBSD 2.2-RELEASE should run the Linux
<command>ldconfig</command> program.</para>
<screen>&prompt.root <userinput>cd /compat/linux/lib</userinput>
&prompt.root; <userinput>/compat/linux/sbin/ldconfig</userinput></screen>
@ -547,10 +553,11 @@ multi on</programlisting>
separate packages. Normally, they are controlled by an install
program, but you can retrieve files &ldquo;by hand&rdquo; too. First
of all, you will need to look in the <filename>contents</filename>
subdirectory of the distribution. You will find a lot of small text files
here describing the contents of the separate packages. The fastest
way to look something up is to retrieve all the files in the contents
subdirectory, and <command>grep</command> through them for the file you need. Here is an
subdirectory of the distribution. You will find a lot of small text
files here describing the contents of the separate packages. The
fastest way to look something up is to retrieve all the files in the
contents subdirectory, and <command>grep</command> through them for
the file you need. Here is an
example of a list of files that you might need, and in which
contents-file you will find it by grepping through them:</para>
@ -750,15 +757,16 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>It will ask you to enter your license number and the Wolfram
supplied password. If you get them mixed up or for some reason the
<command>math.install</command> fails, that is OK; you can simply edit the file
<filename>mathpass</filename> in this same directory to correct the
info manually.</para>
<command>math.install</command> fails, that is OK; you can simply edit
the file <filename>mathpass</filename> in this same directory to
correct the info manually.</para>
<para>After getting past the password, <command>math.install</command> will ask you if you
accept the install defaults provided, or if you want to use your own.
If you are like us and distrust all install programs, you probably
want to specify the actual directories. Beware. Although the
<command>math.install</command> program asks you to specify directories, it will not
<para>After getting past the password, <command>math.install</command>
will ask you if you accept the install defaults provided, or if you
want to use your own. If you are like us and distrust all install
programs, you probably want to specify the actual directories.
Beware. Although the <command>math.install</command> program asks
you to specify directories, it will not
create them for you, so you should perhaps have a second window open
with another shell so that you can create them before you give them to
the install program. Or, if it fails, you can create the directories
@ -799,8 +807,9 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
execute the <command>xfe.install</command> shell script. You will
have to tell it where to put things, but you do not have to create any
directories because it will use the same directories that had been
created for <command>math.install</command>. When it finishes, there should be a new
shell script in <filename>/usr/local/Mathematica/bin</filename> called
created for <command>math.install</command>. When it finishes, there
should be a new shell script in
<filename>/usr/local/Mathematica/bin</filename> called
<filename>mathematica</filename>.</para>
<para>Lastly, you need to modify each of the shell scripts that
@ -819,8 +828,9 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<screen>&prompt.user; <userinput>RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF</userinput></screen>
<para>This tells Mathematica to use the Linux version of <filename>host.conf</filename>.
This file has a different syntax from FreeBSD's <filename>host.conf</filename>, so you will
<para>This tells Mathematica to use the Linux version of
<filename>host.conf</filename>. This file has a different syntax
from FreeBSD's <filename>host.conf</filename>, so you will
get an error message about <filename>/etc/host.conf</filename> if you
leave this out.</para>
@ -847,8 +857,8 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>We have not found the cause for this, but it only affects the
Notebook's X Window front end, not the mathematica engine itself. So
the command line interface invoked by <command>math</command> is unaffected by this
bug.</para>
the command line interface invoked by <command>math</command> is
unaffected by this bug.</para>
</sect2>
<sect2>
@ -918,8 +928,9 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>When the ELF loader sees the <literal>Linux</literal> brand, the
loader replaces a pointer in the <literal>proc</literal>
structure. All system calls are indexed through this pointer (in a
traditional UNIX system, this would be the <literal>sysent[]</literal> structure array, containing the system
calls). In addition, the process is flagged for special handling of the
traditional UNIX system, this would be the <literal>sysent[]</literal>
structure array, containing the system calls). In addition, the
process flagged for special handling of the
trap vector for the signal trampoline code, and sever other (minor)
fix-ups that are handled by the Linux kernel module.</para>
@ -941,8 +952,8 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
done in the
<filename>/<replaceable>original-path</replaceable></filename>
directory. This makes sure that binaries that require other binaries
can run (e.g., the Linux toolchain can all run under Linux ABI support). It
also means that the Linux binaries can load and exec FreeBSD binaries,
can run (e.g., the Linux toolchain can all run under Linux ABI support).
It also means that the Linux binaries can load and exec FreeBSD binaries,
if there are no corresponding Linux binaries present, and that you could
place a &man.uname.1; command in the <filename>/compat/linux</filename>
directory tree to ensure that the Linux binaries could not tell they
@ -973,8 +984,8 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
implementation, not an emulation. There is no emulator (or simulator,
to cut off the next question) involved.</para>
<para>So why is it sometimes called &ldquo;Linux emulation&rdquo;? To make it hard
to sell FreeBSD! <!-- smiley -->8-). Really, it is because the
<para>So why is it sometimes called &ldquo;Linux emulation&rdquo;? To make
it hard to sell FreeBSD! <!-- smiley -->8-). Really, it is because the
historical implementation was done at a time when there was really no
word other than that to describe what was going on; saying that FreeBSD
ran Linux binaries was not true, if you did not compile the code in or

View file

@ -12,19 +12,19 @@
<sect1>
<title>How to Install the Linux Mode</title>
<para>Linux binary compatibility in FreeBSD has reached a point where it is possible
to run a large fraction of Linux binaries in both a.out and ELF format.
The Linux compatibility in the 2.1-STABLE branch is capable of running Linux
DOOM and Mathematica; the version present in &rel.current;-RELEASE is
vastly more capable and runs all these as well as Oracle8,
WordPerfect, StarOffice, Acrobat, Quake, Abuse, IDL, and
<para>Linux binary compatibility in FreeBSD has reached a point where it
is possible to run a large fraction of Linux binaries in both a.out and
ELF format. The Linux compatibility in the 2.1-STABLE branch is capable
of running Linux DOOM and Mathematica; the version present in
&rel.current;-RELEASE is vastly more capable and runs all these as well
as Oracle8, WordPerfect, StarOffice, Acrobat, Quake, Abuse, IDL, and
netrek for Linux and a whole host of other programs.</para>
<para>There are some Linux-specific operating system features that are not
supported on FreeBSD. Linux binaries will not work on FreeBSD if they
overly use the Linux <filename>/proc</filename> filesystem (which is different
from the optional FreeBSD <filename>/proc</filename> filesystem) or
i386-specific calls, such as enabling virtual 8086 mode.</para>
overly use the Linux <filename>/proc</filename> filesystem (which is
different from the optional FreeBSD <filename>/proc</filename> filesystem)
or i386-specific calls, such as enabling virtual 8086 mode.</para>
<para>Depending on which version of FreeBSD you are running, how you get
Linux mode up will vary somewhat:</para>
@ -33,10 +33,11 @@
<title>Installing Linux Mode in 3.0-RELEASE and later</title>
<para>It is no longer necessary to specify <literal>options
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an KLD object (&ldquo;Kernel LoaDable object&rdquo;)
so it can be installed on the fly without having to reboot. You will
need the following things in your startup files, however:</para>
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an KLD object (&ldquo;Kernel LoaDable
object&rdquo;) so it can be installed on the fly without having to
reboot. You will need the following things in your startup files,
however:</para>
<orderedlist>
<listitem>
@ -59,7 +60,8 @@ fi</programlisting>
</listitem>
</orderedlist>
<para>If you want to verify that the KLD is loaded, <command>kldstat</command> will do that:</para>
<para>If you want to verify that the KLD is loaded,
<command>kldstat</command> will do that:</para>
<screen>&prompt.user; kldstat
Id Refs Address Size Name
@ -67,25 +69,26 @@ Id Refs Address Size Name
7 1 0xc24db000 d000 linux.ko</screen>
<para>If for some reason you do not want to or cannot load the
Linux KLD, then statically link the binary compatibility in the kernel by
adding
Linux KLD, then statically link the binary compatibility in the kernel
by adding
<programlisting>
options LINUX</programlisting>
to your kernel config file. Then run <command>config</command> and install the new
kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
to your kernel config file. Then run <command>config</command> and install
the new kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
</sect2>
<sect2>
<title>Installing Linux Mode in 2.2.2-RELEASE and later 2.2.x versions</title>
<para>It is no longer necessary to specify <literal>options
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an LKM (&ldquo;Loadable Kernel Module&rdquo;)
so it can be installed on the fly without having to reboot. You will
need the following things in your startup files, however:</para>
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
binary compatibility is done with an LKM (&ldquo;Loadable Kernel
Module&rdquo;) so it can be installed on the fly without having to
reboot. You will need the following things in your startup files,
however:</para>
<orderedlist>
<listitem>
@ -122,9 +125,9 @@ EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod</screen>
<programlisting>
options LINUX</programlisting>
to your kernel config file. Then run <command>config</command> and install the new
kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
to your kernel config file. Then run <command>config</command> and
install the new kernel as described in the
<link linkend="kernelconfig">kernel configuration</link> section.</para>
</sect2>
<sect2>
@ -132,12 +135,12 @@ options LINUX</programlisting>
<para>The <filename>GENERIC</filename> kernel in 2.1-STABLE is not
configured for Linux compatibility so you must reconfigure your kernel
for it. There are two ways to do this: 1. linking the binary compatibility
statically in the kernel itself and 2. configuring your kernel to
dynamically load the Linux loadable kernel module (LKM).</para>
for it. There are two ways to do this: 1. linking the binary
compatibility statically in the kernel itself and 2. configuring your
kernel to dynamically load the Linux loadable kernel module (LKM).</para>
<para>To enable Linux binary compatibility, add the following to your configuration
file (c.f. <filename>/sys/i386/conf/LINT</filename>):</para>
<para>To enable Linux binary compatibility, add the following to your
configuration file (c.f. <filename>/sys/i386/conf/LINT</filename>):</para>
<programlisting>
options COMPAT_LINUX</programlisting>
@ -154,15 +157,15 @@ options SYSVSHM</programlisting>
<programlisting>
options "COMPAT_43"</programlisting>
<para>If you prefer to statically link the binary compatibility in the kernel rather
than use the loadable kernel module (LKM), then add</para>
<para>If you prefer to statically link the binary compatibility in the
kernel rather than use the loadable kernel module (LKM), then add</para>
<programlisting>
options LINUX</programlisting>
<para>Then run <command>config</command> and install the new kernel as described in the
<link linkend="kernelconfig">kernel configuration</link>
section.</para>
<para>Then run <command>config</command> and install the new kernel as
described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
<para>If you decide to use the LKM you must also install the loadable
module. A mismatch of versions between the kernel and loadable module
@ -193,9 +196,10 @@ Module Name EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator</screen>
<programlisting>
linux=YES</programlisting>
by changing it from <literal>NO</literal> to <literal>YES</literal>. FreeBSD 2.1 RELEASE and earlier do not
have such a line and on those you will need to edit
<filename>/etc/rc.local</filename> to add the following line.</para>
by changing it from <literal>NO</literal> to <literal>YES</literal>.
FreeBSD 2.1 RELEASE and earlier do not have such a line and on those you
will need to edit <filename>/etc/rc.local</filename> to add the following
line.</para>
<programlisting>
linux</programlisting>
@ -215,13 +219,14 @@ linux</programlisting>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
<para>and you should have working Linux binary compatibility. Legend (and the
mail archives <!-- smiley -->:-) seems to hold that Linux mode
works best with Linux binaries linked against the ZMAGIC libraries;
QMAGIC libraries (such as those used in Slackware V2.0) may tend to
give the Linux mode heartburn. Also, expect some programs to
complain about incorrect minor versions of the system libraries. In
general, however, this does not seem to be a problem.</para>
<para>and you should have working Linux binary compatibility. Legend
(and the mail archives <!-- smiley -->:-) seems to hold that Linux
mode works best with Linux binaries linked against the ZMAGIC
libraries; QMAGIC libraries (such as those used in Slackware V2.0)
may tend to give the Linux mode heartburn. Also, expect some
programs to complain about incorrect minor versions of the system
libraries. In general, however, this does not seem to be a
problem.</para>
</sect3>
<sect3>
@ -368,9 +373,10 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>Create the file
<filename>/compat/linux/etc/ld.so.conf</filename>, containing the
directories in which the Linux runtime linker should look for shared
libraries. It is a plain text file, containing a directory name on each
line. <filename>/lib</filename> and <filename>/usr/lib</filename>
are standard, you could add the following:</para>
libraries. It is a plain text file, containing a directory name on
each line. <filename>/lib</filename> and
<filename>/usr/lib</filename> are standard, you could add the
following:</para>
<programlisting>
/usr/X11/lib
@ -384,8 +390,8 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<filename>/compat/linux/usr/X11/lib/libX11.so</filename>, etc.) in
order for the Linux ABI loader to find them.</para>
<para>Those running FreeBSD 2.2-RELEASE should run the Linux <command>ldconfig</command>
program.</para>
<para>Those running FreeBSD 2.2-RELEASE should run the Linux
<command>ldconfig</command> program.</para>
<screen>&prompt.root <userinput>cd /compat/linux/lib</userinput>
&prompt.root; <userinput>/compat/linux/sbin/ldconfig</userinput></screen>
@ -547,10 +553,11 @@ multi on</programlisting>
separate packages. Normally, they are controlled by an install
program, but you can retrieve files &ldquo;by hand&rdquo; too. First
of all, you will need to look in the <filename>contents</filename>
subdirectory of the distribution. You will find a lot of small text files
here describing the contents of the separate packages. The fastest
way to look something up is to retrieve all the files in the contents
subdirectory, and <command>grep</command> through them for the file you need. Here is an
subdirectory of the distribution. You will find a lot of small text
files here describing the contents of the separate packages. The
fastest way to look something up is to retrieve all the files in the
contents subdirectory, and <command>grep</command> through them for
the file you need. Here is an
example of a list of files that you might need, and in which
contents-file you will find it by grepping through them:</para>
@ -750,15 +757,16 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>It will ask you to enter your license number and the Wolfram
supplied password. If you get them mixed up or for some reason the
<command>math.install</command> fails, that is OK; you can simply edit the file
<filename>mathpass</filename> in this same directory to correct the
info manually.</para>
<command>math.install</command> fails, that is OK; you can simply edit
the file <filename>mathpass</filename> in this same directory to
correct the info manually.</para>
<para>After getting past the password, <command>math.install</command> will ask you if you
accept the install defaults provided, or if you want to use your own.
If you are like us and distrust all install programs, you probably
want to specify the actual directories. Beware. Although the
<command>math.install</command> program asks you to specify directories, it will not
<para>After getting past the password, <command>math.install</command>
will ask you if you accept the install defaults provided, or if you
want to use your own. If you are like us and distrust all install
programs, you probably want to specify the actual directories.
Beware. Although the <command>math.install</command> program asks
you to specify directories, it will not
create them for you, so you should perhaps have a second window open
with another shell so that you can create them before you give them to
the install program. Or, if it fails, you can create the directories
@ -799,8 +807,9 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
execute the <command>xfe.install</command> shell script. You will
have to tell it where to put things, but you do not have to create any
directories because it will use the same directories that had been
created for <command>math.install</command>. When it finishes, there should be a new
shell script in <filename>/usr/local/Mathematica/bin</filename> called
created for <command>math.install</command>. When it finishes, there
should be a new shell script in
<filename>/usr/local/Mathematica/bin</filename> called
<filename>mathematica</filename>.</para>
<para>Lastly, you need to modify each of the shell scripts that
@ -819,8 +828,9 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<screen>&prompt.user; <userinput>RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF</userinput></screen>
<para>This tells Mathematica to use the Linux version of <filename>host.conf</filename>.
This file has a different syntax from FreeBSD's <filename>host.conf</filename>, so you will
<para>This tells Mathematica to use the Linux version of
<filename>host.conf</filename>. This file has a different syntax
from FreeBSD's <filename>host.conf</filename>, so you will
get an error message about <filename>/etc/host.conf</filename> if you
leave this out.</para>
@ -847,8 +857,8 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>We have not found the cause for this, but it only affects the
Notebook's X Window front end, not the mathematica engine itself. So
the command line interface invoked by <command>math</command> is unaffected by this
bug.</para>
the command line interface invoked by <command>math</command> is
unaffected by this bug.</para>
</sect2>
<sect2>
@ -918,8 +928,9 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>When the ELF loader sees the <literal>Linux</literal> brand, the
loader replaces a pointer in the <literal>proc</literal>
structure. All system calls are indexed through this pointer (in a
traditional UNIX system, this would be the <literal>sysent[]</literal> structure array, containing the system
calls). In addition, the process is flagged for special handling of the
traditional UNIX system, this would be the <literal>sysent[]</literal>
structure array, containing the system calls). In addition, the
process flagged for special handling of the
trap vector for the signal trampoline code, and sever other (minor)
fix-ups that are handled by the Linux kernel module.</para>
@ -941,8 +952,8 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
done in the
<filename>/<replaceable>original-path</replaceable></filename>
directory. This makes sure that binaries that require other binaries
can run (e.g., the Linux toolchain can all run under Linux ABI support). It
also means that the Linux binaries can load and exec FreeBSD binaries,
can run (e.g., the Linux toolchain can all run under Linux ABI support).
It also means that the Linux binaries can load and exec FreeBSD binaries,
if there are no corresponding Linux binaries present, and that you could
place a &man.uname.1; command in the <filename>/compat/linux</filename>
directory tree to ensure that the Linux binaries could not tell they
@ -973,8 +984,8 @@ richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
implementation, not an emulation. There is no emulator (or simulator,
to cut off the next question) involved.</para>
<para>So why is it sometimes called &ldquo;Linux emulation&rdquo;? To make it hard
to sell FreeBSD! <!-- smiley -->8-). Really, it is because the
<para>So why is it sometimes called &ldquo;Linux emulation&rdquo;? To make
it hard to sell FreeBSD! <!-- smiley -->8-). Really, it is because the
historical implementation was done at a time when there was really no
word other than that to describe what was going on; saying that FreeBSD
ran Linux binaries was not true, if you did not compile the code in or