The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка мультимониторной конфигурации (multihead monitor linux video x11 xfree86 xorg)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: multihead, monitor, linux, video, x11, xfree86, xorg,  (найти похожие документы)
From: Vadim Likhota <vadim-lvv[at]yandex.ru> Date: Wed, 14 Apr 2006 18:21:07 +0000 (UTC) Subject: Настройка мультимониторной конфигурации Оригинал: http://www.klv.lg.ua/~vadim/multihead.html Введение Это описание посвящено еще одному способу использования избыточной мощности, а именно - рассмотрению возможности посадить за один компьютер нескольких пользователей. Следует заметить, что этот способ использования компьютеров не нов (в МГИУ был проект Змей Горыныч), но раньше для его воплощения требовалось много лишних телодвижений. Сегодня в связи с распространением 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 на [server] 0=Standart0 1=Standart1 [server-Standart0] name=Standart server command=/usr/X11R6/bin/X -audit 0 vt7 -layout Layout0 -nopciaccessdisable flexible=true [server-Standart1] name=Standart server command=/usr/X11R6/bin/X -audit 0 vt7 -layout Layout1 -nopciaccessdisable -novt switches flexible=true После этого настраиваются клавиатуры и мыши. При загрузке Linux'а со всеми устройствами ввода в каталоге /dev/input сопоставляются файлы event0, event1 и т. д., в дополнение к этому для мышей mouse0, mouse1, а всем мышам одновременно - mice, но при каждой загрузке это сопоставление происходит заново без оглядки на прошлую нумерацию, и чтобы это упорядочить, надо каждому конкретному устройству назначить постоянную символическую ссылку. Посмотреть подключенные устройства ввода можно в файле /proc/bus/input/devices. Для PS/2 устройств (в нашем случае 2 клавиатуры) надо в файл /etc/udev/rules.d/10-input.rules добавить (если файла нет, то создать его): #PS/2 keyboard SYSFS{dev}="13:64", KERNEL="event*", SYMLINK="keyboard_one" SYSFS{dev}="13:65", KERNEL="event*", SYMLINK="keyboard_two" 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. В нем прописана конфигурация для текущего состояния: Section "ServerLayout" Identifier "Xfree86 Configurited" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Ее нужно заменить на: Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "ServerLayout" Identifier "Layout1" Screen 0 "Screen1" 0 0 InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection Ниже следует найти секцию "InputDevice" с Identifier "Keyboard0", заменить в ней протокол "Standart" на "usbev" (чтобы работа с клавиатурой шла не напрямую, а через заданные нами файлы), добавить строки, с указанием какой файл использовать и как обходится с переключениями: Option "Device" "/dev/input/keyboard_one" Option "XkbRules" "xorg" и создать такую же секцию с Identifier "Keyboard1" и "/dev/input/keyboard_two". Подобным же образом отредактировать секцию "Mouse0": Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mouse_one" Option "ZaxisMapping" "4 5" EndSection Если Вам не понравится кому достались какие клавиатуры и мыши, поменяйте ..._one на ..._two Далее, в секции для "Screen0" заменить "Monitor" на "Monitor0" и сделать его копию с параметрами "Screen1", "Monitor1" и в Device заменить на "videocard1". Если второй монитор отличается, то текущие разрешения заменить на требуемые. Пример: Section "Screen" Identifier "Screen1" Device "videocard1" Monitor "Monitor1" DefaultColorDepth 16 SubSection "Display" Depth 4 Modes "1024x768" EndSubSection SubSection "Display" Depth 8 Modes "1024x768" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" EndSubSection EndSection В секции "Monitor" заменить значение Identifier "Monitor" на "Monitor0", создать его копию с Identifier "Monitor1". Вот пример для монитора 17'' LCD с разрешением 1280х1024 и частотой 60 - 75 Гц: Section "Monitor" Identifier "Monitor0" VendorName "SAM" ModelName "Samsung SyncMaster" HorizSync 61.5-81.0 VertRefresh 59.0-76.0 EndSection и 17'' ЭЛТ монитора Section "Monitor" Identifier "Monitor1" VendorName "SAM" ModelName "Samsung SyncMaster" HorizSync 30.0-96.0 VertRefresh 50.0-160.0 EndSection В секции для видеокарты обязательно нужно правильно указать номер устройства на PCI шине (просмотреть устройства можно по команде lspci) и драйвер (список находится в /usr/X11R6/lib/modules/drivers, для S3TrioV2 нужен vesa, а остальные явствуют из названия). Section "Device" BusID "PCI:2:0:0" Driver "radeon" Identifier "videocard0" BoardName "ATI Radeon 9000" EndSection Вместо вышеобозначенных настроек все параметры для второй видеокарты и монитора можно получить при помощи программы 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

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, vadim (??), 11:11, 06/05/2006 [ответить]  
  • +/
    здесь внизу не приведены все ссылки:
    для xorg-6.9/7.0 можно использовать http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.
    НО!
    в релизе выпущенном зимой для драйвера evdev есть ошибка работы несколькими языками (в т.ч. не работает переключение на русский) Решается это парой патчей, ссылки на которые есть на этой же странице. Правда поле патча все равно не работает win-key. Когда обкатаю 6.9, выложу в общий доступ. Желающие повозится сейчас могут взять xorg c http://www.klv.lg.ua/~vadim/xorg-6.9/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру