Multiseat aka Горыныч
Многожопь — так можно перевести с английского слово multiseat, обозначающее компьютер, за которым одновременно могут работать несколько человек. Причем не по сети, а сидя за персональными клавиатурами, мышами и мониторами. Когда-то это называлось multihead, но со временем, когда выяснилось, что за компьютером не столько работают и думают, сколько просто сидят и протирают штаны… Впрочем, довольно лингвистических изысканий. Как же изготовить multiseat в среде Linux?
Прежде всего оговорюсь, что в Windows есть какие-то приблуды (как софтовые, так и «железячные»), позволяющие достичь такого эффекта. Но, во-первых, они платные, во-вторых противозаконные, т.к. по виндовой лицензии предполагается, что за компьютером одновременно может работать только один человек (например, при удаленном входе локальный сеанс закрывается). В Xorg-сервере же, используемом в Linux, концепция multiseat закладывалась изначально, равно как и многопользовательский доступ к графическому терминалу по сети. Вот и посчитайте что выгоднее: компьютер на каждого человека + стоимость лицензии, или компьютер, способный обслуживать несколько человек на бесплатном ПО.
О том, как построить multiseat, написано много. Есть даже LiveCD с готовым решением. Но меня всегда вдохновляла вот эта статья. Вдохновляла-то давно, но всё как-то до конца довести не удавалось это дело: то железо попадалось глючное, то видеокатры слишком старые и не стыкуемые с современными мониторами. И вот подвернулся случай: срочно понадобилось несколько дополнительных компьютеров, а денег как всегда в обрез. Убедил начальство попробовать multiseat и, оказывается, на современном железе собрать такого многоголового «горыныча» не так и сложно. Количество мест зависит от числа PCI-Express слотов. В моем случае их два, но кое-кто собирает и 6-головых монстров.
И все-таки тонкости есть. Приведу самые важные фрагменты своего xorg.conf, а потом прокомментирую.
Вообще-то такой файл можно сгенерировать командой (от рута)
Но кое что, всё-таки, нужно поправить. Драйвера клавиатур и мышей прописать строго как evdev, а не kbd и mouse. Иначе все мыши и клавиатуры будут работать на всех экранах. Во-вторых, автоматически сгенерированный конфиг будет содержать настройку, при которой один экран будет служить продолжением другого. Тоже прикольно, но нам нужно, чтобы каждый пользователь работал за своим персональным рабочим местом, поэтому лишние строчки в каждом ServerLayout'е нужно убрать. В-третьих, вам нужно выяснить какие устройства в каталоге /dev/input соответствуют клавиатурам и мышам и вписать их в соответствующие строчки секций InputDevice. То же самое с адресами видеокарт вида PCI: X: X: X. Их нужно выяснить с помощью утилиты lspci.
Еще одна вещь, до которой не так просто догадаться — нужно выключить демон hald, в моем дистрибутиве так:
Последние версии Xorg-сервера работают уже без hald, и вообще это рудимент, рулит udev. А вот при включенном hald мыши и клавы будут воздействовать на все рабочие места одновременно.
Ну и в конфиг gdm (/etc/gdm/custom.conf) нужно дописать примерно такое:
Вот, в общем-то, и всё.
Никто не мешает запускать в такой системе несколько копий Windows в виртуальных машинах . Тоже, конечно, противозаконно, но как-то более «беспалевно», как сейчас говорят. Но мне multiseat нравится не этим, а высоким КПД: когда за компьютером работает несколько человек, его ресурсы расходуются более рационально. Если для кого-то экологичность не аргумент, то могу привести другой: в помещении становится не так шумно и душно.
ЗЫ. Спасибо ребятам из магазина «Позитроника» за то, что помогли устранить мелкие неисправности, допущенные мной в процессе сборки.
Прежде всего оговорюсь, что в Windows есть какие-то приблуды (как софтовые, так и «железячные»), позволяющие достичь такого эффекта. Но, во-первых, они платные, во-вторых противозаконные, т.к. по виндовой лицензии предполагается, что за компьютером одновременно может работать только один человек (например, при удаленном входе локальный сеанс закрывается). В Xorg-сервере же, используемом в Linux, концепция multiseat закладывалась изначально, равно как и многопользовательский доступ к графическому терминалу по сети. Вот и посчитайте что выгоднее: компьютер на каждого человека + стоимость лицензии, или компьютер, способный обслуживать несколько человек на бесплатном ПО.
О том, как построить multiseat, написано много. Есть даже LiveCD с готовым решением. Но меня всегда вдохновляла вот эта статья. Вдохновляла-то давно, но всё как-то до конца довести не удавалось это дело: то железо попадалось глючное, то видеокатры слишком старые и не стыкуемые с современными мониторами. И вот подвернулся случай: срочно понадобилось несколько дополнительных компьютеров, а денег как всегда в обрез. Убедил начальство попробовать multiseat и, оказывается, на современном железе собрать такого многоголового «горыныча» не так и сложно. Количество мест зависит от числа PCI-Express слотов. В моем случае их два, но кое-кто собирает и 6-головых монстров.
И все-таки тонкости есть. Приведу самые важные фрагменты своего xorg.conf, а потом прокомментирую.
Section "ServerLayout"
Identifier "X0"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer0"
InputDevice "Keyboard0" "CoreKeyboard0"
EndSection
Section "ServerLayout"
Identifier "X1"
Screen 0 "Screen1" 0 0
InputDevice "Mouse1" "CorePointer1"
InputDevice "Keyboard1" "CoreKeyboard1"
EndSection
...
Section "InputDevice"
Identifier "Keyboard0"
Driver "evdev"
Option "Device" "/dev/input/event1"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "evdev"
Option "Device" "/dev/input/event5"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "evdev"
Option "Pevdevol" "auto"
Option "Device" "/dev/input/event4"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "evdev"
Option "Pevdevol" "auto"
Option "Device" "/dev/input/event7"
Option "ZAxisMapping" "4 5 6 7"
EndSection
...
Section "Device"
Identifier "Card0"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "nvidia"
BusID "PCI:6:0:0"
EndSection
...
Вообще-то такой файл можно сгенерировать командой (от рута)
xorgsetup
Но кое что, всё-таки, нужно поправить. Драйвера клавиатур и мышей прописать строго как evdev, а не kbd и mouse. Иначе все мыши и клавиатуры будут работать на всех экранах. Во-вторых, автоматически сгенерированный конфиг будет содержать настройку, при которой один экран будет служить продолжением другого. Тоже прикольно, но нам нужно, чтобы каждый пользователь работал за своим персональным рабочим местом, поэтому лишние строчки в каждом ServerLayout'е нужно убрать. В-третьих, вам нужно выяснить какие устройства в каталоге /dev/input соответствуют клавиатурам и мышам и вписать их в соответствующие строчки секций InputDevice. То же самое с адресами видеокарт вида PCI: X: X: X. Их нужно выяснить с помощью утилиты lspci.
Еще одна вещь, до которой не так просто догадаться — нужно выключить демон hald, в моем дистрибутиве так:
sudo chmod -x /etc/rc.d/rc.hald
Последние версии Xorg-сервера работают уже без hald, и вообще это рудимент, рулит udev. А вот при включенном hald мыши и клавы будут воздействовать на все рабочие места одновременно.
Ну и в конфиг gdm (/etc/gdm/custom.conf) нужно дописать примерно такое:
[servers]
0=Seat0
1=Seat1
[server-Seat0]
name=Seat 0
command=/usr/bin/X -novtswitch -sharevts -nolisten tcp -layout X0 :0
flexible=true
[server-Seat1]
name=Seat 1
command=/usr/bin/X -novtswitch -sharevts -nolisten tcp -layout X1 :1
flexible=true
Вот, в общем-то, и всё.
Никто не мешает запускать в такой системе несколько копий Windows в виртуальных машинах . Тоже, конечно, противозаконно, но как-то более «беспалевно», как сейчас говорят. Но мне multiseat нравится не этим, а высоким КПД: когда за компьютером работает несколько человек, его ресурсы расходуются более рационально. Если для кого-то экологичность не аргумент, то могу привести другой: в помещении становится не так шумно и душно.
ЗЫ. Спасибо ребятам из магазина «Позитроника» за то, что помогли устранить мелкие неисправности, допущенные мной в процессе сборки.
- —
- 19 сентября 2011, 23:34
Комментарии (6)
RSS свернуть / развернутьSergei_T
А если серьезно, то обслуживать легче. Плюс мне, как преподавателю, выгодно, чтобы в этой не слишком просторной аудитории стало менее шумно и менее душно.
yababay
Sergei_T
yababay
У нас тут людей «не устраивает zimbra», типа нет кнопки «пыщ», которая все сделает и нужна «ЕДИНАЯ СИСТЕМА» (TM) для записи клиентов. В итоге посчитали сколько стоит заказная разработка, сразу всех все устраивать начало. Пиз%ец, все думают что можно пойти в магазин и купить такие вещи чиста тыщи за 2.
Sergei_T
Sergei_T
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.