<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
 
<article>
 
<title>Information for Linux Users
<author>Orest Zborowski, Dirk Hohndel
<date>February 26, 1997
<toc>

<sect>Linux versions on which XFree86 has been tested <p>
XFree86 has been tested with Linux version 2.0.32 and several 2.1xx kernels.
It is known not to compile with kernel sources newer then somewhere around
2.1.70, due to incompatibilities in the joystick driver. Except for the
joystick driver, it works just fine with all 2.1.x kernels tested (including
2.1.88). It should work with any version since 1.0 without change. The 
binaries and libraries are based on the 5.3.12 Elf C libraries, and the 
1.7.14 dynamic linker <tt>ld.so</tt>. You will at least need the 5.2.x Elf 
C libraries to successfully use the servers.

<sect>Backwards Compatibility <p>
X11R6 is considered a major update from X11R5, so the shared
libraries in XFree86 3.1 and later are not compatible with XFree86 2.1.1
and older libraries. To continue to run X11R5 applications, you must keep
the old libraries somewhere on your machine. They can be moved from
<tt>/usr/X386/lib</tt> elsewhere, but <tt>/etc/ld.so.conf</tt> must be updated.
All X11R5 applications should work with the X11R6 servers without problems.

X11R6.1 is yet another update to X11R6. While the minor number for some
libraries has been increased to '1' it is believed to be fully
compatible with X11R6 based applications.

X11R6.3 is yet another update to X11R6.1. While the minor number for some
libraries has been increased to '3' it is believed to be fully
compatible with X11R6 based applications.

Very old binaries (linked to XFree86-1.2, XFree86-1.3 or
XFree86-2.0 libraries) will continue to work, but may need an explicit
symlink from <tt>/lib/libX{11,t,aw}.so.3</tt> to
<tt>/usr/X386/lib/libX{11,t,aw}.so.3</tt>.

<sect>Installing XFree86 <p>
Starting with version 3.0, XFree86 is installed in <tt>/usr/X11R6</tt>. 
Each binary distribution of XFree86 3.X comes with a detailed
installation document relevant to that release. The most up-to-date
information is kept there, while this document describes basic features
of XFree86 3.X on Linux and how to compile the sources.

