summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/doc/handbook/Makefile4
-rw-r--r--share/doc/handbook/authors.sgml10
-rw-r--r--share/doc/handbook/handbook.sgml3
-rw-r--r--share/doc/handbook/linuxemu.sgml663
-rw-r--r--share/doc/handbook/sections.sgml3
5 files changed, 678 insertions, 5 deletions
diff --git a/share/doc/handbook/Makefile b/share/doc/handbook/Makefile
index d3e2aa9..fe4147c 100644
--- a/share/doc/handbook/Makefile
+++ b/share/doc/handbook/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.10 1996/03/04 22:50:27 mpp Exp $
+# $Id: Makefile,v 1.11 1996/05/01 20:10:46 phk Exp $
SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml
SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml dialup.sgml
@@ -10,6 +10,6 @@ SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml
SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml quotas.sgml relnotes.sgml
SRCS+= routing.sgml scsi.sgml sections.sgml sio.sgml
SRCS+= skey.sgml slipc.sgml slips.sgml stable.sgml submitters.sgml sup.sgml
-SRCS+= synching.sgml troubleshooting.sgml userppp.sgml uart.sgml
+SRCS+= synching.sgml troubleshooting.sgml userppp.sgml uart.sgml linuxemu.sgml
.include <bsd.sgml.mk>
diff --git a/share/doc/handbook/authors.sgml b/share/doc/handbook/authors.sgml
index 8390e6b..2422b32 100644
--- a/share/doc/handbook/authors.sgml
+++ b/share/doc/handbook/authors.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: authors.sgml,v 1.19 1996/03/04 23:08:37 mpp Exp $ -->
+<!-- $Id: authors.sgml,v 1.20 1996/05/09 23:04:30 mpp Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
@@ -328,3 +328,11 @@ and double quotes.
<!ENTITY a.fenner "Bill Fenner
<tt><htmlurl url='mailto:fenner@FreeBSD.ORG'
name='&lt;fenner@FreeBSD.ORG&gt;'></tt>">
+
+<!ENTITY a.brian "Brian N. Handy
+ <tt><htmlurl url='mailto:handy@sxt4.physics.montana.edu'
+ name='&lt;handy@sxt4.physics.montana.edu&gt;'></tt>">
+
+<!ENTITY a.chuck "Chuck Robey
+ <tt><htmlurl url='mailto:chuckr@glue.umd.edu'
+ name='&lt;chuckr@glue.umd.edu&gt;'></tt>">
diff --git a/share/doc/handbook/handbook.sgml b/share/doc/handbook/handbook.sgml
index 1f717e9..45f6f56 100644
--- a/share/doc/handbook/handbook.sgml
+++ b/share/doc/handbook/handbook.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: handbook.sgml,v 1.44 1996/05/01 20:10:55 phk Exp $ -->
+<!-- $Id: handbook.sgml,v 1.45 1996/05/09 23:04:40 mpp Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
@@ -140,6 +140,7 @@ name="FreeBSD FTP server"> or one of the numerous
&submitters;
&troubleshooting;
&kerneldebug;
+ &linuxemu;
<chapt><heading>FreeBSD internals</heading>
&booting;
&memoryuse;
diff --git a/share/doc/handbook/linuxemu.sgml b/share/doc/handbook/linuxemu.sgml
new file mode 100644
index 0000000..cb4225b
--- /dev/null
+++ b/share/doc/handbook/linuxemu.sgml
@@ -0,0 +1,663 @@
+<!-- $Id: $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<chapt><heading>Linux Emulation<label id="linuxemu"></heading>
+
+<p><em>Contributed by &a.brian and &a.rich;</em>
+
+<sect><heading>How to install the Linux emulator</heading>
+
+<p>Linux emulation in FreeBSD has reached a point where it's possible
+to run a large fraction of Linux binaries in both a.out and ELF
+format. The linux emulation in the -STABLE branch is capable of
+running Linux DOOM and Mathematica; the version present in
+FreeBSD-CURRENT is vastly more capable and runs all these as well as
+Quake, Abuse, IDL, netrek for Linux and a whole host of other
+programs.
+
+There are some Linux-specific operating system features that are not
+supported on FreeBSD. Linux binaries will not work on FreeBSD if they
+use the Linux /proc filesystem (which is different from the optional
+FreeBSD /proc filesystem) or i386-specific calls, such as enabling
+virtual 8086 mode.
+
+<p>To tell whether your kernel is configured for Linux
+compatibility simply run any Linux binary. If it
+prints the error message
+<verb>
+linux-executable: Exec format error. Wrong Architecture.
+</verb>
+then you do not have linux compatibility support and
+you need to configure and install a new kernel.
+
+Depending on which version of FreeBSD you are running, how you get
+Linux-emulation up will vary slightly:
+
+<sect1><heading>Installing Linux Emulation in 2.1-STABLE</heading>
+
+<p>The GENERIC kernel in 2.1-stable is not configured for linux
+compatibility so you you must reconfigure your kernel for it. There
+are two ways to do this: 1. linking the emulator statically in the
+kernel itself and 2. configuring your kernel to dynamically load the
+linux loadable kernel module (LKM).
+
+<p>To enable the emulator, add the following to your configuration file
+(c.f. /sys/i386/conf/LINT):
+<tscreen>
+<verb>
+options "COMPAT_LINUX"
+</verb>
+</tscreen>
+If you want to run doom or other applications
+that need shared memory
+also add the following.
+<tscreen>
+<verb>
+options SYSVSHM
+</verb>
+</tscreen>
+The linux system calls require 4.3 BSD system call compatibility. So
+make sure you have the following.
+<tscreen>
+<verb>
+options "COMPAT_43"
+</verb>
+</tscreen>
+
+If you prefer to statically link the emulator in the kernel rather than
+use the loadable kernel module (LKM), then add
+<tscreen>
+<verb>
+options LINUX
+</verb>
+</tscreen>
+Then run config and install the new kernel as described in the
+<ref id="kernelconfig:config" name="Configuration File">
+section.
+
+If you decide to use the LKM you must also install the loadable
+module. A mismatch of versions between the kernel and loadable
+module can cause the kernel to crash, so the safest thing to do is to
+reinstall the LKM when you install the kernel.
+<tscreen>
+<verb>
+cd /usr/src/lkm/linux
+make all install
+</verb>
+</tscreen>
+Once you have installed the kernel and the LKM, you can invoke
+<tscreen>
+<verb>
+linux
+</verb>
+</tscreen>
+as root to load the LKM. To see whether the LKM is loaded, run
+<tscreen>
+<verb>
+modstat
+</verb>
+</tscreen>
+which should produce output something like this.
+<tscreen>
+<verb>
+Type Id Off Loadaddr Size Info Rev Module Name
+EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator
+</verb>
+</tscreen>
+You can cause the LKM to be loaded when the system boots in either of
+two ways. On FreeBSD-CURRENT and FreeBSD-STABLE enable it in
+/etc/sysconfig
+<tscreen>
+<verb>
+linux=YES
+</verb>
+</tscreen>
+by changing it from NO to YES. FreeBSD 2.1 RELEASE and earlier do not
+have such a line and on those you will need to edit /etc/rc.local to
+add the following line.
+<tscreen>
+<verb>
+linux
+</verb>
+</tscreen>
+
+<sect1><heading>Installing Linux Emulation in 2.2-CURRENT</heading>
+
+<p>In -current it is no longer necessary to specify options "LINUX"
+or options "COMPAT_LINUX". Linux emulation is done with an LKM
+(``Loadable Kernel Module'') so it can be installed on the fly without
+having to reboot. You'll need the following things in your startup files,
+however:
+<enum>
+<item> In <tt>/etc/sysconfig</tt>, you need the following line:
+<verb>
+linux=YES
+</verb>
+<item> This, in turn, triggers the following action in <tt>/etc/rc.i386</tt>:
+<verb>
+# Start the Linux binary emulation if requested.
+if [ "X${linux}" = X"YES" ]; then
+ echo -n ' '; linux
+ # XXX BOGUS - Linux script shouldn't make any output on success
+fi
+</verb>
+</enum>
+
+<p>If you want to verify it's running, <tt>modstat</tt> will do that:
+<tscreen>
+<verb>
+% modstat
+Type Id Off Loadaddr Size Info Rev Module Name
+EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod
+%
+</verb>
+</tscreen>
+However, there have been reports that this fails on some
+FreeBSD-current systems. If for some reason you cannot load the linux
+LKM, then statically link the emulator in the kernel by adding
+<tscreen>
+<verb>
+options LINUX
+</verb>
+</tscreen>
+to your kernel config file. Then run config and install the new
+kernel as described in <ref id="kernelconfig:Building" name="Building
+and Installing a Custom Kernel">.
+
+<sect1><heading>Installing Linux Runtime Libraries</heading>
+
+<sect2><heading>Installing using the linux_lib port</heading>
+
+<p>Most linux applications use shared libraries, so you're still not
+done untill you install the shared libraries. It's possible to do
+this by hand, however, it's vastly simpler to just grab the
+<tt>linux_lib</tt> port:
+<tscreen>
+<verb>
+% cd /usr/ports-current/emulators/linux_lib
+% make all install
+</verb>
+</tscreen>
+
+and you should have a working linux emulator. Legend (and the mail
+archives :-) seems to hold that Linux emulation 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
+Linuxulator heartburn. As of this writing (March 1996) ELF emulation
+is still in the formulative stages but seems to work pretty well. Also,
+expect some programs to complain about incorrect minor versions. In
+general this doesn't seem to be a problem.
+
+<sect2><heading>Installing libraries manually</heading>
+
+<p>If you don't have the ``ports'' distribution, you can install the
+libraries by hand instead. You'll need the Linux shared libraries
+that the program depends on and the runtime linker. Also, you will
+need to create a "shadow root" directory, /compat/linux, for Linux
+libraries on your FreeBSD system. Any shared libraries opened by
+Linux programs run under FreeBSD will look in this tree first. So, if
+a Linux program loads, for example, /lib/libc.so, FreeBSD will first
+try to open /compat/linux/lib/libc.so, and if that does not exist then
+it will try /lib/libc.so. Shared libraries should be installed in the
+shadow tree /compat/linux/lib rather than the paths that the Linux
+ld.so reports.
+
+
+FreeBSD-current works slightly differently with respect to
+/compat/linux. On -current, all files, not just libraries, are
+searched for from the ``shadow root'' /compat/linux.
+
+Generally, you will need to look for the shared libraries that Linux
+binaries depend on only the first few times that you install a Linux
+program on your FreeBSD system. After a while, you will have a sufficient
+set of Linux shared libraries on your system to be able to run newly
+imported Linux binaries without any extra work.
+
+<sect2><heading>How to install additional shared libraries</heading>
+
+<p>What if you install the linux_lib port and your application still
+complains about missing shared libraries? How do you know which
+shared libraries Linux binaries need, and where to get them?
+Basically, there are 2 possibilities (when following these
+instructions: you will need to be root on your FreeBSD system to do
+the necessary installation steps).
+
+<p>If you have access to a Linux system, see what shared libraries
+it needs, and copy them to your FreeBSD system. Example: you have
+just ftp'ed the Linux binary of Doom. Put it on the Linux
+system you have access to, and check which shared libraries it
+needs by running `ldd linuxxdoom':
+
+<verb>
+% ldd linuxxdoom
+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
+</verb>
+
+<p>You would need go get all the files from the last column, and
+put them under /compat/linux, with the names in the first column
+as symbolic links pointing to them. This means you eventually have
+these files on your FreeBSD system:
+<verb>
+/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
+</verb>
+
+<p>Note that if you already have a Linux shared library with a
+matching major revision number to the first column of the 'ldd'
+output, you won't need to copy the file named in the last column to
+your system, the one you already have should work. It is advisable to
+copy the shared library anyway if it is a newer version, though. You
+can remove the old one, as long as you make the symbolic link point to
+the new one. So, if you have these libraries on your system:
+<verb>
+/compat/linux/lib/libc.so.4.6.27
+/compat/linux/lib/libc.so.4 -> libc.so.4.6.27
+</verb>
+
+and you find a new binary that claims to require a later version
+according to the output of ldd:
+<verb>
+libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
+</verb>
+
+If it's only one or two versions out of date in the in the trailing
+digit then don't worry about copying /lib/libc.so.4.6.29 too, because
+the program should work fine with the slightly older version.
+However, if you like you can decide to replace the libc.so anyway, and
+that should leave you with:
+<verb>
+/compat/linux/lib/libc.so.4.6.29
+/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
+</verb>
+
+<p>Please note that the symbolic link mechanism is <em>only</em>
+needed for Linux binaries, the FreeBSD runtime linker takes care of
+looking for matching major revision numbers itself, you don't need to
+worry about that.
+
+<sect2><heading>Configuring the ld.so -- for FreeBSD-current
+only</heading>
+
+<p>This section applies only to FreeBSD-current only. Those running
+FreeBSD-stable should skip this section.
+
+<p>Finally, if you run FreeBSD-current you must make sure that you
+have the Linux runtime linker and its config files on your system. You
+should copy these files from the Linux system to their appropriate
+place on your FreeBSD system (to the /compat/linux tree):
+<verb>
+/compat/linux/lib/ld.so
+/compat/linux/etc/ld.so.config
+</verb>
+
+<p>If you don't have access to a Linux system, you should get the
+extra files you need from various ftp sites. Information on where to
+look for the various files is appended below. For now, let's assume
+you know where to get the files.
+
+<p>
+Retrieve the following files (all from the same ftp site to avoid any
+version mismatches), and install them under /compat/linux
+(i.e. /foo/bar is installed as /compat/linux/foo/bar):
+<verb>
+/sbin/ldconfig
+/usr/bin/ldd
+/lib/libc.so.x.y.z
+/lib/ld.so
+</verb>
+
+<p>ldconfig and ldd don't necessarily need to be under /compat/linux,
+you can install them elsewhere in the system too. Just make sure they
+don't conflict with their FreeBSD counterparts. A good idea would be
+to install them in /usr/local/bin as ldconfig-linux and ldd-linux.
+<p>
+Create the file /compat/linux/etc/ld.so.conf, containing the
+directories in which the Linux runtime linker should look
+for shared libs. It is a plain text file, containing a directory
+name on each line. /lib and /usr/lib are standard, you could
+add the following:
+<verb>
+/usr/X11/lib
+/usr/local/lib
+</verb>
+
+<p>When a linux binary opens a library such as /lib/libc.so the
+emulator maps the name to /compat/linux/lib/libc.so internally. All
+linux libraries should be installed under /compat/linux (e.g.
+/compat/linux/lib/libc.so, /compat/linux/usr/X11/lib/libX11.so, etc.)
+in order for the emulator to find them.
+
+<p>Those running FreeBSD-current should run the Linux ldconfig program.
+<verb>
+% cd /compat/linux/lib
+% /compat/linux/sbin/ldconfig
+</verb>
+
+<p>Ldconfig is statically linked, so it doesn't need any shared
+libraries to run. It creates the file /compat/linux/etc/ld.so.cache
+which contains the names of all the shared libraries. It should rerun
+to recreate this file whenever you install additional shared
+libraries.
+
+On FreeBSD-stable do not install /compat/linux/etc/ld.so.cache or run
+ldconfig becuase in FreeBSD-stable the syscalls are implemented
+differently and ldconfig isn't needed or used.
+
+<p>You should now be set up for Linux binaries which only need a
+shared libc. You can test this by running the Linux ldd on
+itself. Suppose that you have it installed as ldd-linux, it should
+produce something like:
+<verb>
+% ldd-linux `which ldd-linux`
+libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
+</verb>
+
+<p>This being done, you are ready to install new Linux binaries.
+Whenever you install a new Linux program, you should check if it needs
+shared libraries, and if so, whether you have them installed in the
+/compat/linux tree. To do this, you run the Linux version ldd on the
+new program, and watch its output. ldd (see also the manual page for
+ldd(1)) will print a list of shared libraries that the program depends
+on, in the form majorname (jumpversion) => fullname.
+
+<p>If it prints "not found" in stead of fullname it means that you
+need an extra library. Which library this is, is shown in majorname,
+which will be of the form libXXXX.so.N You will need to find a
+libXXXX.so.N.mm on a Linux ftp site, and install it on your
+system. The XXXX (name) and N (major revision number) should match;
+the minor number(s) mm are less important, though it is advised to
+take the most recent version.
+
+<sect1><heading>Configuring the host name resolver</heading>
+
+<p>If DNS does not work or you get the messages
+<tscreen>
+<verb>
+resolv+: "bind" is an invalid keyword
+resolv+: "hosts" is an invalid keyword
+</verb>
+</tscreen>
+
+then you need to configure a /compat/linux/etc/host.conf file
+containing:
+<tscreen>
+<verb>
+order hosts, bind
+multi on
+</verb>
+</tscreen>
+
+where the order here specifies that /etc/hosts is searched first and
+DNS is searched second. When /compat/linux/etc/host.conf isn't
+installed linux applications find FreeBSD's /etc/host.conf and
+complain about the incompatible FreeBSD syntax. You should remove
+`bind,' if you have not configured a name-server using the
+/etc/resolv.conf file.
+
+<p>Lastly, those who run FreeBSD-stable need to set an the
+RESOLV_HOST_CONF environment variable so that applications will know
+how to search the host tables. If you run FreeBSD-current you can
+skip this. For the /bin/csh shell use:
+<verb>
+setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf
+</verb>
+
+For /bin/sh use:
+<verb>
+RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
+</verb>
+
+<sect1><heading>Finding the necessary files</heading>
+
+<p>Note: the information below is valid as of the time this document
+was written, but certain details such as names of ftp sites,
+directories and distribution names may have changed by the time you
+read this.
+
+<p>Linux is distributed by several groups that make their own set
+of binaries that they distribute. Each distribution has its own
+name, like ``Slackware'' or ``Yggdrasil''. The distributions are
+available on a lot of ftp sites. Sometimes the files are unpacked,
+and you can get the individual files you need, but mostly they
+are stored in distribution sets, usually consisting of subdirectories
+with gzipped tar files in them. The primary ftp sites for the
+distributions are:
+<verb>
+sunsite.unc.edu:/pub/Linux/distributions
+tsx-11.mit.edu:/pub/linux/distributions
+</verb>
+
+<p>
+Some European mirrors:
+<verb>
+ftp.luth.se:/pub/linux/distributions
+ftp.demon.co.uk:/pub/linux/distributions
+src.doc.ic.ac.uk:/packages/linux/distributions
+</verb>
+
+<p>For simplicity, let's concentrate on Slackware here. This
+distribution consists of a number of subdirectories, containing
+separate packages. Normally, they're controlled by an install
+program, but you can retrieve files "by hand" too. First of all, you
+will need to look in the "contents" subdir 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 grep 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:
+<tabular ca=ll>
+Library <colsep>Package <rowsep>
+ld.so <colsep>ldso <rowsep>
+ldconfig <colsep>ldso <rowsep>
+ldd <colsep>ldso <rowsep>
+libc.so.4 <colsep>shlibs <rowsep>
+libX11.so.6.0 <colsep>xf_lib <rowsep>
+libXt.so.6.0 <colsep>xf_lib <rowsep>
+libX11.so.3 <colsep>oldlibs <rowsep>
+libXt.so.3 <colsep>oldlibs <rowsep>
+</tabular>
+
+<p>So, in this case, you will need the packages ldso, shlibs, xf_lib
+and oldlibs. In each of the contents-files for these packages, look
+for a line saying ``PACKAGE LOCATION'', it will tell you on which `disk'
+the package is, in our case it will tell us in which subdirectory we
+need to look. For our example, we would find the following locations:
+<tabular ca=ll>
+Package <colsep>Location <rowsep>
+ldso <colsep>diska2 <rowsep>
+shlibs <colsep>diska2 <rowsep>
+oldlibs <colsep>diskx6 <rowsep>
+xf_lib <colsep>diskx9 <rowsep>
+</tabular>
+
+<p>The locations called ``diskXX'' refer to the ``slakware/XX''
+subdirectories of the distribution, others may be found in the
+``contrib'' subdirectory. In this case, we could now retrieve the
+packages we need by retrieving the following files (relative to
+the root of the Slackware distribution tree):
+<tscreen>
+<verb>
+slakware/a2/ldso.tgz
+slakware/a2/shlibs.tgz
+slakware/x6/oldlibs/tgz
+slakware/x9/xf_lib.tgz
+</verb>
+</tscreen>
+
+<p>Extract the files from these gzipped tarfiles in your
+<tt>/compat/linux</tt> directory (possibly omitting or afterwards
+removing files you don't need), and you are done.
+
+<p><bf>See also:</bf>
+<verb>
+ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README
+
+/usr/src/sys/i386/ibcs2/README.iBCS2
+</verb>
+
+<sect><heading>How to Install Mathematica on FreeBSD<label id="mathematica"></heading>
+
+<p><em>Contributed by &a.rich and &a.chuck</em>
+
+This document shows how to install the Linux binary
+distribution of Mathematica 2.2 on FreeBSD 2.1.
+
+<p>Mathematica supports Linux but not FreeBSD as it stands. So once
+you have configured your system for Linux compatibility you have most
+of what you need to run Mathematica.
+
+<p>For those who already have the student edition of
+Mathematica for DOS the cost of upgrading to the Linux
+version at the time this was written, March 1996, was
+$45.00. It can be ordered directly from Wolfram at
+(217) 398-6500 and paid for by credit card.
+
+<sect1><heading>Unpacking the Mathematica distribution</heading>
+<p>The binaries are currently distributed by Wolfram on
+CDROM. The CDROM has about a dozen tar files, each of
+which is a binary distribution for one of the supported
+architectures. The one for Linux is named LINUX.TAR.
+You can, for example, unpack this into
+/usr/local/Mathematica:
+<verb>
+cd /usr/local
+mkdir Mathematica
+cd Mathematica
+tar -xvf /cdrom/LINUX.TAR
+</verb>
+
+<sect1><heading>Obtaining your Mathematica Password</heading>
+<p>Before you can run Mathematica you will have to obtain
+a password from Wolfram that corresponds to your
+`machine ID.'
+
+<p>Once you have installed the linux compatibility runtime
+libraries and unpacked the mathematica you can obtain
+the `machine ID' by running the program `mathinfo' in
+the Install directory:
+<verb>
+cd /usr/local/Mathematica/Install
+mathinfo
+</verb>
+this will print out something like:
+<verb>
+LINUX: 'ioctl' fd=3D3, typ=3D0x89(=89), num=3D0x27 not implemented
+richc.isdn.bcm.tmc.edu=099845-03452-90255
+</verb>
+where '9845-03452-90255' is your 'machine ID'. You can
+ignore the message about the ioctl that is not
+implemented. It won't prevent Mathematica from running
+in any way and you can safely ignore it, though you
+will see the message every time you run Mathematica.
+
+<p>When you register with Wolfram, either by email, phone
+or fax, you'll give them the 'machine ID' and they will
+respond with a corresponding password consisting of
+groups of numbers. You need to add them both along
+with the machine name and license number in your
+mathpass file.
+
+You can do this by invoking:
+<verb>
+cd /usr/local/Mathematica/Install
+math.install
+</verb>
+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 math.install fails, That's OK,
+because you can simply edit the file 'mathpass' in this
+same directory to correct the info manually.
+
+<p>After getting past the password, math.install will ask
+you if you accept their canned install defaults, 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
+math.install program asks you to specify directories,
+it won't 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 and then restart the
+math.install program. The directories we chose to
+create beforehand and specify to math.install were:
+<verb>
+/usr/local/Mathematica/bin for binaries
+/usr/local/Mathematica/man/man1 for man pages
+/usr/local/Mathematica/lib/X11 for the XKeysymb file
+</verb>
+You can also tell it to use /tmp/math.record for the
+system record file, where it puts logs of sessions.
+After this math.install will continue on to
+unpacking things and placing everything where it should
+go.
+
+<p>The Mathematica Notebook feature is included separately,
+as the X Front End, and you have to install it separately.
+To get the X Front End stuff correctly installed, cd
+into the /usr/local/Mathematica/FrontEnd directory and
+executed the ./xfe.install shell script. You'll have
+to tell it where to put things, but you don't have to
+create any directories because it uses all the same
+directories that had been created for math.install.
+When it finished, there should be a new shell script in
+/usr/local/Mathematica/bin called "mathematica".
+
+<p>Lastly, you need to modify each of the shell scripts that
+Mathematica has installed. At the beginning of every shell script in
+/usr/local/Mathematica/bin add the following line:
+<verb>
+XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB
+</verb>
+This tells Mathematica were to find it's own version of the key
+mapping file XKeysymDB. Without this you will get pages of error
+messages about missing key mappings.
+
+On FreeBSD-stable you need to add the following as well:
+<verb>
+RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
+</verb>
+This tells Mathematica to use the linux version of host.conf. This
+file has a different syntax from FreeBSD's host.conf, so you'll get an
+error message about /etc/host.conf if you leave this out.
+
+<p>You might want to also modify your /etc/manpath.config
+file to read the new man directory, and you may need
+to edit your .cshrc file to add
+<verb>
+/usr/local/Mathematica/bin
+</verb>
+to your path.
+
+<p>That's about all it takes, With this you should be able
+to type "mathematica" and get a really slick looking
+Mathematica Notebook screen up. Mathematica has included
+the Motif user interfaces, but it's compiled in statically,
+so you don't need the Motif libraries. Good luck doing this
+yourself!
+
+<sect1><heading>Bugs</heading>
+
+<p>The Notebook front end is known to hang sometimes when reading
+notebook files with an error messages similar to:
+<verb>
+File .../Untitled-1.mb appears to be broken for OMPR.257.0
+</verb>
+We haven't 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 'math' is unaffected by this
+bug.
+
+<sect1><heading>Acknowledgments</heading>
+
+<p>A well-deserved thanks should go to &a.sos; and &a.peter;
+who made linux emulation what it is today, and Michael Smith who
+drove these two guys like dogs to get it to the point where it runs
+Linux binaries better than linux! :-)
diff --git a/share/doc/handbook/sections.sgml b/share/doc/handbook/sections.sgml
index 99609c9..1fe13a9 100644
--- a/share/doc/handbook/sections.sgml
+++ b/share/doc/handbook/sections.sgml
@@ -1,4 +1,4 @@
-<!-- $Id: sections.sgml,v 1.10 1996/03/04 22:50:30 mpp Exp $ -->
+<!-- $Id: sections.sgml,v 1.11 1996/05/01 20:11:01 phk Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- Entities containing all the pieces of the handbook are -->
@@ -26,6 +26,7 @@
<!ENTITY kerberos SYSTEM "kerberos.sgml">
<!ENTITY kernelconfig SYSTEM "kernelconfig.sgml">
<!ENTITY kerneldebug SYSTEM "kerneldebug.sgml">
+<!ENTITY linuxemu SYSTEM "linuxemu.sgml">
<!ENTITY memoryuse SYSTEM "memoryuse.sgml">
<!ENTITY mirrors SYSTEM "mirrors.sgml">
<!ENTITY nfs SYSTEM "nfs.sgml">
OpenPOWER on IntegriCloud