Настройка распределенной мультиэкранной среды при помощи Linux и Xdmx

Создание общего рабочего стола на нескольких мониторах

Научитесь работать с инструментами для настройки и физической реализации мультиэкранных сред. Вы можете использовать общий рабочий стол на нескольких мониторах, подключенных к разным компьютерам, при помощи ОС Linux® и Xdmx. Используйте вместе ноутбуки и настольные ПК под управлением Linux® для создания одного большого экрана и увеличения производительности. Узнайте больше о настройке больших мониторных стен и мультиэкранных сред без приобретения дополнительных видеокарт.

Натан Харрингтон, программист, IBM

Натан Харингтон (Nathan Harrington) - программист в IBM, работающий в настоящее время с Linux и с технологиями поиска ресурсов.



14.08.2008

Установка дополнительного монитора значительно увеличивает эффективность работы, избавляя от необходимости частого переключения между программами. Это и многие другие преимущества хорошо известны тем, кто использует видеокарты с несколькими выходами, или несколько видеокарт на одном ПК. Используя Linux, Xdmx, два компьютера и два монитора, каждый может использовать выгоды мультиэкранной среды без затрат на дополнительное оборудование.

Используя Xdmx и некоторые простые советы по настройке, мы создадим единую вычислительную среду для четырех мониторов, один из которых будет подключен к настольному ПК, а в качестве остальных будут использованы три ноутбука. Мы узнаем о высокопроизводительной среде визуализации, использующей систему интерактивного рендеринга Chromium и гигабитное сетевое подключение для передачи 3D графики в режиме реального времени между мониторами высокого разрешения. Также мы изучим средства создания собственной мультиэкранной среды и объединения нескольких устройств для повышения эффективности работы.

Требования

При написании этой статьи использовалось четыре компьютера с тремя различными моделями видеокарт, тремя размерами мониторов и тремя различными настройками разрешения. Использовались дистрибутивы Red Hat Enterprise Linux (RHEL) V3.5 и Fedora Core 3, с ядрами версий 2.4.21-2.6.15 и настройками X11 и xorg по умолчанию. Разнообразие программного и аппаратного обеспечения не является препятствием. Вы можете успешно установить и использовать Xdmx на разном оборудовании и с разными дистрибутивами.

Оборудование

Вам понадобятся:

  • относительно современный процессор – можно использовать, все что угодно мощнее 486 (хотя на старых моделях может немного подтормаживать);
  • скоростное сетевое подключение – 100 Мбит/сек. или быстрее;
  • видеокарта, поддерживающая, по крайней мере, 16-битный цвет. Иначе будут проблемы с использованием расширения xinerama.

Программное обеспечение

Мы использовали современные дистрибутивы Red Hat и Fedora Core, однако подойдут и многие другие дистрибутивы. Ели ваш дистрибутив поддерживает пакеты RPM, вы сможете загрузить и использовать Xdmx, без необходимости компилировать приложение из исходных текстов.


Получение и установка Xdmx

Получение ПО

Для загрузки Xdmx отправляйтесь на сайт Sourceforge.net (см. раздел Ресурсы). Для работы с данной статьей прекрасно подойдет пакет RPM. Ищите файл dmx-1.2.20040630-1.i386.rpm в разделе Download DMX. Если вы используете старый дистрибутив или он не поддерживает RPM, вы можете скомпилировать DMX с чистого листа. Исходники можно найти в разделе Download DMX, однако инструкция по компиляции программы выходит за пределы данной статьи.

Установка

Теперь, когда вы получили пакет Xdmx RPM, вам необходимо его установить. В системах на основе RHEL V3.5 команда rpm -Uvh dmx-1.2.20040630-1.i386.rpm должна установить Xdmx без проблем. В системах Fedora Core 3 и выше при установке пакета RPM, вы можете столкнуться с ошибкой типа 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 option: 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 и методами решения некоторых проблем, с которыми вы можете столкнуться.

Схема ПК – ноутбук

Для первого примера мы будем использовать настольный ПК и ноутбук в двухэкранной среде, в которой рабочий стол растянут на два монитора. Для начала назначим один из компьютеров управляющим узлом – в нашем случае, это будет настольный ПК.

Настройка конфигурационного файла оконной системы X

Большой проблемой при использовании отличающегося оборудования являются различия в функциях, поддерживаемых вычислительными ресурсами. Перед запуском Xdmx убедитесь в том, что компьютеры поддерживают одинаковый набор опций. В данном случае не на всех компьютерах установлены одинаковые шрифты. Для отслеживания подобных проблем, в Xdmx существует специальная функция, которая будет рассмотрена ниже. Обратите внимание на то, что типичными источниками проблем, приводящих к некорректной работе Xdmx, являются различия в поддержке GLX и значений глубины цвета по умолчанию. Чтобы растянуть рабочий стол на несколько мониторов, убедитесь в том, что на всех экранах настроена одинаковая глубина цвета. Если вы хотите использовать несколько отдельных рабочих столов, глубина цвета на мониторах может отличаться. Поскольку, в нашем примере мы хотим создать единый большой экран, отредактируйте файл 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 for Display с Depth 24 на Depth 16.

Если вы используете специализированные драйверы для оборудования, вам может понадобиться сбросить настройки в значения по умолчанию или использовать стандартный драйвер. За дополнительной информацией обратитесь к документации оборудования или его производителю. В нашем примере ноутбук под управлением RHEL V3.5 оснащен видеокартой ATI FireGL Mobility T2 и соответствующими проприетарными драйверами. Если мы изменим файл XF86Config, как показано выше, это приведет к ошибке, так как драйвер fglrx не поддерживает 16-битный цвет. Для решения этой проблемы последовательно откройте system-config-xfree86 (system-config-display в Fedora Core) и выберите режим VESA. На вкладке Advanced укажите для своей видеокарты драйвер VESA Driver (generic). В разделе Monitor Type настройте параметры для поддержки максимального разрешения вашего монитора. Вернитесь на вкладку Display, укажите разрешение и глубину цвета, настроив параметр Thousands of Colors.

Теперь, когда глубина цвета везде совпадает, мы можем приступить к настройке мультиэкранной среды. На клиентском узле запустите сеанс X. Если ОС запущена в режиме runlevel 3, запустите новый сеанс X командой xinit. Если вы уже запустили сеанс графического оконного менеджера, такого как GNOME или KDE, выполните команду Xterm. В окне Xterm на клиентском узле введите команду xhost + control_node_ip, где control_node_ip – это IP-адрес управляющего узла. Например, если IP-адрес управляющего узла 192.168.1.101, на клиентском узле нужно ввести команду xhost + 192.168.1.101.

Запуск Xdmx

На управляющем узле запустите стандартный сеанс X Window. Если вы запускаете xdm, появится окно входа в систему, а затем будет запущен сеанс GNOME или KDE. После этого запустите на управляющем узле Xterm. Запустите новый сеанс Xdmx, который выведет на оба экрана оконный менеджер twm. Вы можете использовать другой оконный менеджер, однако учтите, что GNOME не поддерживает запуск двух экземпляров на одном компьютере. Выполните на управляющем узле следующую команду:

Листинг 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 – IP-адрес клиентского узла. Комментарии к команде приведены в таблице 1

Таблица 1. Комментарии к команде запуска
Строка начинается с...... и означает
startx `which twm`Запуск нового сеанса X с оконным менеджером twm.
-- /usr/bin/X11R6/Xdmx :1Запустить программу Xdmx в качестве первого сеанса X.
-display control_node_ip:0Использовать монитор на управляющем узле в качестве первого экрана.
-display client_node_1_ip:0Использовать монитор на клиентском узле в качестве второго экрана.
-ignorebadfontpathsВсе равно никогда их не любил.
+xineramaИспользовать экран, как единый рабочий стол.

Если команда выполнена успешно, мы увидим фон рабочего стола на обоих мониторах. Подвигайте мышь на управляющем узле, чтобы убедиться в том, что устройства ввода управляющего узла корректно работают с единым рабочим столом. Для выхода из Xdmx нажмите Ctrl+Alt+q.

Ошибки Xdmx и их решение

Если команда не выполнена успешно, вы можете увидеть одну из следующих ошибок:

Листинг 3. Пример сообщения об ошибке 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 и попробуйте запустить ее снова:

Листинг 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 приводят к странным проблемам с клавиатурой. Я заметил, что при сбоях Xdmx клавиши Ctrl, Shift и Alt работают некорректно. Проще всего решить эту проблему перезапуском оконного менеджера.

Схема три клиентских узла – три монитора

Теперь, когда мы настроили среду из двух узлов, давайте добавим третий клиентский узел. Если на третьем узле используется режим runlevel 3, запустите новый сеанс X при помощи команды xinit. В появившемся окне xterm введите xhost + contrl_node_ip. Измените команду запуска 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

Вот так просто добавить еще один узел к последовательной горизонтальной схеме. На рисунке показаны три монитора, совместно отображающих мозаику из другой статьи developerWorks.

Рисунок 1. Схема из трех узлов
Схема из трех узлов

Схема четыре клиентских узла, 2x2 монитора

А как же другая топология мониторов? Как насчет квадрата 2x2 из мониторов? У Xdmx есть на это свой ответ: используйте параметры конфигурационного файла с геометрическими указателями для создания необходимой среды. Например, если вы хотите разместить монитор 1024x768 слева вверху, монитор 1400x1050 – справа вверху, монитор 1600x1200 – слева внизу и монитор 1024x768 – справа внизу, вам необходимо использовать следующий конфигурационный файл:

Листинг 6. Пример конфигурационного файла Xdmx
# xdmx.conf  - конфигурационный файл Xdmx
# настройка среды 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

Я выбрал такую физическую топологию мониторов потому, что только она оказалась достаточно компактной и обеспечила мне все преимущества единого рабочего стола. На рисунке показана распределенная мультиэкранная среда 2x2, на которой отображается карта Сан-Франциско из сервиса Google Maps.

Рисунок 2. Схема из четырех узлов
Схема из четырех узлов

Расширенные настройки и мониторные стены

Имейте в виду, что мониторы не обязательно должны располагаться рядом. На следующем рисунке показана схема, настроенная для программирования, с четырьмя отдельными рабочими столами, использующими оконный менеджер Ion3.

Рисунок 3. Схема из четырех узлов, один из них размещен отдельно
Схема из четырех узлов, один из них размещен отдельно

Обратите внимание на отдельный монитор с левого края. Пользователь может перемещать окна на этот монитор, он может взглянуть на него мельком, но он остается за пределами периферийного зрения, не отвлекая и уменьшая количество потенциальных ошибок. Используйте конфигурационный файл Xdmx с параметрами размещения и геометрическими указателями для создания любых топологий, подходящих для вашей рабочей среды.

Схемы для обработки 3D графики

Система рендеринга Chromium – это пакет, позволяющий обрабатывать информацию OpenGL отдельно для каждого узла в схеме Xdmx, обрабатывая только тот фрагмент изображения, который отображается на данном мониторе. Это обеспечивает замечательный способ использования вычислительной мощности ваших клиентских узлов и видеокарт для быстрого рендеринга 3D графики больших размеров. За дополнительной информацией о Chromium и настройке систем для обработки 3D графики обратитесь к ссылкам, приведенным ниже.

Мониторные стены

В основном Xdmx используется в университетах и научно-исследовательских институтах для создания крупномасштабных экранных сред, предназначенных для отображения больших объемов данных. Такие среды часто используют Chromium для работы с трехмерным представлением информации, при помощи одинакового оборудования и специализированных компьютеров. Эта статья предназначена для персональных компьютеров и посвящена созданию распределенной мультиэкранной среды на имеющемся оборудовании. Чтобы узнать о фантастических примерах огромных мониторных стен с разрешением 16000x4800, автоматической настройкой экранных узлов, обратитесь к разделу Ресурсы.


Заключение

Умея настраивать мультиэкранные среды при помощи Xdmx в ОС Linux, вы сможете значительно увеличить эффективность своей работы без затрат на новое оборудование. Просто объедините компьютеры в экранную среду при помощи ПО с открытым исходным кодом. Поразите друзей чудовищным размером своего рабочего стола – создайте собственную мониторную стену. Пишите больше кода, исправляйте больше ошибок или читайте сразу три статьи developerWorks.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Linux
ArticleID=330959
ArticleTitle=Настройка распределенной мультиэкранной среды при помощи Linux и Xdmx
publish-date=08142008