Это описание посвящено еще одному способу использования избыточной
мощности, а именно - рассмотрению возможности посадить за один
компьютер нескольких пользователей.
Следует заметить, что этот способ использования компьютеров не нов
(в МГИУ был проект Змей Горыныч), но раньше для его воплощения
требовалось много лишних телодвижений. Сегодня в связи с
распространением USB и использованием udev это не нужно.
Посадить сразу всю семью или часть отдела за одну машину хотелось
давно, но толчком к осуществлению желаемого послужила новость от
Hewllet Packard "HP Multi-user 441 desktop solution" о начале
продаж компьютеров для школ и библиотек с четырьмя рабочими местами
под ОС Linux Mandrike (Windows же, скорее всего, в ближайшие несколько
лет такой режим работы поддерживать не будет, для Microsoft это
несколько невыгодно). Углубление в эту проблему позволило предложить
следующий чрезвычайно простой способ увеличения рабочих мест для
пользователей при наличии одного компьютера.
Общие принципы работы
На каждого нового пользователя в системный блок вставляется
дополнительная видеокарта, к которой подключается монитор, а также
клавиатура и мышь. При включении компьютера для каждого рабочего места
автоматически загружается отдельная копия Х-сервера. В настройках
каждого Х-сервера указано, с какой клавиатурой и мышкой он работает и
посредством какой видеокарты выводится изображение. Все остальные
аппаратные части компьютера находятся в общем использовании. За
распределением ресурсов между пользователями следит ядро системы.
Описываемый способ организации <<многоголового>> компьютера (от англ.
Multihead) обладает рядом достоинств. Прежде всего - это может сделать
каждый, мало-мальски знакомый с Linux'ом. Наиболее существенное и
приятное - затраты всего лишь на один системный блок для нескольких
пользователей. Кроме того, в отличие от терминалов, данная система не
зависит от пропускной способности сети, а значит позволяет всем
пользователям работать быстрее и комфортнее. Более притязательных
обрадует возможность использования на нем достаточно ресурсоемких
графических оболочек (Gnome, KDE) и программ (хотя одна чрезвычайно
ресурсоемкая программа, например Unreal, заметно отразится на
остальных).
К небольшим неудобствам следует отнести следующие особенности
производства современных компьютеров: количество рабочих мест
ограничивается количеством разъемов для видеокарт, клавиатур и мышей,
а также совершенно невозможно рассадить пользователей на большое
расстояние.
Перечислим то необходимое, что нужно для реализации <<многоголового>>
у себя дома или на рабочем месте.
Аппаратная часть
Видеосистема
Современные наиболее распространенные видеокарточки использовать везде
невозможно, так как на материнских платах нет второго AGP-разъема.
Приходится использовать PCI видеокарты. Опыт показывает, что наиболее
оптимальны из них S3 Virge и ATI Rage, так как не создают трудностей
при использовании и являются наиболее доступными. Некоторые PCI
видеокарты отказываются работать в качестве ведомой с какой-либо еще.
Проблем не встретилось практически ни с одной видеокарточкой от S3,
кроме S3TrioV+ и более старых, которые несовместимы с современными
материнскими платами, что неоднократно было проверено нами на чипсетах
Intel, nVidia и SiS. Думаю, использование современных видеокарт станет
скоро возможным, благодаря распространению материнских плат с PCI-E,
которые уже имеют несколько разъемов для поддержки SLI, или же выпуску
видеокарт PCI-E 1x (сегодня производимые Matrox'ом).
Клавиатура
Последние клавиатуры можно разделить на два вида по типу разъема -
PS/2 и USB. Для увеличения рабочих мест для пользователей при наличии
одного компьютера клавиатура USB не имеет ограничений на количество
подключений. Клавиатуру PS/2 можно использовать и в качестве второй,
подключается вместо мыши в PS/2 порт, при загрузке она будет
распознана Linux'ом корректно. Очевидно, что третья и более клавиатуры
могут быть только USB.
Мышь
Для работы подходит любая USB-мышь. Если создается два рабочих места с
клавиатурами PS/2, то неизбежна замена мыши PS/2 на мышь USB (обычно
usb-мышь дешевле, чем usb-клавиатура).
Настройка системы
Настройка старых систем (на ядре 2.4 + Xfree86 и более старых) хорошо
описана здесь, но т.к. этот сервер работает через раз, то копия
есть здесь. Я остановлюсь на одном из современных и достаточно
распространеных - на дистрибутиве Fedora Core 3 и совместимых с ним
(например ASPLinux 10). В нем используется ядро 2.6 с поддержкой udev,
что значительно упрощает настройку, а также для него есть X-сервер
с необходимыми изменениями, который достаточно выкачать и установить
на компьютер (на
ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/xorg-dualhead/
лежат xorg*.src.rpm, xorg*.athlon.rpm; здесь же есть патч для xorg
и приведен пример конфигурационных файлов). После того, как будут в
системный блок вставлена видеокарта и подключены дополнительные
клавиатура и мышь, надо загрузиться в консольном режиме (run level 3).
Однако некоторые BIOS'ы не понимают, что в мышиный порт подключена
клавиатура и останавливаются на этапе загрузки, следует нажать any key
на этой клавиатуре - и загрузка системы будет продолжена, то же
требуется и для asploader (так же не желательно при таком варианте
подключения клавиатур запускать Windows, если она у Вас такая стоит
параллельно, т.к. если нажать на второй клавиатуре эту самую any key,
то и первая станет недоступна до ближайшей перезагрузки).
Рассмотрим пример настройки двух рабочих мест (2 PS/2 клавиатуры и 2
USB мыши - это дешевле обходится, плюс я пару раз встречал глюки с
инициализацией <<only usb>>-клавиатур). Настройка большего количества
мест делается аналогично, только все остальные клавиатуры будут USB.
Итак, начинать настройку следует с указания о загрузке двух X-серверов
(здесь для gnome display manager): в файле /etc/X11/gdm/gdm.conf
заменить:
[server]
0=Standart
[server-Standart]
name=Standart server
command=/usr/X11R6/bin/X -audit 0
flexible=true
При загрузке Linux'а со всеми устройствами ввода в каталоге /dev/input
сопоставляются файлы event0, event1 и т. д., в дополнение к этому для
мышей mouse0, mouse1, а всем мышам одновременно - mice, но при каждой
загрузке это сопоставление происходит заново без оглядки на прошлую
нумерацию, и чтобы это упорядочить, надо каждому конкретному
устройству назначить постоянную символическую ссылку. Посмотреть
подключенные устройства ввода можно в файле /proc/bus/input/devices.
Для PS/2 устройств (в нашем случае 2 клавиатуры) надо в файл
/etc/udev/rules.d/10-input.rules добавить (если файла нет, то создать
его):
USB-устройства лучше всего различать по кодам Bus, Vendor (например у
меня 046d - Logitech), Product и другим из файла
/proc/bus/input/devices (если устройства одинаковые, то можно
воспользоваться udevinfo -q path -n /dev/device и полученный путь
передать udevinfo -a -p путь, подробнее -
http://www.linuxforum.ru/index.php?showtopic=9712&hl=udev):
#USB mouse
BUS="usb", KERNEL="mouse*", SYSFS{idVendor}="046d", SYSFS{idProduct}="c50b", SY
NLINK="mouse_one"
BUS="usb", KERNEL="mouse*", SYSFS{idVendor}="046d", SYSFS{idProduct}="025c", SY
NLINK="mouse_two"
После перезагрузки (или перезапуска udev - killall udevd &
/sbin/start_udev) в каталоге /dev/input появятся нужные символические
ссылки. (детальное более подробное описание всех параметров - man
udev, udevinfo, udevd или http://linux-hotplug.sourceforge.net).
Теперь нужно указать X серверу, что со всем этим делать в файле
/etc/X11/xorg.conf. В нем прописана конфигурация для текущего
состояния:
Ниже следует найти секцию "InputDevice" с Identifier "Keyboard0",
заменить в ней протокол "Standart" на "usbev" (чтобы работа с
клавиатурой шла не напрямую, а через заданные нами файлы), добавить
строки, с указанием какой файл использовать и как обходится с
переключениями:
Если Вам не понравится кому достались какие клавиатуры и мыши,
поменяйте ..._one на ..._two
Далее, в секции для "Screen0" заменить "Monitor" на "Monitor0" и
сделать его копию с параметрами "Screen1", "Monitor1" и в Device
заменить на "videocard1". Если второй монитор отличается, то текущие
разрешения заменить на требуемые. Пример:
В секции "Monitor" заменить значение Identifier "Monitor" на
"Monitor0", создать его копию с Identifier "Monitor1". Вот пример для
монитора 17'' LCD с разрешением 1280х1024 и частотой 60 - 75 Гц:
В секции для видеокарты обязательно нужно правильно указать номер
устройства на PCI шине (просмотреть устройства можно по команде lspci)
и драйвер (список находится в /usr/X11R6/lib/modules/drivers, для
S3TrioV2 нужен vesa, а остальные явствуют из названия).
Вместо вышеобозначенных настроек все параметры для второй видеокарты и
монитора можно получить при помощи программы system-config-display, но
перед этим желательно сделать копию xorg.conf и вынуть видеокарту из
AGP-разъема. Потом оригинальный xorg.conf вернуть на место, а из
полученного, при помощи system-config-display, перенести настройки для
видеокарты и монитора.
Теперь после внесения всех изменений нужно проверить
работоспособность. Для этого в консоли (можно под любым юзером)
следует дать команду:
$X -layout Layout0
Экран переключится в графический режим с курсором в виде X на экране.
Для возвращения назад следует нажать Ctrl+Alt+Backspace. То же
проделать для Layout1.
Если все вышеописанное заработало, можно перегружать компьютер - и на
обоих экранах после загрузки появятся приглашения для ввода
имени/пароля.
Не относящееся к делу завершение
Итак, как видно, все просто и легко применимо. Если вы установите
<<многопользовательский>> компьютер на работе, то, сэкономив средства
своего предприятия, значительно увеличите окупаемость закупленной
техники. Если же вы обзаведетесь <<многоголовой>> машиной дома, то
это, по наиточнейшим данным, снизит удельный вес ссор из-за доступа к
<<телу>> и, разрядив семейную атмосферу, сделает вашу жизнь намного
счастливее, а главное - устранит многие препятствия для одновременного
вдохновенного творчества.
Ссылки
Форум по статье на LOR'е
Multiple local XFree users under Linux, так же там много других ссылок
Sharing your computer with Matrox G450 dualhead HOWTO
вопросы и предложения направлять по адресу vadim-lvv[at]yandex.ru
(c) Vadim Likhota
492 Прочтений • [Настройка мультимониторной конфигурации (multihead monitor linux video x11 xfree86 xorg)] [08.05.2012] [Комментариев: 0]