onorua (onorua) wrote,
onorua
onorua

Category:

Создание многоместной Linux системы с 6-ю мониторами

Введение


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
Оригинал статьи тут.
Subscribe

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 18 comments