RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

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

Глава 25. Система X Window

XFree86-4.4.0

Введение в XFree86

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

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

Дополнительно

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

Требуемые

libpng-1.2.8.

Опционально

Linux-PAM-0.78, следующие пакеты включены в XFree86, хотя они обновляются чаще, чем сам пакет XFree86 и очень рекомендуются: expat-1.95.8, FreeType-2.1.9, Fontconfig-2.2.3.

[Замечание]

Замечание

Если Вы решите не устанавливать expat, FreeType2 и Fontconfig, то файл host.def ниже должен быть изменен для указания XFree86 собрать их.

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

Есть несколько файлов, которые надо получить из места скачивания:

  • XFree86-4.4.0-src-1.tgz

  • XFree86-4.4.0-src-2.tgz

  • XFree86-4.4.0-src-3.tgz

  • XFree86-4.4.0-src-4.tgz

  • XFree86-4.4.0-src-5.tgz

  • XFree86-4.4.0-src-6.tgz

  • XFree86-4.4.0-src-7.tgz

Первые три пакета это XFree86-программы, четвертый и пятый это шрифты, шестой обычная документация, а седьмой жесткая копия документации. Также есть два пакета doctools-1.3.1.tgz, содержащий программы генерации жесткой копии документации, и utils-1.1.0.tgz, содержащий GNU TAR и zlib , которые уже установлены в LFS-системе.

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


md5sum -c SUMS.md5sum

Ошибки Вы можете увидеть только для файлов README , doctools-1.3.1.tgz, utils-1.1.0.tgz и XFree86-xtest-4.0.x.tar.bz2, если Вы их не скачивали.

Установка XFree86

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

Если у Вас установлен 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.

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

[Замечание]

Замечание

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

Создание host.def

Хотя XFree86 может компилироваться без файла host.def, этот файл рекомендуется для настройки установки. Начинаем из каталога xc.

[Замечание]

Замечание

Файл host.def это C-файл, а не обычный файл конфигурации. Убедитесь, что коментарии, установленные при помощи /* и */ сбалансированы после модификации файла. Большая часть содержимого этого файла закомментирована с показом параметров по умолчанию.


cat > config/cf/host.def << "EOF"
/* Begin XFree86 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.Замечание 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 -fomit-frame-pointer -march=i686 */
/* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */
/* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */

/* The following definitions are normally set properly by XFree86's
 * scripts. You can uncomment them if you want to make sure. *********/
/* #define HasMTRRSupportYES*/ /* Enabled in kernel; */
 /* see kernel docs */
/* #define HasMMXSupportNO*/ /* Any i586 or above */
/* #define HasKatmaiSupport NO*/ /* PIII SSE instructions */
/* #define Has3DNowSupportNO*/ /* AMD instructions */

/* This setting reduces compile time a little by omitting rarely used
 * input devices. You can find the complete list in
 * config/cf/xfree86.cf *********************************************/

#define XInputDrivers mouse void

/* VIDEO DRIVERS ****************************************************/

/* If you are sure you only want the drivers for one or a few video
 * cards, you can delete the drivers you do not want. ***************/
#define XF86CardDriversmga glint nv tga s3 s3virge sis rendition \
        neomagic i740 tdfx savage \
        cirrus vmware tseng trident chips apm \
        GlideDriver fbdev i128 nsc \
        ati i810 AgpGartDrivers DevelDrivers ark \
        cyrix siliconmotion vesa vga \
        dummy XF86OSCardDrivers XF86ExtraCardDrivers

/* USER AND SYSTEM DEFAULT PATHS *************************************/
/* These settings set the PATH variables used by xdm. See README for */
/* detailed description and modify the following as per your need. ***/

/* #define DefaultSystemPath \
           /usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin */
/* #define DefaultUserPath /usr/bin:/bin:/usr/X11R6/bin */

/* FONT SERVER AND LIBRARY SETTINGS **********************************/
/* These settings are the defaults**********************************/
/* #define BuildFontServer YES*/ /*For Ghostscript Print Server*/
/* #define SharedLibFont YES*/
/* #define CompressAllFontsYES*/
/* #define GzipFontCompression YES*/

/* These settings ensure we use our библиотеки ************************/
#define HasFreetype2 YES
#define HasFontconfigYES
#define HasExpat YES
#define HasLibpngYES
#define HasZlibYES

/* The font path can be redefined in the XF86Config file *************/
/*
#define DefaultFontPath$(FONTDIR)/misc/,$(FONTDIR)/75dpi/,\
                       $(FONTDIR)/100dpi/,$(FONTDIR)/Type1,$(FONTDIR)/local,\
                       $(FONTDIR)/TrueType,$(FONTDIR)/CID,$(FONTDIR)/Speedo
*/


/* INTERNATIONAL FONTS.Change to YES if you need any of them.These
 * are the defaults. **************************************************/
/* #define BuildCyrillicFontsNO*/
/* #define BuildArabicFontsNO*/
/* #define BuildISO8859_6Fonts NO*/
/* #define BuildGreekFonts NO*/
/* #define BuildISO8859_7Fonts NO*/
/* #define BuildHebrewFontsNO*/
/* #define BuildISO8859_8Fonts NO*/
/* #define BuildKOI8_RFontsNO*/
/* #define BuildJapaneseFontsNO*/
/* #define BuildJISX0201FontsNO*/
/* #define BuildKoreanFontsNO*/
/* #define BuildChineseFonts NO*/

