                          README for X11R7.2 on NetBSD

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

   Table of Contents

   [1]What and Where is X11R7.2?

   [2]New OS dependent features

   [3]Installing the Binaries

   [4]Configuring X for Your Hardware

   [5]Running X

   [6]Kernel Support for X

   [7]Rebuilding the X Distribution

   [8]Building New X Clients

   [9]Thanks

What and Where is X11R7.2?

   X11R7.2 is an Open Source version of the X Window System that supports
   several UNIX(R) and UNIX-like operating systems (such as Linux, the BSDs
   and Solaris x86) on Intel and other platforms. This version is compatible
   with X11R6.6, and is based on the XFree86 4.4.0RC2 code base, which, in
   turn was based on the X consortium sample implementation.

   See the [10]Copyright Notice.

   The sources for X11R7.2 are available from:

   [11]http://wiki.x.org

   X11R7.2 also builds on other NetBSD architectures. See section [12]the
   Section called Building on other architectures for details.

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

New OS dependent features

   See the [13]Release Notes for non-OS dependent new features in X11R7.2.

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

  New OS dependent features in 4.2.0



     * Support of client side on NetBSD/sparc64

     * Support for in-kernel MTRR and AGP support in NetBSD 1.5Y



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

  New OS dependent features in 4.1.0



     * Enable wide characters support in NetBSD 1.5P and later.



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

  New OS dependent features in 4.0.2



     * A fix for libXmu OS detection which was broken since unix isn't
       defined anymore by the C preprocessor.

     * (limited) native wscons support. This is not activated by default.

     * Updates to the aperture driver

     * Support for multithread libraries with GNU pth

     * Add /usr/pkg/bin to the default user path.



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

  New OS dependent features in 4.0.1



     * Support for NetBSD 1.5_ALPHA

     * The Xsun server can be built on NetBSD/sparc



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

  New OS dependent features in 4.0



     * Preliminary APM support.



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

  New OS dependent features in 3.9.18



     * Soft-booting secondary cards through the int10 BIOS interface is now
       possible using the x86emu real mode emulator.



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

  New OS dependent features in 3.9.17



     * Support for silken mouse with the wsmouse protocol has been added.

     * A new version of the Aperture driver which provides MTRR support is
       included.



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

Installing the Binaries

   Refer to the [14]Installation Document for detailed installation
   instructions.

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

Configuring X for Your Hardware

   The /etc/X11/xorg.conf 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.

   You'll need info on your hardware:

     * Your mouse type, baud rate and its /dev entry.

     * The video card's chipset (e.g. ET4000, S3, etc).

     * Your monitor's sync frequencies.



   For details about the xorg.conf file format, refer to the [15]xorg.conf(5)
   manual page.

   Once you've set up a xorg.conf file, you can fine tune the video modes
   with the xvidtune utility.

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

  About mouse configuration

   X11R7.2 has support for the mouse driver included in the wscons console
   driver introduced by NetBSD 1.4. Specify ``wsmouse'' as the protocol and
   ``/dev/wsmouse0'' as the device in /etc/X11/xorg.conf if you're using
   NetBSD 1.4 or later with a PS/2 mouse.

   For older releases, the NetBSD pms mouse driver handles PS/2 style mice as
   Busmouse. Specify the protocol as ``busmouse'' in the mouse section of
   your xorg.conf file if you're using a PS/2 mouse with NetBSD 1.3 or former
   releases.

   Only standard PS/2 mice are supported by this driver. Newest PS/2 mice
   that send more than three bytes at a time (especially Intellimouse, or
   MouseMan+ with a wheel) are not supported by NetBSD 1.3 and former
   releases.

   See [16]README.mouse for general instruction on mouse configuration.

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

