Hi All, Now that I've used it for perhaps 8 years or so, I would like to say something about multiseat Linux setup.
Back in the days of 2.4 I had the most stable setup, as described by Miguel Freitas: http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/. It required two distinct graphics adapters (one multihead adapter is no good because separate BusIDs are required for each seat) and a patched X server so that keyboards/mice were read using the event interface. It was so stable that I did resist to move to 2.6... With 2.6 Miguel's solution was not so straightforward and required kernel patching, too. Some time later I decided I wanted 2.6 and in fact having a multiseat setup with Debian was possible just out of the box - something very desirable. It was described in numerous places. The main idea still was to use the event interface (then already available with modular X) and to start two X instances with "isolateDevice" options. It did work quite fine, although not as stable as Miguel's solution. There was a problem, though. The multiseat setup worked in certain
hardware configurations, and did not work in others. Worked for me ;) But only until I attempted upgrading to squeeze. Then suddenly things broken. I am almost sure it has to to with the RAC (resource access control) removal from the X: from the architecture point of view this was good, but for my setup it wasn't.
Then I recalled another way to do it: use Xephyr. It's not my invention; you can find nice descriptions for example here; nVidia specific part of the setup here; ATI specific description here. The disadvantage of the Xephyr approach is that we do not use hardware acceleration of graphics (who cares? it's still possible to watch youtube and play DVDs just fine). The advantage is that only one dual-head graphics adapter (for 2 seats) is enough - no need to use ancient PCI cards like S3 ViRGE.
I'm not going to repeat what others have already explained. Rather I would like to comment a little on what can be found on the netpatia blog. Apart from that I would like to talk about how I used udev instead of statically specifying keyboards and mice, and how I integrated relevant configuration of udev and multiseat into one config file. Stay tuned.