		     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.99pl13. It should work
with any later version without change. The binaries and libraries are based
on the 4.4.1 DLL C libraries. The DLL X libraries are produced with the 2.9
dll-tools by Eric Youngdale. 

!!!  TO USE THE BINARIES YOU NEED DAVID ENGEL'S SHARED DYNAMIC LINKER ld.so
!!!  INSTALLED !!!

You should include /usr/X386/lib in /etc/ld.so.conf (it is in there by
default) or in your LD_LIBRARY_PATH environment variable.

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 tar files, you need to include /usr/X386/lib in
/etc/ld.so.conf (where it should already be by default) or in your
LD_LIBRARY_PATH environment variable. Also, the configuration file
/usr/X386/lib/X11/Xconfig *MUST* be modified based on the host setup.
You may damage your hardware if you use a wrong Xconfig file, so 
READ THE DOCS, especially the man pages and the other README files in
/usr/X386/lib/X11/etc.   

	Old binaries (linked to XFree86-1.2 or XFree86-1.3 libraries)
will continue to work, but may need an explicit symlink from
/lib/libX{11,t,aw}.so.3 to /usr/X386/lib/libX{11,t,aw}.so.3. Linking
with ld.so against the XView 3L5 distribution will give problems with
pre-1.3 versions of ld.so, since the XView libraries contain the
absolute path to the shared images, which is discuraged with ld.so. A
tempoary fix is including  / in /etc/ld.so.config, better recompile
XView with relative library names or get a newer ld.so. 

	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 the proper key-combination that
moves you back to the VT that XFree86 is using: by default, this is
Alt-<Fmm>, where mm is the number of the VT the server is running on
(this number is printed when the server is started).  Note that this is
NOT the VT from which the server was started.

NOTE: you can redefine the text-mode keybindings with the 'loadkeys'
command found in the kbd-0.81.tar.gz archive.  With this, you can (for
example) make Ctrl-Alt-<Fmm> work from text mode the same way it works
under the XFree86 server. 

CAUTION: There are versions of the Linux Kernel (including some pl12
and pl13 releases), that don't restore the status of the Ctrl and Alt 
key correctly when switching to a VT. This can be solved by pressing 
and releasing the CTRL and ALT key after switching (or by upgrading 
to a newer kernel...). This will be fixed in the next kernel version. 

	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 the XFree86-1.3 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.4.5, the 4.4.1 DLL libraries and the
1.3 shared, dynamic linker ld.so. The tools-2.9 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,
but no loss of performance).

	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.
Having 100mb available makes compiling XFree86 a lot easier. You will need
about 10mb of virtual memory to compile the entire server. 

	There is an external problem with compiling the server. 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.  

	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. The new shared library
symlinks no longer need to be moved to /lib, as starting with XFree86-2.0
the shared, dynamic linker ld.so is used. 

	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 (developed by Orest
Zborowski (orestz@microsoft.com)) 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. Alternatively you can use the LinkKit to
produce a server including PEX. See the relevant docs in
/usr/X386/lib/Server/README.

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

	With each release there are fewer omissions from the basic X11R5
offering. Starting with XFree86-2.0 the MITSHM (shared memory) extensions 
are included. Now only the XINPUT extension is missing.


$XFree86: mit/server/ddx/x386/README.Linux,v 2.4 1993/10/24 13:44:08 dawes Exp $
