Ключевые слова:multiseat, x11, display, keyboard, mouse, xorg, (найти похожие документы)
From: onorua <http://onorua.livejournal.com/1419.html>
Date: Mon, 26 Nov 2007 18:21:07 +0000 (UTC)
Subject: Создание многоместной Linux системы с 6-ю мониторами
Оригинал: http://onorua.livejournal.com/1419.htmlhttp://linuxgazette.net/124/smith.htmlВведение
Six users on one computer
Многоместная Linux ситема: этот документ, рассказывает как создать
многоместную, многопользовательскую Linux систему используя новейшее
Linux ПО и стандартные USB миши и клавиатуры. Xorg называет это -
"многоместная" ("multi-seat") система.
Преимущество многоместных систем: Преимущества многоместных систем в
школах, Internet кафе и библиотеках состоит не только в экономии
денег. Они так же включают в себя существенное уменьшенние шума,
потребление електроенергии и экономию места. Во многих случаях,
електро-потребление и количество шума так же важны как и цена.
Требования: Для создания мультиместной системы, вам нужны: видеокарта,
клавиатура и мышь для каждого рабочего места. Для создания 6-ти
рабочих мест, вам так же нужна материнская плата с AGP слотом и 5
доступных PCI слотов. Вам так же потребуется 5 PCI видеокарт. В нашей
тестовой системе мы использовали только USB клавиатуры и миши, но вы
можете использовать так же PS/2 клавиатуру и мишь для одного из мест,
если хотите конечно.
Xorg 6.9 является необходимым условием, но так как большинство
дистрибутивов уже используют эту версию, мы думаем это не является
большой проблемой. Наша тестовая система использует бесплатную версию
Mandriva 2006, мы не пересобирали ядро и не устанавливали какие-то
дополнительные пакеты.
Описание
Мы разбили создание мультипользовательской системы на пять главных
шагов:
1. Выбрать и установить аппаратное обеспечение
2. Установить Linux
3. Записать конфигурацию аппаратного обеспечения
4. Изменить xorg.conf
5. Изменить gdm.conf
После инсталяции аппаратного обеспечения и установки Linux, мы читаем
конфигурацию аппаратного обеспечения с помощью lspci комманды или из
файла /proc/bus/input/devices. Наиболее трудоемким в создании
мультиместой системы, является внесение информации о аппаратном
обеспечении в файл xorg.conf.
Шаг 1: Выбрать и установить аппаратное обеспечение
Выбор аппаратного обеспечения: Есть несколько правил по выбору
аппаратного обеспечения для вашей мультиместной системы. Для примера
клавиатуры и миши должны использовать USB, но нет никаких необходимых
требований для частоты процессора или обьема памяти. Мы советуем
создавать и тестировать вашу мультиместную систему на машине, которая
у вас уже есть, и уже потом, после тестов, увеличивать только те
параметры оборудования которые вам действительно нужны. Вы будете
удивлены сдержанностью системных стребований для мультиместной системы
которая используется, скажем, только для вебсерфинга.
Если это возможно, используйте видеокарты с увеличенным
быстродействием, но для увеличения надежности не используйте карты со
втроенным куллером. Не сипользуйте так же старые видеокарты, они имеют
проблемы с разделением шины PCI. Нам повезло с карточками nVidia но вы
так же можете попробовать карточки других производителей.
Наша тестовая система: Для нашей системы мы выбрали видеокарты на
чипсете nVidia MX4000. Они быстрые, не имеют вентиляторов и проще
поставить один драйвер для всех 6-ти видео карт. Плохая сторона у
nVidia - закрытый исходный код драйверов и чтоб его установить, вам
нужно предварительно скачать с оффициального сайта производителя архив
с драйвером. Если вы используете видеокарту nVidia, проверьте на их
вебсайте рекоммендованные настройки BIOS для вашей карточки.
Мы использовали ECS 755-A2 материнскую плату с AMD64-3200 процессором
и 1 GB оперативной памяти. Блок питания CoolMax 140mm Power Supply и
CPU куллер Thermaltake "Sonic Tower". Во время наших тестов мы
добавили куллер с пониженным шумом для охлаждения видеокарт. Поток
воздуха шел снизу, обдувал видеокарты, проходил куллер CPU и выходил
через блок питания. Такое охлаждение работало очень даже хорошо.
Начальная температура процессора возросла с 31C только до 38C после
пятнадцати минут компиляции ядра. Количество оборотов куллера в
процессе компиляции возросло с 0.25 amps, до 0.35 amps.
Скорее всего, вам потребуются USB хабы (hubs) чтоб приконнектить все
клавиатуры и миши. Вам так же нужно задуматся о разводке кабелей,
перед установкой аппаратного обеспечения: семь шнуров питания, шесть
сигнальных кабелей для мониторов, три USB хаба, двенадцать кабелей для
клавиатур и мишей - это действительно большая кабельная система!
Шаг 2: Установка Linux
Мультиместность обеспчивается с помощью Xorg 6.9/7.0 которым
комплектуются большинство современных дистрибутивов. Когда вы
устанавливаете Linux, возможно вам понадобится установить все
возможные виндовменеджеры, включая fluxbox и twm. Если вы собираетесь
использовать драйвера nVidia, не забудьте установить так же исходные
коды ядра.
Устанавливайте систему, с установленным и включенным аппаратным
обеспечением. Mandriva поможет вам, сама опознавая и конфигурируя все
6-ть наших видеокарт. Выберете уровень запуска 3, для того чтоб X-сы
не запустились автоматически при перезагрузке. Вы можете проверить
инсталяцию с помощью комманды: startx. Если все хорошо, вы можете
двигать мышкой по всем шести мониторам.
Mandriva понимает до 10-ти пунктов в диретории /dev/input, нам нужно
двенадцать так как у нас 6 мышей и 6 клавиатур. Мы увеличиваем этот
лимит до 16-ти, изменив строчку в /etc/udev/ruled.d/50-mdk.rules с:
KERNEL=="event[0-9]*", NAME="input/%k", MODE="0600"
на:
KERNEL=="event[0-9a-f]*", NAME="input/%k", MODE="0600"
Шаг 3: Запись конфигурации оборудования
Каждое устройство в нашем компьютере имеет имя, которое отделяет его
от похожих устройств в вашем компьютере. На этом шаге мы записываем
имя каждого устройства: каждой видеокарты, миши и клавиатуры. Давайте
начнем с видеокарт.
Видеокарты идентифицируются по их адресу на шине PCI. Мы можем
просмотреть оборудование на шине PCI, с помощью комманды lspci. На
нашей системе комманда lspci выдает такой результат:
lspci | grep VGA
00:09.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0a.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0b.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0c.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0d.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
Первое поле в строках выше это адресс шины. Первая цифра это номер
шины (как правило в компьютерах больше одной шины), второй номер - это
собственно номер карты на шине. Вы должны будете знать эти адреса для
создания конфигурационного файла xorg.conf.
Каждая мишь имеет файл в директории /dev/input. Комманда ls поможет
найти каждую из них.
ls /dev/input/mouse*
/dev/input/mouse0 /dev/input/mouse2 /dev/input/mouse4
/dev/input/mouse1 /dev/input/mouse3 /dev/input/mouse5
Клавиатуры идентифицируются с помощью файлов /dev/input/eventN .
Выполните more /proc/bus/input/devices. Каждая клавиатура имеет свою
запись в этом файле. Последующие две записи это записи первых двух
клавиатур в нашей системе.
more /proc/bus/input/devices
I: Bus=0003 Vendor=046e Product=530a Version=0001
N: Name="BTC Multimedia USB Keyboard"
P: Phys=usb-0000:00:03.3-4.2.1/input0
H: Handlers=kbd event6
B: EV=120003
B: KEY=1000000000007 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: LED=1f
I: Bus=0003 Vendor=046e Product=530a Version=0001
N: Name="BTC Multimedia USB Keyboard"
P: Phys=usb-0000:00:03.3-4.4.1/input0
H: Handlers=kbd event7
B: EV=120003
B: KEY=1000000000007 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: LED=1f
Вы можете создать такую таблицу, для большей наглядности
Seat Video Card Keyboard(/dev/input/) Mouse(/dev/input/)
0 00:09:0 event6 mouse0
1 00:10:0 event7 mouse1
2 00:11:0 event8 mouse2
3 00:12:0 event9 mouse3
4 00:13:0 event10 mouse4
5 01:00:0 event11 mouse5
Заметьте как адресуются видеокарты. Вы так же упростите себе жизнь,
если будете коммунтировать например мишь в тот же хаб что и
соответствующая для рабочего места клавиатура. Не беспокойтесь о
соответствии клаиватуры и монитора, после того как все будет
настроено, вы можете перемещать мониторы или клавиатуры по вашему
желанию, если это необходимо.
Шаг 4: Создание xorg.conf
Конфигурациооный файл xorg.conf имеет секции конфигурирования
клавиатур, мишей, видеокарт, мониторов, экранов и рабочих мест.
Настройка многоместной системы заключается в правильном копировании
информации из таблицы выше в соответствующие секции файла xorg.conf .
Ниже показана конфигурация наших 5-ти сидячих мест. Вы можете
использовать эту конфигурацию как прототип для ваших дополнительных
сидячих мест. Заметтье где конфигурируеться клавиатура, мишь и
видеокарта. Так как мы позаимтсвовали мониторы для наших тестов, мы
специально взяли плоские мониторы, с разрешением 1024 на 768.
# Seat 5
Section "InputDevice"
Identifier "Keyboard5"
Driver "evdev"
Option "Device" "/dev/input/event11"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbOptions" "compose:rwin"
EndSection
Section "InputDevice"
Identifier "Mouse5"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/input/mouse5"
Option "ZAxisMapping" "6 7"
EndSection
Section "Device"
Identifier "device5"
Driver "nvidia"
VendorName "NVIDIA Corp."
BoardName "NVIDIA GeForce4 (generic)"
BusID "PCI:0:13:0"
EndSection
Section "Monitor"
Identifier "monitor5"
ModelName "Flat Panel 1024x768"
HorizSync 31.5 - 48.5
VertRefresh 40.0 - 70.0
ModeLine "768x576" 50.0 768 832 846 1000 576 590 595 630
ModeLine "768x576" 63.1 768 800 960 1024 576 578 590 616
EndSection
Section "Screen"
Identifier "screen5"
Device "device5"
Monitor "monitor5"
DefaultDepth 24
SubSection "Display"
Virtual 1024 768
Depth 24
EndSubSection
EndSection
Section "ServerLayout"
Identifier "seat5"
Screen 0 "Screen5" 0 0
InputDevice "Mouse5" "CorePointer"
InputDevice "Keyboard5" "CoreKeyboard"
EndSection
А это простой прием, как узнать что все номера в xorg.conf правильные
- проверить файл с помощью sort и uniq.
sort /etc/X11/xorg.conf | uniq
[ 'sort xorg.conf|uniq -d' так же полезна, хотя бы в том случае если
вы случайно описали конфигурацию какого-то устройства дважды. -- Ben ]
Вывод комманды выше, покажет любые ошибки в нумерации клавиатур и и
других устройств.
Тестирование вашего xorg.conf файла: Это не плохая идея проверить вашу
конфигурацию и просортировать клавиатуры и миши группируя места под
одному рабочему месту. Зайдите в систему удаленно, таким образом вы не
будете использоватькакую-то конкретную видеокарту. Введите комманды
описанные ниже для каждого из 6-ти рабочих мест изменяя цифры от 0 до
5 для каждой видеокарты соответственно. Комманда ниже для рабочего
стола 5:
X -novtswitch -sharevts -nolisten tcp -layout seat5 :5 &
xterm -display :5 &
Если комманды выше завершились неудачей, проверьте сообщения ошибки, и
проверьте файл xorg.conf. Если выполнение комманд завершилось успешно
- используйте xterm чтоб упростить поиск соответствие клавиатуры
сконфигурированной для конкретного рабочего места. Клавиатуры, миши и
видеокарты нумеруются одинаково при каждом старте системы, так что вы
должны изменять их расположение только во время начальной установки и
конфигурировании.
Комманд выше скорее всего будет достаточно, если вы не хотите
использовать пользовательские профили и аутентификацию. К примеру,
6-ти местный киоск может иметь только Х-сы и веб браузер для каждого
рабочего места.
Шаг 5: Правка gdm.conf
Если вы предполагаете аутентификацию пользователей, вам нужно будет
изменить конфигурацию вашего любимого дисплей менеджера. Это
руководство описывает изменения для gdm но они так же могут быть
применимы как для kdm, так и для X дисплей-менеджера xdm.
Изменить секцию[servers] внизу файла /etc/X11/gdm/gdm.conf, для того
чтоб указать gdm-у какие X сервера стартовать. Линии должны быть:
0=Standard0
1=Standard1
2=Standard2
3=Standard3
4=Standard4
5=Standard5
Вы должны указать gdm как запускать X для каждого рабочего места. Вот
строки, которые это делают:
[server-Standard5]
name=Standard server
command=/usr/X11R6/bin/X -nolisten tcp -novtswitch -sharevts -layout seat5
flexible=true
Вам нужно будет добавить секцию похожую на секцию више, для каждого
рабочего места. Имя сервера "Standard5" в примере выше, должно
совпадать с именем в секции [servers]. Вы можете подогнать опции X в
соответствии с требованиями вашей системы.
Когда все сконфигурированно правильно, вы можете использовать
граффический вход в систему перейдя на уровень запуска 5.
telinit 5
Если все работает, сделайте уровень 5, уровнем запуска по умолчанию
поправив /etc/inittab или используя drakconf.
Результаты тестов, цена и проблемы
Тесты производительности: Между перезагрузками, мы обнаружили
превосходную производительность для 6-ти пользователей выполняющих
типичную работу на компьюетере, включая веб серфинг, електронная
почта, правка текста, и даже игры. Похоже что видео карточки с
увеличинной производительностью делают большую часть работы , и даже
во время аркадной игры и просмотра видео через веб - процессор не
очень загружен. Если 3200 это точная оценка произовдительности
процессора AMD64-3200, тогда процессор с производительностью "1600"
будет более чем достаточно.
Стоимость: Если не учитывать монитор, стоимость каждого рабочего места
в вашей системе будет около $67. Это $40 за видеокарточку MX4000, $20
за USB клавиатуру, $5 за USB мышь,и $2 за половину USB хаба. Во время
наших тестов, мы использовали дорогую клавиатуру со втроенным USB
хабом, который мы планировали использовать для персональных
пользовательских флеш приводов или аудио плееров.
Общая часть нашей системы стоит около $520. Это включая $180 CPU, $50
материнская плата, $90 память RAM и $50 куллер процессора. Корпус,
блок питания и винчестер с общей стоимостью примерно $150.
Мы предоставили тут цены, просто для сравнения.Вы можете найти цены
ниже и мы определенно рекомендуем заменить ваш процессор и материнскую
плату стоимостью примерно $230 на, скажем, Athlon 2800+ стоимостью
примерно $80. Мы не включали стоимость мониторов, так как цены на них
очень разняться, и ваши нужнды и вкус будут сами диктовать цену
которую вы можете за них заплатить.
Проблемы: Вы обратили внимание на фразу "между перезагрузками" выше?
Хотя система и работала хорошо, но работала очень не стабильно.
Особенно бросалась в глаза ошибка ядра, когда выгодили из системы.
Часть syslog одной из таких ошибок ядра, доступна тут. Мы пытались
пофиксить эти проблемы несколькими путями. Включая:
* включением/выключением APIC
* уменьшением количества тредов
* используя nv и vesa драйверов
* используя NoInt10
* обновляя оффициальный X11R6.9 релиз
* апдейт до ядра 2.6.15
* Использовать xdm и fvwm вместо gdm и Gnome
К сожалению, проблема осталась.
Ну и несколько незначительных проблем. Некоторые программы, думают что
в системе есть только один пользователь. Скринсейверы занимают очень
много процессорного времени, KDE и Gnome ругаются, если они не могут
вывести аудио. Любой общедоступный ресурс такой как аудио или запись
CD может вызвать проблемы.
В дальнейшем, мы должны будем подумать о безопасности, последующих
многоместных компьютеров. Студентские или компьютеры Internet кафе,
подвержены спланированным злонамеренным атакам. Можем ли мы доверять
KDE и Gnome в противодействии этим атакам?
Заключение
Многоместная, мультипользовательская Linux система сейчас абсолютно
возможна, используя возможности оборудования PC и стандартных Linux
дистрибутивов. Похоже использование многоместных Linux систем
неизбежно для экономии денег, потребляемого електро-питания и
производимого шума.
Что можно еще почитать
Chris Tyler's page: Chris Tyler provided support at almost every step
of the way in this project. His web site has a HOWTO that also
describes how to set up a multi-seat system. Chris is something of an
expert in X and I'm looking forward to his next book which will
contain some of the material presented here. Chris' web site is at:
http://blog.chris.tylers.info/
Xorg man pages: Xorg provides a full set of manual pages that describe
the xorg.conf file and all of the commands used in getting X-Windows
to run. The manual page for xorg.conf is at:
http://wiki.x.org/X11R6.9.0/doc/html/xorg.conf.5.html
The manual pages for the X commands are at:
http://wiki.x.org/X11R6.9.0/doc/html/manindex1.html
Оригинал статьи здесь