From: steve@ecf.toronto.edu (Steve Kotsopoulos)
Newsgroups: fj.mail-lists.x-window
Subject: X on Intel-based Unix Frequently Asked Questions [FAQ] (with answers)
Date: 7 Nov 92 20:02:02 GMT
Distribution: fj
Organization: University of Toronto, Engineering Computing Facility

Date: 3 Nov 92 14:35:11 GMT
Message-Id: <Bx59un.KDI@ecf.toronto.edu>
Newsgroups: comp.unix.sysv386,comp.windows.x,news.answers

Archive-name: Intel-Unix-X-faq
Last-modified: 3 Nov 1992

Note: This is a major re-organization (and replacement) of my
      "Frequently Asked Questions About X386" FAQ list.

This article includes answers to:

I) What options do I have for X software on my Intel-based Unix system?
	1. Free options
	2. Commercial options
II) What is XFree86 and where do I get it?
	3. What is XFree86?
	4. What OSs are supported?
	5. What video hardware is supported?
	6. What other hardware or software requirements are there?
	7. Where can I get source for XFree86?
	8. Where can I get binaries for XFree86?
IV) What general things should I know about running XFree86?
	9. Installation directories
	10. Configuration files
	11. Determining VGA dot clocks and monitor modes
	12. Rebuilding/reconfiguring the server from the link kit
V) What OS-specific things should I know about running XFree86?
	13. SVR4
	14. SVR3
	15. 386BSD
	16. Linux
	17. Mach
VI) What general things should I know for building XFree86 from source?
	18. Disk space requirements
	19. README files to take note of
	20. Compiler recommendations
VII) What OS-specific things should I know for building XFree86 from source?
	21. SVR4
	22. SVR3
	23. 386BSD
	24. Linux
	25. Mach
VIII) Is there anything special about building clients with XFree86?
	26. BSD compatibility library
	27. ANSICCOPTIONS

This article does NOT include answers to general X questions, since these
are already covered by the X FAQ that is regularly posted by David B. Lewis
<faq%craft@uunet.uu.net>.

If you have anything to add or change on the FAQ just let me know.
(especially if you had a problem that someone else was able to help you with)
Send changes to steve@ecf.toronto.edu, please put 'FAQ' somewhere
in the subject line so that my mail filter will put it in the correct
mail folder.

Please DO NOT ask me questions that are not answered in the FAQ.  I do not
have time to respond to these individually.  Instead, post your question
to the net, and send me the question and answer together when you get it.

Frequently Asked Questions About X on Intel-based Unix (with answers)
=====================================================================

I) What options do I have for X software on my Intel-based Unix system?

1. Free options
	The BEST option is XFree86, which is an enhanced version of X386 1.2.
	Any other version of X386 will have slower performance, and will
	be more difficult to compile.  Information on how to obtain XFree86
	is listed below.

	X386 is the port of the X11 server to System V/386 that was
	done by Thomas Roell (roell@sgcs.com).
	It supports a wide variety of SVGA boards.
	There are 2 major free versions: X386 1.1 is based on X11R4,
	X386 1.2 is included in MIT's X11R5 distribution (ie. you
	don't need to patch it into the MIT source any more).
	X386 1.3 is the current commercial offering from SGCS (see below).

2. Commercial options

     1) Metro Link
	2213 W. McNab Road
	Pompano Beach, FL  33069
	(305) 970-7353
	Fax: (305) 970-7351
	email: sales@metrolink.com

	Summary: OS: SVR3.2, SVR4, Venix
		 HW: EGA, VGA, SVGA, TIGA, TARGA, 8514/A, S3
		 Other: Motif, OpenLook/XView, XIE Imaging Extension

     2) SGCS (Snitily Graphics Consulting Services)
	894 Brookgrove Lane
	Cupertino, CA  95014
	(800) 645-5501, (408) 255-9665
	Fax: (408) 255-9740
	email: info@sgcs.com  or ...!mips!zok!info

	Summary: OS: SVR3.2, SVR4 
		 HW: 8514/A (ATI Ultra), S3 (Diamond Stealth), SVGA
		 Other: Motif, Dual-headed server

	NOTE: Other commercial vendors (including OS vendors describing
	      bundled software) are welcome to submit summary information
	      summary information such as the above.

II) What is XFree86 and where do I get it?

3. What is XFree86?

   XFree86 is an enhanced version of X386 1.2, which was distributed with
   X11R5.  This release consists of many bug fixes, speed improvements, and
   other enhancements.  Here are the highlights of the enhancements:

    1) The SpeedUp package from Glenn Lai is an integral part of XFree86,
       selectable at run-time via the Xconfig file.  Some SpeedUps require
       an ET4000 based SVGA, and others require a virtual screen width of
       1024.  The SpeedUps suitable to the configuration are selected by
       default.  Depending on the underlying hardware, these enhancements
       can provide as much as a 50% improvement in xStones.
    2) The fX386 packages from Jim Tsillas are included as the default
       operating mode if SpeedUp is not selected.  This mode is now
       equivalent in performance to X386 1.1b (X11R4).
    3) Support for LOCALCONN, compile-time selectable for server, clients,
       or both.  This support is for both SVR3.2 and SVR4.  For SVR4.0.4
       with the 'Advanced Compatibility Package', local connections from
       SCO XSight/ODT clients are supported.
    4) Support for the newer ET4000-based SVGAs which have high clocks and
       reported incorrect clock values with the standard version.  This
       support is automatic and does not require any Xconfig options.
       Note that the Diamond SpeedStar 24 (as opposed to the 24X) is an
       ET4000 board that is NOT compatible with XFree86 (in addition, the
       SpeedStar 24X does not use an ET4000, and is also not supported).
    5) Support for compressed bitmap fonts has been added (Thomas Eberhardt's
       code from the contrib directory on export.lcs.mit.edu).
    6) Integrated support for 386BSD, Mach, and Linux.
    7) A monochrome version of the server which will run on generic VGA
       cards is now included.  This server uses just 64k of the memory on
       the VGA, and hence is limited to a virtual screen of approx. 800x600.
    8) New configuration method which allows the server's drivers and font
       renderers to be reconfigured from both source and binary
       distributions.

   Also included are a tutorial on monitor timing by Bob Crosson, and the
   current X386 mode database and a sample xdm configuration by David Wexelblat.

4. What OSs are supported?

    XFree86 supports:
	SVR4: Microport, Dell, Esix, ISC, AT&T, MST, Consensys, UHC
	SVR3: ISC 2.2 & 3.0, AT&T 2.2
	Linux, Mach, 386BSD

	BSD/386 is not supported, but it should work. The most active
	BSD/386 person is Greg Lehey <grog%lemis@germany.eu.net>.

	Note that Esix 3.2D and SCO are not supported yet,
	but anyone should feel free to submit patches.

5. What video hardware is supported?

	ET4000		(Tseng)
	ET3000		(Tseng)
	PVGA1		(Paradise)
	WD90Cxx		(Western Digital - Paradise PVGA1 Supersets)
	GVGA		(Genoa)
	TVGA8900C	(Trident)
	ATI18800,28800	(ATI SVGA - not 8514!)

	If you are purchasing new hardware for the purpose of using XFree86, it
	is suggested that you purchase an ET4000-based board such as the
	Orchid ProDesigner IIs.  Avoid recent Diamond boards; XFree86 will not
	work with them, because Diamond won't provide programming details.

	What about accelerated boards?

	At this time, there is no support for accelerated boards like the
	S3, ATI Ultra (8514/A), TIGA, etc.  This support is available in
	commercial products from SGCS and MetroLink (for SVR3 and SVR4).

	A beta S3 server is available for 386BSD. Contact <hasty@netcom.com>
	A beta 8514/A server is available for Linux. Contact <martin@cs.unc.edu>
	or <jon@robots.ox.ac.uk>. Note: these servers are NOT part of XFree86.

6. What other hardware or software requirements are there?

	Obviously, a supported SVGA board and OS are required.  To run
	X efficiently, 12-16MB of memory should be considered a minimum.
	The various binary releases take 10-40MB of disk space, depending
	on the OS (e.g. whether or not it supports shared libraries).
	To build from sources, at least 80MB of free disk space will
	be required, although 120MB should be considered a comfortable 
	lower bound.

7. Where can I get source for XFree86?

	Source patches for the current version (1.1, based on X11R5 PL17
	from MIT), are available via anonymous FTP from:
		export.lcs.mit.edu (under /contrib/XFree86)
		ftp.physics.su.oz.au (under /XFree86)
		ftp.win.tue.nl (under /pub/XFree86)
	(For the rest of this FAQ, these 3 location will be called $FTP)

	Refer to the README file under the specified directory for information
	on which files you need to get to build your distribution.

8. Where can I get binaries for XFree86?

	Binaries are available via anonymous FTP from:
		ftp.physics.su.oz.au		- SVR4 binaries
			under /XFree86/SVR4
		ftp.win.tue.nl			- SVR4 binaries
			under /pub/XFree86/SVR4
		ferkel.ucsb.edu			- SVR4 binaries
			under /pub/SVR4/XFree86
		stasi.bradley.edu		- SVR4 binaries
			under /pub/XFree86/SVR4
		blancmange.ma.utexas.edu	- SVR3 (ISC) binaries
			under /pub/ISC/XFree86-1.1
		tsx-11.mit.edu			- Linux binaries
			under /pub/linux/packages/X11/xfree86-1.1
		agate.berkeley.edu		- 386BSD binaries
			under /pub/386BSD/0.1-ports/XFree86
		nova.cc.purdue.edu		- 386BSD binaries
			under /pub/386bsd/submissions/XFree86
		ftp.cs.uwm.edu			- Mach binaries
			under /i386

	Each binary distribution will contain a README file that describes
	what files you need to take from the archive, and which compile-time
	option selections were made when building the distribution.

IV) What general things should I know about running XFree86?

9. Installation directories

	The top-level installation directory is specified by the ProjectRoot
	(/usr/X386, by default) variable in config/site.def. Binaries, include
	files, and libraries are installed in $ProjectRoot/{bin,include,lib}.

	This can be changed when rebuilding from sources, and can be modified
	via symbolic links for those OSs that support them. This directory is
	nonstandard, and was chosen this way to allow XFree86 to be installed
	alongside a commercial/vendor-supplied X implementation.

10. Configuration files

	The XFree86 server reads a configuration file ("Xconfig") on startup.
	The search path, contents and syntax for this file are documented in
	the server manpage, which should be consulted before asking questions.

11. Determining VGA dot clocks and monitor modes

	David E Wexelblat (dwex@mtgzfs3.att.com) maintains a database of known
	clock settings for VGA cards and monitor settings.  This database is
	available from him (for the latest copy), and is kept on
	export.lcs.mit.edu in ~/contrib/X386.modeDB.Z, which is updated
	occasionally.  Obtain a copy of this database.  It just might have the
	settings you need.  If you create new settings, please send them to
	David for inclusion in the database.

	If this doesn't help you, the CONFIG file with XFree86 contains
	a tutorial on how to come up with these timings.  It may be helpful to
	start with setting that almost work, and use this description to get
	them right.  When you do, send the information to David Wexelblat for
	inclusion in the database (also look at $FTP/XConfig.Notes).

	NOTE: The old 'clock.exe' program is not supported any more, and
	      is completely unnecessary.  If you need to determine dot
	      clock values for a new board, remove the 'Clocks' line from
	      your Xconfig file (if present), and start the server.  The
	      server will probe for clocks itself and print them out.
	      You can use these values to put a 'Clocks' line into your
	      Xconfig file, which is not necessary, but will speed up
	      starting the server in the future.

12. Rebuilding/reconfiguring the server from the link kit

	If you have installed the server Binary Link Kit, it is possible to
	reconfigure the drivers and font renderers in the server.  This is
	fully explained in the README file that is available with the link kit.

V) What OS-specific things should I know about running XFree86?

