Настройка XOrgServer

Система X Window является стандартным GUI (Graphical User Interface, графический интерфейс пользователя) для всех UNIX платформ, включая и Linux. В отличие от MS Windows и MacOS, в Linux и UNIX, GUI не имеет ничего общего с ядром операционной системы. Ядро и GUI — независимые части. Это придает системе большую стабильность — если GUI зависает, это не приводит к зависанию всей системы. Единственная проблема с X Window, заключается в том, что ее достаточно трудно настроить.

Первый из разделов описывает использование xorgsetup — утилиты, поставляемой с дистрибутивами Slackware и MOPSLinux, для облегчения настройки X Window System. Второй из разделов относится к утилите xorgconfig — классической программе в стиле командной строки, для настройки X Window.

Утилита xorgsetup

Это наиболее простой способ настройки системы Х Window. Необходимо только набрать в командной строке:

# xorgsetup

Пользователю будет предложено выбрать разрешение монитора и глубину цвета, после чего программа самостоятельно произведет корректирование файла /etc/X11/xorg.conf. По-умолчанию будет использоваться стандартный драйвер видеокарты VESA, монитор будет настроен на частоту обновления 60Гц, а переключение раскладок клавиатуры будет осуществляться одновременным нажатием клавиш Ctrl+Shift.

Утилита xorgcfg

xorgcfg— это программа для настройки X Window, поставляемая разработчиками X. Программа имеет оконный интерфейс на английском языке (рис. 2.2). Настройка параметров осуществляется в диалоговом режиме.

Утилита xorgconfig

Утилита xorgconfig

xorgconfig— это утилита для настройки X Window, поставляемая разработчиками. Настройка параметров осуществляется в диалоговом режиме. Из предлагаемых вариантов необходимо выбрать ответы, наиболее подходящие настраиваемой системе. В результате работы программа создаст файл /etc/Х11/xorg.conf. После этого все будет готово к запуску X Window. При ошибке следует прервать выполнение программы нажатием комбинации клавиш <Ctrl>+<C> и повторить все с начала.

Полезно до запуска xorgconfig собрать как можно больше информации о видеокарте и мониторе, установленных в компьютере. Информацию о видеокарте можно найти в файле /proc/pci, выполнив следующую команду:

# cat /proc/pci

Например, информация для видеокарты Matrox Millenium G400 имеет следующий вид:

Bus 1, device 0, function 0: VGA compatible controller: Matrox Graphics, Inc. MGA G400 AGP (rev 133). IRQ 16. Master Capable. Latency=32. Min Gnt=16.Max Lat=32. pfetchable 32 bit memory at 0xda000000 [0xdbffffff]. Non-pfetchable 32 bit memory at 0xfe9fc000 [0xfe9fffff]. Non-pfetchable 32 bit memory at 0xfe000000 [0xfe7fffff].

Рекомендуется записать информацию об установленной видеокарте или переключиться на другой виртуальный терминал (используя комбинацию клавиш <Alt>+<Fx>, где x — число от 1 до 6) и запустить там xorgconfig. Информация о видеокарте понадобится позже. Утилита xorgconfig должна запускаться пользователем root, так как она записывает файлы и создает символические ссылки в местах, где только у пользователя root есть права на запись.

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

Mouse protocol (протокол мыши)

протокол мыши

протокол мыши

Тип установленной мыши должен быть выбран из списка (рис. 2.3). Большинство компьютеров поставляются с PS/2 или Microsoft Intellimouse.

Emulate3Buttons (эмуляция третей кнопки)

протокол мыши

Рисунок 2.3. Выбор режима эмуляции третьей кнопки

Если у мыши только две кнопки, то можно выбрать режим эмуляции третьей кнопки (рис. 2.4). Нажатие на обе кнопки одновременно будет интерпретировано, как нажатие третьей кнопки. Если установлена трехкнопочная мышь, то этот запрос и ответ на него будут проигнорированы.

Mouse device name (имя устройства).

имя устройства мышки

Рисунок 2.4. Выбор имени файла устройства

Вариант по умолчанию — /dev/mouse (рис. 2.5), подойдет для большинства пользователей, использующих мышь, подключенную к последовательному или PS/2 порту.

XKEYBOARD extension (расширение XKEYBOARD)

расширение XKEYBOARD

Рисунок 2.5. Выбор расширения клавиатуры

При положительном ответе на вопрос будет включено расширенное управление раскладкой клавиатуры (рис. 2.6). То есть, в отличие от предыдущих версий X Window, где при старой раскладке клавиатуры кнопки <Backspace> и <Delete> не работали, здесь они будут работать нормально.

Bindings for alt keys (назначение дополнительных кнопок)

Эту опцию необходимо включить, если будут использоваться различные раскладки клавиатуры.

Horizontal sync range (диапазон синхронизации по горизонтали)

диапазон синхронизации по горизонтали

Рисунок 2.6. Выбор диапазона горизонтальной синхронизации

Это первый из вопросов об установленном мониторе. Здесь очень важно сделать правильный выбор. Не допускается выбор диапазона, выходящего за пределы спецификации установленного монитора. Это не так важно на новых мониторах, так как у них есть защита, а более старые мониторы, при указании диапазона превосходящего его возможности, могут быть повреждены. Так что, если есть сомнения, лучше перестраховаться и выбрать консервативный диапазон. Очень полезно иметь в наличии документацию от установленного монитора. Для большинства современных мониторов можно выбрать 31.5-82.0 или 31.5-95.0. При этом допускается ввести свой диапазон частот, если подходящий в списке не указан.

Vertical sync range (диапазон синхронизации по вертикали)

диапазон синхронизации по вертикали

Рисунок 2.7. Выбор диапазона вертикальной синхронизации

Для ответа на этот вопрос также необходимо знать спецификацию установленного монитора. При сомнениях рекомендуется выбирать меньший диапазон. Безопасный выбор, будет 50-90 или 50-100. При этом допускается ввести свой диапазон частот, если подходящий в списке не указан.

Identification strings (строка идентификации)

Здесь будут предложены три вопроса об идентификации монитора. В этом пункте допускается ввод любых имен. Так как эти данные будут использованы только в конфигурационном файле для идентификации монитора, то их можно пропустить путем нажатия клавиши <Enter>.

Video card database (база данных видеокарт)

база данных видео-карт

Рисунок 2.8. Выбор типа видеоадаптера

Этот подраздел по настройке X Window относится к установленному видеоадаптеру. Документация от видеоадаптера и информация, полученная ранее, помогут при настройке. Для выбора видеоадаптера из списка, необходимо ответить y (да). Для перехода к следующей странице необходимо нажать на клавишу <Enter>.

В базе данных есть около 800 видеокарт. В левом столбце указан номер видеокарты, и ее наименование. В правом столбце содержится информация о чипсете данной видеокарты (рис. 2.9). Для просмотра списка необходимо нажимать на клавишу <Enter>, пока не будет найдена нужная видеокарта, после этого необходимо ввести соответствующий ей номер. Если тип установленной видеокарты неизвестен, то можно поискать видеокарту по названию в файле /proc/pci, либо можно выбрать пункт generic SVGA. Многие видеокарты, для которых нет их собственного X-сервера, поддерживаются стандартным SVGA-сервером. После выбора типа видеокарты пользователю будет предоставлена детальная информация о ней. Например, для указанной выше карты Matrox G400 будет получено такое сообщение:

Your selected card definition: Identifier: Matrox Millennium G400 Chipset: mgag400 Driver: mga Do NOT probe clocks or use any Clocks line.

Video memory (видео память)

видео память

Рисунок 2.9. Выбор размера видеопамяти

Необходимо выбрать размер имеющейся видеопамяти (рис. 2.10). Для получения этой информации можно использовать файл /proc/meminfo. Если в списке нет подходящего варианта, то можно выбрать Other и ввести вручную объем (в Кбайт) имеющейся видеопамяти.

Identification strings (строки идентификации)

Будет предложено ввести три идентификационных строки. Как и с монитором, можно просто нажать три раза клавишу <Enter> или ввести любые названия.

Теперь можно будет выбрать, в каких режимах будет работать X-сервер. На экране появятся четыре строки с указанием различных глубин цвета — 1bpp, 8bpp, 16bpp и 24bpp. Возле каждого из них есть список различных видеорежимов, которые могут быть использованы с этой глубиной цвета. X-сервер запустится с глубиной цвета по умолчанию и с первым из перечисленных для этой глубины разрешением. Для сохранения предложенного порядка режимов необходимо выбрать Ok.

В этом месте можно изменить разрешение по умолчанию. Сначала необходимо выбрать глубину цвета, для которой требуется сделать изменения. Например, будет предоставлен следующий выбор:

"640x480" "800x600" "1024x768" "1280x1024" for 1bpp "640x480" "800x600" "1024x768" "1280x1024" for 8bpp "640x480" "800x600" "1024x768" "1280x1024" for 16bpp "640x480" "800x600" "1024x768" for 24bpp

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

Which modes? 5432

Также возможно удалить те разрешения, которые не нужны. Если установленная видеокарта не может работать при разрешении 1280 ? 1024, то нет никакого смысла пробовать этот режим. Можно удалить этот режим, введя:

Which modes? 432

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

После этого программа возвратиться в список видеорежимов. После изменения для глубины 16bpp он будет выглядеть следующим образом:

"640x480" "800x600" "1024x768" "1280x1024" for 1bpp "640x480" "800x600" "1024x768" "1280x1024" for 8bpp "1280x1024" "1024x768" "800x600" "640x480" for 16bpp "640x480" "800x600" "1024x768" for 24bpp

При желании можно продолжить изменения для остальных глубин цвета. После установки видеорежимов необходимо выбрать Ok для продолжения.

Write the config file (запись конфигурационного файла).

Для записи настройки X Window в файл /etc/Х11/xorg.conf необходимо ответить y (да).

На этом настройка X Window завершена.

Запуск X Window

Для запуска оконного менеджера наберите:

$ startx

Если все настроено правильно, то запустится оконный менеджер, выбранный вами в процессе устновки. Если программа завершается с ошибкой, необходимо провести настройку X Window еще раз.

Существует несколько комбинаций клавиш, которые весьма полезны при использовании X Window.

  • <Ctrl>+<Alt>+<Backspace> — принудительно завершит X Window и вернет пользователя в текстовый режим.
  • <Ctrl>+<Alt>+<функциональная_клавиша>. Используется для переключения из X Window на терминалы командной строки.
  • <Ctrl>+<Alt>+<Num+> и <Ctrl>+<Alt>+<Num-> переключает видеорежимы.

Сессионные файлы настроек

/etc/X11/xinit/xinitrc и ~/.xinitrc

xinit(1) — программа, запускающая X Window. Она выполняется из startx(1), а ее конфигурационный файл определяет, какие программы (включая и оконный менеджер) должны быть запущены при загрузке X Window. Сначала xinit проверяет, есть ли в домашнем каталоге файл .xinitrc. Если она находит его, то он выполняется, а если нет — выполняется /etc/X11/xinit/xinitrc (системный файл по умолчанию).

Пример файла xinitrc:

# !/bin/sh # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $ userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # start some nice programs twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login

Все из этих if-блоков используются для подключения разных конфигурационных файлов. Наибольший интерес представляет часть файла, расположенная в конце — это та часть, где запускаются различные программы. Эта X-сессия начнется с оконным менеджером TWM, часами и тремя терминалами. Команда exec в строке запуска последнего из терминалов (xterm(1)) указывает, что этот терминал заменит текущую оболочку (ту, которая запустила xinit). Когда пользователь выйдет из этого терминала, X-сессия закончится.

Если при запуске X Window, необходимо запускать дополнительные программы, то нужно скопировать /etc/X11/xinit/xinitrc в ~/.xinitrc и отредактировать его, разместив нужные строки. Например, если вместо TWM вы хотите использовать KDE, то в ~/.xinitrc следует добавить:

