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:
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
De tutorials op het internet zijn gemakkelijk te volgen. Er zijn een paar obstakels die ik heb moeten overwinnen:
- 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.
- 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.
- 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