Ключевые слова:monitor, x11, xorg, display, xdmx, (найти похожие документы)
From: Евгений <drag0n_07@inbox.ru.>
Newsgroups: email
Date: Mon, 24 Dec 2007 14:31:37 +0000 (UTC)
Subject: Единый десктоп на нескольких мониторах, подключенных к разным компьютерам.
Поддержка нескольких мониторов с помощью Xdmx в Linux.
Создание сборки из нескольких мониторов отображающих один распределенный
рабочий стол.
Автор: Натан Харрингтон (harrington.nathan @ gmail.com), программист, IBM.
Здесь вы найдете дополнительную информацию о программах, позволяющих
разработать вашу собственную многоэкранную рабочую среду, позволяющую
повысить ваше удобство пользования компьютером. Вы можете использовать
Linux и Xdmx чтобы создать один большой рабочий стол распределенный на
несколько мониторов, подключенных к разным компьютерам. Объединяйте ваши
ноутбуки и десктопы под управлением Linux`а в один большой компьютер с
большей производительностью. Вы узнаете как создать крупномасштабную
многодисплейную рабочую средук без покупки новых видеокарт.
Увеличение колтчества мониторов в вашем компьютере значительно повысит
вашу производительность за счет устранения необходимости частого
переключения между задачами. Это и многие другие преимущества хорошо
известны тем, кто пользуется специальными видеокартами, либо использует
несколько видеокарт в одном ПК. При помощи Linux и Xdmx каждый с двумя
дисплеями и двумя компьютерами может пользоваться благами
многодисплейной рабочей среды без дополнительных вложений в новое
оборудование.
Используя Xdmx и и некоторые простые советы по настройке, мы создали
вычислительную систему с четырьмя мониторами на основе трех ноутбуков и
одного настольного ПК. Сейчас вы узнаете о высокопроизводительной
визуальной среде, которая использует гигабитное сетевое соединение для
передачи 3D графики в реальном времени на несколько дисплеев высокого
разрешения. Читайте об инструментах позволяющих разработать вашу
собственную многодисплейную вычислительную среду для повышения удобства
использования компьютера.
Системные требования.
Все описанное в этой статье реализовано на основе четырех компьютеров с
тремя различными видеокартами, поддерживающими различные максимальные
разрешения и тремя мониторами. Использовались ядра от 2.4.21 до 2.6.15,
были использованы X11 и xorg с настройками по умолчанию, использовались
дистрибутивы Red Hat Enterprise Linux (RHEL) V3.5, и Fedora Core 3.
Разнообразие существующего программного и аппаратного обеспечения не
является препятствием. Вы можете спокойно устанавливать и использовать
Xdmx на любых дистрибутивах, с любой аппаратной конфигурацией.
Аппаратное обеспечение.
Вам потребуется:
1) Относительно современный процессор - любой выше 486-ого будет
пригоден для использования (хотя скорость программ может оказаться
несколько замедленной).
2) Быстрое сетевое соединение - Ethernet или лучше.
3) Видеокарта, с поддержкой глубины цвета по меньшей мере 16-бит. Иначе
вы будете иметь проблемы при включенном xinerama.
Программное обеспечение.
Мы использовали современные дистрибутивы Red Hat и Fedora Core, но любые
другие дистрибутивы тоже можно использовать. Если выбранный вами
дистрибутив поддерживает RPM пакеты, то вы сможете получить и запустить
Xdmx не компилируя его из исходников.
Xdmx - получение и установка.
Получение программного обеспечения.
Посетите http://dmx.sourceforge.net/ чтобы загрузить Xdmx. RPM пакет неплохо
подойдет для наших целей. Ищите файл dmx-1.2.20040630-1.i386.rpm в
разделе Download DMX. Если вы используете очень старый или не
поддерживающий RPM-пакеты дистрибутив, то вам придется собирать DMX с
нуля. Исходники также расположены в разделе Download DMX, но инструкции
по компиляции DMX выходят за рамки данной статьи.
Установка.
Теперь, когда вы получили RPM-пакет Xdmx, вам нужно установит его. В
системах, основанных на RHEL V3.5, команда rpm -Uvh
dmx-1.2.20040630-1.i386.rpm сразу установит Xdmx. На Fedora Core 3 и
выше, вы можете увидеть ошибку типа:
file /usr/X11R6/lib/libdmx.a from install of dmx-1.2.20040630-1 conflicts with file from package xorg-x11-devel-6.8.2-31.
Чтобы обойти эту ошибку, используйте опцию --force, команда:
rpm --force -Uvh dmx-1.2.20040630-1.i386.rpm.
Внимание: Принудительная установка Xdmx может нанести вред вашей
операционной системе. Я использовал свои компьютеры с установленным
принужденно Xdmx, в течение года без проблем, но ваш опыт может быть
отличен от моего. Если вы не хотите установливать принудительно Xdmx, то
скомпилируйте его из исходников, а затем установите.
В системах, основанных на Debian, или в любых других, использующих
apt-get, используйте apt-get install xdmx, чтобы установить и настроить Xdmx.
Xdmx должен быть установлен на каждом компьютере, который вы хотите
использовать как часть вашей многодисплейной среды. И сервер и клиент
входят в установочный пакет Xdmx. Если вы хотите добавить новый дисплей,
поменять контрольный узел, или имеете аппаратную неисправность в
существующем узле, вам не нужно переустанавливать программное
обеспечение.
Настройка ПК для многодисплейной работы.
Мануал по Xdmx.
Xdmx поставляется с великолепным руководством, которое содержит все, что
вам понадобится для начала работы с многодисплейной системой. Эта статья
призвана помочь вам преодолеть некоторые из наиболее трудных проблем,
связанных с аппаратным обеспечением. Вы прочитаете некоторые реальные
примеры по использованию Xdmx и по преодолению некоторых проблемы,
которые могут вам встретиться.
Один компьютер, один ноутбук.
Для нашего первого примера мы будем использовать один компьютер и один
ноутбук в системе с 2 дисплеями и с рабочим столом распределенным на оба
дисплея. Для начала назначим один из компьютеров главным узлом - в нашем
случае это будет ПК.
Настройка X-сервера.
Имеются большие проблемы с использованием нестандартной аппаратуры. Если
ваша система поддерживает опции указанные выше, то вы можете быть
уверены в том, что Xdmx будет работать. В нашем примере все системы не
содержат некоторых шрифтов, что некритично. Xdmx имеет возможность
отследить это, но мы будем обсуждать это позже. В настоящее время
отметим, что поддержка GLX и глубины цвета 16-бит позволят Xdmx работать
корректно. Если глубина цвета на главном экране совпадает с глубиной
цвета на других экранах, то вы можете распределить свой рабочий стол на
несколько мониторов. Если вы хотите использовать несколько независимых
рабочих столов, то глубина цвета на каждом из дисплеев не обязательно
должна совпадать. Поскольку в нашем примере мы создаем один
распределенный рабочий стол, то изменим наш Xorg.conf или XF86Config,
выберем глубину цвета по умолчанию 16 бит (вы можете выбрать 24 бита или
любое другое значение, если ваше оборудование будет его поддерживать).
Для нашего примера, 16 бит - это та глубина цвета, которую будет
поддерживать все наше оборудование.
Сделаем резервную копию Xorg.conf или XF86Config, и внесем туда
изменения, которые приводятся ниже. В RHEL 3.5, файл XF86Config имеет
следующие строки:
Листинг 1. Образец файла XF86Config.
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1400x1050" "1280x1024" \
"1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Изменим DefaultDepth 24 на DefaultDepth 16, в секции SubSection
"Display" изменим Depth 24 на Depth 16.
Если у вас есть специфичные драйвера, для вашей видеокарты, вам возможно
придется вернуться к стандартным драйверам или попытайтесь использовать
совместимое аппаратное обеспечение. Изучите документацию по вашему
железу, для получения детальной информации о поддержке вашего
оборудования Xdmx. Например, ноутбук на RHEL V3.5, в этом примере
содержит видеокарту ATI FireGL Mobility T2, и проприетарные драйвера.
Изменения в файле XF86Config, как показано выше, приведут к выводу
ошибки, потому что драйвер fglrx не поддерживает 16-битную глубину
цвета. Решение проблемы: запуск system-config-xfree86
(system-config-display на Fedora Core) и выбор VESA режима для получения
совместимости. На вкладке "Дополнительно" выберите VESA Driver (generic)
как видеокарту по умолчанию. В секции "Тип Монитора" выберите удобное
для вас разрешение и "Тысячи цветов" как глубину цвета.
Теперь, когда настройки глубины цвета везде совпадают, мы можем начать
настройку нашего многоэкранного компьютера. Запустим X-сессию на
клиентском узле. Если вы на третьем runlevel`е, то введите команду xinit
для того чтобы запустить X-сессию. Запустим Xterm сессию, если мы уже
залогинены в графическом оконном менеджере, наподобие GNOME или KDE. В
окне Xterm`a на клиентском узле введите команду xhost + control_node_ip,
где control_node_ip это IP-адрес главного узла. Например, если адрес
главного узла 192,168,1,101, то нужно ввести команду xhost +
192.168.1.101.
Команда запуска Xdmx.
Запустим X-сессию на вашем главном узле. Если вы используете xdm, то
запустите сессию KDE и Gnome. Затем, вне зависимости от вашего выбора,
запустите еще и Xterm на главном узле. Затем, запустим новую
Xdmx-сессию, которая запустит twm и выведет его на оба дисплея. Вы
можете выбрать другой оконный менеджер, но учтите что GNOME плохо
поддерживается Xdmx`ом. На главном узле запустим следующую команду:
Листинг 2 Образец команды запуска Xdmx.
startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-ignorebadfontpaths \
Здесь control_node_ip равен 192.168.1.101 (адрес главного узла), а
client_node_1_ip это адрес клиентского узла. Разбор команды в таблице 1:
Таблица 1. Пояснения к команде запуска.
startx 'which twm' Запуск новой X-сесии с оконным менеджером twm
/usr/bin/X11R6/Xdmx :1 Запуск Xdmx как X-сессии 1
-display control_node_ip:0 Использовать дисплей контрольного узла как монитор 1
-display client_node_1_ip:0 Использовать дисплей на первом клиентском узле как монитор 2
-ignorebadfontpaths Все равно никогда их не любил
+xinerama Использовать дисплей как один рабочий стол
Если команда завершилась успешно, то вы должны увидеть фон рабочего
стола в обоих мониторах. Подвигайте мышь, подключенную к главному узлу,
чтобы проверить, есть ли у вас распределенный на 2 монитора рабочий
стол, и корректную работу устройств ввода. Нажмите Ctrl + Alt + q чтобы
завершить работу с Xdmx.
Ошибки, выдаваемые Xdmx и их решение.
Если выполнение команды не завершилось успешно, то вы можете увидеть
ошибку наподобие этой:
Образец сообщения с ошибкой Xdmx.
(II) dmx: ===== End of Summary =====
(!!) dmx: The default visual for screen #0 does not match any of the
(!!) dmx: consolidated visuals from Xinerama (listed above)
(!!) dmx: The default visual for screen #1 does not match any of the
(!!) dmx: consolidated visuals from Xinerama (listed above)
(Fatal Error) dmx: dmxConnectionBlockCallback: invalid screen(s) found
XIO: fatal IO error 104 (Connection reset by peer) on X server ":1.0"
after 0 requests (0 known processed) with 0 events remaining.
Это один из немногих недостатков Xdmx - зашифрованные сообщения об
ошибке. Это сообщение об ошибке вызвано из-за несоответствий
конфигурации GLX клиента и сервера. Хотя сообщения об ошибках могут быть
непонятны простым смертным, функционал Xdmx обеспечивается просто и
доступно. Добавьте опцию -noglxproxy в команду запуска, и снова
запустите Xdmx:
Листинг 4. Запуск Xdmx с командой noglxproxy:
startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-ignorebadfontpaths \
+xinerama \
-noglxproxy
Вот и все! Проблема пропала. Вы наверное заметили, когда Xdmx вылетает с
ошибкой, это вызывает странные проблемы с клавиатурой. Я обнаружил, что
клавиши Shift, Control и Alt не работают должным образом после вылета
Xdmx. Лучшим решением будет перезапуск вашего оконного менеджера.
Три клиентских узла, три монитора.
Теперь, когда у нас уже есть два дисплейных узла, добавим третий
клиентский узел. На 3 уровня запуска, запустим X-сессию на третьем
клиентском узле, командой xinit. Введем xhost + control_node_ip в
xterm`е, который появится после запуска X-сессии. Измените команду
запуска Xdmx, для подключения третьего узла, как в листинге 5.
Листинг 5. Запуск Xdmx с третьим узлом и опцией noglxproxy.
startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-display client_node_2_ip:0 \
-ignorebadfontpaths \
+xinerama \
-noglxproxy
Вот так просто добавить еще один узел к нашей горизонтальной
конфигурации мониторов.
Четыре клиентских узла, дисплей 2x2.
Как насчет другой топологии дисплеев? Как насчет мониторов, объединенных
в квадрат 2x2? Xdmx может осуществить и это: используйте опции в
конфигурационном файле, чтобы указать желаемую геометрию установки.
Например, если вы желаете иметь монитор с разрешением 1024х768 в верхнем
левом углу, 1400х1050 в верхнем правом, 1600х1200 в нижнем левом и
1024х768 в правом нижнем углу, то вам нужно использовать следующий файл
конфигурации:
Листинг 6. Пример конфигурационного файла Xdmx.
# xdmx.conf - Xdmx configuration file
# quad config setup 2x2
virtual quad_config {
display "client_node_upper_left_ip:0" @0x0;
display "client_node_upper_right_ip:0" @1024x0;
display "client_node_lower_left_ip:0" @0x768;
display "client_node_lower_right_ip:0" @1024x768;
}
Примените установки, указанные выше, выполнив на главном узле следующую
команду:
Листинг 7. Запуск Xdmx, с использованием файла конфигурации.
startx `which twm` -- /usr/bin/X11R6/Xdmx :1 \
-configfile xdmx.conf \
-config quad_config \
-ignorebadfontpaths \
-noglxproxy
Я выбрал такую физическую топологию, потому что она является
единственной, обеспечивающей наилучший вид моего рабочего стола.
Возможности по дополнительной настройке.
Дисплеи не обязательно должны быть расположены рядом. Используйте
конфигурационный файл Xdmx, чтобы указать в нем расположение и
геометрические спецификации ваших дисплеев, чтобы создать рабочую среду
любой, подходящей вам, топологии.
Настройка 3D.
Chromium - программа разработанная для того, чтобы позволить каждому
узлу в вашей Xdmx системе использовать OpenGL для обработки каждого
кадра отдельно на каждом узле. Это дает прекрасный способ, чтобы
использовать мощности процессоров (и видеокарт) клиентских узлов для
более быстрой прорисовки 3D сцены. См. ссылки ниже чтобы найти больше
информации о настройке Chromium.
Настенные дисплеи.
В первую очередь Xdmx можно использовать в университетах и
исследовательских лабороториях, как крупномасштабные системы для
отображения больших наборов данных. В этих системах часто используется
Chromium. Но эта статья сконцентрирована на пользовательском компьютере
и на использовании имеющихся аппаратных средств для создания
многодисплейного компьютера. Если вы хотите прочитать всякие
фантастические примеры, наподобие настенных дисплеев 16000х4800 и
узнать, как автоматически настраивать ваши дисплейные узлы, то смотрите
линки ниже.
Заключение.
С вашим опытом использования Xdmx в Linux`е, вы можете сильно увеличить
вашу производительность работы за компьютером, без вложений в новое
оборудование. Очень легко добавить новые машины в вашу многодисплейную
систему, с использованием опен-сорсных Xdmx и Linux. Поразите ваших
друзей рабочим столом монструозного размера. Пишите больше кода,
находите больше багов или читайте сразу три статьи вашего любимого
журнала в одно и тоже время.
Ссылки.
* Узнайте больше об Xdmx из первых рук.
* Как использовать границы монитора, в качестве границ окна для просматриваемого содержимого.
* Настенный дисплей высокого разрешения, с использованием Xdmx.
* Настенный дисплей, использующий ноутбуки ThinkPad.
* Xdmx Mini How-To.
* Прочитать о Chromium на chromium.sourceforge.netОб авторе.
Натан Харрингтон является программистом IBM. В настоящее время работает
с Linux и ресурсоемкими технологиями обнаружения.
Оригинал статьи (на английском) можно найти на:
http://www-128.ibm.com/developerworks/opensource/library/os-mltihed/