13. SVR4
	Why won't my xterm run properly?

	If your kernel is not built with the consem module, you should define
	CONSEM=no in you environment. Otherwise xterm won't run.
	csh users should use 'setenv CONSEM no'

14. SVR3

	Make sure you look at $FTP/README.ISC, if that's what you are running.

15. 386BSD

	Make sure you look at $FTP/README.386BSD.

	1) What if after xdm, twm and xterm start up and run ok, the keyboard
	   freezes and i have to reboot?

	If the server crashes and fails to put the keyboard back in ascii
	mode (e.g. your keyboard is dead but remote logins are fine), you
	can reset it by 'kbd_mode -a' from a remote login.  Likewise, if a
	rogue program put the keyboard in ascii mode while the server is
	running, the keyboard will need to be reset using 'kbd_mode -u'.

	2) What do I do if xdm reports 'Crypt not present in system' or xdm
	   won't accept my password?

	If you are using the xdm binary from core-bin-1.1.tar.Z on agate,
	make sure your passwords are unencrypted.  Use vipw to check the
	password file -- you should see the unencrypted passwords there.
	If so, ignore the 'Crypt not present in system' message.

	Why? 386BSD 0.1's stock crypt routine is a dummy (crypt_dummy.c)
	that prints this message whenever you invoke it.  This message
	merely tells you that passwords are unencrypted.

	This dummy crypt is staticly linked into xdm in core-bin-1.1.tar.Z
	on agate, and export restrictions prevent us from providing
	binaries with a real crypt.  If you need xdm with a working crypt,
	you will have to get the XFree86 distribution and rebuild xdm.
	Chris Demetriou's /usr/386bsd.errata/crypt.instructions tells you
	how to install a real crypt.

	[ thanks to rich@lamprey.utmb.edu for these suggestions ]

16. Linux

	You must be running Linux 0.97pl4 or greater, and have the 4.1 gcc
	jump libraries installed.

	Make sure the binaries X386, X386mono, xload and xterm are setuid root.

	If your kernel doesn't have TCP support compiled in, you'll have to
	run the server as "X -pn". The default startup configuration assumes
	that TCP is not available. If it is, change the two files
	/usr/X386/bin/startx and /usr/X386/lib/X11/xdm/Xservers, removing the
	-pn argument to X386.

	Make sure /dev/console is either a link to /dev/tty0 or has the major
	number 4, minor number 0. Also note that if /dev/console is not
	owned by the user running X, then xconsole and xterm will not permit
	console output redirection. Xdm will properly change the owner, but
	startx won't.

	When running xdm from rc.local, you will need to provide it with
	a tty, for example "xdm < /dev/console &".

	For more detailed information, please read the file README present
	with the distribution on tsx-11.mit.edu.

17. Mach

	Make sure you look at $FTP/README.Mach.

VI) What general things should I know for building XFree86 from source?

18. Disk space requirements

    - about 60-70MB of free disk space is required for building XFree86. An
      additional 20-30MB is required to install the built binaries,
    - If you don't want to build PEX and/or want to minimize disk usage,
      you can remove some or all of the following directories:

        mit/doc                         mit/hardcopy
        mit/demos/auto_box              mit/extensions/lib/PEX
        mit/demos/beach_ball            mit/extensions/server/PEX
        mit/demos/gpc                   mit/extensions/test/InsPEX
        mit/fonts/PEX                   mit/lib/CLX
        mit/server/ddx/dec              mit/server/ddx/ibm
        mit/server/ddx/macII            mit/server/ddx/mips
        mit/server/ddx/omron            mit/server/ddx/snf
        mit/server/ddx/sun              mit/server/ddx/tek
        mit/util/PEX

      The following large fonts in mit/fonts/bdf/misc can also be removed:

         k14.bdf             hang*.bdf         jiskan*.bdf

19. README files to take note of

	$FTP/README, as well as any system-specific README file.
	Also read through 'site.def'.  There are lots of documented options
	that can be changed from their defaults by editing this file.