/* DOCUMENTATION SETTINGS ********************************************/
/* These setting are the defaults. ***********************************/
/* #define BuildLinuxDocHtmlNO*//* X Docs in Html format */
/* #define BuildLinuxDocPSNO*//* PostScript format */
/* #define BuildAllSpecsDocsNO*//* Various docs */
/* #define BuildHtmlManPagesNO*/

/* GENERAL SETTINGS: You generally want to leave these alone when
 * building X on an LFS system ***************************************/
#define GccWarningOptions -pipe /* Speed up compiles */
#define TermcapLibrary-lncurses
#define XprtServerYES /* Needed by realplayer */
#define XnestServer YES
#define XAppLoadDir EtcX11Directory/app-defaults
#define VarLibDir /var/lib
#define XFree86Devel NO
#define FSUseSyslog YES
#define ThreadedX YES
#define HasPam NO
#define SystemManDirectory/usr/share/man /*Instead of /usr/man*/
#define HasLibCrypt YES
#define InstallXinitConfigYES
#define InstallXdmConfigYES
#define ForceNormalLibYES
#define BuildSpecsDocs NO
/* End XFree86 host.def file */
EOF

Отредактируйте файл под Ваше оборудование и требования.

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

Были обнаружены некоторые уязвимости в libXpm. Удаленный пользователь мог выполнить произвольный код в приложениях, использующих libXpm. Команда Xorg выпустила патч для их версии 6.8.0, но он также работает и с XFree86. Применим патч:


patch -Np1 -i ../xorg-CAN-2004-0687-0688.patch

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


sed -i -e "s@^#include <linux/config.h>@/* & */@" \
    `grep -lr linux/config.h *` &&
(make WORLDOPTS="" World 2>&1 | \
      tee xfree-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 WORLDOPTS="" World 2>&1 | tee xfree-compile.log && exit $PIPESTATUS): Эта команда запускает многочисленные Makefile для полной пересборки системы. WORLDOPTS="" отключает установку по умолчанию для продолжения после возникновения любой ошибки. 2>&1 перенаправляет сообщения об ошибках в то же место, что и стандартный вывод. Команда tee позволяет просматривать вывод во время вывода результата в файл. Скобки вокруг команды запускают внутреннюю команду в подоболочке, а exit $PIPESTATUS в конце подтверждает, что общим результатом будет возвращенный результат команды make , а не команды tee .

[Замечание]

Замечание

При пересборке XFree86 отдельной командой, которая может быть использована, если были сделаны только небольшие изменения в исходниках, является 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

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

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

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


ldconfig

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

Создадим файл XF86Config при помощи:


cd ~
XFree86 -configure

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

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

  • Раздел "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". Первый указанный режим будет стартовым разрешением экрана.

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


XFree86 -xf86config ~/XF86Config.new

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

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


mv ~/XF86Config.new /etc/X11/XF86Config

Создадим .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-странице.

[Замечание]

Замечание

Если надо, XFree86 создает каталог /tmp/.ICE-unix, если его нет. Если он не принадлежит root, то XFree86 задерживает запуск на несколько секунд и добавляет предупреждение в лог-файл. Это также действует на запуск других приложений. Для увеличения производительности рекомендуется вручную создать этот каталог перед тем, как XFree86 будет его использовать. Добавим создание файла в /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”.

Содержание

Пакет XFree86 содержит систему X Window для Linux (и других операционных систем). Он включает X-сервер, шрифты, xterm, простой оконный менеджер (twm), различные утилиты, драйверы видеовывода и различные драйверы ввода, включая клавиатуру и мышь.

XFree86 также содержит библиотеки и файлы заголовков для разработки программ для системы X Window.

Описание

[Замечание]

Замечание

Следующий перечень не исчерпывающий. Полный перечень программ находится в /usr/X11R6/bin. Для дополнительной информации по этим программам смотрите соответствующие man-страницы.

Установленные программы: XFree86, xf86config, xf86cfg, startx, xinit, twm, xterm, xwininfo, x11perf, xlsfonts, xvidtune, xload, xcalc, xclock, oclock, xmodmap. Установленные библиотеки: libGL.so, libGLU.so, libSM.so, libXi.so, libXrender.so, libXt.so, libXfont.so. Установленные каталоги: /usr/X11R6/, /etc/X11/.

Короткое описание

XFree86

Это X11R6-реализация сервера системы X Window.

xf86config

Это интерактивная программа для генерирования файла XF86Config для использования с XFree86 X-серверами.

xf86cfg

Это средство настройки XFree86, которое может быть использовано для записи инициализирующего файла конфигурации или для внесения изменений в текущую конфигурацию.

startx

Это скрипт для инициализации X-сессии. Он запускает xinit .

xinit

Используется для запуска сервера системы X Window.

twm

Tab Window Manager представляет собой оконный менеджер, включенный в систему X Window.

xterm

Это эмулятор терминала для X.

xwininfo

Это утилита информации об окне для X.

x11perf

Это программа тестирования быстродействия сервера X11.

xlsfonts

Это программа, выводящая список шрифтов, доступных для X-сервера.

xvidtune

Это программа изменения видеорежима для XFree86.

xload

Отображает график загрузки системы для X.

xcalc

Это научный калькулятор для X.

xclock

Часы для X.

oclock

Часы для X.

xmodmap

Это утилита для изменения раскладок клавиатуры и кнопок указателей в X.

Последнее обновление 2005-02-22 23:38:15 -0700.

Поиск

 

Найди своих коллег!