Введение
Первая проблема с которой я столкнулся, разыскивая информацию по этой теме – это терминология. Multiseat, multistation, multiterminal – всё это термины, обозначающие рабочую станцию, предназначенную для одновременного использования несколькими пользователями. Естественно, для каждого пользователя необходимы персональные монитор, клавиатура и мышь. Соответственно, должна быть возможность подключить всё это к мультистанции, тоесть нужное количество видеовыходов на видеокарте(видеокартах) и USB либо PS/2 входов для клавиатур и мышей.
Ниже описывается настройка мультистанции для двух рабочих мест.
Оборудование и ПО
Hardware:
Software:
Постановка задачи и проблемы
Наша задача – получить на каждом мониторе отдельный X-сервер со своими клавиатурой и мышью. Основная проблема заключалась в том, что это достаточно просто на двух разных видеокартах и вероятно невозможно(судя по не которым почтовым рассылкам) на двуголовой видеокарте. После продолжительного гугления удалось найти замечательное руководство именно на эту тему, где был предложен вариант решения проблемы с помощью компонента Xorg под названием Xephyr из пакета xorg-x11-xephyr. Что такое Xephyr? Xephyr представляет из себя полноценный X-сервер, который выполняется поверх другого X-сервера. Он создан для тестов и отладки графических программ, однако он как нельзя лучше подойдёт для нашей задачи. Тоесть запускать мы будем всё же один X-сервер, а поверх него уже X-сервера для каждого рабочего места.
Вторая проблема – отсутствие поддержки evdev в Xephyr – решается с помошью этогопатча
Установим драйверы
Для начала установим нужные драйверы. Для Ge Force? FX 5500 подойдёт legasy-драйвер версии 9639. К сожалению, на момент написания статьи в branch4 их ещё не было. По-этому подключаем apt-репозторий сизифа или качаем вручную с ftp.altlinux.org и устанавливаем:
Внимание: на момент написания статьи планировалось совместить текущие драйверы и legacy-драйверы в одном пакете: будьте внимательны, названия пакетов могут измениться
настройка Xorg
Тут наша задача увидеть работающий X-сервер на обоих мониторах одновременно.
Для начала конфигурируем мониторы. Монитор Sony был сконфигурирован инсталлятором дистрибутива автоматически. Я добавил второй монитор – LG:
Теперь добавим конфигурацию для нашей видеокарты. Для этого создаётся две одинаковые секции device в xorg.conf но с разными параметрами Screen, означающими разные «головы» видеокарты:
Создадим две секции Layout. Одну для «одноголовой» конфигурации и вторую для «двуголовой». Различаются эти секции только параметрами Screen.
Так же понадобится отключит сочетание клавиш ctrl+alt+backspace, убивающее X-сервер, в секции Server Flags?:
В целом, мой xorg.conf выглядит вот так:
Запустите X и убедитесь что оба ваших монитора работают:
Если вы не увидели работающего X-сервера читайте логи и исправляйте xorg.conf
Далее нам бы установить Xephyr, но в текущей его версии отсутствует поддержка evdev. Нам без evdev никак, по этому вам надо либо самостоятельно пропатчить xorg-x11-server, либо взять уже пропатчиную версию здес
ь. Надеюсь исправления скоро попадут в дистрибутив и установка станет проще.
Ещё раз проверьте, что всё у вас запускается и можно двигаться дальше. Итак, с мониторами разобрались, теперь разберёмся с клавиатурами и мышами.
Смотрим, как у нас обстоят дела с устройствами:
&&
# cat /proc/bus/input/devices
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/class/input/input0
H: Handlers=kbd event0
B: EV=120013
B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="Im PS / 2? Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input1
H: Handlers=mouse0 event1 ts0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
I: Bus=0010 Vendor=001f Product=0001 Version=0100
N: Name="PC Speaker"
P: Phys=isa0061/input0
S: Sysfs=/class/input/input2
H: Handlers=kbd event2
B: EV=40001
B: SND=6
I: Bus=0003 Vendor=0d62 Product=001c Version=0202
N: Name="Darfon USB Combo Keyboard"
P: Phys=usb-0000:00:1d.1–1/input0
S: Sysfs=/class/input/input5
H: Handlers=kbd event4
B: EV=120003
B: KEY=10000 7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: LED=7
I: Bus=0003 Vendor=0d62 Product=001c Version=0202
N: Name="Darfon USB Combo Keyboard"
P: Phys=usb-0000:00:1d.1–1/input1
S: Sysfs=/class/input/input6
H: Handlers=kbd event5
B: EV=3
B: KEY=3078 d801d101 1e0000 0 0 0
I: Bus=0003 Vendor=046d Product=c03f Version=2000
N: Name="Logitech USB-PS/2 Optical Mouse"
P: Phys=usb-0000:00:1d.1–2/input0
S: Sysfs=/class/input/input8
H: Handlers=mouse1 event3 ts1
B: EV=7
B: KEY=f0000 0 0 0 0 0 0 0 0
B: REL=103
&&
Следующая проблема, которую необходимо решить, состоит в том, что после перезагрузки сменится event id. Для этого в файле /usr/sbin/Xephyr.sh разместим скрипт-обёртку для xephyr:
Поскольку device id не меняется из-за перезагрузок, этот скрипт связывает event id и нужную нам клавиатуру или мышь.
Так же установите скрипт для более удобного запуска xephyr c evdev и конфиг для kdm (либо для gdm, если используете его)
multistation-scripts kdm-multistation-config (либо gdm-multistation-config)
Настройки kdm нужно поправить в соответствии с вашей конфигурацией мышей и клавиатур. Для этого посмотрите вывод команды
cat /proc/bus/input/devices
и найдите нужные значения Phys для ваших устройств. В соответствии с ними выставите параметры -kbdphys и -mousephys в файле ...
Перезапустите X. Всё готово.