<sect>Running XFree86 <p>
XFree86 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 performance 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 <tt>/usr/X11R6/lib</tt>
in <tt>/etc/ld.so.conf</tt> (where it should already be by default) or in your
<tt>LD_LIBRARY_PATH</tt> environment variable. Also, the configuration file
<tt>/etc/XF86Config</tt> or <tt>/usr/X11R6/lib/X11/XF86Config</tt> 
<em>must</em> be properly filled out
based on the host setup. Ideally this is done using <tt>XF86Setup</tt> or (if
for some reason this doesn't work) using <tt>xf86config</tt>. If you really
insist in hand-creating your config file use <tt>XF86Config.eg</tt> as a 
starting point and <tt>README.Config</tt> as
guideline.  You may damage your hardware if you use a wrong
<tt>XF86Config</tt> file, so <em>read the docs</em>,
especially the man pages and the other <tt>README</tt> files in
<tt>/usr/X11R6/lib/X11/doc</tt>.

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&lt;nn&gt;'' option, where
 &lt;nn&gt; is the number of an available VT (starting from 1). If
you don't have a free VT XFree86 cannot run. Normally you can simply disable 
one of the <tt>getty</tt> programs in <tt>/etc/inittab</tt>, but if this is
not an option, you can increase the number of
available VTs by increasing the value of <tt>NR_CONSOLES</tt> in
<tt>include/linux/tty.h</tt> and recompiling the kernel.

Once running inside X, switching to another VT is accomplished by
pressing Ctrl-Alt-&lt;Fnn&gt; 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-&lt;Fmm&gt;, 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
`<tt>loadkeys</tt>' command found in the <tt>kbd-0.81.tar.gz</tt>
archive (or a later version thereof).
With this, you can (for example) make Ctrl-Alt-&lt;Fmm&gt; work from text mode
the same way it works under the XFree86 server.

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 still seem to be weird combinations of graphic cards and
motherboards that have problems to restore the textfont when returning from
XFree86 to the text mode. In these cases using the <tt>runx</tt> script from
the <bf>svgalib</bf> distribution might help.

The XFree86 server now queries the kernel to obtain the key binding
in effect at startup. These bindings are either the default map in place
when the kernel was compiled, or reloaded using the
`<tt>loadkeys</tt>' utility. Not
all keys are bound: kernel-specific, multiple keysym, and dead keys are not
handled by the server. All others are translated to their X equivalents.
Note that the XFree86 server only allows for four modifier maps: unshifted,
shifted, modeswitch unshifted and modeswitch shifted.  Depending on what
the modeswitch key is (it is configurable in your <tt>XF86Config</tt> and defaults
to Alt),
XFree86 will read those tables into its keymaps.  This means if you use
certain keys, like left-Control, for Linux modeswitch, that will not be
mappable to X.

<sect>Installing Xdm, the display manager
<p>

Since xdm is dynamically linked, there's no issue on
export restriction outside US for this binary distribution of xdm: it
does not contain the DES encryption code. So it's now included in the
bin package.

However the file <tt>xc/lib/Xdmcp/WrapHelp.c</tt> is not included in the
XFree86-3.3 source, so support for
XDM-AUTHORIZATION-1 is not included here. You'll have to get
WrapHelp.c and rebuild xdm after having set <tt/HasXdmAuth/ in
<tt/xf86site.def/.

The file is available within the US; for
details see <htmlurl name="ftp.x.org:/pub/R6/xdm-auth/README"
url="ftp://ftp.x.org/pub/R6/xdm-auth/README">.

To start the display manager, log in as root on the console and type:
``<tt/xdm -nodaemon/''.

You can start xdm automatically on bootup by disabling the console getty
and modifying <tt>/etc/inittab</tt>. Details about this setup depend on the
Linux distribution that you use, so check the documentation provided there.

The xdm binary provided should run with both shadow- and non-shadow password
systems.

<sect>xterm
<p>
The XFree86-3.3.2 binary release contains an xterm binary that has been linked
statically against libtermcap. This was done to make sure that it will
correctly work with all distributions, regardless whether they rely on
libtermcap or libncurses. Contrary to the xterm binaries in some beta version
following XFree86-3.1.2, this binary does not rely on a recent libncurses
being installed on your system.

<sect>Input devices
<p>
XFree86 now support the dynamic loading of drivers for external
input devices using the <tt/XInput/ extension. Currently supported
devices are:
<itemize>
<item>Joystick (<tt/xf86Jstk.so/)
<item>Wacom tablets (Wacom IV protocol only, <tt/xf86Wacom.so/)
<item>SummaSketch tablets (<tt/xf86Summa.so/)
<item>Elographics touchscreen (<tt/xf86Elo.so/)
</itemize>

To use a specific device, add the line
<tscreen>
<tt/load/ <tt/"/<em/module/<tt/"/
</tscreen>
in the <bf/Module/ section of <tt/XF86Config/, where <em/module/ is
the name of the <tt/.so/ file corresponding to your device.
You also need to set up a <bf/XInput/ section in <tt/XF86Config/. 
Refer to the <em>XF86Config(5)</em> man page for detailed
configuration instructions.
<p>
You can then change the device used to drive the X pointer with the
<em/xsetpointer(1)/ command.
<p>
For joystick support, you'll need to install the joystick device
driver in the kernel. 

<sect1>Configuring PEX, XIE and GLX extensions
<p>
The PEX, XIE and GLX extensions are now supported as external modules.
If you want to have access to these extensions, add the following
lines to the <bf/Module/ section of <tt/XF86Config/:
<tscreen><verb>
   load    "pex5.so"
   load    "xie.so"
</verb></tscreen>
For GLX you need to get the appropriate GLX modules, first. They are, at this
time, not part of the XFree86 distribution.

<sect> Compiling XFree86 <p>
There are no special instructions required for compiling XFree86.
This version was compiled with gcc-2.7.2.1, the 5.3.12 Elf libraries and the
1.7.14 shared, dynamic linker ld.so. 
The server has been
compiled with <tt>-m486</tt>, 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 <tt>-m386</tt>, but no loss of performance).

All extensions and clients have been ported and tested. By default,
the servers are compiled without any extra extensions (PEX, XIE, etc),
but libraries for those extensions are always generated. They can be loaded 
at runtime, see the XFree86 man page for details. By modifying
<tt>site.def</tt>, extra extensions can be compiled into the server.
Alternately, the link kit can be used to craft modified servers.

If an aout version of XFree86 is to be built and patches are applied which 
significantly 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.

The JUMP_xxx defines used to compile the X libraries can also be
used to compile external X shared libraries, like Xaw3d. Detailed
instructions are provided in <tt>/usr/X11R6/lib/X11/config/lnxLib.rules</tt>,
where the X library definitions are provided, as an example.

<sect>Bug Notification <p>
Bug reports should be sent to <it>XFree86@XFree86.org</it> or posted
to the <it>comp.windows.x.i386unix</it> newsgroup.

<verb>
$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Linux.sgml,v 3.13.2.4 1998/02/26 20:11:26 hohndel Exp $





$XConsortium: Linux.sgml /main/6 1996/10/28 04:47:37 kaleb $
</verb>

</article>
