В.А.Костромин

http://linux-ve.chat.ru

Инсталляция и настройка XFree86[tm] версии 4.0.2

1. Введение

XFree86 - это свободно распространяемая реализация стандарта X11R6.4 графической подсистемы для UNIX-подобных систем. XFree86 работает на целом ряде операционных систем (таких как Linux, разные типы BSD и Solaris x86) для процессоров Intel (а также и на других платформах).

XFree86 4.0.2 - это третий полный релиз 4-ой версии XFree86.

Настоящая статья в значительной части является переводом руководства по установке, поставляемого вместе с XFree86 версии 4.0.2 (это руководство датировано 15 декабря 2000 г.). Я дополнил перевод небольшим количеством собственных комментариев и дополнений, являющихся результатом моего собственного опыта установки данной версии XFree86 (такие дополнения обычно даются от первого лица, так что Вы легко сможете выделить их из остального текста).

2. Скачивание установочных файлов для XFree86 4.0.2

Бинарные файлы для установки XFree86 для различных операционных систем можно скачать с ftp-сайта ftp.xfree86.org (URL: ftp://ftp.xfree86.org/pub/XFree86/4.0.2/binaries/) или одного из его зеркал. Эти файлы организованы по поддиректориям, в соответствии с тем, для какой ОС эти файлы предназначены. Для некоторых ОС (и, в частности, для Linux) нужно еще перейти в подкаталог в соответствии с тем, какая версия библиотеки libc используется в системе. Для того, чтобы выбрать правильную версию установочных файлов, лучше всего предварительно скачать скрипт Xinstall.sh, и запустить его в Вашей системе с опцией -check следующим образом:
     sh Xinstall.sh -check
В результате эта утилита сообщит Вам, какой именно набор установочных файлов Вам необходимо скачать. В результате Вы сэкономите массу времени, не перекачивая файлы, несовместимые с Вашей системой.

Замечания:

Скрипт Xinstall.sh нужно скачивать в режиме "binary", иначе он может отработать некорректно. Если Вы при запуске этого скрипта получите массу сообщений типа "command not found", то скорее всего скрипт был скачан в неправильном режиме и работает с ошибками.
Среди тех установочных файлов, которые Вы должны будете перекачать, имеется еще утилита extract, которую тоже надо перекачивать в режиме "binary". Между тем некоторые браузеры при заданном по умолчанию режиме перекачки могут исказить ее.

Мой Вам совет - воспользуйтесь для перекачки FTP-клиентом, встроенным в такие программы как Midnight Commander (если Вы работатете под Линукс) или FAR или Windows Commander (если Вы выходите в Интернет из-под Windows). При этом очень просто будет выбрать для перекачки только нужные Вам файлы.

После того, как Вы определились с версией установочных файлов, перейдите в соответствующий подкаталог каталога ftp://ftp.xfree86.org/pub/XFree86/4.0.2/binaries/ и скачайте необходимые файлы. Обязательно нужно скачать следующие 12 файлов :

  1.   Xinstall.sh      Инсталляционный скрипт (Вы его уже скачали)
  2.   extract          Утилита для распаковки архивов
  3.   Xbin.tgz         X clients/utilities and run-time libraries
  4.   Xlib.tgz         Some data files required at run-time
  5.   Xman.tgz         Страницы интерактивного руководства 
  6.   Xdoc.tgz         Документация по XFree86
  7.   Xfnts.tgz        Базовый набор фонтов
  8.   Xfenc.tgz        Base set of font encoding data
  9.   Xetc.tgz         Run-time configuration files
  10.  Xvar.tgz         Run-time data
  11.  Xxserv.tgz       XFree86 X server
  12.  Xmod.tgz         XFree86 X server modules

Следующие 13 файлов не являются обязательными. Их Вы можете скачать, если хотите установить соответствующие дополнительные части (но я рекомендую скачать и установить их, кроме разве что документации на японском).

  1.   Xfsrv.tgz        Фонт-сервер
  2.   Xnest.tgz        Nested X server
  3.   Xprog.tgz        X header files, config files and compile-time libs
  4.   Xprt.tgz         X Print server
  5.   Xvfb.tgz         Virtual framebuffer X server
  6.   Xf100.tgz        100dpi fonts
  7.   Xfcyr.tgz        Кириллические фонты
  8.   Xflat2.tgz       Latin-2 fonts
  9.   Xfnon.tgz        Some large bitmap fonts
  10.  Xfscl.tgz        Масштабируемые фонты (Speedo и Type1)
  11.  Xhtml.tgz        HTML-версия документации
  12.  Xps.tgz          PostScript-версия документации
  13.  Xjdoc.tgz        Документация на японском языке
Замечания:
Для некоторых дистрибутивов архив Xvar.tgz не нужен, тогда он отсутствует в соответствующем каталоге. И наоборот, для некоторых дистрибутивов могут потребоваться дополнительные архивы. Если в процессе инсталляции обнаружится, что у Вас не хватает какого-либо из необходимых установочных файлов, скрипт сообщит Вам об этом и предложит скачать их, прежде чем продолжать процесс инсталляции.
Если Вы какие-то из этих файлов не будете иметь к моменту инсталляции, то соответствующие части можно будет установить и позже, но уже не с помощью инсталляционного скрипта, а в ручном режиме (смотри раздел 4 "Ручная инсталляция" ниже).

3. Инсталляция XFree86 версии 4.0.2 с помощью инсталляционного скрипта Xinstall.sh

Разработчики настоятельно рекомендуют пользоваться именно этим вариантом установки (хотя установка "вручную" тоже описана далее в этом руководстве).

До начала процедуры инсталляции следует обязательно сохранить копию предыдущей версии XFree86 (если у Вас она была установлена). При этом, если Вы хотите, чтобы все ранее установленные в Вашей системе графические приложения продолжали работать, то нужно не просто переименовать существующий каталог /usr/X11R6, а сохранить где-нибудь его копию (как Вы понимаете, лучше всего на другом диске). Инсталляцию же надо проводить "поверх" существующей версии.

Кроме каталога /usr/X11R6 инсталляционный скрипт рекомендует еще сохранить каталог /etc/X11 (хотя в руководстве по установке такой совет отсутствует). Если впоследствии Вы столкнетесь с какими-то проблемами, Вы сможете просто заменить измененные версии каталогов /usr/X11R6 и /etc/X11 на сохраненные и вернуть тем самым предыдущую инсталляцию (я проверил это на собственном опыте и убедился, что после такого возвращения все работает нормально, так же как работало до установки XFree86 новой версии).

Еще один совет позволю на основании собственного опыта: позаботьтесь о том, чтобы в файловой системе, в которой расположен каталог /usr, имелось не менее 100 МБ свободного места.

Затем нужно закрыть X-сессию (инсталляцию надо проводить в консольном режиме). Если Вы попытаетесь провести инсталляцию в графическом режиме, инсталляционный скрипт предупредит Вас о том, что это не лучшая идея (инсталлятор проверяет, установлена ли переменная $DISPLAY). Если только у Вас нет особых оснований для выполнения инсталляции в графическом режиме (я таких оснований не знаю), лучше выйти из X-сессии, а также остановить xdm и другие аналогичные программы.

Для того, чтобы запустить инсталляционный скрипт, нужно получить права суперпользователя. Так что после сохранения предыдущей версии XFree86 и выхода из графического режима (или еще до этого) выполните команду su.

После того, как все подготовительные операции завершены, разместите все установочные файлы в отдельном каталоге, перейдите в этот каталог (сделайте его текущим) и запустите инсталляционный скрипт:

     sh Xinstall.sh

3.1 Вопросы, которые задает инсталляционный скрипт

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

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

На первом этапе инсталляции поверх ранее установленной версии скрипт удаляет некоторые старые файлы и каталоги. Однако список удаляемых файлов и каталогов будет Вам сообщен. Если такого списка не будет выдано, то значит ничего не удаляется.

На следующем шаге инсталляции поверх ранее установленной версии производится проверка существующих конфигурационных файлов. Начиная с версии 3.9.18 системы XFree86 конфигурационные файлы времени выполнения (the run-time configuration files) по умолчанию устанавливаются в каталог /etc/X11 вместо /usr/X11R6/lib/X11. Если у Вас более ранняя версия XFree86, то инсталлятор переместит существующие конфигурационные файлы в /usr/X11R6/lib/X11, а в /etc/X11 создаст символические ссылки. Если Вы не хотите, чтобы в /etc/X11 создавались такие ссылки, то отвечайте "no", когда Вас об этом спросят. Это будет означать, что конфигурационные файлы будут созданы в каталоге /usr/X11R6/lib/X11, а ссылки создаваться не будут.

Замечание: Ответ по-умолчанию - это лучший выбор для большинства ситуаций. В данном случае по умолчанию предлагается "yes" . В таком случае облегчается обеспечение разделения доступа к каталогу /usr/X11R6 для нескольких хостов и этот каталог может монтироваться только для чтения. Если Вы не нуждаетесь в такой возможности, то можете безопасно отвечать "no", если не хотите, чтобы конфигурационные файлы были перемещены.

Когда Вы осуществляете инсталляцию поверх существующей версии, Вам будет выдаваться запрос перед установкой каждого следующего набора конфигурационных файлов. Если Вы не вносили собственных изменений в Ваши конфигурационные файлы, Вы можете спокойно отвечать "yes" на все такие вопросы. Если Вы вносили какие-то изменения, то Вы можете попытаться отвечать "no". Если позже возникнут какие-то проблемы, Вы можете внести свои изменения в новые версии конфигурационных файлов. Все конфигурационные файлы можно найти в архиве Xetc.tgz. О том, как их извлечь из архива по отдельности, Вы можете прочитать ниже, в разделе о ручной инсталляции (section 4., page 1).

Я спокойно отвечал "yes" на эти вопросы, потому что, следуя приведенному выше совету, сохранил резервную копию каталога /usr/X11R6. Впрочем, поскольку я проводил инсталляцию несколько раз (из-за того, что первые попытки настройки вновь установленной системы X Window были безуспешны), я опробовал разные варианты ответов, но результат всегда был примерно одинаков (по крайней мере, внешне, судя по тому, что все заканчивалось сообщением об успешном завершении инсталляции).

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

Если Вы скачали (и поместили во временный каталог, откуда запустили процесс инсталляции) какие-то из необязательных компонент, то инсталляционный скрипт будет запрашивать Вас о необходимости установки каждого компонента. Ответ по-умолчанию - "yes". Если Вы не хотите устанавливать какую-то часть из них, отвечайте "no" на соответствующий вопрос.

На этом основная часть инсталляции завершена. На следующих этапах осуществляется настройка системы. Во-первых, запускается утилита "ldconfig" (в системах, где это требуется), чтобы сделать доступными вновь установленные разделяемые библиотеки. Затем будут обновлены файлы fonts.dir в некоторых каталогах, чтобы обеспечить доступ к фонтам. На следующем этапе инсталлятор проверяет, доступны ли для Вашей системы файл termcap или файлы terminfo. Если будет однаружен файл termcap, то Вам будет выдана подсказка о том, как Вы можете обновить этот файл. Если будут однаружены вторые (т.е. файлы terminfo), то инсталлятор спросит, не хотите ли Вы, чтобы они были автоматически обновлены.

В моем случае обнаружился файл termcap и инсталлятор сообщил, что его надо отредактировать вручную, чтобы изменить записи, касающиеся xterm теми значениями, которые привелены в файле /usr/X11R6/lib/X11/etc/xterm.termcap. При этом дополнительно было сообщено, что новые значения необходимы для того, чтобы воспользоваться новыми возможностями, но при этом могут возникнуть проблемы со старыми версиями xterm. Тип терминала "xterm-r6" включен для совместимости со стандартной для X11R6 версией xterm.

Может быть Вам будет задан вопрос о том, не хотите ли Вы создать ссылки на библиотеки GL и заголовочные файлы (header files). Стандарт OpenGL для некоторых платформ (в частности, Linux) требует, чтобы эти файлы были установлены в определенные каталоги (/usr/lib и /usr/include), поэтому инсталлятор предлагает создать соответствующие ссылки. В Линукс лучше всего ответить "yes". Для других платформ Вы можете сделать любой выбор. Если у Вас уже установлена другая версия libGL в /usr/lib, то при ответе "yes" она будет удалена и заменена ссылкой на ту версию, которая поставляется с XFree86. Инсталлятор сообщит Вам, какая версия у Вас установлена и спросит, можно ли их заменить.

Наконец, инсталлятор спросит Вас, хотите ли Вы создать ссылку на утилиту rstart. На самых современных системах эта ссылка несущественна, так что ответ по умолчанию - "no". Отвечайте "yes" только если Вы знаете, что Вам это нужно. Если Вы потом обнаружите, что такая ссылка Вам нужна, Вы легко создадите ее с помощью команд:

     rm -f /usr/bin/rstartd
     ln -s /usr/X11R6/bin/rstartd /usr/bin/rstartd

3.2 После того, как процесс инсталляции завершен

Следующий этап заключается в конфигурации X-сервера. Подробная инструкция по конфигурации X-сервера еще не написана :-(. Существует 3 способа создать конфигурационный файл для XFree86 4.0.2. Первый способ заключается в запуске утилиты xf86config. Второй способ - запустить утилиту xf86cfg. Третий способ - использовать новую опцию -configure X-сервера:
     XFree86 -configure
Формат конфигурационного файла X-сервера (XF86Config) изменился по сравнению с версией 3.3.x. По умолчанию он располагается теперь в /etc/X11. Кроме того, теперь только один вариант X-сервера для управления аппаратной частью видео-подсистемы и он называется "XFree86". Если Вы удовлетворены работой нового X-сервера, Вы можете удалить все старые бинарники X-серверов с именами XF86_* и/или XF98_* из каталога /usr/X11R6/bin.

После того, как с конфигурированием X-сервера покончено, следует перезагрузиться, в особенности если Вы используете менеджер рабочих столов xdm (или его эквивалент) или фонт-сервер (xfs).

Это все, что сказано в руководстве о настройке новой версии XFree86. Естественно, что этого мало, так как настройка графической подсистемы всегда была и, по-видимому, остается самой нетривиальной частью инсталляции ОС Линукс. У меня, по крайней мере, пока ничего с настройкой не получилось. Так что я закончу сейчас здесь перевод исходного руководства, а о своих мучениях с новой версией расскажу позже, в разделе 5, какового в исходном руководстве нет.

4. Инсталляция XFree86 4.0.2 вручную

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

Разместите все установочные файлы в одном каталоге (этот каталог нужен только временно). Получите права суперпользователя (root). Все следующие команды должны выполняться от имени суперпользователя и из того каталога, в котором размещены установочные фйлы. Утилита "extract" должна использоваться для распаковки архивов. Она представляет собой модернизированную версию утилиты GNU tar, в которую встроен код функции gzip, и которая используется несколько иначе в том случае, если вызывается под именем "extract". Одно существенное отличие состоит в том, что extract разлинковывет существующие файлы перед тем как записать новые, что большинство версий tar по умолчанию не делают. Это существенно в том случае, когда инсталляция производится поверх существующей версии X. Если Вы будете использовать другую утилиту для распаковки архивов, Вы должны иметь это ввиду.

4.1 Новая инсталляция

Самый простой случай, когда X-ы не были установлены. Процедура инсталляции в этом случае заключается в следующем.
     chmod +x extract
     mkdir /usr/X11R6
     mkdir /etc/X11
     ./extract -C /usr/X11R6 X[a-df-uw-z]*.tgz
     ./extract -C /usr/X11R6 Xvfb.tgz    # Если устанавливается Xvfb
     ./extract -C /etc/X11 Xetc.tgz
     ./extract -C /var Xvar.tgz
     ln -s /etc/X11/app-defaults /usr/X11R6/lib/X11
     ln -s /etc/X11/fs /usr/X11R6/lib/X11
     ln -s /etc/X11/lbxproxy /usr/X11R6/lib/X11
     ln -s /etc/X11/proxymngr /usr/X11R6/lib/X11
     ln -s /etc/X11/rstart /usr/X11R6/lib/X11
     ln -s /etc/X11/twm /usr/X11R6/lib/X11
     ln -s /etc/X11/xdm /usr/X11R6/lib/X11
     ln -s /etc/X11/xinit /usr/X11R6/lib/X11
     ln -s /etc/X11/xsm /usr/X11R6/lib/X11
     ln -s /etc/X11/xserver /usr/X11R6/lib/X11
     /sbin/ldconfig /usr/X11R6/lib       # Для Linux
     /sbin/ldconfig -m /usr/X11R6/lib    # Для FreeBSD, NetBSD, OpenBSD
     /usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/misc

4.2 Инсталляция поверх старой версии

Если у Вас уже установлена предыдущая версия X-ов, Вы должны сделать резервную копию ее перед установкой новой версии поверх старой.

Прежде чем начать делать что-либо еще, убедитесь, что команда extract исполнима, а также создайте линк на нее с именем "gnu-tar", так что ее можно будет использовать как обычную команду tar:

     chmod +x extract
     rm -f gnu-tar
     ln extract gnu-tar
Первая часть процедуры заключается в том, что старые конфигурационные файлы времени исполнения из /usr/X11R6/lib/X11 перемещаются в /etc/X11. Создайте каталог /etc/X11, если он еще не существует. Для каждого из следующих подкаталогов (app-defaults, fs, lbxproxy, proxymngr, rstart, twm, xdm, xinit, xsm, xserver), которые Вы собираетесь переместить, проверьте, что подкаталог с таким именем существует в /usr/X11R6/lib/X11. Создайте подкаталоги с такими именами в /etc/X11, после чего скопируйте файлы, выполнив следующие команды:
     ./gnu-tar -C /usr/X11R6/lib/X11/subdir -c -f - . | \
       ./gnu-tar -C /etc/X11/subdir -v -x -p -U -f -
Для каждого подкаталога, который перемещается, удалите исходный каталог в /usr/X11R6/lib/X11 и создайте символическую ссылку на его новое местоположение:
     rm -fr /usr/X11R6/lib/X11/subdir
     ln -s /etc/X11/subdir /usr/X11R6/lib/X11
Для тех подкаталогов, которые еще не существуют в /usr/X11R6/lib/X11, создайте их в /etc/X11 и создайте символические ссылки на них:
     mkdir /etc/X11/subdir
     ln -s /etc/X11/subdir /usr/X11R6/lib/X11
После того, как это сделано, извлеките конфигурационные файлы из архива Xetc.tgz во временный каталог:
     mkdir tmpdir
     ./extract -C tmpdir Xetc.tgz
а затем скопируйте каждый подкаталог в его новое положение:
     ./gnu-tar -C tmpdir/subdir -c -f - . | \
       ./gnu-tar -C /usr/X11R6/lib/X11/subdir -v -x -p -U -f -
Если Вы изменяли какой-то из конфигурационных файлов с целью приспособить его к своим вкусам и нуждам, Вы можете пропустить соответствующие подкаталоги или скопировать какие-то файлы вручную.

После того, как это сделано, можно выполнить основную часть инсталляции:

     ./extract -C /usr/X11R6 `pwd`/X[a-df-uw-z]*.tgz
     ./extract -C /usr/X11R6 Xvfb.tgz    # Если устанавливается Xvfb
     ./extract -C /var Xvar.tgz
     /sbin/ldconfig /usr/X11R6/lib       # Для Linux
     /sbin/ldconfig -m /usr/X11R6/lib    # Для FreeBSD, NetBSD, OpenBSD
     /usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/misc

5. Настройка X-сервера из XFree86 версии 4

Итак, изложение руководства по установке, поставляемого вместе с XFree86 версии 4.0.2, на этом закончено. Установка тоже завершилась сообщением о полном успехе. Однако попытка запустить привычную команду startx окончилась у меня полной неудачей и появлением сообщения: "Fatal server error: no screens found". Причем такой результат получился на разных компьютерах. Начинаем разбираться...

Заглянув в каталог /etc/X11, обнаруживаем, что нового файла XF86Config там нет, там сохранен конфигурационный файл от предыдущей версии. Там также осталась неизмененной ссылка на сервер XF86_SVGA. Очевидно, что надо поправить ссылку и создать новый конфигурационный файл. Ссылку создаем командой

    ln -s /usr/X11R6/bin/XFree86 X
а для создания конфигурационного файла, как было сказано выше, существует три разных способа. Я решил последовательно опробовать все три.

После того, как я воспользовался утилитой xf86config для создания конфигурационного файла XF86Config и перезапустил систему, ничего не заработало (именно в этот момент я проверил упомянутую выше возможность возвращения к предыдущей версии XFree86 за счет восстановления каталогов /usr/X11R6 и /etc/X11). Я отнес эту неудачу за счет того, что утилита XF86Config создана еще для старых версий XFree86 и создает она файл XF86Config старого формата (а ведь формат этого файла изменился в версии 4).

Поэтому я попробовал воспользоваться утилитой xf86cfg. Эта утилита вроде должна работать в графическом режиме. У меня даже выводилась на краткий миг какая-то картинка, после чего монитор снова переключался в текстовый режим и выдавалось сообщение, что "для Вас создан конфигурационный файл /root/XF86Config.new. Но запуск графической оболочки (после перемещения XF86Config.new в каталог /etc/X11 под именем XF86Config) так и не привел к желаемому результату. Замечу кстати, что и после того, как мне удалось настроить X-ы, запуск утилиты xf86cfg тоже оканчивался безрезультатно, несмотря на то, что в man-странице к этой программе утверждается, что она предназначена для внесения изменений в текущую конфигурацию (make customization to the current configuration).

Тогда я попробовал третий способ - использовать опцию -configure X-сервера:

     XFree86 -configure
Эта команда молча отрабатывает, сообщая в конце, что создала новый конфигурационный файл /root/XF86Config.new. Ниже приводится файл /root/XF86Config.new, который сформировался у меня.
Section "ServerLayout"
        Identifier     "XFree86 Configured"
        Screen          0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection

Section "Module"
        Load  "extmod"
        Load  "xie"
        Load  "pex5"
        Load  "glx"
        Load  "dri"
        Load  "GLcore"
        Load  "dbe"
        Load  "record"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "keyboard"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "PS/2"
        Option      "Device" "/dev/mouse"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
EndSection

Section "Device"
        ### Available Driver options are:-
        #Option     "SWcursor"
        #Option     "PciRetry"
        #Option     "NoAccel"
        #Option     "SetMClk"
        #Option     "MUXThreshold"
        #Option     "ShadowFB"
        #Option     "Rotate"
        #Option     "VideoKey"
        #Option     "NoMMIO"
        #Option     "NoPciBurst"
        #Option     "MMIOonly"
        #Option     "CyberShadow"
        Identifier  "Card0"
        Driver      "trident"
        VendorName  "Trident"
        BoardName   "3DImage985"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Depth     1
        EndSubSection
        SubSection "Display"
                Depth     4
        EndSubSection
        SubSection "Display"
                Depth     8
        EndSubSection
        SubSection "Display"
                Depth     15
        EndSubSection
        SubSection "Display"
                Depth     16
        EndSubSection
        SubSection "Display"
                Depth     24
        EndSubSection
EndSection

Section "DRI"
EndSection
Вначале я, конечно, заглянул в этот файл. Что сразу обращает на себя внимание, по сравнению с таким же файлом предыдущей версии, - полное отсутствие комментариев (в 3-ей версии можно было пытаться разобраться в настройках с помощью только комментариев). Отсутствуют также строки "Modeline", которые раньше служили для задания режима работы монитора. Пришлось заглянуть в man XF86Config. Там написано следующее:

Файл XF86Config состоит из нескольких секций, имеющих следующую структуру:

           Section  "SectionName"
               SectionEntry
               ...
           EndSection
Секции могут быть расположены в файле в произвольном порядке. Могут присутствовать следующие секции
           ServerLayout   Общие установки (Overall layout)
           InputDevice    Описания устройств ввода
           Screen         Конфигурация экрана
           Device         Описания графических карт
           Monitor        Описания монитора
           Modes          Описания видеорежимов
           Files          Пути к файлам
           ServerFlags    Опции сервера (Server flags)
           VideoAdaptor   Описание адаптера Xv (как сказано в man, никто 
                          не говорит, что это такое, даже если знает!)
           Module         Динамически загружаемые модули
           DRI            Конфигурация DRI
           Vendor         Установки для оборудования конкретных 
                          поставщиков (Vendor-specific configuration)
причем наличие всех секций не обязательно, но может существовать несколько разных секций одного типа (только они должны иметь уникальные идентификаторы). Секция ServerLayout имеет наивысший приоритет. Она определяет, какие устройства ввода/вывода будут использоваться в X-сессии. Устройства вывода обычно состоят из нескольких независимых компонент (графический адаптер и монитор), которые связываются воедино в секции Screen, на которую указывает ссылка в секции ServerLayout. Графический адаптер задается в секции Device, а монитор - в секции Monitor.

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

Видеорежимы могут быть заданы также в секции Modes. Таких секций в файле может быть несколько. Каждая из них задает некоторый набор видеорежимов, на который можно сослаться из секции Monitor, используя ключевое слово UseModes. В большинстве случаев нет необходимости в наличии секции Modes и строки UseModes, так как достаточно встроенного в сервер набора видеорежимов, соответствующих стандарту VESA.

Полученный конфигурационный файл можно опробовать с помощью команды

     XFree86 -xf86config /root/XF86Config.new
но, я сразу перенес его в каталог /etc/X11 под именем XF86Config и провел попытку запустить графический режим, окончившуюся неудачей (так и хочется сказать, "как и следовало ожидать", хотя ожидать всегда хочется другого).

Этот файл и будем редактировать для настройки графической системы. Но прежде давайте посмотрим, что же в нем неправильно. Для этого воспользуемся командой

[root]# X -probeonly > probe.log 2>&1
Эта команда запускает систему X Window в тестовом режиме и выдает протокол в файл probe.log. Надо заметить, что в такой форме команда сработает только при условии, что Вы создали ссылку с именем X, как это было сказано в начале настоящего раздела. Если такая ссылка не была создана, то вместо X надо указывать XFree86 (может быть, даже с указанием пути). После запуска этой команды на экране что-то помелькает и вновь появится командная строка оболочки, а в текущем каталоге появится файл probe.log.

В этом файле масса очень полезной информации, которую надо использовать при настройке X-ов (отметим, что в файле протокола /var/log/XFree86.0.log содержится еще больше информации, но нам достаточно и того, что есть в probe.log). В первых строках файла probe.log содержатся сообщения о версии XFree86 и версии ядра Линукс. Затем идет сообщение о том, куда записывается протокол работы (у меня /var/log/XFree86.0.log) и какой конфигурационный файл используется (/etc/X11/XF86Config).

(==) Log file: "/var/log/XFree86.0.log", Time: Mon Feb 12 17:20:25 2001
(==) Using config file: "/etc/X11/XF86Config"

Далее в probe.log идет небольшое пояснение тех служебных пометок, которые используются в этом файле в начале информационных строк:

  • (--) - означает, что соответствующие значения получены путем тестирования,
  • (**) - означает, что установки взяты из конфигурационного файла (/etc/X11/XF86Config),
  • (++) - означает, что установки взяты из командной строки запуска,
  • (==) - означает, что используются установки по умолчанию,
  • (II) - за таким значком следует информационное сообщение,
  • (WW) - за таким значком следует предупреждение,
  • (EE) - за таким значком следует сообщение об ошибке.

    Сообщения об ошибках надо, естественно, постараться убрать путем соответствующей модификации файла "/etc/X11/XF86Config". Но мы пока продолжим рассмотрение файла probe.log, в котором далее идет несколько чисто информационных строк (отметим, что в них отображена взаимосвязь секций конфигурационного файла):

    (**) |-->Screen "Screen0" (0)
    (**) |   |-->Monitor "Monitor0"
    (**) |   |-->Device "Card0"
    (**) |-->Input Device "Mouse0"
    (**) |-->Input Device "Keyboard0"
    (**) FontPath set to "unix/:-1,/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/CID/,/usr/X11R6/lib/X11/fonts/75dpi/,/usr/X11R6/lib/X11/fonts/100dpi/"
    (**) RgbPath set to "/usr/X11R6/lib/X11/rgb"
    (**) ModulePath set to "/usr/X11R6/lib/modules"
    (--) using VT number 7
    
    и сообщения о том, какие модули загружаются, вроде следующего:
    (II) Loading /usr/X11R6/lib/modules/fonts/libbitmap.a
    (II) Module bitmap: vendor="The XFree86 Project"
            compiled for 4.0.2, module version = 1.0.0
    
    Поскольку о модулях я пока ничего сказать не могу, то я оставил секцию "Module" без изменения, несмотря на то, что один из модулей сообщал об ошибке:
    (WW) Warning, couldn't open module mga_hal
    (EE) MGA: Failed to load module "mga_hal" (module does not exist, 0)
    
    Но на другие сообщения с кодом (EE) надо, естественно, обратить самое пристальное внимание и постараться ошибки исправить. Не имея опыта, я не могу дать более конкретных рекомендаций о том как исправлять те или иные ошибки. После исправления явных ошибок беремся за строки с предупреждениями. В частности, стоит проверить, нет ли строк следующего вида:
    (WW) MGA(0): Monitor0: Using default hsync range of 28-33kHz
    (WW) MGA(0): Monitor0: using default vrefresh range of 43-72Hz
    
    вслед за которыми наверняка встретится множество указаний на отбраковку каких-то видеорежимов монитора, поскольку частоты вертикальной и горизонтальной синхронизации заданы неправильно. Правильные значения надо найти в спецификации на Ваш монитор, после чего вставить в секцию "Monitor" файла /etc/X11/XF86Config две строки с указанием правильных интервалов:
            HorizSync       30-70
            VertRefresh     50-120
    
    Снова выполнив после этого команду
    X -probeonly >probe.log 2>&1
    
    и заглянув в файл probe.log, Вы увидите, что число строк с отбракованными видеорежимами существенно уменьшилось, а значит, увеличились Ваши возможности по выбору удобного для Вас видеорежима. Давайте его зададим. Сначала снова заглянем в файл probe.log и отыщем две строки следующего вида (цифры у Вас, конечно, могут быть другими):
    (--) MGA(0): Virtual size is 640x480 (pitch 640)
    (**) MGA(0): Default mode "640x480": 25.2 MHz, 31.5 kHz, 60.0 Hz
    
    а также строку вида (она находится где-то отдельно от двух предыдущих)
    (**) MGA(0): Depth 24, (--) framebuffer bpp 24
    
    В совокупности эти три строки указывают на то, что у Вас (точнее, у меня) используется глубина цвета 24 и разрешение экрана "640x480" с частотой обновления картинки 60 Гц. Такие параметры совершенно неудовлетворительны, поэтому снова обращаемся к корректировке /etc/X11/XF86Config. Вначале надо задать нужную глубину цвета. Естественно, побольше. Предельно допустимое значение определяется объемом видеопамяти. О том, как его рассчитать, можете посмотреть в разделе о конфигурировании X-сервера для 3-ей версии XFree.

    В файле /etc/X11/XF86Config для каждой глубины цвета задается своя подсекция "Display" в секции "Screen". Выбор нужной подсекции определяется строкой вида "DefaultDepth 24" секции "Screen". Чтобы изменить разрешение экрана, вставляем во все подсекции "Display" ("SubSection "Display" ) секции "Screen" строку

        Modes  "1024x768"
    
    (разрешение выбираете по своему вкусу из стандартного ряда "640x350", "640x400", "640x480", "800x600", "1024x768", "1152x864", "1280x1024", "1600x1200" и т.д.). Можно ограничиться добавлением только одной такой строки в ту подсекцию "Display", которая задана строкой "DefaultDepth". После этого снова сначала выполняем команду
    X -probeonly >probe.log 2>&1
    
    
    чтобы убедиться, что нет грубых ошибок, и, если таковых нет, можем рискнуть и запустить графический режим командой startx.

    Надо иметь в виду, что отсутствие указаний на ошибки еще не гарантирует успешного запуска графического режима. Если после startx Вы увидите черный экран, то выйдите из графического режима с помощью комбинации [Ctrl]-[Alt]-[Backspace] и снова внимательно проанализируйте вывод команды

    X -probeonly >probe.log 2>&1
    
    Если графический режим не запускается, попытайтесь задать меньшее разрешение или меньшую глубину цвета. Мне таким образом удалось добиться на одном из компьютеров успешного запуска графического режима при желаемом разрешении "1024x768" (правда, KDE не запустилась, но об этом чуть позже). Но на другом компьютере при этом разрешении ничего не получалось, графическая оболочка нормально загружалась только при разрешении "800x600", а при более высоком загрузка осуществлялась, но экран дрозжал и трясся.

    С этой проблемой мне удалось справиться путем явного задания строки Modeline в секции "Monitor" и подбора указанных в ней значений параметров. Делал я это следующим образом. Вначале, не обращая внимания на мерцание и дрожание экрана, запустил графический режим и программу xvidtune. С ее помощью (кнопка "Show") определил, что по умолчанию используется режим, имеющий следующие параметры:

        # 1024x768 @ 85 Hz, 68.31 kHz hsync
        Modeline "1024x768"  94.5  1024 1072 1168 1376   768  769  772  808 +hsync
    
    Я прописал эти две строки явным образом в секции "Монитор" и стал менять различные параметры строки Modeline. В конце концов определил, что причиной дрожания изображения являлось то, что была задана слишком высокая частота тактового генератора (DotClock) - 94.5 МГц. Уменьшение ее до 94 МГц привело к стабилизации изображения. Частота обновления экрана при этом снизилась до 84,55 Гц, но это, на мой взгляд, несущественно. Впрочем, при желании ее можно даже повысить, если еще поэкспериментировать с программой xvidtune. Я же этим ограничился, а окончательную корректировку изображения провел с помощью аппаратных средств монитора.

    6. Проблемы со шрифтами и запуском KDE

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

    Начнем, пожалуй со шрифтов. При решении проблемы шрифтов я обратился к собственным заметкам об установке фонтов в Линукс. Если хотите подробно, то прочитайте эти заметки или их печатный вариант в журнале "BYTE/Россия" (# 12 за 2000 год). А если вкратце, то проделайте следующее:

    1. Проверьте, что фонты у Вас обслуживаются фонт-сервером xfs, то есть что этот фонт-сервер запущен, для чего выполните команду
      [root]# ps ax | grep xfs
      
      Вы должны увидеть строку примерно такого вида:
        401 ?        S      0:04 xfs -droppriv -daemon -port -1 
      
      По этой строке можно определить, какой порт использует эта программа. Этот же номер должен быть указан в строке вида
                      FontPath "unix/:port_number" 
      
      в секции "Files" в конфигурационном файле X-сервера /etc/X11/XF86Config.

    2. Загляните в файл /etc/X11/XF86Config и найдите секцию "Files". При установке XFree четвертой версии в этой секции прописываются пути к файлам фонтов (строки "FontPath"). Если работа с фонтами организована через фонт-сервер, то эти строки здесь не нужны. Можете их просто удалить (только не удаляйте строки "RgbPath" и "ModulePath"), заменив всего одной строкой
                      FontPath "unix/:-1" 
      
      (номер порта проверьте!). В заключение приведу секцию "Files" из /etc/X11/XF86Config в том виде, какой она приняла у меня. В ней всего три строки:
                      RgbPath         "/usr/X11R6/lib/X11/rgb"
                      ModulePath      "/usr/X11R6/lib/modules"
                      FontPath        "unix/:-1" 
      
      Я не стал бездумно удалять строки с указаниями путей к фонтам, появмвшиеся при установке XFree версии 4, а проверил вначале, что все указанные в них пути перечислены в конфигурационном файле фонт-сервера /etc/X11/fs/config. В моем случае оказалось, что все они уже были там указаны, у Вас может оказаться иначе. Заодно проверьте, что все каталоги фонтов, указанные в /etc/X11/fs/config, существуют и в них имеются файлы fonts.dir.

    3. Что еще надо проверить, на мой взгляд, особенно если Вы в старую версию X Window устанавливали какие-то нестандартные фонты, так это перенести все такие фонты из резервного каталога (Вы же сделали его перед инсталляцией XFree 4 ?!) и подправить соответственно файлы fonts.dir, fonts.alias.
    Этого достаточно для того, чтобы восстановились все фонты, которыми Вы привыкли пользоваться.

    Теперь восстановим KDE. Может быть у Вас проблем и нет, а у меня на обеих компьютерах после установки XFree86 4.0.2 KDE перестал загружаться по startx. На одном вылез оконный менеджер twm, на другом - уж не помню что, кажется GNOME.

    Первым делом проверьте содержимое файла /etc/sysconfig/desktop. В нем достаточно иметь одно слово: "KDE", хотя у меня там стоит "DESKTOP="KDE", что тоже не мешает. Содержимое этого файла проверяется при запуске скрипта startx. Скрипт startx находится в каталоге /usr/X11R6/bin. Думаю, что если Вы до установки новой версии XFree использовали KDE, то проще всего файл startx восстановить из сделанной Вами резервной копии. Если такой резервной копии у Вас нет, то придется подредактировать startx заново. Некоторые рекомендации на эту тему Вы можете найти у меня в разделе о настройке X Window.

    Однако у меня после этого осталась еще одна нерешенная проблема: в окне программы "Консоль" в KDE перестал работать переключатель режимов работы клавиатуры (рус/лат). Впрочем, не работал он и текстовых редакторах. В обычной текстовой консоли переключатель (Ctrl-Shift) работал без проблем. Бился я с этой проблемой довольно долго и решение нашел такое.

    Во-первых, в секцию "InputDevice" конфигурационного файла /etc/X11/XF86Config я вписал следующие строки:

            Option   "XkbKeycodes"     "xfree86"
            Option   "XkbTypes"        "default"
            Option   "XkbCompat"       "default"
            Option   "XkbSymbols"      "us(pc102)"
            Option   "XkbGeometry"     "pc"
            Option   "XkbRules"        "xfree86"
            Option   "XkbOptions"      "grp:ctrl_shift_toggle"
            Option   "XkbModel"        "pc102"
            Option   "XkbLayout"       "ru"
    
    (фактически я взял их из файла /etc/X11/XF86Config для 3-ей версии, только добавил в начало каждой строки слово Option и добавил необходимые кавычки).

    Затем я начал экспериментировать с порядком расположения строк с указаниями путей к фонтам с файле /etc/X11/fs/config. Фонт-сервер ищет нужный фонт в этих каталогах последовательно. В конце концов мне удалось найти такой порядок перечисления путей, при котором переключатель (Ctrl-Shift) заработал.

    Но осталась еще проблема с клавишей Backspace: ее нажатие не имело никакого эффекта при редактировании файлов во встроенном редакторе программы Midnight Commander (Cooledit). При этом в командной строке программы Midnight Commander клавиша Backspace работает вполне корректно, а после запуска редактора по F4 - работать перестает.


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

    (25.04.01) Вот и получил первое дополнение. Привожу полностью.
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        Date: Вт, 24 апр 2001  12:44:04
        From: Alexander Vasiljev 
          To: kos@nbrt.kazan.su
     Subject: re:XFree4-install
    ----------------------------------------------------------------------------
    
            Здравствуйте, В.А.
            Прочитал Вашу замечательную статью об инсталляции новых иксов и
    попробовал повторить процедуру на своей машине (RH 7.0, XFree 4.0.0).
            Автоматическая установка прошла успешно, хотя после неё сразу
    ничего не заработало ;). 4.0.0 "понимали" XF86config старого формата или
    по крайней мере молчаливо соглашались его использовать. С новыми иксами
    пришлось XFree86 -configure. Видеокарточку и монитор распознали правильно
    (S3 Trio3D/2X & ViewSonic соответственно), для видеокарточки в конфиге
    любезно прописали закомментированные опции настройки. Вставил DefaultDepth
    24 (по умолчанию было - 8). Чуть увеличил HorizSync для монитора. Из
    старого XF86 перенёс
            Option  "XkbModel"      "pc104"
            Option  "XkbLayout"     "ru(winkeys)"
            Option  "XkbOptions"    "grp:ctrl_shift_toggle"
    и настройки для колёсной мыши (тоже с добавлением "Option" в начале). В
    результате иксы стали запускаться, графическая оболочка - нет. Покопался в
    startx и скопировал старые (от RH 7.0)
    /usr/X11R6/bin/startx
    /usr/X11R6/lib/X11/xinit/xinitrc
    на место. Всё заработало. А апгрейд с 4.0.2 до 4.0.3 прошёл вообще без
    каких-либо проблем, для него понадобилось только sh Xinstall.sh.
            с наилучшими,
            Александр Васильев.
    

    Используются технологии uCoz