Multiseat на комп'ютері з ОС Debian

У даній статті описаний один із способів налаштування Multiseat(двох незалежних робочих місць на одному комп'ютері, що працює під управлінням Операційної Системи Debian, дане рішення дозволяє на базі одного комп'ютера створити два повноцінних робочих місця, дане рішення реалізовано і успішно функціонує вже кілька місяців.

image

Описане нижче було проведено на комп'ютері з ОС Debian 8.6 x64, з іншими системами працездатність даного рішення не гарантується, дисплейний менеджер LightDM, оточення робочого столу XFCE.

Материнська плата Gigabyte GA-P41T-D3P rev 1.5, дві відеокарти GeForce GT 430 і GeForce 8500 GT, материнська плата може бути абсолютно будь-який, головне щоб була можливість одночасного встановлення двох відеокарт, відеокарти можуть бути будь-якими, головна умова, щоб вони могли працювати з однією версією драйвера, при використанні двох потужних відеокарт не забуваємо про потужність блока живлення.

Зверніть увагу, на те, що в комп'ютері має бути встановлено 2 відеокарти, на одній двоголової відеокарті multiseat зробити не вийде, інтегровану в материнську плату відеокарту в більшості випадків використовувати так само не вийде, так як вона відключається при підключенні до комп'ютера іншої відеокарти.

І так, почнемо:

Для початку Вам потрібно встановити в комп'ютер дві відеокарти, і до кожної відеокарти підключити по монітору, якщо у вас в материнській платі кілька роз'ємів PCI-E x16 то тут проблем не буде, якщо у вас в материнській платі тільки один роз'єм PCI-E x16 але є роз'єми PCI-E x1 то підключити її до материнської плати можна через пристрій зване рейзер pci-e 1x-16x, яке можна знайти наприклад на алиэкспрессе.

В якості першої клавіатури і миші можна використовувати як пристрої з портами USB так і з портами PS/2, в якості другої клавитуры і миші необхідно використовувати пристрої з портами USB, не намагайтеся використовувати перехідники USB > 2 PS/2, з ними бажаний ефект отримати не вийде.

Як дисплейного менеджера повинен використовуватися LightDM, в Debian він використовується за замовчуванням.

Якщо використовуються відеокарти nvidia то потрібно встановити пропрієтарний драйвер, як це робити описувати в цій статті, я думаю, буде зайвим.

Далі потрібно налаштувати X на одночасну роботу двох моніторів, зробити це можна будь-яким способом, або створивши його вручну, або скориставшись будь-якою утилітою, якщо використовуються відеокарти nvidia це можна зробити запустивши від рута nvidia-settings, для включення другого монітора входимо X Server Display Configuration, вибираємо другий монітор, в полі Configuration вибираємо New X screen, дозвіл і частоту краще виставити в відповідних полях вручну, в кінці налаштування не забуваємо натиснути save to X configuration file.

Перезавантажуємося, повинні працювати обидва монітора, якщо так і є-продовжуємо. Робимо резервну копію файлу /etc/X11/xorg.conf, після цього відкриваємо його. У мене він був в такому вигляді:

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" "авто"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "ні"
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

Переконайтеся, що у вас дві секції Monitor, Device Screen, якщо так то їх ми більше не чіпаємо. Секцію ServerLayout ми видаляємо і замість неї додаємо:

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 

Видаляємо секції InputDevice (їх було дві), замість них додаємо 4 секції:

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" "так"
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" "так"
EndSection

В рядку Option «Device» кожній секції InputDevice вказуємо свої пристрої, для цього шукаємо в

/dev/input
/dev/input/by-id
/dev/input/by-path
свої миші і клавіатури, миші найімовірніше буде /dev/input/mouse0 і /dev/input/mouse1, клавіатури у всіх індивідуально.

Після цього в початок файлу додаємо секцію

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

Робимо резервну копію файлу /etc/lightdm/lightdm.conf, відкриваємо його, після рядка:

[LightDM]

Додаємо:

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

Перезавантажуємося, пробуємо увійти в систему, не забувайте що входити необхідно під різними користувачами.

Тепер розберемося зі звуком. Для того щоб з обох робочих місць можна було слухати звук робимо наступне:

Відкриваємо файл /etc/pulse/default.pa, в початок файлу додаємо рядок:

load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/my-pulse-socket-name

Відкриваємо файл /etc/pulse/client.conf, в початок файлу вставляємо рядок

default server = unix:/tmp/my-pulse-socket-name 

Створюємо файл /root/pulse.sh з наступними рядками:

pulseaudio -k
sleep 1
pulseaudio -D
sleep 1
pulseaudio -D —system

Ставимо на нього права 700. У кінець файлу /etc/crontab додаємо рядок:

@reboot root cd /root && ./pulse.sh

Після цього рядка обов'язково зробіть один порожній рядок. Для управління звуком використовуємо pavucontrol, якщо його немає то встановлюємо.

Якщо у Вас дві звукові карти то через pavucontrol можна для кожного додатка вибрати через який пристрій відтворювати звук, для цього у вкладці «Програвання» напроти відповідного додатка в випадаючому списку вибираємо потрібну звукову карту, можна використовувати на обоє робочих місця одну звукову карту, в такому випадку звук з обох робочих місць буде виводитися через одну акустичну систему.

» На всякий випадок прикладаю архів з файлами з працюючої системи multiseat.zip
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.