5.2.1. Файл конфигурации xorg.conf
Мы уже знакомы с конфигуратором system-config-display, но он обеспечивает лишь базовую настройку графической системы Х.Оrg: вы можете изменить разрешение, выбрать монитор и видеокарту и настроить использование, двух дисплеев. Данный конфигуратор хорош для быстрой настройки X.Org и подойдет начинающим пользователям Linux.
Во многих современных книгах, посвященных Linux, рассматриваются только графические конфигураторы. Да, все быстро и просто. Но что делать пользователю, если по тем или иным причинам (например, с помощью графического конфигуратора был выбран неправильный драйвер видеокарты) X.Org больше не запускается? В тех книгах об этом не говорится. Что делают пользователи? Переустанавливают Linux вместо редактирования файла конфигурации X.Org. И это не мои выдумки и предположения: на моем форуме www.dkws.оrg.ua начинающие пользователи не раз об этом писали.
Главный конфигурационный файл X.Org называется /etc/X11/xorg.conf. Данный файл состоит из нескольких секций:
• Files - задаст путь к дополнительным файлам, например, к дополнительным модулям или же к шрифтам;
• ServerFlags - описывает разные флаги Х-сервера;
• InputDevice - обычно используется для описания клавиатуры и мыши;
• Module - подключает различные модули (может отсутствовать, если не нужны дополнительные модули);
• Monitor - описывает монитор;
• Modes - описывает режимы работы монитора, в том числе и поддерживаемые разрешения;
• Device - описывает видеоадаптер;
• Screen - описывает экран, т.е. здесь указывается, какой монитор и какая видеокарта должна использоваться;
• ServerLayout - более глобальная секция, описывающая экран (объект Screen) и устройства ввода;
• Extensions - описывает различные расширения Х-сервера.
Теперь рассмотрим все эти секции подробно.
5.2.1.1. Секция Files
Данная секция (листинг 5.1) залает путь к модулям и к шрифтам. Путь к шрифтам задается с помощью директивы FontPath, а к модулям - с помощью ModulePath. В современных версиях дистрибутивов путь к шрифтам можно не задавать. Но если вы установили какие-то особенные шрифты (не стандартные), то желательно "прописать" их в конфигурационном файле с помощью директивы FontPath в секции Files.
Листинг 5.1. Секция Files
Section "Files"
ModulePath "/usr/lib/xorg/modules/extensions/nvidia"
ModulePath "/usr/lib/xorg/modules"
EndSection
5.2.1.2. Секции ServerFlags
Секция ServerFlags (листинг 5.2) позволяет вам указать различные флаги для Х-сервера.
Листинг 5.2. Секция ServerFlags
Section "ServerFlags"
Option "AIGLX" "on"
EndSection
Вcе флаги сервера задаются с помощью директивы Option. Некоторые (наиболее полезные) флаги представлены в табл. 5.1. Для большего удобства приведены не просто названия флагов, a строки вместе с директивой Option - вам остается только скопировать нужную строку.
Таблица 5.1. флаги сервера
Флаг | Описание |
---|---|
Option "AIGLX "on" | AIGLX (Accelerated Indirect GLX) разработан сообществом OpenSource вместе с командой разработчиков Fedora Linux. Похож на технологию Xgl, которая используется в OpenSUSE (разработка компании Novell), но представляет собой надстройку над графической системой Х-Org, а не полную ее замену. AIGLX нужен для обеспечения работы CompizFusion, поэтому не нужно удалять данный флаг, если вы планируете использовать Compiz |
Option "NoTrapSignals" "on" | Запрещает остановку Х-сервера при фатальных ошибках, что позволяет корректно завершить работу приложений |
Option "DontVTSwitch" "on" | Запрещает переключение в консоль (виртуальный терминал) с помощью клавиш ‹Ctrl+Alt+Fn›. Полезно, если вы хотите запретить пользователям регистрацию в консоли (подойдет для компьютеров, которые используются в публичных местах - в Интернет-залах и лабораториях университетов) |
Option "DontZap" "on" | Запрещает использование комбинации клавиш ‹Сtrl+Alt+Bасksрасе›, которая используется для аварийного останова Х-сервера. Тоже полезна на "публичных" компьютерах |
Option "Dontzoom" "on" | С помощью комбинаций клавиш ‹Ctrl+Аlt+Кеурad-плюс› и ‹Ctrl+Alt+Keypad-минyc› вы можете переключать видеорежимы (изменять разрешение монитора). Опция DontZoom запрещает использование этик клавиш |
Option "on" | Разрешает удаленным пользователям подключаться к X-серверу и изменять параметры клавиатуры и мыши. Из соображений безопасности лучше ее не использовать. По умолчанию данная опция выключена |
Option "AllowMouseOpenFail" "on" | Разрешает работу Х-серверу, даже если мышь не найдена или не исправна. По умолчанию X-сервер завершает работу, если мышь недоступна |
Option "BlankTime" "время" | Интервал запуска хранителя экрана, время указывается в минутах. По умолчанию - 10 минут |
Option "StandbyTime" "время" | Пауза, после которой монитор переходит в спящий режим. Монитор должен поддерживать DPMS. Время задается в минутах |
Option "Pixmap" "bpp" | Задает глубину цвета. Вы можете выбрать между 24 bрр и 32 (по умолчанию) |
Option "NoPM" "on" | Запрещает управление питанием |
В табл. 5.1 приведены далеко не все флаги Х-сервера, но остальные очень редко используются на практике.
5.2.1.3. Секция InputDeviсe. Windows-раскладка клавиатуры
Секция InputDevice используется для описания клавиатуры и мыши (листинг 5.3).
Листинг 5.3. Описание клавиатуры и мыши
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option: "XkbLayout" "us,ru"
Option "XkbOptions" "grp:shiftis_toggle,grp_led:scroll"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Buttons" "5"
Option "Device" "/dev/input/mice"
Option "Name" "ImPS/2 Generic Wheel Mouse"
Option "Protocol" "еxрlоrеrps/2"
Option "ZAxisMapping" "4 5"
EndSection
Обратите внимание: клавиатура и мышь описываются в разных секциях InputDevice, а секция InputDevice для мыши может вовсе отсутствовать, причем будут работать обе кнопки мыши и колесико (если оно есть). Обычно описание мыши отсутствует, если мышь стандартная и для нее не нужен какой-либо специальный драйвер или нe нужно указывать какие-либо специальные параметры. В моем конфигурационном файле сейчас вообще отсутствует описание мыши и, нем не менее, она работает.
Наверное, вы обратили внимание на то, что в Fedora 8 русская раскладка клавиатуры не совсем такая, как в Windows, к которой вы привыкли. Например, для того, чтобы ввести точку (.), нужно нажать ‹Shilt+7›, а для ввода запятой - ‹Shift+8›. Да и с другими знаками пунктуации не все в порядке.
Чтобы исправить данную проблему, нужно в секцию Input-Device клавиатуры добавить опцию Option "XkbVariant" ", winkeys".
Измененная секция InputDevice представлена в листинге 5.4.
Листинг 5.4. Задание Windows-раскладки клавиатуры
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pcl05"
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:shifts_toggle,grp_led:scroll"
Option "XkbVariant" ",winkeys"
EndSection
5.2.1.4. Секция Module
Секция Module используется для загрузки различных модулей. Загрузка модуля осуществляется директивой Load (листинг 5.5).
Листинг 5.5. Пример секции Module
Section "Module"
Load "dbe"
Load "type1"
Load "freettype"
Load "extmod"
EndSection
Секция Module может отсутствовать, если не загружаются никакие дополнительные модули.
5.2.1.5. Секции Monitor и Modes
В данной секции описывается монитор. Обратите внимание на параметр Identifier, задающий идентификатор монитора (листинг 5.6). В вашем файле конфигурации может быть описано несколько мониторов, но к секции Screen будет определен только один монитор. Чтобы указать, какой монитор вы хотите использовать, нужно указать его идентификатор.
Листинг 5.6. Пример секции Monitor
Section "Monitor"
Identifier "Monitor0"
ModelName "LCD Panel 1280x1024"
HorizSync 31.5 - 64.0
VertRefresh 56.0 - 65.0
Option "dpms"
EndSection
Параметр ModelName задает имя монитора. Также может быть указан параметр VendorName, определяющий производителя монитора, например:
VendorName "ACR" ModelName "AL1916"
Параметры HorizSync и VertRefresh задают допустимую частоту горизонтальной (в кГц) и вертикальной развертки соответственно. Значения для данных параметров можно взять из руководства по вашему монитору или найти в Интернете - на сайте производителя монитора.
Обратите внимание на опцию dpms. DPMS (Display Power Management Signaling) - это сигналы управления питанием монитора. Без опции dpms невозможно управление питанием монитора.
Необязательный параметр UseModes может задавать имя секции описания режимов работы монитора (обычно в ней описывается разрешение монитора): UseModes "Modes0"
Пример секции Modes приведен в листинге 5.7.
Листинг 5.7. Пример секции Modes
Section "Modes"
Identifier "Modes0"
ModeLine "1280x1024" 100.0 1280 1328 1440 1688 1024 l025 1028 1066 +hsync +vsync
EndSection
Режим работы монитора описывается с помощью директивы ModeLine. Формат ModeLine следующий:
Modeline "имя_режима" D H1 Н2 H3 Н4 V1 V2 V3 V4 Flags
Здесь:
• имя_режима - текстовое описание режима, можно написать все, что угодно, но обычно записывается разрешение работы монитора, например, "1024x786", но с тем же успехом вмести "1024x768" можно написать "my_mode" (данный параметр предназначен для пользователя и никак не влияет на работу монитора);
• D - частота выдачи точек на монитор, частота задается в мегагерцах;
• Н1-Н4 - значения горизонтальной развертки (строчной синхронизации);
• V1-V4 - значения вертикальной развертки (кадровой синхронизации);
• Flags - флаги, обычно относящиеся к развертке (обычно используются флаги +hsync и +vsync, лучше не изменять этот параметр).
Обычно режимы работы монитора устанавливаются автоматически - конфигуратором. Но если нам хочется поэкспериментировать, тогда используйте программу xvidtune, позволяющую создать особые режимы работы монитора, например, компенсировать недостаток строк, задать синхронизацию по определенному каналу.
Сразу предупреждаю: используйте данную программу на свой страх и риск. Ни я, ни разработчики данной программы не несут ответственности за возможные последствия применения сгенерированных программой режимов!
5.2.1.6. Секция Device
В данной секции описывается видеокарта (листинг 5.8).
Листинг 5.8. Пример описания видеокарты
Section "Device"
Identifier "Videocard0"
Driver "nvidia"
Option "AddARGBGLXVisuals" "True"
EndSection
Самое главное в данной секции - это параметр Driver, задающий драйвер для видеокарты, В данном случае используется драйвер производителя - nvidia. Стандартный драйвер nVidia, входящий в состав Fedora 8, называется nv.
При описании видеокарты могут указываться дополнительные унции, которые зависят от самой видеокарты и от используемого драйвера.
Если в системе установлена всего одна видеокарта, тогда параметр BusID, описывающий, в каком именно слоте установлена видеокарта, может отсутствовать. Если же в системе две видеокарты, то параметр BusID обязателен для каждой видеокарты, например: BusID "1:0:0"
Остальные параметры, которые могут встречаться в этой секции, например, VideoRam, задающий размер видеопамяти, или Ramdac, задающий тип RAMDАС видеокарты, попросту не нужны, поскольку современный Х-сервер автоматически определяет параметры видеокарты.
5.2.1.7. Секция Screen
Секция Sсrееn описывает экран. Как уже отмечалось, здесь нужно указать идентификаторы монитора и видеокарты (листинг 5.9).
Листинг 5.9. Пример секции Screen
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
Subsection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Обратите внимание на следующие параметры:
• Identifier - задает идентификатор экрана (понадобится в секции ServerLayout);
• Device - задает используемую видеокарту;
• Monitor - позволяет указать, какой монитор нужно использовать;
• DefaultDepth - задает глубину цвета по умолчанию.
В секции Screen может быть несколько подсекций Display. Каждая подсекция может описать особый режим работы монитора, например, задать необходимую глубину цвета и поддерживаемые разрешения (режимы работы монитора):
Subsection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600"
EndSubsection
5.2.1.8. Секция ServerLayout
Данная секция задает используемые устройства ввода и объект Screen (листинг 5.10).
Листинг 5.10. Пример секции ServerLayout
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
EndSection
В данной секции сказано, что будет использоваться экран с идентификатором Screen0, клавиатура с идентификатором Kеуboard0 и мышь Моuse1. Параметры CoreKeyboard и CorePointer означают, что данные устройства являются соответственно главной клавиатурой и главным указательным устройством (pointer).
5.2.1.9. Секция Extensions
Здесь описываются различные расширения. Секция Extensions может отсутствовать, если дополнительные расширения не используются. Так, для работы Compiz (трехмерного рабочего стола) нужно подключить расширение Composite (листинг 5.11).
Листинг 5.11. Подключаемые расширения
Section "Extensions"
Option "Composite" "Enable"
EndSection
5.2.1.10. Полный листинг конфигурационного файла xorg.conf
В листинге 5.12 представлен полный вариант главного конфигурационного файла /etc/X11/xorg.conf.
Листинг 5.12. Файл xorg.conf
# Xorg configuration created by livna-cоnfig-display
Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mousel" "CorePointer"
EndSection
Section "Files"
ModulePath "/usr/lib/xorg/modules/extensions/nvidia"
ModulePath "/usr/lib/xorg/modules"
EndSection
Section "ServerFlags"
Option "AIGLX" "on"
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp: shifts_toggle,grp_led:scroll"
Option "XkbVariant" ",winkeys"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Buttons" "5"
Option "Device" "/dev/input/mice"
Option "Name" "ImPS/2 Generic Wheel Mouse"
Option "Protocol" "explorerps/2"
Option "ZAxisMapping" "4 5"
EndSection
Section "Modes"
Identifier "Modes0"
ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
EndSection
Section "Monitor"
Identifier "Monitor0"
ModelName "LCD Panel 1280x1024"
HorizSync 31.5 - 64.0
VertRefresh 56.0 - 65.0
Option "dpms"
UseModes "Modes0"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "nvidia"
Option "AddARGBGLXVisuals" "True"
EndSeсtion
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
Subsection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024"
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
5.2.2. Утилита livna-config-display
Кроме стандартного конфигуратора system-config-display, из репозитория livna вы можете установить альтернативный конфигуратор livna-config-display (рис. 5.8). Теперь, когда вы знаете, как настраивать графическую систему X.Оrg вручную (без конфигураторов), думаю, вы без особых проблем разберетесь с livna-config-display самостоятельно.
Рис. 5.8. Конфигуратор livna-config-display