Алексей Федорчук
2005 г
Эта заметка была написана давно и по случаю. Ныне методы не только ручного, но и автоматического создания конфигурационного файла Иксов уходят в прошлое — на смену крестьянской лошади идёт железный конь HAL’а. Тем не менее, и старое доброе автоконфигурирование X-сервера может выручить в трудную минуту. Как оно выручило меня после
Что-то давненько не конфигурировал я Иксов… Ведь одна из прелестей 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), сам собой установил разрешение 1024×768 (что равно физическому разрешению матрицы) и 24-битную глубину цвета. А частотные характеристики для LCD-дисплея, как известно, никакого рояля не играют, так что я этим и не озадачивался.
Конечно, в секции Device
можно было бы еще кое-что подретушировать, сняв комментарии со строк соответствующих опций. Однако одни опции для меня были не важны, смысла других я не понимаю, действие же третьих (DRI) мне все равно не на чем было бы проверить.
В итоге путем некоторых обычных манипуляций я довел автосгенерированный конфиг до удовлетворяющего меня состояния, на котором можно было бы и успокоиться. Но для сравнения решил все же запустить и штатный конфигуратор для текстового режима, который теперь носит имя xorgconfig
(есть еще и конфигуратор для режима графического — xorgcfg
, наследник древнего XF86Setup, — но я ему не доверяю со дня появления).
Каждый, кому хоть раз приходилось прибегать к xorgconfig
, знает, какое это нудное занятие: требуется ответить на множество вопросов, причем любая ошибка может быть исправлена только одним способом — выходом из конфигуратора и повторением процедуры с самого начала. Однако он обладал одним несомненным достоинством — при должной аккуратности позволял добиться неизменно превосходного результата, почти не требующего ручной доводки (за исключением вышеупомянутой проблемы кириллических шрифтов и, для CRT-мониторов, юстирования частотных характеристик).
Однако на этот раз результатом-то я и был разочарован. Все началось почти сразу — отказом задействовать расширения Xkb, мотивированным отсутствием соответствующих rules, хотя таковые имели место быть — и именно там, где xorgconfig
пытался их отыскать. Соответственно, отпал один из первых плюсов конфигуратора — возможность настройки клавиатуры под свои потребности. Второй же плюс — точное задание диапазонов кадровой и строчной развертки, — как я уже говорил, для LCD-дисплеев не существенен. А все остальное — драйвер видеокарты, разрешение и глубина цвета, — я все равно установил такими же, какие были получены автоматически в предыдущем случае.
А окончательным результатом явился своеобычный конфиг объемом почти в 15 Кбайт, забитый многочисленными (и, ИМХО, ненужными) комментариями и описаниями заведомо избыточных устройств. Плюс время, затраченное на ответы на вопросы, кое-какие из них — просто дурацкие (например, об объеме видеопамяти — все равно в итоговом конфиге соответствующая строка комментируется).
Так что в итоге остается согласиться с мнением Владимира: с точки зрения конечного результата автоконфигурирование Иксов дает ничуть не худший результат, нежели xorgconfig
, но избавляет от скучной процедуры, позволяет сэкономить время, а в итоге дает компактный и, главное, удобопонятный, конфиг. А ручная доводка требуется в обоих случаях. Хотя при наличии старого рабочего конфига занимает считанные минуты.