I keep getting inquiries about multiseat X configuration under X11R6.9/7.0 and Linux. It's no longer necessary to patch the kernel or the X server to get this to work - you can set everything up in the xorg.conf file.
Here is a temporary mini-Howto document that I've put together. I'll write a better one when X11R6.9/7.0 is finalized (and time permits
) ... and there will be a chapter on the topic in one of my upcoming books. In the meantime, have fun! -- please let me know what experiences you have trying this out (positive or negative) -- in particular, it would be great to have reports on which video card combinations work or do not work.
(For those new the term "Multiseat X", it means creating a system with mulitple video monitors, keyboards, and mice for simultaneous use by multiple users -- like my home system).
Quick Guide/Mini-HOWTO on Creating a Multiseat X System using X.Org 6.9
Chris Tyler - December 2005
For updates see http://blog.chris.tylers.info
-----------------------------------------------------
Warning! This isn't a project for the faint-of-heart!
It requires good sysadmin expertise and lots of
patience. If you want a simple[r] solution, please
contact me in the Spring of 2007 to inquire about
configuration scripts to automate some of this setup.
-----------------------------------------------------
------------------------------------------------------
Hardware requirements
- Compatible AGP/PCI/PCIE video cards. The definition
of "Compatible" is very much up in the air at this
time. Chipsets from the same manufacturer often work
well. If you're using nVidia cards, use the non-GPL
"nvidia" driver instead of the GPL "nv" driver.
- Zero or one PS/2 keyboard and mouse sets, and one
or more USB keyboard and mouse sets.
- Zero or more sound cards. Directing the sound output
from each application to the correct speaker set is
left as an exercise for the reader.
------------------------------------------------------
1. Install your favorite Linux distro.
2. Upgrade the X server to X.Org 6.9 or 7.0 if necessary (pre-release versions at
http://x.org) - FC5 test releases include X.org 7.0.
(Note that 6.9 and 7.0 are the same software, but 6.9 is a monolithic build and 7.0 is modular).
3. Configure and test a Xinerama configuration using "X -configure".
(Refer to http://www.tldp.org/HOWTO/Xinerama-HOWTO/ if needed)
4. Plug in your additional USB keyboards and mice.
5. Find all of the keyboards and mice in /proc/bus/input/devices. Note
the Handlers line for each device; find the ' eventX' value for each
keyboard and the ' mouseX' value for each mouse.
6. Construct an InputDevice section for each keyboard, and place it in
the /etc/X11/xorg.conf file:
Section "InputDevice"
Identifier "keyboardN"
Driver "evdev"
Option "Device" "/dev/input/eventX"
EndSection
Replace N with a sequential keyboard number, and X with the event
handler identified in step 5.
7. Construct an InputDevice section for each mouse, and place it in
the /etc/X11/xorg.conf file:
Section "InputDevice"
Identifier "mouseN"
Driver "mouse"
Option "ZAxisMapping" "4 5"
Option "Device" "/dev/input/mouseX"
EndSection
Replace N with the a sequential mouse number, and X with the mouse
handler identified in step 5.
8. Create a ServerLayout section for each seat, and add it to the
xorg.conf file:
Section "ServerLayout"
Identifier "seatN"
Screen 0 "ScreenN" 0 0
InputDevice "mouseN" "CorePointer"
InputDevice "keybaordN" "CoreKeyboard"
EndSection
Where screenN matches the Identifier lines in the appropriate Screen sections.
9. Test the displays using the -novtswitch and -sharevts options:
X -novtswitch -sharevts -layout seatN :0
Replace N with each seat number in turn. You probably won't be able to
zap (Ctrl-Alt-Backspace) the server nor switch VTs, so you'll need
another system with ssh access to terminate the X servers (or run
something like ' while sleep 60 ; do killall X ; done' in the
background).
10. Although you can start each X server using the X (or Xorg) binary, it's easier to track and kill individual servers if you link separate names ( X0, X1) for each server:
ln -s /usr/X11R6/bin/X /usr/X11R6/bin/X0
ln -s /usr/X11R6/bin/X /usr/X11R6/bin/X1
Note that the X server may be relocated - when I installed 6.9 from the X.org CVS onto FC4, the server went into /usr/X11R6/bin, but in FC5 (7.0) it's in /usr/bin. This command will work in any case:
ln -s $(which X) $(which X)0
ln -s $(which X) $(which X)1
11. Add the new X servers to the display manager configuration. If
you're using Fedora Core 4, for example, modify /etc/X11/gdm/gdm.conf:
- Comment out this line by prepening the #:
#0=Standard
- Add these lines, one for each seat:
0=Standard0
1=Standard1
...
- Add these sections:
[server-Standard0]
name=Standard server
command=/usr/X11R6/bin/X0 -novtswitch -sharevts -layout seat0
flexible=false
[server-Standard1]
name=Standard server
command=/usr/X11R6/bin/X1 -novtswitch -sharevts -layout seat1
flexible=false
12. Restart the display manager and enjoy!
This entry was posted by chris on Monday, December 5. 2005 at 19:59. and is filed under X Window System (X11). You can leave a response, or trackback from your own blog.