40b0c0d936
Approved (in spirit) by: jkh
552 lines
18 KiB
Plaintext
552 lines
18 KiB
Plaintext
README for XFree86 3.1.2 on FreeBSD 2.1
|
|
Rich Murphey, David Dawes
|
|
20 January 1995
|
|
[Last Updated: 14 October 1995]
|
|
|
|
|
|
1. What and Where is XFree86?
|
|
------------------------------
|
|
|
|
XFree86 is a port of X11R6 that supports several versions of Intel-
|
|
based Unix. It is derived from X386 1.2, which was the X server
|
|
distributed with X11R5. This release consists of many new features
|
|
and performance improvements as well as many bug fixes. The release
|
|
is available as source patches against the X Consortium X11R6 code, as
|
|
well as binary distributions for many architectures.
|
|
|
|
See the Copyright Notice (COPYRIGHT.html).
|
|
|
|
The sources for XFree86 are available as part of the FreeBSD 2.1
|
|
distribution, or by anonymous ftp from:
|
|
|
|
ftp.XFree86.org:/pub/XFree86/current
|
|
(ftp://ftp.XFree86.org/pub/XFree86/current)
|
|
|
|
|
|
Binaries for XFree86 on FreeBSD are also available as part of
|
|
2.1 or from:
|
|
|
|
ftp.XFree86.org:/pub/XFree86/current/binaries/FreeBSD-2.0
|
|
(ftp://ftp.XFree86.org/pub/XFree86/current/binaries/FreeBSD-2.0)
|
|
|
|
XFree86.cdrom.com:/pub/XFree86/current/binaries/FreeBSD-2.0
|
|
(ftp://XFree86.cdrom.com/pub/XFree86/current/binaries/FreeBSD-2.0)
|
|
|
|
Send email to Rich-Murphey@Rice.edu or XFree86@XFree86.org if you have
|
|
comments or suggestions about this file and we'll revise it.
|
|
|
|
|
|
2. Installing the Binaries
|
|
---------------------------
|
|
|
|
In the FreeBSD 2.1 distribution, XFree86 comes in 3 major sections:
|
|
"basic" distributions, fonts and servers. At the minimum, you will
|
|
need the binaries and libraries from the basic distribution, the
|
|
"misc" fonts collection and at least one server. The smallest usable
|
|
distribution is around 9MB.
|
|
|
|
If you can't decide what to pick and you have 52Mb of disk
|
|
space, it's safe to unpack everything.
|
|
|
|
What follows is a description of the various distribution files
|
|
comprising XFree86. If you are installing this as part of FreeBSD 2.1
|
|
then there's no need to use these files directly: You may simply check
|
|
the desired components off the installation menus provided for that
|
|
purpose. If you're installing this manually, then the following
|
|
information should prove useful:
|
|
|
|
Required (6.7Mb):
|
|
|
|
X312bin.tgz
|
|
all the executable X client applications and shared libs
|
|
|
|
X312fnts.tgz
|
|
the misc and 75 dpi fonts
|
|
|
|
X312lib.tgz
|
|
data files needed at runtime
|
|
|
|
|
|
Required unless you have already customized your configuration
|
|
files:
|
|
|
|
X312xicf.tgz
|
|
customizable xinit runtime configuration file
|
|
|
|
X312xdcf.tgz
|
|
customizable xdm runtime configuration file
|
|
|
|
Choose at least one server ( 2.3Mb):
|
|
|
|
X3128514.tgz
|
|
8-bit color for IBM 8514 and true compatibles.
|
|
|
|
X312AGX.tgz
|
|
8-bit color for AGX boards.
|
|
|
|
X312Mch3.tgz
|
|
8 and 16-bit color for ATI Mach32 boards.
|
|
|
|
X312Mch8.tgz
|
|
8-bit color for ATI Mach8 boards.
|
|
|
|
X312Mono.tgz
|
|
1-bit monochrome for VGA, Super-VGA, Hercules, and others.
|
|
|
|
X312P9K.tgz
|
|
8, 16, and 24-bit color for Weitek P9000 boards (Diamond
|
|
Viper).
|
|
|
|
X312S3.tgz
|
|
8, 16 and 24-bit color for S3 boards (#9 GXE, Actix GE32,
|
|
SPEA Mercury, STB Pegasus)
|
|
|
|
X312SVGA.tgz
|
|
8-bit color for Super-VGA cards.
|
|
|
|
X312VG16.tgz
|
|
4-bit color for VGA and Super-VGA cards
|
|
|
|
X312W32.tgz
|
|
8-bit Color for ET4000/W32, /W32i and /W32p cards.
|
|
|
|
X312nest.tgz
|
|
A nested server running as a client window on another
|
|
display.
|
|
|
|
Optional:
|
|
|
|
X312doc.tgz
|
|
(.5Mb) READMEs and XFree86 specific man pages
|
|
|
|
X312man.tgz
|
|
(1.7Mb) man pages except XFree86 specific ones in etc archive
|
|
|
|
X312ctrb.tgz
|
|
(1.0Mb) Contributed clients like ico, xeyes, etc.
|
|
|
|
X312f100.tgz
|
|
(1.8Mb) 100dpi fonts
|
|
|
|
X312fcyr.tgz
|
|
(1.8Mb) Cyrillic fonts
|
|
|
|
X312fscl.tgz
|
|
(1.6Mb) Speedo and Type1 fonts
|
|
|
|
X312fnon.tgz
|
|
(3.3Mb) Japanese, Chinese and other non-English fonts
|
|
|
|
X312fsrv.tgz
|
|
(.3Mb) the font server and it's man page
|
|
|
|
X312prog.tgz
|
|
(3.9Mb) config, lib*.a and *.h files needed only for
|
|
compiling
|
|
|
|
X312link.tgz
|
|
(7.8Mb) X server reconfiguration kit
|
|
|
|
X312pex.tgz
|
|
(.5Mb) PEX fonts and shared libs needed by PEX applications.
|
|
|
|
X312lbx.tgz
|
|
(.2Mb) low bandwidth X proxy server and libraries.
|
|
|
|
Note that there is no longer a separate xdm archive. FreeBSD 2.0
|
|
and later handles this in shared libraries now, so that the xdm
|
|
binary does not itself contain des and there is no more need for
|
|
us to provide separate tar balls.
|
|
|
|
|
|
2.1. Full Install:
|
|
-------------------
|
|
|
|
[ Note: Unless you're installing XFree86 3.1.2 manually, that is
|
|
to say not as part of the FreeBSD 2.1 installation, you may skip
|
|
to section 2.3 ]
|
|
|
|
1. You must be logged in as root to unpack the archives because
|
|
several executables are set-user-id. Otherwise the server may
|
|
abort if you unpack it as an ordinary user. You must also use a
|
|
``umask'' value of 022 because the X server requires special
|
|
permissions.
|
|
|
|
% su
|
|
# umask 022
|
|
|
|
|
|
2. If you have 52Mb free in the /usr partition ``cd /usr'' and skip
|
|
to no. 3. Otherwise, create a directory on another partition
|
|
and sym link it into /usr:
|
|
|
|
# cd /usr/local
|
|
# mkdir X11R6
|
|
# ln -s /usr/local/X11R6 /usr/X11R6
|
|
|
|
|
|
3. Unpack everything:
|
|
|
|
If you are using sh (as root usually does):
|
|
|
|
# for i in X312*.tgz; do
|
|
# tar -xzf $i
|
|
# done
|
|
|
|
|
|
Else, if you are using csh:
|
|
|
|
% foreach i (X312*.tgz)
|
|
% tar -xzf $i
|
|
% end
|
|
|
|
|
|
4. Create a symbolic link ``X'' that points to the server that
|
|
matches your video card. The XF86_* man pages list which vga
|
|
chip sets are supported by each server. For example, if you
|
|
have an ET4000 based card you will use the XF86_SVGA server:
|
|
|
|
# cd /usr/X11R6/bin; rm X; ln -s XF86_SVGA X
|
|
|
|
|
|
2.2. Minimal Install:
|
|
----------------------
|
|
|
|
First do numbers 1 and 2 above. Then unpack the required archives:
|
|
|
|
# for i in bin fnts lib xicf; do
|
|
# tar -xzf X312$i.tgz
|
|
# done
|
|
|
|
|
|
Then unpack a server archive corresponding to your vga card. The
|
|
server man pages, X11R6/man/man1/XF86_*, list the vga chip sets
|
|
supported by each server. For example, if you have an ET4000 based
|
|
card you will use the XF86_SVGA server:
|
|
|
|
# tar -xzf X312SVGA.tgz
|
|
# cd /usr/X11R6/bin; rm X; ln -s XF86_SVGA X
|
|
|
|
|
|
2.3. After either Full or Minimal Install above:
|
|
-------------------------------------------------
|
|
|
|
Add /usr/X11R6/bin to the default path for sh in /etc/profile and for
|
|
csh in /etc/csh.login if they are not already there:
|
|
|
|
# echo 'set path = ($path /usr/X11R6/bin)' >>/etc/csh.login
|
|
# echo 'PATH=$PATH:/usr/X11R6/bin' >>/etc/profile
|
|
|
|
|
|
Or make sure all who use X put /usr/X11R6/bin in their shell's
|
|
``path'' variable.
|
|
|
|
Next either reboot or invoke ldconfig as root to put the shared
|
|
libraries in ld.so's cache:
|
|
|
|
# ldconfig /usr/lib /usr/local/lib /usr/X11R6/lib
|
|
|
|
|
|
If you had already configured X11R6/lib/X11/xinit/xinitrc or
|
|
X11R6/lib/X11/xdm/* omit the xinit-config or xdm-config archive or
|
|
unpack it separately and merge in your customizations.
|
|
|
|
The fscl and f100 archives are optional and can be omitted if you are
|
|
short on space. The optional link archive allows you to reconfigure
|
|
and customize a X server binary. The optional prog archive is needed
|
|
only for writing or compiling X applications. The optional pex
|
|
archive contains pex clients and libraries for building 3D graphics
|
|
applications.
|
|
|
|
NOTE: You don't need to uncompress the font files, but if
|
|
you uncompress them anyway you must run mkfontdir in the
|
|
corresponding font directory; otherwise your server will
|
|
abort with the message ``could not open default font
|
|
'fixed'''.
|
|
|
|
3. Installing The Display Manager (xdm)
|
|
----------------------------------------
|
|
|
|
The display manager makes your PC look like an X terminal. That is,
|
|
it presents you with a login screen that runs under X.
|
|
|
|
The easiest way to automatically start the display manager on boot is
|
|
to add a line in /etc/ttys to start it on one of the unoccupied
|
|
virtual terminals:
|
|
|
|
ttyv4 "/usr/X11R6/bin/xdm -nodaemon" xterm on secure
|
|
|
|
You should also make sure that /usr/X11R6/bin/X is a symbolic link to
|
|
the Xserver that matches your video card or edit the file Xservers in
|
|
/usr/X11R6/lib/X11/xdm to specify the pathname of the X server.
|
|
|
|
The change to /etc/ttys won't take effect until you either reboot or
|
|
``kill -HUP 1'' to force initd to reread /etc/ttys. You can also test
|
|
the display manager manually by loging in as root on the console and
|
|
typing ``xdm -nodaemon''.
|
|
|
|
|
|
4. Configuring X for Your Hardware
|
|
-----------------------------------
|
|
|
|
The XF86Config file tells the X server what kind of monitor, video
|
|
card and mouse you have. You must create it to tell the server what
|
|
specific hardware you have.
|
|
|
|
If you are installing XFree86 as part of FreeBSD 2.1, you may invoke
|
|
XF86Config automatically from the FreeBSD configuration menu. You
|
|
should still read this document first, however, as it contains
|
|
valuable information on mouse and VGA card selection below.
|
|
|
|
XFree86 3.1 uses a new configuration file format. Consult the
|
|
XF86Config man page and the general INSTALL (INSTALL.html) file for
|
|
instructions.
|
|
|
|
If you have a Xconfig file for XFree86 2.x, use reconfig to translate
|
|
part of it into the new format:
|
|
|
|
# reconfig <Xconfig >XF86Config
|
|
|
|
and complete the rest according to the XF86Config man page and the
|
|
XF86Config.sample file as a template.
|
|
|
|
In order to protect your hardware from damage, the server no longer
|
|
will read XF86Config files from a user's home directory, but requires
|
|
that it be in /etc/XF86Config, /usr/X11R6/lib/X11/XF86Config.hostname
|
|
or /usr/X11R6/lib/X11/XF86Config.
|
|
|
|
You'll need info on your hardware:
|
|
|
|
o Your mouse type, baud rate and it's /dev entry.
|
|
|
|
o The video card's chipset (e.g. ET4000, S3, etc).
|
|
|
|
o Your monitor's sync frequencies.
|
|
|
|
Bus Mice:
|
|
|
|
In FreeBSD, the bus mouse is generally found on /dev/mse0. Specify
|
|
/dev/mse0 when asked, and in case of failure ensure that your Bus
|
|
mouse was indeed "probed" when the system was booted. To make
|
|
sure of this, type:
|
|
|
|
% dmesg | grep mse
|
|
|
|
If you do not see something like this:
|
|
mse0 at 0x23c irq 5 on isa
|
|
|
|
then it means that your bus mouse was not detected properly and you
|
|
should reboot with the `-c' flag and verify that the device entry for
|
|
mse0 matches your bus mouse settings.
|
|
|
|
If the mouse is probed properly but still fails to function then you
|
|
might double check that the /dev entry for the bus mouse exists. Use
|
|
the script /dev/MAKEDEV to create the entry if it doesn't already
|
|
exist, e.g:
|
|
|
|
% cd /dev
|
|
% sh MAKEDEV mse0
|
|
|
|
|
|
Serial Mice:
|
|
|
|
The easiest way to find which port your mouse is plugged into is to
|
|
use ``cat'' or ``kermit'' to look at the output of the mouse. Connect
|
|
to it and just make sure that it generates output when the mouse is
|
|
moved or clicked. If your mouse is plugged into the first serial port
|
|
(COM1), for example, you could do this:
|
|
|
|
% cat < /dev/cuaa0
|
|
|
|
Where /dev/cuaa0 represents the first serial port, /dev/cuaa1 the
|
|
second, /dev/cuaa2 the third and so on.
|
|
|
|
If you can't find the right mouse port then use ``dmesg | grep sio''
|
|
to get a list of serial devices that were detected at boot time:
|
|
|
|
% dmesg|grep sio
|
|
sio0 at 0x3f8-0x3ff irq 4 on isa
|
|
|
|
The presence of sio0 will indicate that COM1 was found. If you see
|
|
sio1, sio2 or sio3 then it means that a serial port was found at one
|
|
of the other com addresses and you should use the appropriate
|
|
/dev/cuaa<n> device entry to talk to it.
|
|
|
|
If things still aren't working then double check that the /dev entries
|
|
corresponding to these devices exist. Use the script /dev/MAKEDEV to
|
|
create entries if they don't already exist, e.g:
|
|
|
|
% cd /dev
|
|
% sh MAKEDEV cuaa0 [cuaa1, cuaa2, etc..]
|
|
|
|
If you plan to fine tune the screen size or position on your monitor
|
|
you'll need the specs for sync frequencies from your monitor's manual.
|
|
|
|
|
|
5. Running X
|
|
-------------
|
|
|
|
8mb of memory is a recommended minimum for running X. The server,
|
|
window manager, display manager and an xterm take about 8Mb of virtual
|
|
memory themselves. Even if their resident set size is smaller, on a
|
|
8Mb system that leaves very space for other applications such as gcc
|
|
that expect a few meg free. The R6 X servers may work with 4Mb of
|
|
memory, but in practice compilation while running X can take 5 or 10
|
|
times as long due to constant paging.
|
|
|
|
The easiest way for new users to start X windows is to type ``startx
|
|
>& startx.log''. Error messages are lost unless you redirect them
|
|
because the server takes over the screen.
|
|
|
|
To get out of X windows, type: ``exit'' in the console xterm. You can
|
|
customize your X by creating .xinitrc, .xserverrc, and .twmrc files in
|
|
your home directory as described in the xinit and startx man pages.
|
|
|
|
|
|
6. Rebuilding Kernels for X
|
|
----------------------------
|
|
|
|
The GENERIC FreeBSD 2.x kernel supports XFree86 without any
|
|
modifications required. You do not need to make any changes to the
|
|
GENERIC kernel or any kernel configuration which is a superset.
|
|
|
|
For a general description of BSD kernel configuration get
|
|
smm.02.config.ps.Z
|
|
(ftp://gatekeeper.dec.com/pub/BSD/manuals/smm.02.config.ps.Z). It is
|
|
a ready-to-print postscript copy of the kernel configuration chapter
|
|
from the system maintainers manual.
|
|
|
|
Alternatively, you can read the kernel configuration section of the
|
|
FreeBSD handbook (http://www.freebsd.org/handbook).
|
|
|
|
If you do decide to reduce your kernel configuration file, do not
|
|
remove the two lines below (in /sys/arch/i386/conf). They are both
|
|
required for X support:
|
|
|
|
options XSERVER #Xserver
|
|
options UCONSOLE #X Console support
|
|
|
|
The generic FreeBSD 2.x kernel is configured by default with the
|
|
syscons driver. To configure your kernel similarly, it should have a
|
|
line like this in /usr/src/sys/i386/conf/GENERIC:
|
|
|
|
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
|
|
|
|
The maximum number of virtual consoles can be set using the MAXCONS
|
|
option:
|
|
|
|
options "MAXCONS=4" #4 virtual consoles
|
|
|
|
|
|
Otherwise, the default without a line like this is 12. You must have
|
|
more VTs than gettys as described in the end of section 3, and 4 is a
|
|
reasonable minimum.
|
|
|
|
The server supports several console drivers: pccons, syscons and pcvt.
|
|
The syscons driver is the default in FreeBSD 1.1.5 and higher. They
|
|
are detected at runtime and no configuration of the server itself is
|
|
required.
|
|
|
|
The pcvt console driver is bundled into FreeBSD and may be enabled
|
|
by changing the `sc0' line in your kernel configuration file to
|
|
`vt0'. See /sys/i386/conf/LINT for more details.
|
|
|
|
The XFree86 servers include support for the MIT-SHM extension. The
|
|
GENERIC kernel does not support this, so if you want to make use of
|
|
this, you will need a kernel configured with SYSV shared memory
|
|
support. To do this, add the following line to your kernel config
|
|
file:
|
|
|
|
options SYSVSHM # System V shared memory
|
|
options SYSVSEM # System V semaphores
|
|
options SYSVMSG # System V message queues
|
|
|
|
|
|
If you are using a SoundBlaster 16 on IRQ 2 (9), then you need a patch
|
|
for sb16_dsp.c. Otherwise a kernel configured with the SoundBlaster
|
|
driver will claim interrupt 9 doesn't exist and X server will lock up.
|
|
|
|
S3 cards and serial port COM 4 cannot be installed together on a
|
|
system because the I/O port addresses overlap.
|
|
|
|
|
|
7. Rebuilding XFree86
|
|
----------------------
|
|
|
|
The server link kit allows you to build an X server using a minimum
|
|
amount of disk space. Just unpack it, make the appropriate changes to
|
|
site.def, type ``./mkmf' and ``make'' to link the server. See
|
|
README.LinkKit (LinkKit.html) for more info.
|
|
|
|
The source tree takes about 114Mb before compiling and an additional
|
|
100Mb after ``make World''. You should configure the distribution by
|
|
editing xf86site.def and site.def in xc/config/cf before compiling.
|
|
By default, the config files are set up to build shared libraries. If
|
|
you are running a version of FreeBSD that doesn't include shared
|
|
library support, add the following line to site.def:
|
|
|
|
#define BuildBsdSharedLibs NO
|
|
|
|
If your system doesn't have support or SYSV shared memory (for
|
|
example, if you don't have the <sys/shm.h> header), you should disable
|
|
the MIT-SHM extension by adding the following line to site.def:
|
|
|
|
#define HasShm NO
|
|
|
|
To compile the sources on FreeBSD 1.1 and later, type:
|
|
|
|
make World
|
|
|
|
|
|
8. Building Other X Clients
|
|
----------------------------
|
|
|
|
The easiest way to build a new client (X application) is to use xmkmf
|
|
if an Imakefile is included with it. Type ``xmkmf -a'' to create the
|
|
Makefiles, then type ``make''. Whenever you install additional man
|
|
pages you should update whatis.db by running ``makewhatis
|
|
/usr/X11R6/man''.
|
|
|
|
Note: Starting with XFree86 2.1 and FreeBSD 1.1, the symbol __386BSD__
|
|
no longer gets defined either by the compiler or via the X config
|
|
files for FreeBSD systems. When porting clients to BSD systems, make
|
|
use of the symbol BSD for code which is truly BSD-specific. The value
|
|
of the symbol can be used to distinguish different BSD releases. For
|
|
example, code specific to the Net-2 and later releases can use:
|
|
|
|
#if (BSD >= 199103)
|
|
|
|
To ensure that this symbol is correctly defined, include <sys/param.h>
|
|
in the source that requires it. Note that the symbol CSRG_BASED is
|
|
defined for *BSD systems in XFree86 3.1.1 and later. This should be
|
|
used to protect the inclusion of <sys/param.h>.
|
|
|
|
For code that really is specific to a particular i386 BSD port, use
|
|
__FreeBSD__ for FreeBSD, __NetBSD__ for NetBSD, __386BSD__ for 386BSD,
|
|
and __bsdi__ for BSD/386.
|
|
|
|
|
|
9. Thanks
|
|
----------
|
|
|
|
Many thanks to:
|
|
|
|
o Pace Willison for providing initial *BSD support.
|
|
|
|
o Amancio Hasty for 386BSD kernel and S3 chipset support.
|
|
|
|
o David Greenman, Nate Williams, Jordan Hubbard for FreeBSD kernel
|
|
support.
|
|
|
|
o Rod Grimes, Jordan Hubbard and Jack Velte for the use of Walnut
|
|
Creek Cdrom's hardware.
|
|
|
|
o Orest Zborowski, Simon Cooper and Dirk Hohndel for ideas from
|
|
the Linux distribution.
|
|
|
|
$XConsortium: FreeBSD.sgml,v 1.3 95/01/23 15:34:41 kaleb Exp $
|
|
Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/FreeBSD.sgml,v 3.10 1995/01/28 16:01:28 dawes Exp $
|
|
|
|
|
|
$XFree86: xc/programs/Xserver/hw/xfree86/doc/READ.FreeBSD,v 3.12 1995/01/28 16:19:37 dawes Exp $
|