Running X

   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.

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

  Starting Xdm, the display manager

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

   You can start xdm automatically on bootup by changing the line

   xdm=NO                  xdm_flags=""            # x11 display manager

   to:

   xdm=YES                 xdm_flags=""            # x11 display manager

   in /etc/rc.conf.

   Under NetBSD 1.4 and later with the wscons console driver, you must enable
   a virtual console for the X server first. To do this follow these steps:

     * Make sure the device file exists. If not, ``cd /dev ; ./MAKEDEV
       wscons''.

     * Next, make sure your kernel wants to do wscons. (see [17]below).

     * Next, make sure ``wscons=YES'' in /etc/rc.conf.

     * Next, make sure /etc/wscons.conf exists. The relevant bits:

       #screen 0       -       vt100
       screen  1       -       vt100
       screen  2       -       vt100
       screen  3       -       vt100
       screen  4       -       -
       screen  5       -       vt100



   (Thanks to Mason Loring Bliss <mason@acheron.middleboro.ma.us> for this
   explanation)

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

Kernel Support for X

   To make sure X support is enabled under NetBSD, the following line must be
   in your config file in /sys/arch/i386/conf:



   options XSERVER, UCONSOLE



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

  Console drivers

   The server supports the standard NetBSD/i386 console drivers: pccons, pcvt
   and wscons (in pcvt compatibility mode). They are detected at runtime and
   no configuration of the server itself is required.

   The pccons driver is the most widely tested and is the console driver
   contained in the NetBSD binary distribution's kernels.

   The pcvt console driver was bundled with NetBSD until 1.4. The pcvt X mode
   is compatible with the pccons driver X mode. It offers several virtual
   consoles and international keyboard support. In order to use this driver,
   change the line:



   device          pc0     at isa? port "IO_KBD" irq 1



   to



   device         vt0     at isa? port "IO_KBD" irq 1



   in your kernel config file, and rebuild and install your kernel.

   Wscons is the current console driver, included in NetBSD 1.4 and later.
   For now, X supports wscons using the pcvt compatibility mode, so be sure
   to have the lines:

   options         WSDISPLAY_COMPAT_PCVT           # emulate some ioctls
   options         WSDISPLAY_COMPAT_SYSCONS        # emulate some ioctls
   options         WSDISPLAY_COMPAT_USL            # VT handling
   options         WSDISPLAY_COMPAT_RAWKBD         # can get raw scancodes

   in your kernel configuration file if you're using wscons. Refer to the
   wscons(4) and wsmouse(4) manual pages for informations on how to configure
   wscons into the kernel.

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

  Aperture Driver

   By default NetBSD include the BSD 4.4 kernel security feature that disable
   access to the /dev/mem device when in multi-users mode. But X.Org
   Foundation X servers can take advantage (or require) linear access to the
   display memory.

   Most X11R7.2 card drivers require linear memory access. There are two ways
   to allow X to access linear memory:

   The first way is to disable the kernel security feature by adding ``option
   INSECURE'' in the kernel configuration file and build a new kernel.

   The second way is to install the aperture driver, included in source form
   in xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar in the X11R7.2 source
   distribution. Unpack it in a new directory of your choice by running:

     sh apNetBSD.shar

   By default the aperture driver will be installed in /usr/local/aperture.
   You can change this default directory by editing Makefile.inc before
   building it.

   Then run ``make build'' as root to install it. To enable it, add the
   following line to /etc/lkm.conf:

/usr/local/aperture/lkm/xf86.o  -  - /usr/local/aperture/lkm/xf86_mod_install - -

   and set ``lkm=YES'' in /etc/rc.conf

   Reboot your system. X will auto-detect the aperture driver if available.

   Warning 1: if you boot another kernel than /netbsd, loadable kernel
   modules can crash your system. Always boot in single user mode when you
   want to run another kernel.

   Warning 2: the aperture driver only allows one access at a time (so that
   the system is in the same security state once X is launched). This means
   that if you run multiple servers on multiples VT, only the first one will
   have linear memory access. Use ``option INSECURE'' if you need more that
   one X server at a time.

   Starting with XFree86 3.9.17, the XFree86 aperture driver also supports
   MTRR write combining on Pentiums II and AMD K6 class processors.

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

  MIT-SHM

   NetBSD 1.0 and later supports System V shared memory. If X detects this
   support in your kernel, it will support the MIT-SHM extension.

   To add support for system V shared memory to your kernel add the lines:



    # System V-like IPC
    options         SYSVMSG
    options         SYSVSEM
    options         SYSVSHM



   to your kernel config file.

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

