Xorg: маленькое дополнение к автоконфигурированию
Алексей Федорчук
Что-то давненько не конфигурировал я Иксов... Ведь одна из прелестей
POSIX-систем, неведомая "подоконникам", - возможность раз создать всякие и
всяческие конфиги, а потом буквально годами таскать их с машины на машину,
из одного дистрибутива Linux в другой, и даже - из Linux'а во FreeBSD и
обратно, внося в них лишь косметическую правку.
Так было и у меня с Иксами: запустив последний раз xf86config - страшно
подумать - года два назад, я к этой программе почти не притрагивался, разве
что иногда - чтоб не отвыкнуть. Мой /etc/X11/XF86Config верой и правдой
служил мне на всех моих машинах и во всех операционках, благо видеокарты у
меня были всегда на чипах NVIDIA, а ее фирменными драйверами я никогда не
пользовался за ненадобностью. И потому великие достижения системы XFree86 в
автоконфигурировании, столь красочно описанные Владимиром Поповым и блестяще
реализованные им на практике в LiveCD LinuxPop, прошли мимо меня.
А вот недавно сподобился по двум причинам. Во-первых, как уже было сказано,
до сих пор я пользовался только чипами NVIDIA, а в новом моем ноутбуке имело
место быть интеловское чипсетное видео (вариация на тему 845G), на котором
мой старый конфиг работать вроде бы не должен. А во-первых, под влиянием
вышепоименованной статьи просто захотелось поглядеть, как это выглядит на
практике, тем паче, что в моем новом дистрибутиве Archlinux вместо
привычного XFree86 штатно присутствовал Xorg, так что мои наблюдения могли в
чем-то ее дополнить.
Наперед скажу, что никаких америк я не открыл - все примерно соответствовало
описанному в статье Владимира, с поправкой на ноутбучную специфику. О ней-то
и скажу пару слов.
Итак, самоконфигурирование начинается с запуска X-сервера с соответствующей
опцией:
$ Xorg -configure
Впрочем, в моем случае оно этим и закончилось: сервер выпал в осадок с
сообщением о невозможности отыскать мышиное устройство, успев, правда, перед
своей безвременной кончиной создать прототип своего конфига xorg.conf.new
(размером менее 3 Кбайт). Внимательное рассмотрение которого показало, что
искалось устройство под названием /dev/mouse, функционирующее по протоколу
auto. Так что безуспешность поисков была неудивительна: в Archlinux
используется файловая система устройств, и, согласно описанию в
/etc/devfs.conf, симлинк /dev/mouse по умолчанию не создается.
В наличии же имелись: штатный тачпад и USB-мышка с колесиком имени товарища
Logitech'а, которые пытались определиться между тремя файлами устройств -
/dev/input/mice, /dev/input/mouse0 и /dev/input/mouse1. Кроме того,
обнаружилась и символическая ссылка /dev/usbmouse, указывающая на
/dev/input/mice. Из чего я сделал заключение, что именно это устройство и
является всамделишней USB-мышью, тогда как соотношения остальных
/dev/input/mouse# с тачпадом для меня так и остались загадкой.
Впрочем, проблема эта меня не особо волновала, так как навыков работы с
тачпадом я не имел и приобретать не собирался. И потому, предварительно
скопировав конфиг куда следует
$ cp /root/xorg.conf.new /etc/X11/xorg.conf
бестрепетно внес в секцию Section "InputDevice" в дополнение к имевшимся там
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"

Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
После чего, надо сказать, Иксы запустились нормально, и в них заработала и
мышь, включая ее колесо, и тачпад (а я уж готовился настраивать их как два
отдельных устройства). Можно было бы еще значение опции Protokol заменить на
IMPS/2 - но и без этого со скроллингом все было нормально.
Следующая неожиданность подстерегала меня в той секции Section
"InputDevice", которая отвечает за клавиатуру. В изначальном
полуавтоматическом конфиге она содержала всего две строки:
Identifier "Keyboard0"
Driver "keyboard"
которые ни о чем не говорили. Так что описание клавиатуры я вытащил из
старого конфига:
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:caps_toggle,grp_led:caps"
И все было нормально, но вот на вариант winkeys Иксы реагировать не желали
категорически - на лицо была раскладка, соответствующая DOS-маркировке
клавиш. После некоторого размышления я выкинул строку с XkbVariant,
модернизировав предыдущую:
Option "XkbLayout" "us,ru(winkeys)"
после чего все пришло в норму.
Далее, рассмотрение секции "Module" показало полное наличие отсутствия
подгрузки модуля xtt, необходимого для восприятия Иксами ttf-шрифтов (зато в
изобилии присутствовали модули типа dri и glx, а также же несколько, смысла
которых я просто не знаю). Так что я внес сюда строку
Load "xtt"
исключив заодно все ненужное (типа модуля поддержки шрифтов speedo).
Теперь собственно о шрифтах. В соответствие с доброй традицией
"неправильного" XFree86, Xorg продолжает категорически игнорировать
кириллические шрифты, штатно входящие в его состав (каталог
/usr/X11R6/lib/X11/fonts/cyrillic). Потеря небольшая - так себе шрифты,
между нами говоря, - но само по себе явление показательное. Так что ручная
правка секции Files потребуется в любом случае.
В качестве альтернативы штатным шрифтам в качестве растровых лучше
задействовать комплект cyr-rfx Дмитрия Болховитянинова. А в качестве
векторных - есть выбор между идеологически чистыми шрифтами Валентина
Филиппова, существующими как в ATM, так и в TTF-формате, и достижением
враждебного лагеря - шрифтам от Microsoft. На самом деле, это - разработка
фирмы Monotype, так что идеологических препятствий к их использованию я не
вижу. А физически их вовсе не обязательно тянуть с дистрибутива Windows - в
виде пакета corefonts они легко находятся на многих сайтах (правда, не знаю,
как это выглядит с точки зрения лицензионной чистоты). Или, если уж быть
совсем последовательным, с помощью утилиты cabextract извлечь их cab-архива,
некогда свободно доступного на сайте Microsoft (и распространение которого
по Сети официально вроде так и не было запрещено).
И, наконец, то, что традиционно считается главным при конфигурировании Иксов
(и ранее вызывало наибольшие проблемы) - настройка видеорежима. Тут у меня к
автоконфигурированию претензий нет: X-сервер при первом старте правильно
опознал мой чипсет (официально, согласно документации, именуемый Intel
82852/82855GM), приписал ему соответствующий драйвер (который по сию пору
именуется i810), сам собой установил разрешение 1024x768 (что равно
физическому разрешению матрицы) и 24-битную глубину цвета. А частотные
характеристики для LCD-дисплея, как известно, никакого рояля не играют, так
что я этим и не озадачивался.
Конечно, в секции Device можно было бы еще кое-что подретушировать, сняв
комментарии со строк соответствующих опций. Однако одни опции для меня были
не важны, смысла других я не понимаю, действие же третьих (DRI) мне все
равно не на чем было бы проверить.
В итоге путем некоторых обычных манипуляций я довел автосгенерированный
конфиг до удовлетворяющего меня состояния, на котором можно было бы и
успокоиться. Но для сравнения решил все же запустить и штатный конфигуратор
для текстового режима, который теперь носит имя xorgconfig (есть еще и
конфигуратор для режима графического - xorgcfg, наследник древнего
XF86Setup, - но я ему не доверяю со дня появления).
Каждый, кому хоть раз приходилось прибегать к xorgconfig, знает, какое это
нудное занятие: требуется ответить на множество вопросов, причем любая
ошибка может быть исправлено только одним способом - выходом из
конфигуратора и повторением процедуры с самого начала. Однако он обладал
одним несомненным достоинством - при должной аккуратности позволял добиться
неизменно превосходного результата, почти не требующего ручной доводки (за
исключением вышеупомянутой проблемы кириллических шрифтов и, для
CRT-мониторов, юстирования частотных характеристик).
Однако на этот раз результатом-то я и был разочарован. Все началось почти
сразу - отказом задействовать расширения Xkb, мотивированным отсутствием
соответствующих rules, хотя таковые имели место быть - и именно там, где
xorgconfig пытался их отыскать. Соответственно, отпал один из первых плюсов
конфигуратора - возможность настройки клавиатуры под свои потребности.
Второй же плюс - точное задание диапазонов кадровой и строчной развертки, -
как я уже говорил, для LCD-дисплеев не существенен. А все остальное -
драйвер видеокарты, разрешение и глубина цвета, - я все равно установил
такими же, какие были получены автоматически в предыдущем случае.
А окончательным результатом явился своеобычный конфиг объемом почти в 15
Кбайт, забитый многочисленными (и, ИМХО, ненужными) комментариями и
описаниями заведомо избыточных устройств. Плюс время, затраченное на ответы
на вопросы, кое-какие из них - просто дурацкие (например, об объеме
видеопамяти - все равно в итоговом конфиге соответствующая строка
комментируется).
Так что в итоге остается согласиться с мнением Владимира: с точки зрения
конечного результата автоконфигурирование Иксов дает ничуть не худший
результат, нежели xorgconfig, но избавляет от скучной процедуры, позволяет
сэкономить время, а в итоге дает компактный и, главное, удобопонятный,
конфиг. А ручная доводка требуется в обоих случаях. Хотя при наличии старого
рабочего конфига занимает считанные минуты.