Build a Six-headed, Six-user Linux System

Побудова багатомісної^multiuser системи Linux

Автор : Боб Сміт (Bob Smith)
http://linuxgazette.net/authors/smith.html

Джерело : HTML (read online)

Переклад : Олександр Кравчук kravchuk.o@gmail.com

Останнє оновлення : 10 Бер 2006


Вступ

Багатомісна система лінукс: даний посібник демонструє, як створити багатомістну, багатокористувацьку лінукс систему використовуючи новий дистрибутив, стандартні USB-клавіатури і мишки. X.org називає це "багатомісною" ("multi-seat") системою.

Переваги багатомісних систем: переваги багатомісних систем у школах, інтерент-кафе і бібліотеках полягають не лише в економії коштів. Вони також включають у себе зменшення шуму, використання електроенергії (примітка перекладача: наразі дуже актуально!) та економії місця. У багатьох випадках, використання електроенергії та кількість шуму настільки ж важливі, як і вартість апаратного забезпечення.

Вимоги: для побудови багатомісної системи вам необхідні: відеоадаптер, клавіатура та мишка для кожного робочого місця. Для створення шести робочих місць вам також необхідне гніздо AGP та п'ять вільних гнізд PCI. У нашій тестовій системі ми використовували лише USB-клавіатури та миші, однак, ви при бажанні можете використати для одного з робочих місць PS/2-клавіатуру та мишку.

Наявність X.org версії 6.9 є необхідною умовою, однак, зважаючи на те, що більшість дистрибутивів вже використовує дану версію, ми не вважаємо це великою проблемою. На своїй тестовій системі ми використовували Mandriva Linux 2006, і нам не довелося ані перезбирати ядро, ані довстановлювати будь які додаткові пакунки.

Короткий огляд

Ми розділили процес створення багатокористувацької системи на п'ять основних кроків:

  1. Вибір та встановлення апаратного забезпечення;
  2. Установка лінукс;
  3. Запис складу апаратного забезпечення;
  4. Модифікація xorg.conf;
  5. Модифікація gdm.conf.

Після монтажу апаратного забезпечення і встановлення операційної системи лінукс, ми дізнаємося склад апаратного забезпечення за допомогою команди lspci або читаємо його з файлу /proc/bus/input/devices. Чимало зусиль при створенні багатомісної системи вимагає внесення складу апаратного забезпечення до файлу xorg.conf.

Крок 1: Вибір та встановлення апаратного забезпечення

Вибір апаратного забезпечення: Існує декілька правил, яких необхідно дотримуватися при виборі апаратного забезпечення для вашої багатокористувацької системи. Скажімо, деяким^numusb клавіатурам та мишам потрібно використовувати USB, однак немеє жодних вимог стосовно частоти процесора чи кількості оперативної пам'яті. Ми радимо вам використовувати для своїх експериментів ту систему, котру ви маєте у наявності на даний момент, а вже пізніше, після експерименту, змінити саме ті складові вашого апаратного забезпечення, які вам дійсно будуть необхідні. Ви, ймовірно, будете здивовані скромними вимогами до частоти процесора та кількості оперативної пам'яті для багатокористувацької системи, яка використовуватиметься, скажімо, для огляду тенет.

При наявності такої можливості, використовуйте швидкі відеоадаптери, однак, для збільшення надійності, не використовуйте відеоадаптери з інтегрованими вентиляторами. Використовуйте нові відеоадаптери: старі мають проблеми з розподілом шини PCI. Нам пофартило з адаптерами від nVidia, але ви можете спробувати адаптери інших виробників.

Наша тестова система: Для своєї системи ми обрали відеоадаптери на основі чіпсету nVidia MX4000. Вони швидкі, не мають вентиляторів, і до того ж, легше встановити один драйвер відразу ж для усіх шести відеоадаптерів. Мінусом nVidia є закритий джерельний код їхніх драйверів, і для того, щоб їх встановити вам спершу потрібно завантажити з офіційного тенет-майданчика nVidia архів з ними. Якщо ви використовуєте відеоадаптер nVidia, перевірте на їхньому майданчику тенет рекомендовані налаштування BIOS для вашого адаптера.