20. Compiler recommendations

	gcc 2.? is *strongly* recommended for building server, libs, clients.
	In most cases it generates faster code than the standard compiler, and
	for those with a 486, its -m486 flag can provide an additional 5%
	improvement. The resulting executables will be larger, but can still
	be run on a 386 CPU with no loss in performance.

VII) What OS-specific things should I know for building XFree86 from source?

21. SVR4

	You may need to re-tune your kernel (see the README file).
	Don't use csh, use ksh instead.

22. SVR3

	Make sure you look at $FTP/README.ISC, if that's what you are running.

23. 386BSD

	Make sure you look at $FTP/README.386BSD.

24. Linux

	Some Makefiles in the server are automatically generated based on
	configuration options. Under Linux, these automatic makes do not
	perform the "make depend" step. To turn that back on, change the
	definition of "Depend" in x386.cf from "emptyrule" to "depend".

	Makedepend is a shell script that uses ed. The public domain version
	of ed used in linux has a line length limit of 512 characters,
	and mit/lib/X has one line of 1500 characters, causing make to fail.
	Recompiling ed with a line limit of 2048 will avoid this problem.
		[ Thanks to <jon@robots.ox.ac.uk> for this suggestion ]

	To create private jump libraries, use the tools in the gcc shlib
	subdirectory. Change the Makefile appropriately and type "make X11".

	For more detailed information, please read the file README present
	with the distribution on tsx-11.mit.edu.

25. Mach

	Make sure you look at $FTP/README.Mach.

VIII) Is there anything special about building clients with XFree86?

26. BSD compatibility library

	A lot of clients make use of BSD functions like bcopy(), etc.
	The default configuration files are set up to link with libXbsd.a
	which contains emulation for bcopy(), bzero(), bcmp(), ffs(), random(),
	seed(). A better way of providing the 'b' functions is to include
	<X11/Xfuncs.h> in source files that call them.  Xfuncs.h provides macro
	definitions for these in terms of the SYSV 'mem' functions.  If you are
	linking with a vendor supplied library which calls some of these
	functions, then you should link with libXbsd.a

27. ANSICCOPTIONS

	This is something that was added to allow a developer to get rid of the
	ANSI-ness defined in the default CCOPTIONS without having to rewrite
	the entire CCOPTIONS line.  For example, with stock MIT, you'd see
	something like
		CCOPTIONS="-ansi -O2 -fwritable-strings"
	and to get rid of the ANSI-ness, the developer would have to put
		CCOPTIONS="-O2 -fwritable-strings"
	in his Imakefile.  With this change, you would see a default of
		ANSICCOPTIONS="-ansi"
		CCOPTIONS="-O2 -fwritable-strings"
	and all the developer would have to put in the Imakefile is:
		ANSICCOPTIONS=
	to get rid of the ANSI-ness (many X clients will die a horrible death
	with -ansi).  The effect is even more dramatic in practice, because
	CCOPTIONS is actually quite complex.  The other issue is that one must
	add 'ANSICCOPTIONS=$(ANSICCOPTIONS)' to a PassCDebugFlags definition.

CONTACT INFORMATION

    Ongoing development planning and support is coordinated by the XFree86
    Core Team.  At this time the Core Team consists of:

	The original "gang of four":
		David Dawes <dawes@physics.su.oz.au>
		Glenn Lai <glenn@cs.utexas.edu>
		Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
		David Wexelblat <dwex@mtgzfs3.att.com>

	Those supporting non-SYSV operating systems:
		Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu> [Mach]
		Rich Murphey <rich@lamprey.utmb.edu> [386BSD]
		Orest Zborowski <obz@raster.kodak.com> [Linux]

    e-mail sent to <xfree86@physics.su.oz.au> will reach all of the core team.

	--------------------------------------------------

Thanks to all the people who already sent me corrections or additions.
-- 
Steve Kotsopoulos                   mail:   steve@ecf.toronto.edu
Systems Analyst                     bitnet: steve@ecf.UTORONTO.BITNET
Engineering Computing Facility      uucp:   uunet!utai!ecf!steve
University of Toronto               phone:  (416) 978-5898