7 Kernel Support for X

Contents of this section

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

The server supports the two standard NetBSD/i386 console drivers: pccons and pcvt. 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 is bundled with NetBSD. 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.

On OpenBSD, when not using XKB, the server can read the actual keymap from the keyboard driver and use to build the X keymap. Be sure to use ``RightAlt ModeShift'' in XF86Config to have the right Alt key behave as AltGr.

Syscons and codrv are not bundled with NetBSD nor OpenBSD. They are available by anonymous FTP from a number of sites. They are not supported by the XFree86 binary distribution anymore. You can compile support for them by adding -DSYSCONS_SUPPORT or -DCODRV_SUPPORT to XFree86ConsoleDefines in xf86site.def. See the section Console drivers for details.

If using pccons you get the message:

> Fatal server error:
> xf86OpenConsole: CONSOLE_X_MODE_OFF failed (Inappropriate ioctl for device)
> Was expecting pccons driver with X support
> Check your kernel's console driver configuration and /dev entries
> 

then delete /dev/ttyv0. I don't know why ``MAKEDEV'' move /dev/ttyqf to /dev/ttyv0. (from Hung-Chi Chu hcchu@r350.ee.ntu.edu.tw)

7.1 Aperture Driver

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

The P9000, Mach64 and AGX servers require linear memory access, other accelerated servers can take advantage of it, but do not require it.

There are two ways to allow XFree86 to access linear memory:

  1. Disable the kernel security feature by adding `option INSECURE' in the kernel configuration file and build a new kernel. On NetBSD-1.0 you have to disable kernel security by initializing the ``securelevel'' variable to -1 in /sys/kern/kern_sysctl.c, line 205. For more informations, see the comments in /usr/include/sys/systm.h.
  2. Install the NetBSD aperture driver:
    1. add the following lines to the end of /etc/rc.local:
       KERNDIR=/usr/X11R6/lib/X11/kernel
       if [ -f ${KERNDIR}/ap.o ]; then
         modload -o ${KERNDIR}/ap -e ap -p ${KERNDIR}/apinstall ${KERNDIR}/ap.o
       fi
      
      The distributed ap.o won't work with NetBSD 1.0. In this case, unpack xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar and recompile it.
    2. Reboot your system. XFree86 will auto-detect the aperture driver if available.
    Warning: 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.
    Caveat: the NetBSD 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.

7.2 MIT-SHM

NetBSD 1.0 and later supports System V shared memory. If XFree86 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. Then from /sys/arch/i386/config, type:

 # rm -f ../compile/<KERNEL-NAME>/*
 # config <KERNEL-NAME>
 # cd ../compile/<KERNEL-NAME>
 # make depend 
 # make

Then install your new kernel and re-boot:

 # cp /netbsd /onetbsd
 # cp netbsd /
 # reboot

Next Chapter, Previous Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter