multiseat met Debian Wheezy

Eindelijk gelukt: multiseat met Debian Wheezy. De kids hebben nu 1 pc met twee seats. Zoiets dus als op http://ecofriend.com/wp-content/uploads/2012/07/solar-computer-top_64.jpg of bij Guy van multiseat.be : http://www.multiseatcomputer.be/

De tutorials op het internet zijn gemakkelijk te volgen. Er zijn een paar obstakels die ik heb moeten overwinnen:
  1. Gebruik 2 grafische kaarten. Het idee was om een dualhead grafische kaart te gebruiken en één scherm aan te sluiten op een VGA-poort en de andere op een DVI. Maar dat lukt dus niet (tenzij je natuurlijk gaat voor de Xephyr-oplossing maar dan verlies je teveel kwaliteit en 3D) . Dit heeft alles te maken met Xorg die dit -voorlopig?- niet ondersteunt. 
  2. GDM3 ondersteunt geen multisessie meer. Shame on GDM3. Gelukkig doet KDM het nog ;-) . Dat komt natuurlijk omdat GNOME aan het overstappen is op systemd en de sessie van daaruit worden geconfigureerd.
  3.  Debian start nog altijd op met het SysV-initsysteem. Hier moet je enkel maar xorg.conf en kdmrc hacken. Heel simpel dus. Andere distro's (fedora, arch, enz. ) zijn overgegaan op systemd. Daar zou de configuratie iets gemakkelijker moeten gaan maar moet je dan weer rekening houden met udevd en polkit en op dit niveau serieus wat aanpassen. Met systemd zou het ook mogelijk moeten zijn om aparte geluidskaarten in te bouwen en per seat dus een aparte config te hebben zodat elke gebruiker zijn eigen muziek heeft. Ook zou je per seat nog meer kunnen configureren dan ik nu kan maar dan moet je aan de slag kunnen met polkit en udev. Om maar te zeggen: je moet rekening houden met je init-systeem om de boel te configureren. 


Voor de mensen met interesse om het zelf uit te proberen: zijn twee nvidia-kaartjes, de muizen en toetsenborden zijn per path geconfigureerd en niet per id: niet zomaar in een ander usb-slot steken... Uiteraard aan te passen naar je eigen hardware.


/etc/X11/xorg.conf

Section "ServerFlags"
       Option "AutoAddDevices"     "false"
       Option "AutoEnableDevices"  "false"
        Option "AllowMouseOpenFail" "on"
        Option "AllowEmptyInput" "on"
        Option "ZapWarning"         "on"
        Option "HandleSepcialKeys"  "off" # Zapping on
       Option "DRI2" "on"
        Option "Xinerama" "off"   
EndSection


Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "evdev"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/by-path/pci-0000:00:13.0-usb-0:1:1.0-event-mouse"
    Option "XAxisMapping" "4 5"
    Option "YAxisMapping" "6 7"
    Option    "Emulate3Buttons"    "false"
    Option "CorePointer"
        Option "GrabDevice" "on" # prevent send event to other X-servers
EndSection

Section "InputDevice"
    Identifier     "Mouse1"
    Driver         "evdev"
    Option         "Protocol" "auto"
    Option        "Device" "/dev/input/by-path/pci-0000:00:12.1-usb-0:1:1.0-event-mouse"
    Option "XAxisMapping" "4 5"
    Option "YAxisMapping" "6 7"
    Option    "Emulate3Buttons"    "false"
    Option "CorePointer
        Option "GrabDevice" "on" # prevent send event to other X-servers
EndSection

# zwart keyboard met usb-aansluiting
Section "InputDevice"
    Identifier     "Keyboard1"
    Driver         "evdev"
    Option        "Device" "/dev/input/by-path/pci-0000:00:12.0-usb-0:3:1.0-event-kbd"
    Option    "XkbRules" "xorg"
    Option "Xkbmodel" "pc105"
    Option "XkbLayout" "be"
EndSection

#wit keyboard met ps-aansluiting
Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "evdev"
    Option        "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
    Option    "XkbRules" "xorg"
    Option "XkbLayout" "be"
    # generated from default dit is het usbtoetsenbord
    Option    "Xkbmodel" "pc105"
EndSection



Section "Device"
        Identifier      "Nvidia0"
        Driver          "nvidia"
        Option          "NoLogo"                "1"  # Remove nvidia branding at startup
        BoardName      "GeForce 8400GS"
        BusId           "PCI:1:0:0"
    Option        "RenderAccel" "true"
    Option        "AllowGLXWithComposite" "true"
EndSection




Section "Device"
        Identifier      "Nvidia1"
        Driver          "nvidia"
        Option          "NoLogo"                "1"  # Remove nvidia branding at startup
        BoardName      "GeForce 8400GS"
        BusId           "PCI:2:0:0"
    Option        "RenderAccel" "true"
    Option        "AllowGLXWithComposite" "true"
EndSection



Section "Screen"
    Identifier     "Screen0"
    Device         "Nvidia0"
    Monitor        "Monitor0"
    Option         "metaModes" "1280x1024 +0+0; 1280x1024 +0+0; nvidia-auto-select +0+0;"
        Option "AddARGBGLXVisuals" "true"
    DefaultDepth    24
    SubSection "Display"
        Depth       24
        Modes "1280x1024" "1024x768" "800x600"
    EndSubSection
EndSection



Section "Screen"
    Identifier     "Screen1"
    Device         "Nvidia1"
    Monitor        "Monitor1"
    Option         "metaModes" "1280x1024 +0+0; 1280x1024 +0+0; nvidia-auto-select +0+0;"
        Option "AddARGBGLXVisuals" "true"
    DefaultDepth    24
    SubSection "Display"
        Depth       24
        Modes "1280x1024" "1024x768" "800x600"
    EndSubSection
EndSection




Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Philips PH107E/V/S/G6"
    HorizSync       30.0 - 71.0
    VertRefresh     50.0 - 160.0
 #   Option         "DPMS"
EndSection


Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Philips PH107E/V/S/G6"
    HorizSync       30.0 - 71.0
    VertRefresh     50.0 - 160.0
#    Option         "DPMS"
EndSection




Section "Module"
##    Load           "dbe"
##    Load           "extmod"
##    Load           "type1"
##    Load           "freetype"
    Load    "glx"
EndSection





Section "ServerLayout"
    Identifier         "seat0"
    Screen            0 "Screen0" 0 0
    InputDevice        "Keyboard0" "CoreKeyboard"
    InputDevice        "Mouse0" "CorePointer"
    Option             "AutoAddDevices" "False"    
EndSection

Section "ServerLayout"
    Identifier         "seat1"
    Screen        1    "Screen1" 0 0
    InputDevice     "Keyboard1" "CoreKeyboard"
    InputDevice        "Mouse1"  "CorePointer"
    Option             "AutoAddDevices" "False"
EndSection





config voor kdmrc: kijk nog eens na met google wat je nog moet aanpassen.

[X-:0-Core]
ServerCmd=/usr/bin/X  -sharevts -novtswitch -layout seat0 -isolateDevice PCI:1:0:0 -keeptty

[X-:1-Core]
ServerCmd=/usr/bin/X -novtswitch -layout seat1 -isolateDevice PCI:2:0:0 -keeptty