Rebuilding the X Distribution

   You should configure the distribution by editing xc/config/cf/host.def
   before compiling. To compile the sources, invoke ``make World'' in the xc
   directory.

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

  Perl support

   Starting with XFree86 4.0.2, perl is needed to build the fonts in XFree86.
   Since perl is not included with standard NetBSD installation, fonts that
   need perl are not built by default.

   If you have installed perl (from the NetBSD packages, for instance), add
   the line

   #define HasPerl YES

   in xc/config/cf/host.def before rebuilding X.

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

  Aperture driver

   To build the X server with the Aperture driver enabled, you should unpack
   apNetBSD.shar and install it first.

   Then edit xc/config/cf/host.def and add the line

   #define HasNetBSDApertureDriver    YES

   to it before rebuilding X.

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

  Console drivers

   X has a configuration option to select the console drivers to use in
   host.def:

     * if you're using pccons put:

        #define XFree86ConsoleDefines -DPCCONS_SUPPORT



     * if you're using pcvt put:

        #define XFree86ConsoleDefines -DPCVT_SUPPORT



   If you don't define XFree86ConsoleDefines in host.def the pccons and pcvt
   drivers will be supported by default.

   Experimental native support for the wscons console driver can be built by
   adding:

    #define XFree86ConsoleDefines -DWSCONS_SUPPORT

   to xc/config/host.def before rebuilding the server. This has not been
   thoroughly tested, except on the macppc.

   For the i386, you should include both pcvt and wscons support in order to
   use the pcvt compatibility mode of wscons:

    #define XFree86ConsoleDefines -DPCVT_SUPPORT -DWSCONS_SUPPORT



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

  Building on other architectures

   Note that the NetBSD project has now its own source tree, based on the X
   source tree, with some local modifications. You may want to start with
   this tree to rebuild from sources. The NetBSD xsrc source tree is
   available at: [18]ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/xsrc/

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

Building New X Clients

   The easiest way to build a new client (X application) is to use xmkmf if
   an Imakefile is included in the sources. Type ``xmkmf -a'' to create the
   Makefiles, check the configuration if necessary and type ``make''.
   Whenever you install additional man pages you should update whatis.db by
   running ``makewhatis /usr/X11R6/man''.

   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, __OpenBSD__ for OpenBSD,
   and __bsdi__ for BSD/386.

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

Thanks

   Many thanks to all people who contributed to make XFree86 work on *BSD, in
   particular: David Dawes, Todd Fries, Rod Grimes, Charles Hannum, Amancio
   Hasty, Christoph Robitschko, Matthias Scheler, Michael Smith, Ignatios
   Souvatzis, Jack Velte, Nate Williams and Pace Willison.

References

   Visible links
   1. file:///tmp/html-Qg3362#AEN19
   2. file:///tmp/html-Qg3362#AEN29
   3. file:///tmp/html-Qg3362#AEN92
   4. file:///tmp/html-Qg3362#AEN96
   5. file:///tmp/html-Qg3362#AEN129
   6. file:///tmp/html-Qg3362#AEN163
   7. file:///tmp/html-Qg3362#AEN216
   8. file:///tmp/html-Qg3362#AEN256
   9. file:///tmp/html-Qg3362#AEN278
  10. file:///tmp/COPYRIGHT.html
  11. http://wiki.x.org/
  12. file:///tmp/html-Qg3362#OTHERARCHS
  13. file:///tmp/RELNOTES.html
  14. file:///tmp/Install.html
  15. file:///tmp/xorg.conf.5.html
  16. file:///tmp/mouse.html
  17. file:///tmp/html-Qg3362#WSCONS
  18. ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/xsrc/