# Start the window manager: exec startkde

Примечательно, что в каталоге /etc/X11/xinit/ есть несколько файлов xinitrc.*, которые соответствуют разным оконным менеджерам. По желанию можно воспользоваться любым из них.

Пользовательские настройки

Для получения различных настроек пользователя (цвета, шрифты, и т. д.) многие из программ X Window используют X Resource Database. Эта база данных обслуживается при помощи программы xrdb(1), которая напрямую практически никогда не запускается. В системе она запускается автоматически из файла xinitrc. Файл, из которого xinitrc указывает программе xrdb загружать настройки, — .Xresources. Программа xrdb так же загрузит .Xdefaults. Минимальный файл .Xresources выглядит следующим образом:

xterm*background: black xterm*foreground: gray xterm*scrollBar: true xterm*font: -*-lucidatypewriter-*-r-*-*-15-*-*-*-*-*-*-*

Эти четыре строки определяют настройки для программы xterm. В общем случае файл .Xresource имеет следующую структуру:

program*option: setting/value

Таким образом, содержание .Xresources должно быть самодостаточным. Шрифты для X Window всегда описываются так, как указано в четвертой строке.

Серверы и оконные менеджеры

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

Даже если X Window будет запущен на отдельном компьютере, пользователь имеет дело с моделью клиент-сервер. Сервер — это часть, которая определяется видеокартой. Выбором видеокарты при настройке X Window было определено, какой X-сервер будет использоваться. Клиентская часть — это все остальные программы, которые выполняются в X Window. Внешний вид конкретной X-сессии определяется специфическим клиентом, оконным менеджером.

Работа оконного менеджера заключается в том, чтобы формировать окна на экране, а так же обрабатывать ввод с мыши и клавиатуры. Современные оконные менеджеры — сложные программы, в них можно настроить практически все. В них есть все мыслимые опции, которые позволяют сделать рабочий стол пользователя отличным от всех других.

Большое количество оконных менеджеров действительно отличает Linux от MS Windows, в котором имеется одна основная оконная среда. В Linux можно пользоваться любым из многих оконных менеджеров с различным внешним видом и различными настройками. Некоторые относят это к недостаткам, так как нет одного стандартного внешнего вида. Но большинство пользователей Linux называют это достоинством, так как имеется возможность настроить систему по желанию пользователя.

Выбор рабочего стола

Многие годы UNIX использовался исключительно как операционная система для серверов и мощных профессиональных рабочих станций. Им пользовались люди с техническими наклонностями, поэтому графические интерфейсы представляли собой скелеты, разработанные для запуска нескольких необходимых приложений, вроде CAD-программ (Computer-Aided Design, автоматизированное проектирование) и программ обработки изображений. Управление файлами и системой производилось исключительно из командной строки. Различные производители (Sun Microsystems, Silicon Graphics и т. д.) продавали рабочие станции с наличием удобного графического интерфейса, но большое разнообразие сред разработки для GUI привело к тому, что единого стандарта для рабочего стола не существует. Полоса прокрутки в разных программах может выглядеть по-разному, меню расположены в различных частях окна, в программах встречаются разные кнопки и переключатели. До тех пор, пока пользователями были лишь технические профессионалы, это было несущественно.

С появлением свободных UNIX-подобных ОС, а также растущим числом различных графических приложений, X Window стал использоваться в качестве рабочего стола. Для устранения всех недостатков были созданы два проекта с открытыми исходными текстами программ: The K Desktop Environment или KDE и GNU Network Object Model Environment, известный как GNOME. Каждый из них имеет широкий спектр приложений, от панелей задач и менеджеров файлов, до игр и офисных пакетов и предоставляет универсальный и завершенный рабочий стол.

