This article describes one of the ways to configure Multiseat (two independent workstations) on one computer, running under the Debian Operating System, this solution allows you to create two full-fledged workstations on the basis of one computer, this solution has been implemented and has been successfully operating for several months.
The following was carried out on a computer running Debian 8.6 x64 OS, with other systems, the performance of this solution is not guaranteed, the LightDM display manager, the XFCE desktop environment.
Gigabyte GA-P41T-D3P rev 1.5 motherboard, two GeForce GT 430 and GeForce 8500 GT video cards, the motherboard can be absolutely any, the main thing is to be able to simultaneously install two video cards, video cards can also be any, the main condition is that they can work with one driver version, when using two powerful graphics cards, we don’t forget about the power supply capacity.
')
Please note that the computer must have 2 video cards installed, it’s impossible to do the same multiseat on the two-headed multiseat video card, the video card integrated into the motherboard in most cases will not work either, since it turns off when another video card is connected to the computer.
So, let's begin:
First, you need to install two video cards in the computer, and connect each monitor card to the monitor, if you have several PCI-E x16 connectors in your motherboard, then there will be no problems, if you have only one PCI-E x16 connector in the motherboard there are PCI-E x1 connectors, then you can connect it to the motherboard through a device called raiser pci-e 1x-16x, which can be found for example on aliexpress.
As the first keyboard and mouse, you can use both devices with USB ports and PS / 2 ports, as the second keyboard and mouse, you must use devices with USB ports, do not try to use USB adapters> 2 PS / 2, get the desired effect will not work.
LightDM should be used as a display manager, it is used by default in Debian.
If you are using nvidia video cards, then you need to install a proprietary driver, how to do this is described in this article, I think it would be superfluous.
Next, you need to configure X for simultaneous operation of two monitors, it can be done in any way, either by creating it manually, or using any utility, if nvidia video cards are used, you can do this by running nvidia-settings from the root, to enable the second monitor, enter X Server Display Configuration , select the second monitor, select New X screen in the Configuration field, it is better to set the resolution and frequency in the corresponding fields manually, at the end of the setup, do not forget to click save to X configuration file.
Rebooting, both monitors should work, if it is, continue. Make a backup copy of the file /etc/X11/xorg.conf, then open it. I had it in this form:
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" RightOf "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Option "Xinerama" "0" EndSection Section "Files" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" EndSection Section "Monitor" Identifier "Monitor0" VendorName "Unknown" ModelName "LG Electronics W2253" HorizSync 30.0 - 83.0 VertRefresh 56.0 - 75.0 Option "DPMS" EndSection Section "Monitor" Identifier "Monitor1" VendorName "Unknown" ModelName "LG Electronics LG IPS FULLHD" HorizSync 30.0 - 83.0 VertRefresh 56.0 - 75.0 EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GT 430" BusID "PCI:1:0:0" EndSection Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce 8500 GT" BusID "PCI:4:0:0" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "Stereo" "0" Option "metamodes" "DVI-I-1: 1920x1080_60 +0+0" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 Option "Stereo" "0" Option "metamodes" "DVI-I-1: 1920x1080_60 +0+0" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" SubSection "Display" Depth 24 EndSubSection EndSection
Make sure you have two sections of
Monitor, Device and
Screen , if so, we don’t touch them anymore. We delete the ServerLayout section and add instead:
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Option "Xinerama" "0" EndSection Section "ServerLayout" Identifier "Layout1" Screen 1 "Screen1" 0 0 InputDevice "Keyboard1" "CoreKeyboard" InputDevice "Mouse1" "CorePointer" Option "Xinerama" "0" EndSection
We delete the InputDevice sections (there were two of them), instead of them we add 4 sections:
Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "ImPS/2" Option "Device" "/dev/input/mouse0" Option "Protocol" "ExplorerPS/2" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "ImPS/2" Option "Device" "/dev/input/mouse1" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "evdev" Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd" Option "XkbRules" "xorg" Option "XkbModel" "evdev" Option "XkbLayout" "us" Option "GrabDevice" "yes" EndSection Section "InputDevice" Identifier "Keyboard1" Driver "evdev" Option "Device" "/dev/input/by-id/usb-SIGMACH1P_USB_Keykoard-event-kbd" Option "XkbRules" "xorg" Option "XkbModel" "evdev" Option "XkbLayout" "us" Option "GrabDevice" "yes" EndSection
In the Option “Device” line of each InputDevice section, we indicate our devices , for this we search in
/ dev / input
/ dev / input / by-id
/ dev / input / by-path
their mouse and keyboard, the mouse most likely will be / dev / input / mouse0 and / dev / input / mouse1, the keyboard for all individually.
After this, we add a section to the beginning of the file.
Section "ServerFlags" Option "DefaultServerLayout" "Layout0" Option "AllowMouseOpenFail" "true" Option "AutoAddDevices" "false" Option "AutoEnableDevices" "false" Option "AllowEmptyInput" "true" Option "DontZap" "false" Option "AutoAddGPU" "false" Option "DontVTSwitch" "false" EndSection
We make a backup copy of the
/etc/lightdm/lightdm.conf file, open it, after the line:
[LightDM]
Add:
minimum-display-number=0 [SeatDefaults] xserver-command=/usr/bin/X user-session=xfce greeter-session=lightdm-gtk-greeter exit-on-failure=true [Seat:0] xserver-command=/usr/bin/X :0 -sharevts autologin-guest=false xserver-layout=Layout0 [Seat:1] xserver-command=/usr/bin/X :1 -sharevts autologin-guest=false xserver-layout=Layout1
Reboot, try to log in, do not forget that you need to log in under different users.
Now let's deal with the sound. In order to listen to the sound from both workstations, we do the following:
Open the file
/etc/pulse/default.pa , add the line to the beginning of the file:
load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/my-pulse-socket-name
Open the file
/etc/pulse/client.conf , insert the line at the beginning of the file
default-server = unix:/tmp/my-pulse-socket-name
Create the file
/root/pulse.sh with the following lines:
pulseaudio -k sleep 1 pulseaudio -D sleep 1 pulseaudio -D —system
We put 700 on it. At the end of the
/ etc / crontab file we add the line:
@reboot root cd /root && ./pulse.sh
After this line, make one blank line. To control the sound, use pavucontrol, if it is not there, then install it.
If you have two sound cards, then through pavucontrol, you can choose which device to play sound for each application. To do this, select the sound card in the “Playback” tab next to the corresponding application in the drop-down list, you can use one sound card for both workstations In this case, sound from both workstations will be output through one speaker system.
"Just in case, I attach an archive with files from the working system
multiseat.zip