Ми використовували об'єднувальну плату ECS 755-A2 з процесором AMD64-3200 та 1 Ґб оперативної пам'яті. Нашим блоком живленням був CoolMax 140mm Power Supply, а вентилятором для процесора Thermaltake "Sonic Tower". Під час нашого тесту, ми додали малошумний вентилятор для охолодження відеоадаптерів. Потік повітря йшов знизу, обдував відео адптери, проходив вентилятор для процесора, і виходив через блок живлення. Здається, такий повітряний потік був доволі ефективним. При бездіяльності температура процесора становила 31°С, а після п'ятнадцятихвилинної компяліції ядра піднялася лише до 38°С.

Ймовірно, вам для отримання можливості підключення до системи усіх клавіатур та маніпуляторів, будуть потрібні концентратори USB. Також варто перед тим, як приступати до роботи, подумати над проблемою розводки кабелів. Сім кабелів живлення, шість кабелів для моніторів, три концентратори USB, дванадцять кабелів для клавіатур та маніпуляторів миші: це достатньо багато кабелів!

Крок 2: Установка лінукс

Можливість багатомісності забезпечується за допомогою X.org 6.9/7.0, які наразі входять до більшості сучасних дистрибутивів. Під час установки операційної системи лінукс у вас, можливо, виникне необхідність встановити усі віконні керівники, включно з fluxbox та twm. Якщо ви збираєтеся встановлювати драйвери nVidia, не забудьте перед тим встановити джерельні коди ядра операційної системи лінукс.

Проводьте встановлення системи з під'єднаним і увімкненим апаратним забезпеченням. Mandriva зробить всю роботу по знаходженню та налаштуванню усіх шести відеоадаптерів самотужки. Виберіть рівень запуску за замовчуванням - 3, щоб сервер X не завантажився автоматично після старту системи. Ви можете перевірити інсталяцію, зареєструвавшись у системі, і ввівши в командному рядку команду startx. Якщо все пройшло успішно, ви зможете за допомогою мишки рухати курсор на усіх шести моніторах.

Mandriva розуміє до 10-ти пристроїв у теці /dev/input, нам же потрібно 12, оскільки ми маємо 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)

