РУССКАЯ ВЕРСИЯ

DISCUSS AT FORUM


You can download files which are described in the article:

AUTHOR CONTACT:

Jabber :
darion@sibnsk.net

email: darion76@gmail.com






WORKING SYSTEM :

First Seat Screenshot.
Second Seat Screenshot.

THE NEW APPROACH IN THE ORGANIZATION OF THE HOME PC

15.06.2008

Creating 3D Multiseat based on debian

Attention! You can download the files for new version Debian GNU/Linux 5.0 "Lenny" >here<

Multiseat - a system with one case and several graphics cards, monitors, keyboards and mouses. Allows multiple users to work simultaneously with one computer.

In the configuration described 2 user can play 3D games DirectX9 using wine-1.0, for example, Heroes of Might and Magic 5 (HMM5), WarHammer 40k (WH40k), Serious Sam 2 and others are not impeding each other. The system easily expands to 4 seats.

It is believed that the wine was not enough to replace Windows with dignity in the games. But here too there are subtleties. Comparing wine with Windows XP, then perhaps he lags behind by 10-20%. But do not forget about the existence of Vista, which also lags behind Windows XP. Here's the article in which the tester complained that the new version drivers under Linux (173.14.05) concedes Windows driver (175.16). Again, Windows XP. Also in the article noted that the old driver in the Linux productivity was higher (169.12). Yes, wine is behind Windows in 3D Mark tests, while it's patched and pose DirectX from Microsoft. You need only compare the real game.

The operating system Linux has found a worthy use not only on powerful servers and productive, not only in embedded systems, not only in phones and comunicators, etc., but also to many users of home computers.

Setting Linux traditionally considered to be a daunting task for the user. However, it should take into account the additional opportunities that may be obtained from taking advantage of the operating system.
Advantages of Linux known to most users, even those who never faced opensource. The most important of them:

- Stability;
- Reliability;
- Openness;
- Scalability.

Since the modern personal computer can provide simultaneous work of several users to use the property system Linux to bring several family members for one computer. This is an idea called multiseat. In itself it is not new. Already quite a long time people use Linux for organize several seats with a one case. The difference lies in a system described by maximizing the use of modern computer hardware and Linux systems. Now some details. When there motherboards with support for multicore processors and 4 connectors PCI Ex 16x, quite naturally, it was my idea to use this equipment to get several jobs without limiting the functionality. Four PCI Ex 16x fully ensure the work of the four people who will not be deprived in terms of 3D games and system power subject to the use of 4 core processor.

In my example uses the following hardware:
Motherboard MSI K9A2 Platinum V2; Socket AM2 / AM2 +; AMD 790FX + SB600; 4DDRII; PCI Express 2.0; HyperTransport 3.0; 4xP-Ex16; 1xP-Ex1; 2xP; Sound 8-ch; 1x1394a; Gigabit Lan; 4 x SATAII; 1xATA133; SATAII RAID (0,1, 0 +1); ATX
CPU X2 Athlon 64 4800 + Socket AM2; BOX; AMD; Dual-Core; 2500Mhz; 2x512KB; Brisbane; 0.065m; 65W; Revision G2; Dual-Channel DDRII
Memory 1024Mb DDR-II; PC-6400; Kingston
Videoadapter1 8600GT Asus Silent
Videoadapter2 6200TC Asus Silent

Debian 4.0 Etch
wine 1.0

The goal: to provide independent work 2 users on the specified equipment without restriction in the use of 3D acceleration.

This is followed by step-by-step instructions for those who want to repeat 3D Multiseat.
I will try to make it the most accessible and understandable, but as always in such cases you must understand that operate at their own risk. No responsibility for the fact that someone is something wrong or did not understand my recommendations, if something is out of order or were lost important data, I do not bear.
Of particular note only that the instructions are not reflected in terms of basic computer technology things. For example, if you set that we need to install the graphics card to the system unit, then you must first shutdown the computer and only after that installing graphics card. Also not considered installation of debian, if this task force under you do not, try to appeal to the relevant information, which can be found on the installation disk or on the Internet.

1.System installation.

