Система X Window

Эта глава содержит графическое окружение пользователя.

Xorg-6.8.2

Введение в Xorg

[Замечание]

Замечание

Есть два пакета в BLFS, которые реализуют систему X Window: Xorg и XFree86. Эти пакеты очень похожи. Фактически, основная система Xorg это XFree86-4.4.0RC2. Главным отличием этих пакетов является лицензия. Для тех, кто собирает пакет для себя, эти отличия не существенны. Большинство больших комерческих дистрибутивов решили использовать пакет Xorg, но некоторые все еще используют XFree86.

Второй причиной разветвления пакетов X являются заявленные цели разработчиков. Некоторые разработчики были недовольны администрированием и прогрессом XFree86. Возможности X.org планируют включать значительные улучшения внутри системы и более частые релизы.

XFree86 продолжает оставаться цельным, консервативным приложением с отличной поддержкой драйверов.

Xorg и XFree86 могут быть установлены одним и тем же способом, но этот раздел предоставит слегка отличные варианты установки.

Xorg это свободно распространяемая открытая реализация системы X Window. Это приложение предоставляет интерфейс клиент/сервер между аппаратурой отображения (мыш, клавиатура и видео дисплей) и окружением рабочего стола, а так же предоставляет оконную инфраструктуру и стандартный интерфейс приложений (API).

Информация о пакете

Зависимости Xorg

Требуемые

libpng-1.2.8 и Fontconfig-2.2.3

Опционально

Linux-PAM-0.78

Инструкции для скачивания

В отличие от скачивания целого дерева исходников в одном файле, есть несколько файлов, которые надо получить из места скачивания (директория /pub/x.org/pub/X11R6.8.2/src/):

  • X11R6.8.2-src1.tar.gz

  • X11R6.8.2-src2.tar.gz

  • X11R6.8.2-src3.tar.gz

  • X11R6.8.2-src4.tar.gz

  • X11R6.8.2-src5.tar.gz

  • X11R6.8.2-src6.tar.gz

  • X11R6.8.2-src7.tar.gz

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

Для проверки целостности ваших файлов скачайте файл md5sums. Затем:

md5sum -c md5sums

Пакет (или все семь пакетов) должен дать статус OK.

Установка Xorg

Параметры компиляции ядра

Если увас установлен Intel P6 (Pentium Pro, Pentium II и позднее), то рекомендуется вкомпилировать поддержку MTRR (Memory Type Range Registers) в ядро. Ядро может использовать прцессоры Cyrix и AMD с интерфейсом MTRR, поэтому выбор этой опции полезен и для этих процессоров. Эта опция находится в меню "Processor type and features". Она может увеличить скорость операций записи изображений в 2.5 и более раза для PCI или AGP видео карт.

В разделе "Character Devices" включите поддердку AGP и выберите поддержку чипсета вашей материнской платы. Если вы не знаете чипсет, то вы можете выбрать все типы чипов за счет увеличеия размера ядра. Обычно вы можете определить чипсет вашей материнской платы запуском команды lspci, программы из пакета PCI Utilities-2.1.11.

В разделе "Character Devices" выключите Direct Rendering Manager если у вас нет видеокарты, поддерживающей Direct Rendering Infrastructure (DRI). Полный список видеокарт, поддерживающих DRI, может быть найден на http://dri.sourceforge.net в разделе "Status". В настоящий момент поддерживаются следующие видеокарты: 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815) и Matrox (G200, G400, G450).

Дополнительно NVidia предоставляет их собственные закрытые бинарные драйверы, которые не используют DRI. Если вы захотите использовать эти драйверы, то не включайте DRI.

Если вы внесете изменения в конфигурацию ядра, перекомпилируйте и установите новое ядро.

[Замечание]

Замечание

Если вы собираете Xorg в среде chroot, убедитесь, что версии ядра основной и целевой системы одинаковые.

Заперещение Xprint-связанной модификации в /etc

Xorg настаивает на размещении своих стартовых и профильных скриптов в директории /etc даже если особо сказано не компилировать Xprint сервер или клиент (смотрите host.def ниже). Следующая команда запретит любые такие изменения:

sed -i '/^SUBDIRS =/s/ etc$//' programs/Xserver/Xprint/Imakefile

Установка теневой директории

Собирая Xorg, вы должны создать теневую директорию символических ссылок для скомпилированного кода. Чтобы это сделать, сначала создадим lndir. Выполним из директории xc:

pushd config/util && make -f Makefile.ini lndir

А теперь, как пользователь root:

cp lndir /usr/bin/

И вернемся как обычный пользователь:

popd

Теперь создадим теневое дерево:

mkdir ../xcbuild && cd ../xcbuild && lndir ../xc

Создание host.def

Следующим шагом является создание файла config/cf/host.def. Документация по Xorg показывает, что приложения будут собраны без файла host.def, но включенные библиотеки для Fontconfig и FreeType2 будут собраны не правильно в базовой системе LFS. В этом случае вы должны указать, что эти библиотеки, как и другие, должны быть импортированы из системы.

[Замечание]

Замечание

config/cf/host.def это C файл, не скрипт оболочки. Убедитесь, что коментарии, установленные при помощи /* ... */ сбалансированы после модификации файла.

cat > config/cf/host.def << "EOF" /* Begin Xorg host.def file */ /* System Related Information. If you read and configure only one * section then it should be this one. The Intel architecture defaults * are set for a i686 and higher. Axp is for the Alpha architecture * and Ppc is for the Power PC. AMD64 is for the Opteron processor. * Note that there have been reports that the Ppc optimization line * causes segmentation faults during build. If that happens, try * building without the DefaultGcc2PpcOpt line. ***********/ /* #define DefaultGcc2i386Opt -O2 -fno-strength-reduce \ -fno-strict-aliasing -march=i686 */ /* #define DefaultGccAMD64Opt -O2 -fno-strength-reduce \ -fno-strict-aliasing */ /* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */ /* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */ #define HasFreetype2 YES #define HasFontconfig YES #define HasExpat YES #define HasLibpng YES #define HasZlib YES /* * Which drivers to build. When building a static server, each of * these will be included in it. When building the loadable server * each of these modules will be built. * #define XF86CardDrivers mga glint nv tga s3virge sis rendition \ neomagic i740 tdfx savage \ cirrus vmware tseng trident chips apm \ GlideDriver fbdev i128 \ ati AgpGartDrivers DevelDrivers ark \ cyrix siliconmotion vesa vga \ XF86OSCardDrivers XF86ExtraCardDrivers */ /* * Select the XInput devices you want by uncommenting this. * #define XInputDrivers mouse keyboard acecad calcomp citron \ digitaledge dmc dynapro elographics \ microtouch mutouch penmount spaceorb \ summa wacom void magictouch aiptek */ /* Most installs will only need this */ #define XInputDrivers mouse keyboard /* Disable building Xprint server and clients until we get them figured * out but build Xprint библиотеки to allow precompiled binaries such as * Acrobat Reader to run. */ #define XprtServer NO #define BuildXprintClients NO /* End Xorg host.def file */ EOF

Есть и другие опции, которые вы можете захотеть установить. Хорошо документироанным примером файла является config/cf/xorgsite.def.

Команды сборки

Установим Xorg запуском следующих команд:

sed -i -e "s@^#include <linux/config.h>@/* & */@" \ `grep -lr linux/config.h *` && ( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS )

Опять как пользователь root:

make install && make install.man && ln -sf ../X11R6/bin /usr/bin/X11 && ln -sf ../X11R6/lib/X11 /usr/lib/X11 && ln -sf ../X11R6/include/X11 /usr/include/X11

Описание команд

sed -i -e "s@^#include <linux/config.h>@...: Пакет Linux-Libc-Headers, установленный в LFS, устанавливает файл /usr/include/linux/config.h, который не совместим с пользовательскими приложениями. Рекомендованным решением для приложений, включающих этот файл, является его удаление (смотрите linux-libc-headers FAQ). sed использует grep -lr для замены всех случаев. Если хотите, просто удалите (закоментируйте) строчку в подходящем файле видео драйвера если вы настраиваете host.def.

( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS ): Эта команда запускает многочисленные Makefile для полной пересборки системы. 2>&1 перенаправляет сообщения об ошибках в то же место, что и стандартный вывод. Команда tee позволяет просматривать вывод во время вывода результата в файл. Скобки вокруг команды запускают внутреннюю команду в подоболочке, а exit $PIPESTATUS в конце подтверждает, что общим резутьтатом будет возвращенный результат команды make, а не команды tee.

[Замечание]

Замечание