Адреса шини знаходиться у першому полі рядка. Число перед двокрапкою позначає номер шини PCI (за звичай, у комп'ютерах більше однієї шини), число після двокрапки - адреса плати на шині. Ці адреси необхідно буде знати для створення конфігураційного файлу 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. Перегляньте файл /proc/bus/input/devices за допомогою команди less. Кожна клавіатура має свій запис у даному файлі. Наступні два записи є записами двох перших клавіатур вашої системи.

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

Для зручності та наочності, можете скласти таку таблицю:

Місце Відеоадаптер Клавіатура (/dev/input/) Мишка (/dev/input/)
0 00:09:0 event6 mouse0
1 00:10:0 event7 mouse1
2 00:11:0 event8 mouse2
3 00:12:0 event8 mouse3
4 00:13:0 event10 mouse4
5 01:00:0 event11 mouse5

Зверніть увагу на зручну зміну адрес адаптерів по відношенню до попереднього та наступного. У майбутньому вам буде значно зручніше, якщо ви концентруватимете клавіатури та мишки для одного робочого місця в один концентратор. Не хвилюйтесь стосовно відношення клавіатур і моніторів, по завершенні налаштування, ви зможете переміщати клавіатури і монітори за власним бажанням.

Крок 4: Модифікація xorg.conf

Конфігураційний файл xorg.conf має секції для опису клавіатур, мишок, відеоадаптерів, моніторів, екранів та робочих місць. Більшість роботи по налаштуванню багатомісної системи полягає у правильному копіюванні інформації з вищенаведеної таблиці, і вставці її до відповідних секцій файлу xorg.conf. Нижче наведені налаштування для наших п'ятьох робочих місць. Ви можете використати дану інформацію в якості прототипу для ваших робочих місць. Зверніть увагу на секції, в яких описуються монітори, клавіатури та мишки. З тих пір, як ми позичили монітори для свого випробування, ми замінили їх усі на монітори з плоским екраном, які мають роздільну здатність 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: Доречним було б перевірити вашу конфігурацію і відсортувати клавіатури та мишки групуючи їх по робочим місцях. Зареєструйтесь у системі віддалено, тоді ви не використовуватимете жодного з відеоадаптерів. Виконайте описані нижче команди для кожного з шести робочих місць замінюючи цифри від 0 до 5, відповідно для кожного відеоадаптера. (Наведена нижче команда для столу 5).

X -novtswitch -sharevts -nolisten tcp -layout seat5 :5 & 
xterm -display :5 &

Якщо наведені вище команди завершилися невдало, уважно перегляньте повідомлення про помилки, і перевірте файл xorg.conf. Якщо ж виконання усіх команд було успішним, використайте xterm для простішого пошуку відповідної клавіатури налаштованої для конкретного робочого місця. Клавіатури, мишки та відеоадаптери нумеруються однаково при кожному старті системи, так що вам достатньо знати їх розташування під час початкової установки та налаштування.

Наведених вище команд має бути достатньо у випадку, якщо ви не збираєтесь використовувати профілі користувачів та реєстрацію користувачів у системі. Для прикладу, шестимісний кіоск може мати лише Х-сервер і оглядач тенет для кожного робочого місця.

Крок 5: Модифікація gdm.conf

Якщо ви бажаєте реєструвати користувачів у системі, вам необхідно змінити налаштування свого улюбленого керівника екранів. У даному посібнику ми опишемо налаштування для GNOME Display Manager (gdm), однак, вони можуть бути застосовані, як для K Display Manager (kdm), так і для керівника екранів Х (xdm).

Модифікуйте секцію [servers] в кінці файлу /etc/X11/gdm/gdm.conf, для того, щоб вказати gdm'у, які Х-сервери стартувати. Рядки мають виглядати так:

0=Standard0
1=Standard1
2=Standard2
3=Standard3
4=Standard4
5=Standard5

Ви маєте вказати gdm'у, як запускати Х-сервер для кожного робочого місця. Рядки, які це забезпечують:

[server-Standard5]
name=Standard server
command=/usr/X11R6/bin/X -nolisten tcp -novtswitch -sharevts -layout
seat5
flexible=true

Вам необхідно буде додати подібну секцію для кожного робочого місця. Ім'я серверу "Standard5" у наведеному вище прикладі, повинно співпадати з іменем у секції [servers]. Підлаштуйте опції Х згідно вимогам вашої системи.

Після того, як будуе зроблено усі налаштування, ви зможете зробити графічний вхід до системи, якщо перейдете на рівень запуску 5.

telinit 5

Якщо все працюватиме, за допомогою drakonf або зміною файлу /etc/inittab зробіть рівень 5 типовим рівнем завантаження.

Результати тесту, витрати і проблеми

Тест продуктивності: Між перезавантаженнями системи, ми мали чудову продуктивність для усіх шести користувачів, які виконували на комп'ютері звичайну роботу, включаючи огляд тенет, роботу з електронною поштою, роботу з текстом та ігри. Схоже, що хороші відеоадаптери виконують більшу частину роботи, й навіть під час гри в аркадні ігри та перегляду відео через мережу процесор не був сильно завантажений. Якщо "3200" - це точна оцінка продуктивності процесора AMD64-3200, то процесора з продуктивністю "1600" буде більш, ніж достатньо.

Вартість: Не враховуючи монітор, вартість кожного робочого місця складала близько 67$. Це 40$ за відеоадаптер nVidia MX4000, 20$ за USB-клавіатуру, 5$ за USB-мишку, і 2$ за половину концентратора USB. У нашій тестовій системі ми використовували дорогі USB-клавіатури із вбудованим концентратором USB, який ми планували використовувати для флеш-носіїв або портативних програвачів MP3.

Загальна вартість нашої системи склала біля 520$. Це 180$ за процесор, 50$ за об'єднувальну плату, 90$ за оперативну пам'ять і 50$ за вентилятор для процесора. Вартість корпусу та блоку живлення склала 150$.

Ми навели тут дані ціни виключно для порівняння. Ви можете придбати обладнання за нижчими цінами, і, власне, ми рекомендували б вам замінити процесор та об'єднувальну плату, вартість яких склала 230$, на, скажімо, Athlon 2800+, вартість якого - 80$. Ми не включали сюди вартість моніторів, оскільки їхня вартість останнім часом доволі стрімко падає, а тому ваші можливості, потреби і смак самі диктуватимуть вам ціну.

Проблеми: Ви звернули увагу на наведену вище фразу "Між перезавантаженнями системи"? Не зважаючи на те, що система працювала доволі добре, її робота була дуже нестабільною. Зокрема, при виході із системи ми отримували від ядра повідомлення про помилки. Частина системного журналу з такими помилками знаходиться тут. Ми намагалися вирішити ці проблеми декількома методами, серед яких:

  • Вмикаючи, і вимикаючи APIC;
  • Скороченням числа робочих місць;
  • Спробувавши 'nv' та 'vesa' драйвери;
  • Використовуючи NoInt10;
  • Оновивши до офіційного релізу X11R6.9;
  • Оновивши ядро до версії 2.6.15;
  • Використовуючи xdm та fvwm, замість GDM та GNOME.

На жаль, вирішити проблеми не вдалося. Будьте ласкаві, якщо матимете будь-які ідеї щодо вирішення даних проблем, сповістіть мене про це листом на bsmith@linuxtoys.org.

Також є декілька менш значущих проблем. Скажімо, деяке програмне забезпечення вважає, що в системі є лише один користувач. Зберігачі екрану можуть займати чимало процесорних ресурсів, а KDE та GNOME скаржаться, якщо не можуть вивести аудіо. Будь який колективний ресурс, як то аудіо, чи привід CD-RW може викликати помилки.

На майбутнє, ви маєте звернути увагу на проблеми у безпеці наших багатомісних комп'ютерів. Студентські та Інтернет-кафе мають небезпеку потрапити під навмисні, сплановані та добре організовані втручання в систему з шкідливим умислом. Чи можемо ми довірити KDE та GNOME захист від подібних атак?

Висновок

Багатомісна, багатокористувацька система лінукс вже зараз є можливою, використовуючи обладнання ПК і стандартні дистрибутиви лінукс. Здається, багатомісні ПК неминуче отримають популярність, завдяки своїй здатності економити кошти, використання енергоресурсів та зменшувати шум.

Додаткові матеріали

Сторінка Кріса Тайлера (Chris Tyler): Кріс Тайлер надав нам підтримку у здійсненні майже кожного кроку на нашому шляху у даному проекту. На його персональному майданчику тенет також міститься ЯКЦЕ зі створення багатомісної системи. Крім того він є експертом з Х, і я з нетерпінням очікую його наступну книжку частину представленого тут матеріалу. Веб-майданчик Кріса знаходиться за адресою: http://blog.chris.tylers.info/

XFree Local Multi-User HOWTO: Дане ЯКЦЕ знаходиться за адресою: http://www.tldp.org/HOWTO/XFree-Local-multi-user-HOWTO/

Сторінки підручника X.org: X.org забезпечує користувачів повноцінним набором сторінок підручника, на яких описуються конфігураційний файл xorg.conf, і всі команди, що використовуються для завантаження Х-Windows. Сторінка підручника для xorg.conf знаходиться за адресою: http://wiki.x.org/X11R6.9.0/doc/html/xorg.conf.5.html

Сторінки підручника, які описують команди Х-сервера знаходяться за адресою: http://wiki.x.org/X11R6.9.0/doc/html/manindex1.html

колективної або групової.

може бути під'єднана до системи через PS/2)  
_прим. перекладача_