Различия между KDE и GNOME не очень велики. Они выглядят по–разному, так как написаны с помощью различных средств. KDE основан на Qt-библиотеке компании Troll Tech AS, в то время как GNOME основан на GTK, наборе инструментов, изначально разработанном для GIMP (GNU Image Manipulation Program, программа для работы с изображениями). Так как проекты независимы, то и разрабатываются они разными дизайнерами и программистами, с разными стилями разработки и с различной философией. Тем не менее, результат в обоих случаях, фундаментально идентичен: полная, тесно интегрированная рабочая среда и набор приложений. По функциональности и внешнему виду оба оконных менеджера предоставляют богатые возможности, к тому же они бесплатны.

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

$ xwmconfig

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

Экспортирование экрана

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

Компьютер, который выполняет X-программы и посылает изображение, будет называться сервером, а компьютер, на котором изображение будет выводиться на экран, — клиентом.

В предлагаемом для рассмотрения примере будет использоваться два компьютера: golf.foc — довольно мощный сервер, расположенный в неудобном месте. На нем установлено ОЗУ большой емкости, мощный процессор, а также много X-программ, но нет монитора. В другом конце комнаты расположен couch.foc — старый компьютер с небольшим объемом ОЗУ и маленьким диском. На нем нет достаточных ресурсов для запуска программы вроде Netscape. Компьютер couch имеет два существенных преимущества: у него есть монитор и он расположен прямо возле удобного кресла. Пользователю даже не надо вставать, чтобы пользоваться компьютером. Задача заключается в том, чтобы обеспечить возможность запустить программу Netscape с компьютера couch. Решение — экспортирование экрана.

Для удаленного запуска программ необходимо войти в систему на couch, запустить X Window и запустить любую установленную в системе терминальную программу (xterm, rxvt, eterm, aterm или любую другую). Первый шаг при настройке удаленного отображения X-программ — настройка клиента так, чтобы другие компьютеры могли показывать вывод программ. Для этого используется программа xhost, которая позволяет пользователю выбрать тех, кто сможет "смотреть", что делается на его компьютере:

couch $ xhost + golf.foc golf.foc being added to access control list

Теперь только golf.foc может выводить информацию на экран компьютера couch. Пользователь может проверить, у кого есть доступ для вывода на экран информации, запустив xhost без аргументов:

couch $ xhost access control enabled, only authorized clients can connect INET:golf.foc INET:localhost INET:couch.foc LOCAL:

Теперь клиент готов. Следующий шаг — настроить сервер, чтобы он знал, куда выводить изображение вместо монитора.

Настройка сервера проста. После того, как пользователь соединился с сервером, ему надо изменить переменную $DISPLAY. По умолчанию, вероятно, она будет пустая. Переменной должно быть присвоено значение, равное удаленному хосту, а также указано число, соответствующее тому, на какую X-сессию выводить экран. Скорее всего, у пользователя будет только одна X-сессия, так что тут никаких проблем возникнуть не должно.

В данном примере переменная $DISPLAY должна быть установлена следующим образом (в других случаях, если на сервере используется BASH, суть такая же, но синтаксис будет немного отличен):

golf $ export DISPLAY=couch.foc:0.0

Это все, что необходимо сделать для настройки сервера. Теперь, не отсоединяясь, можно запускать X-программы с него. Весь вывод программ по сети будет направляться на экран пользователя на компьютере couch.

Для запуска netscape на сервере golf пользователь компьютера couch должен ввести команду:

golf $ netscape &

Так как переменная $DISPLAY указывает на couch, все будет выводиться на этот компьютер. Пользователю даже не придется вставать из-за своего компьютера для того, чтобы запускать программы на сервере. При этом следует помнить, что на сервере должны быть установлены все библиотеки, и другие файлы, необходимые для выполнения программ. В то же время, на сервере не понадобится файл конфигурации xorg.conf, так как на его экран ничего не выводится.

Отключить экспортирование экрана пользователь может, убрав сервер из списка доступа на своем клиенте:

couch $ xhost - golf.foc golf.foc being removed from access control list

При этом следует быть осторожным, так как любой компьютер может быть сервером Х-приложений для удаленных клиентов, а его пользователь даже может не знать об этом.