При пересборке Xorg отдельной командой, которая может быть использована, если были сделаны только небольшие изменения в исходниках, является make Everything. Она автоматически не удаляет сгенерированные файлы, а только пересобирает более новые.

ln -sf ../X11R6/bin /usr/bin/X11 ln -sf ../X11R6/lib/X11 /usr/lib/X11 ln -sf ../X11R6/include/X11 /usr/include/X11

Эти команды нужны, чтобы другие (неправильные) пакеты могли собираться с Xorg, даже если FHS говорит: "Обычно программа не дожна быть установлена или управляема через указанные символические ссылки. Они предназначены только для использования пользователями."

Конфигурация Xorg

Отредактируйте /etc/ld.so.conf и добавьте /usr/X11R6/lib. Запустите:

ldconfig

Убедитесь, что /usr/X11R6/bin и /usr/X11R6/lib/pkgconfig добавлены в ваш PATH и, соответственно, переменная окружения PKG_CONFIG_PATH. Инструкции о том, как это сделать, описаны в разделе "Стартовые файлы оболочки Bash".

Создадим файл xorg.conf при помощи:

cd ~ Xorg -configure

Экран почернеет и вы можете услышать небольшие щелчки монитора. Эта команда создаст файл xorg.conf.new в вашей домашней директории.

Отредактируйте xorg.conf.new для настройки под вашу систему. Детальная информация по файлу находится в man странице по xorg.conf. Кое что из того, что вы можете захотеть сделать, это:

  • Раздел "Files". Измените порядок следования путей поиска директорий шрифтов. Вы можете захотеть поместить шрифты 100dpi перед шрифтами 75dpi, если ваша система с ними работает нормально. Вы можете захотеть полностью удалить некоторые директории шрифтов.

  • Раздел "Module". Если вы будете устанавливать драйвер NVidia, то удалите строчку "dri".

  • Разделы "InputDevice". Установите параметр Device на "/dev/input/mice" и Protocol на "auto" для настройки вашей мыши. Вы можете захотеть изменить скорость автоповтора клавиатуры, добавив Option "Autorepeat" "250 30".

  • Раздел "Monitor". Установите значения VertRefresh и HorizSync если система автоматически не определила монитор и его параметры.

  • Раздел "Device". Вы можете захотеть установить некоторые из опций, доступные для вашего выбранного видео драйвера. Описание параметров драйвера находятся в man странице для этого драйвера.

  • Раздел "Screen". Добавьте элемент DefaultDepth, например: DefaultDepth 16. В SubSection для вашей глубины цвета по умолчанию добавьте строчку Modes, например: Modes "1280x1024" "1024x768". Первая указанная мода будет стартовым разрешением экрана.

Протестируем систему:

X -config ~/xorg.conf.new

Вы увидите только серый задний план с X-подобным курсором мыши, но это укажет на работоспособность системы. Выйдите при помощи комбинации клавиш Control-Alt-Backspace. Если система не работает, то обратитесь в /var/log/Xorg.0.log для просмотра сообщений о возникших проблемах.

Переместим файл конфигурации в его положенное место:

mv ~/xorg.conf.new /etc/X11/xorg.conf

Создадим .xinitrc:

cat > ~/.xinitrc << "EOF" # Begin .xinitrc file xterm -g 80x40+0+0 & xclock -g 100x100-0+0 & twm EOF

Это предоставит начальный экран с xterm и часами, которые управляются простым оконным менеджером, Tab Window Manager. Для большей иформации о twm обратитесь к его man странице.

[Замечание]

Замечание

Если надо, Xorg создает директорию /tmp/.ICE-unix, если ее нет. Если эта директория не принадлежит root, то Xorg задерживает запуск на несколько секунд и добавляет предупреждение в лог-файл. Это так же действует на запуск других приложений. Для увеличения производительности рекомендуестя вручную создать эту директорию перед тем, как Xorg будет ее использовать. Добавим создание файла в /etc/sysconfig/createfiles, который используется стартовым скриптом /etc/rc.d/init.d/cleanfs.

cat >> /etc/sysconfig/createfiles << "EOF" /tmp/.ICE-unix dir 1777 root root EOF

Запустим X при помощи:

startx

для получения базовой функциональности системы X Window.

В этом месте вы должны обратиться к разделу “Компоненты системы X Window”.

За списком содержания пакета и описанием команд обратитесь к разделу Содержание и описание XFree86.