		     Information for Linux Users
		     ---------------------------

Contents
----------
	1) Linux versions on which XFree86 has been tested
	2) Running XFree86
	3) Compiling XFree86
	4) Compiling a PEX server
	5) Omissions

1 - Linux versions on which XFree86 has been tested
---------------------------------------------------
	XFree86 has been tested with Linux version 0.99.9. It should work
with any later version without change. The binaries and libraries are based
on the 4.3.3 DLL C libraries.

2 - Running XFree86
-------------------
	XFree86 is installed in /usr/X386. It requires about 4mb of virtual
memory to run, although having 8mb of RAM is probably the minimum comfortable
configuration. A 387 coprocessor is helpful for 386 machines, although
greater gains in interactive performace are obtained with an increase in
physical memory. Also, a faster graphics card, bus or RAM, will improve
server performance.

	After unpacking the server, the shared libraries must be moved to
/lib so they can be found by the loader. This can be easily done by
doing ln -s /usr/X386/lib/lib*.so.? /lib, or physically moving them.
Also, the configuration file /usr/X386/lib/X11/Xconfig may need to be
modified based on the host setup.

	XFree86 has the ability to perform VT switching to and from the X
server. When first started, XFree86 will automatically locate the first
available VT (one that hasn't been opened by any process), and run on that VT.
If there isn't one available, XFree86 will terminate with an error message.
The server can be run on a specific VT by using the "vt<nn>" option, where
<nn> is the number of an available VT (starting from 1).

	Once running inside X, switching to another VT is accomplished
by pressing Ctrl-Alt-<Fnn> where nn is the number of the VT to switch
to. To return to the server, press Alt-<Fmm> or Ctrl-Alt-<Fmm>, where mm is
the number of the VT the server is running on (this number is printed when
the server is started). When the server is exited, it will return to the
original VT it was started from, unless it dies unexpectedly, when the
switch must be done manually.

	There are some quirks that may need some fixing depending on your
configuration. In the past, Linux xload used the BSD method of obtaining
the load average from the running kernel. In this release, that has been
replaced by reading the information from /proc/loadavg instead, which should
be forward-compatible with future kernel releases. Xman has also been changed
to support the GNU groff family instead of the BSD nroff family. A quick
edit and recompile restores BSD conventions. The server has been modified
to provide better console redirection support for clients, which includes
changing the ownership of /dev/console and /dev/tty0 as well as the VT used
to run on. Unfortunately, the kernel requires that a process be setuid root
to perform console redirection, so xterm and xconsole must be setuid root.

3 - Compiling XFree86
---------------------
	There are no special instructions required for compiling XFree86.
This version was compiled with gcc-2.3.3 and the 4.3.3 DLL libraries.
The tools-2.6 DLL package was used to generate the shared libraries.
The server has been compiled with -m486, which optimizes it for the 486
processor, but the binary will run on the 386 processor (there is a slight
increase in binary size over using -m386).

	The distribution is very large, but it is possible to compile
XFree86 on a single 64mb partition, if the source tree is carefully
trimmed (no manpages, PEX or large clients). Simply run "make World" to
create the Makefiles, then stop the make and run each piece individually. It
is not necessary to run "make depend" as well, which saves some space.
You will need about 10mb of virtual memory to compile the entire server.

	There are two external problems with compiling the server. One,
the makedepend program does not search the private gcc include directory
for headers (i.e. float.h), so there are lots of warnings generated during
the make depend phase. These can be safely ignored, or the private headers
can be symlinked to /usr/include. A better solution which involves cpp
directly is being investigated. Another problem consists of missing
networking headers. In anticipation of the NET-2 networking release,
several headers were removed from recent kernel distributions (i.e.
linux/sys/if.h). These must be created (using touch) in order for the
server to properly compile.

	There is support now for creating X DLL libraries. By default,
certain libraries are compiled into both static and shared form, but this
can be changed by editing mit/config/lnuxLib.rules. When installed, the
new shared library symlinks may need to be moved to /lib. If patches are
applied which change the libraries, modified jump_xxx files will be needed.
Those can be generated according to instructions given in the dll tools
package, and will be made available as XFree86 patches.

	Thanks to Dirk Hohndel (hohndel@informatik.uni-wuerzburg.de) for
working out all the details and doing all the work in creating the first
set of XFree86 DLL libs, on which the current method is based.

4 - Compiling a PEX server
--------------------------

	PEX is now a part of the XFree86 source distribution and including
it in the server is trivial. First, edit mit/config/site.def and change
BuildPex from NO to YES, then perform a make World. The server, libraries
and demos will all get built with PEX support. After installation, the
new server can be verified by using xdpyinfo, which should show X3D-PEX
as an available extension.

5 - Omissions
-------------

	With each release there are fewer omissions from the basic X11R5
offering. The MITSHM (shared memory) extensions do compile and work, but
are omitted from the base setup because the Linux C library lacks the
system calls (forthcoming in libc-4.4).