The first step is to install and configure normal configuration with one card.
Set only one graphics card, a mouse and a keyboard.
Place in the installation disc DVD with debian. Install and configure a system with opensource driver nv.

ATTENTION! The current version of nv driver in debian Etch does not support GeForce 8600 graphics card. Therefore, when the system install use vesa (in the xorg.conf file in the section describing the card instead of Driver "nv" specify Driver "vesa") and avoid resolutions more than 1024x768 with initial setup system.

Download the proprietary driver from NVidia (from the official site nvidia.com). I used NVIDIA-Linux-x86-173.14.05-pkg1.run, but perhaps the time when you're reading this article already appear newer versions. To install reboot the system in single user. Install the driver (required root priveleged) following the instructions given on the official nvidia site: sh ./NVIDIA-Linux-x86-173.14.05-pkg1.run. Do not forget to include users who will work with the accelerator and a sound card settings add to the groups audio and video. Restart the computer in multiuser mode. Check that everything is successful:
darion@darion-debian:~$ lsmod | grep nvidia
nvidia               7096260  70
agpgart                30216  2 nvidia
i2c_core               20096  5 nvidia,it87,i2c_isa,i2c_nforce2,i2c_piix4
Make sure that the accelerator works:
darion@darion-debian:~$ glxinfo | grep direct
direct rendering: Yes
Check that really uses proprietary driver from NVidia:
darion@darion-debian:~$ glxinfo | grep vendor
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation

2.Equipment definition

After that, install a second graphics card, connect the second monitor, a second keyboard, a second mouse.
Turn on your computer, boot system.
Start the terminal. At this stage, should establish a list of equipment as determined as his system.
1. Identification cards:
darion@darion-debian:~$ lspci | grep VGA
01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0402 (rev a 1)
03:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 TurboCa che(TM)] (rev a1)
Of the resulting list shows that the 2 graphics card installed. The first GeForce 8600, the second - GeForce 6200.
2. Determine mouse and keyboard:
darion@darion-debian:~$ cat /proc/bus/input/devices
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/class/input/input0
H: Handlers=kbd event0
B: EV=120013
B: KEY=4 2000000 3802078 f840d001 feffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=09da Product=000a Version=0002
N: Name="A4Tech PS/2+USB Mouse"
P: Phys=usb-0000:00:13.1-2/input0
S: Sysfs=/class/input/input3
H: Handlers=mouse0 event2 ts0
B: EV=7
B: KEY=ff0000 0 0 0 0 0 0 0 0
B: REL=303

I: Bus=0010 Vendor=001f Product=0001 Version=0100
N: Name="PC Speaker"
P: Phys=isa0061/input0
S: Sysfs=/class/input/input4
H: Handlers=kbd event3
B: EV=40001
B: SND=6

I: Bus=0011 Vendor=0002 Product=0006 Version=0000
N: Name="ImExPS/2 Generic Explorer Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input5
H: Handlers=mouse1 event4 ts1
B: EV=7
B: KEY=1f0000 0 0 0 0 0 0 0 0
B: REL=143

I: Bus=0003 Vendor=046d Product=c312 Version=0100
N: Name="LITEON Technology USB Multimedia Keyboard"
P: Phys=usb-0000:00:13.4-1/input0
S: Sysfs=/class/input/input6
H: Handlers=kbd event1
B: EV=120003
B: KEY=10000 7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: LED=7

3. Setting X server

Using data from the previous section configures the server (important values highlighted in red). Please note that you need to customize the keyboard using evdev. For the mouse is optional. While their 2 and the same one PS / 2, could be left as is. In my case, took the following settings (the real working configuration):
darion@darion-debian:~$ cat /etc/X11/xorg.conf
Section "ServerLayout"
    Identifier     "Seat0"
    Screen         "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "ServerLayout"
    Identifier     "Seat1"
    Screen         "Screen1"
    Screen         "TV" RightOf "Screen1"
    InputDevice    "Keyboard1" "CoreKeyboard"
    InputDevice    "Mouse1" "CorePointer"
EndSection

Section "Files"

        # path to defoma fonts
    FontPath        "/usr/share/fonts/X11/misc"
    FontPath        "/usr/X11R6/lib/X11/fonts/misc"
    FontPath        "/usr/share/fonts/X11/cyrillic"
    FontPath        "/usr/X11R6/lib/X11/fonts/cyrillic"
    FontPath        "/usr/share/fonts/X11/100dpi/:unscaled"
    FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
    FontPath        "/usr/share/fonts/X11/75dpi/:unscaled"
    FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
    FontPath        "/usr/share/fonts/X11/Type1"
    FontPath        "/usr/X11R6/lib/X11/fonts/Type1"
    FontPath        "/usr/share/fonts/X11/100dpi"
    FontPath        "/usr/X11R6/lib/X11/fonts/100dpi"
    FontPath        "/usr/share/fonts/X11/75dpi"
    FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
    FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
    Load           "i2c"
    Load           "bitmap"
    Load           "ddc"
    Load           "extmod"
    Load           "freetype"
    Load           "glx"
#    Load           "int10"
    Load           "vbe"
EndSection

Section "InputDevice"

    Driver "evdev"
    Option "Phys" "isa0060/serio0/input0"
    Identifier     "Keyboard1"
    Option         "XkbModel" "evdev"
    Option         "XkbLayout" "us,ru(winkeys)"
    Option         "CoreKeyboard"
EndSection


Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Device" "/dev/input/mouse1"
    Option         "Protocol" "ExplorerPS/2"
EndSection

Section "InputDevice"
    Driver "evdev"
    Option "Phys"       "usb-0000:00:13.4-1/input0"
    Identifier     "Keyboard0"
    Option         "XkbModel" "evdev"
    Option         "XkbLayout" "us,ru(winkeys)"
    Option         "CoreKeyboard"
EndSection


Section "InputDevice"
    Identifier     "Mouse1"
    Driver         "mouse"
    Option         "Device" "/dev/input/mouse0"
    Option         "Protocol" "ExplorerPS/2"
EndSection

Section "Monitor"
    Identifier     "S/T 77/76DFX"
    # 800x600 @ 75.00 Hz (GTF) hsync: 47.02 kHz; pclk: 48.91 MHz
    Modeline "800x600_75.00"  48.91  800 840 920 1040  600 601 604 627  -HSync +Vsync
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "LG L1953S"
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "TV-Out"
    VendorName     "Samsung"
    ModelName      "Plano"
    HorizSync       30.0 - 50.0
    VertRefresh     50.0 - 50.0
EndSection

Section "Device"
    Identifier     "nVidia 8600GT"
    Driver         "nvidia"
    BusID          "PCI:1:0:0"
    Screen         0
EndSection

Section "Device"
    Identifier     "nVidia 6200TC"
    Driver         "nvidia"
    BusID          "PCI:3:0:0"
    Screen         0
EndSection

Section "Device"
    Identifier     "nvidia-TVOut0"
    Driver         "nvidia"
    VendorName     "nVidia Corp."
    BoardName      "NVIDIA GeForce 6200"
    Option         "DPMS"
    BusID          "PCI:3:0:0"
    Screen          1
EndSection


Section "Screen"
    Identifier     "Screen0"
    Device         "nVidia 8600GT"
    Monitor        "S/T 77/76DFX"
    DefaultDepth    24
    SubSection     "Display"
        Depth       1
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       4
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       8
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       15
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       16
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       24
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "nVidia 6200TC"
    Monitor        "LG L1953S"
    DefaultDepth    24
    SubSection     "Display"
        Depth       1
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       4
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       8
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       15
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       16
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       24
        Modes      "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "TV"
    Device         "nvidia-TVOut0"
    Monitor        "TV-Out"
    DefaultDepth    24
    Option         "TVStandard" "HD576i"
    Option         "TVOutFormat" "COMPOSITE"
    Option         "ConnectedMonitor" "TV,CRT"
    SubSection     "Display"

    Modes      "800x600" "640x480"
    Depth       16
    EndSubSection
    SubSection     "Display"

    Depth       24
    Modes      "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Depth       32
        Modes      "800x600" "640x480"
    EndSubSection
EndSection

4. Setting gdm

