Что-то давненько не конфигурировал я Иксов... Ведь одна из прелестей 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
, но избавляет от скучной процедуры, позволяет сэкономить время, а в итоге дает компактный и, главное, удобопонятный, конфиг. А ручная доводка требуется в обоих случаях. Хотя при наличии старого рабочего конфига занимает считанные минуты.