Beyond Linux From Scratch. Версия 6.0

Часть VIII. X + Менеджеры окон

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):

Первый пакет содержит библиотеки и программы поддержки 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 HasFreetype2YES
#define HasFontconfig YES
#define HasExpatYES
#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 XprtServerNO
#define BuildXprintClientsNO
/* 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. Кое-что из того, что Вы можете захотеть сделать, это:

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


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".