To log in, I used gdm. His need to reconfigure for a several seats. Initialize several cards requires some tweaks since the driver from NVidia closed and decompile/modify it does not allow the license agreement. But I managed to circumvent the initialization problem through experiments.
Drag the file /usr/share/gdm/defaults.conf in /usr/share/gdm/defaults.conf.orig:
darion-debian:~# cd /usr/share/gdm
darion-debian:/usr/share/gdm# mv defaults.conf defaults.conf.orig

create a symbolic link to this file:
darion-debian:/usr/share/gdm# ln -s defaults.conf.orig defaults.conf
Attention! defaults.conf.orig not just a backup file, it is required for initialization script and therefore should be present in /usr/share/gdm.

Creating a configuration file for gdm multiseat. To do this, copy the original file:
darion-debian:/usr/share/gdm# cp defaults.conf.orig defaults.conf.multiseat
Now defaults.conf.multiseat must be edited to run multiple X sessions:
The file defaults.conf.multiseat in the section [servers] need to add another server:
[servers]
# These are the standard servers.  You can add as many you want here and they
# will always be started.  Each line must start with a unique number and that
# will be the display number of that server.  Usually just the 0 server is
# used.
0=Standard0
1=Standard1

[server-Standard0]
name=Standard server
command=/usr/bin/X -sharevts -isolateDevice PCI:3:0:0 -layout seat1 :0
flexible=false

[server-Standard1]
name=Standard server
command=/usr/bin/X -sharevts -isolateDevice PCI:1:0:0 -layout seat0 :1
flexible=false
The remaining sections will leave unchanged.

5. The initialization and launch gdm script

It has, I wrote the following script. It must be put in as gdm-multiseat in the directory /etc/init.d.
darion-debian:/etc/init.d# cat ./gdm-multiseat
#! /bin/sh
### BEGIN INIT INFO
# Provides:          fake Xorg initialization
# Should-Start:      console-screen acpid
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: fake Xorg preinit script for multiseat system
# Description:       Debian preinit script for the multiseat system
### END INIT INFO
#
# Author:       Andrey Zhornyak 
#
set -e

PATH=/sbin:/bin:/usr/sbin:/usr/bin
GDM_SCRIPT=/etc/init.d/gdm
MULTISEAT_FILE=/usr/share/gdm/defaults.conf.multiseat
ORIG_FILE=/usr/share/gdm/defaults.conf.orig
SYMLINK_FILE=/usr/share/gdm/defaults.conf

test -x $GDM_SCRIPT || exit 0

case "$1" in
   start)
          rm -f $SYMLINK_FILE
          ln -s $ORIG_FILE $SYMLINK_FILE
          echo "Starting temporary single X server"
        /usr/bin/X -dpi 96 -audit 0 &
        sleep 5
        /usr/bin/killall Xorg
        rm -f $SYMLINK_FILE
        ln -s $MULTISEAT_FILE $SYMLINK_FILE
        exec /etc/init.d/gdm start
  ;;
  stop)
        exec /etc/init.d/gdm stop
  ;;
  reload)
  ;;
  restart|force-reload)
        $0 stop
        $0 start
  ;;
  *)
        echo "Usage: /etc/init.d/gdm-multiseat {start|stop|restart|reload|force-reload}"        exit 1
  ;;
esac

exit 0
Then we must remove the symbolic link to the script gdm from Level 2 (on the other levels can be left gdm):
darion-debian:~# cd /etc/rc2.d
darion-debian:/etc/rc2.d# rm /etc/rc2.d/*gdm
darion-debian:/etc/rc2.d# ln -s ../init.d/gdm-multiseat S21gdm-multiseat

After restarting, if everything is successful, you get 3D Multiseat system. If you want to add a couple of seats, it is necessary to repeat steps from 2 to 5. It may have to edit initialization script. And do not forget simple rule: 1 user - 1 core.
If after some time you decide to replace one or more of graphics cards on a more productive, such as 6200 at 8800GT, nothing changed in the settings will not have to, the driver will not have to change (it already has the support series 8xxx, 9xxx). Just replace graphics card in the case and enjoy higher productivity.

If you can improve translate quality please contact me at darion76@gmail.com


Using materials article direct hyperlink to 3D Multiseat required.

return_links(); ?>
return_links(); ?>
Get_Links(); ?>