Table of Contents

Оконная система X

Установка и базовая настройка системы Х.

Введение

В этой главе описываются установка и настройка иксов в SliTaz. Мы установим библиотеки для expat, XML, шрифтов, графический сервер (Xvesa), эмулятор терминала (xterm), оконный менеджер (JWM) и различные мелкие утилиты. Также поставим библиотеки для JPEG-изображений и браузер Links.

Переменные окружения ($fs)

Если у вас еще не указан путь к папке rootfs, экспортируйте соответствующую переменную окружения:

# export fs=$PWD/rootfs

Для проверки можно ввести:

# echo $fs

expat-2.0.0 — библиотека анализатора XML

Expat (expat.sourceforge.net) содержит библиотеки анализатора XML:

# cd ..
# wget http://switch.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz
# tar xzf expat-2.0.0.tar.gz
# cd expat-2.0.0
# ./configure --sysconfdir=/etc --prefix=/usr \
  --mandir=/usr/share/man
# make
# make DESTDIR=$PWD/_pkg install
# strip -v _pkg/usr/lib/*
# strip -v _pkg/usr/bin/*

После этого установим xterm, который опирается на библиотеку libexpat.so.0, создадим ему символическую ссылку, и все дела! Теперь можно установить приложение xmlwf с его библиотеками в rootfs:

# cd _pkg/usr/lib
# ln -s libexpat.so.1.5.0 libexpat.so.0
# cp -a *.so* $fs/usr/lib
# cd ..
# cp -a bin/* $fs/usr/bin
# cd ../..

Библиотеки

xmlwf использует следующие библиотеки:

        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x40021000)
        libc.so.6 => /lib/tls/libc.so.6 (0x40041000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

freetype-2.3.1 — библиотеки системных шрифтов

Пакет freetype (www.freetype.org) содержит библиотеки, используемые Х-сервером, для настройки системных шрифтов:

# cd ..
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.1.tar.bz2
# tar xjf freetype-2.3.1.tar.bz2
# cd freetype-2.3.1
# ./configure --sysconfdir=/etc --prefix=/usr \
  --mandir=/usr/share/man
# make
# make DESTDIR=$PWD/_pkg install
# strip -vs _pkg/usr/lib/*
# cp -a _pkg/usr/bin/* $fs/usr/bin
# cp -a _pkg/usr/lib/*.so* $fs/usr/lib

fontconfig-2.4.2 — утилиты управления шрифтами

Пакет fontconfig (www.fontconfig.org/wiki/) предоставляет библиотеку libfontconfig, которую используют многие Х-программы. Кстати, XFree86 также ее содержит. Мы выбрали оригиальный пакет, т.к. он работает лучше в JWM:

# cd ..
# wget http://fontconfig.org/release/fontconfig-2.4.2.tar.gz
# tar xzf fontconfig-2.4.2.tar.gz
# cd fontconfig-2.4.2
# ./configure --sysconfdir=/etc --prefix=/usr \
  --mandir=/usr/share/man --localstatedir=/var
# make
# make DESTDIR=$PWD/_pkg install
# strip -v _pkg/usr/bin/*
# strip -v _pkg/usr/lib/*
# cp -a _pkg/usr/bin/* $fs/usr/bin
# cp -a _pkg/usr/lib/*.so* $fs/usr/lib
# cp -a _pkg/etc $fs
# cp -a _pkg/var $fs

Библиотеки

Выполним команду ldd на fc-cache и получим требуемые библиотеки. Можно также использовать libfreetype из XFree86:

        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7f12000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7eff000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7edf000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7eb0000)
        libc.so.6 => /lib/tls/libc.so.6 (0xb7d7b000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7f8c000)

Xserver — графический сервер Xvesa из состава Xfree86

Мы будем использовать двоичные версии сервера Xvesa (www.xfree86.org) и шрифтов, предоставляемых Xfree86.org. Мы также могли бы скопировать библиотеки Xorg из основной системы, которая будет использоваться для компиляции Х-приложений, но Xvesa сам по себе хорошо работает и при этом значительно проще. Также можно пересобрать пакеты Xorg в вашей рабочей системе.

Сервер Xtinyx от Xvesa

Сервер Xvesa очень легкий и использует крохотные библиотеки. Он содержится в архиве Xtinyx.tgz. Скачаем и установим его в /usr/bin папки rootfs SliTaz:

# cd ..
# mkdir -p XFree86-4.6.0 && cd XFree86-4.6.0
# wget http://ftp.xfree86.org/pub/XFree86/4.6.0/binaries/Linux-ix86-glibc23/Xtinyx.tgz
# tar xzf Xtinyx.tgz
# cp bin/Xvesa $fs/usr/bin
# strip $fs/usr/bin/Xvesa
# chmod 4711 $fs/usr/bin/Xvesa

Библиотеки для Xvesa

        libz.so.1 => /usr/lib/libz.so.1 (0xb7ed6000)
        libm.so.6 => /lib/tls/libm.so.6 (0xb7eb1000)
        libc.so.6 => /lib/tls/libc.so.6 (0xb7d7e000)
        /lib/ld-linux.so.2 (0xb7ef8000)

rgb.txt — RGB-цвета в X-сервере

Конфигурационный файл для настройки цветовой гаммы Х-сервера носит название rgb.txt; советуем скопировать его в основную систему. Библиотека libX11.so будет искать файлы настроек в папке /usr/share/X11, а сервер Xvesa — в /usr/X11R6/lib/X11; для этого создадим ссылку на /usr/share/X11:

# mkdir -p $fs/usr/share/X11
# cp /usr/share/X11/rgb.txt $fs/usr/share/X11
# chroot $fs /bin/ash
/# mkdir -p /usr/X11R6/lib/X11/
/# ln -s /usr/share/X11/rgb.txt /usr/X11R6/lib/X11/rgb.txt
/# exit

Xfnts — шрифты

Чтобы управлять сервером, нам понадобится базовый набор шрифтов. Их можно скачать с сайта xfree86.org, а затем скомпилировать соответствующие пакеты из Xorg или взять их из основной системы. Системные шрифты можно располагать по разным папкам, а кеш обновлять утилитой lc-cache. Не забывайте: шрифты отнимают драгоценное пространство, поэтому устанавливайте только самые необходимые. Папка /usr/share/fonts содержит шрифты TrueType, например, bitstream-vera:

# wget http://ftp.xfree86.org/pub/XFree86/4.6.0/binaries/Linux-ix86-glibc23/Xfnts.tgz
# tar xzf Xfnts.tgz
# mkdir -p $fs/usr/X11R6/lib/X11/fonts
# mkdir -p $fs/usr/share/fonts/truetype

Скопируем шрифты:

(# cp -a lib/X11/fonts/* $fs/usr/X11R6/lib/X11/fonts)
(# cp -a /usr/share/fonts/truetype/* $fs/usr/share/fonts/truetype

После этого заново создадим файл fonts.dir, для этого запустим утилиту mkfontdir и укажем нужную папку:

# mkfontdir $fs/usr/X11R6/lib/X11/fonts/75dpi

Файлы конфигурации fontconfig можно найти в /etc/fonts из пакета fontconfig. Теперь можно запустить fc-cache, чтобы обновить кеш, и fc-list для вывода списка доступных шрифтов. Эти команды можно запускать из chroot-окружения rootfs:

# chroot $fs /bin/ash
# fc-cache -v
# fc-list
# exit

Xlib locale — файлы раскладок клавиатуры

В SliTaz мы установили 4 локали: C, iso8859-1, iso8859-15 и iso 8859-2 из пакета Xorg. Вы можете взять эти файлы из основной системы или из пакета XFree86. Для примера скопируем локали из основной системы:

# mkdir -p $fs/usr/share/X11/locale
# cp -a /usr/share/X11/locale/* $fs/usr/share/X11/locale

Использование X

Xvesa можно использовать в качестве Х-терминала, если в вашей сети есть компьютер, способный принимать XDMCP-соединения. Для этого можно запустить сервер с опцией -query, например:

# Xvesa -ac -shadow -screen 1024x768x24 -query 192.168.0.2

xterm — эмулятор терминала

Пакет xterm (invisible-island.net/xterm/) предоставляет эмулятор терминала для Х-сервера:

# wget ftp://invisible-island.net/xterm/xterm-223.tgz
# tar xzf xterm-223.tgz
# cd xterm-223
# ./configure --prefix=/usr --sysconfdir=/etc \
  --mandir=/usr/share/man --localstatedir=/var \
  --with-app-defaults=/usr/share/X11/app-defaults \
  --build=i486-pc-linux-gnu --host=i486-pc-linux-gnu
# make
# make DESTDIR=$PWD/_pkg install
# strip _pkg/usr/bin/*
# cp _pkg/usr/bin/* $fs/usr/bin
# cp -a _pkg/usr/share/X11/* $fs/usr/share/X11

Библиотеки

Выполним команду ldd на XTerm, а затем команды copy и strip, чтобы скопировать недостающие библиотеки из основной системы:

    libXft.so.2 => /usr/lib/libXft.so.2 (0xb7f09000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7f00000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7ed5000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7e68000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb7e54000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xb7d68000)
    libXaw.so.7 => /usr/lib/libXaw.so.7 (0xb7d0f000)
    libXmu.so.6 => /usr/lib/libXmu.so.6 (0xb7cfa000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xb7cec000)
    libXt.so.6 => /usr/lib/libXt.so.6 (0xb7c9e000)
    libSM.so.6 => /usr/lib/libSM.so.6 (0xb7c96000)
    libICE.so.6 => /usr/lib/libICE.so.6 (0xb7c7f000)
    libncurses.so.5 => /lib/libncurses.so.5 (0xb7c3c000)
    libc.so.6 => /lib/libc.so.6 (0xb7b2c000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7b0b000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xb7b08000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7b03000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7aff000)
    libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb7aee000)

libpng-1.2.18 — библиотеки для работы с форматом PNG

Библиотеки для PNG (libpng.org/pub/png/libpng.html) используются для управления изображениями в формате PNG:

# wget http://puzzle.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.18.tar.bz2
# tar xjf libpng-1.2.18.tar.bz2
# cd libpng-1.2.18
# ./configure --enable-shared --prefix=/usr \
  --mandir=/usr/share/man
# make
# make DESTDIR=$PWD/_pkg install
# strip _pkg/usr/lib/*.so*
# cp -a _pkg/usr/lib/libpng12.so* $fs/usr/lib
# cp -a _pkg/usr/bin/libpng12* $fs/usr/bin

jwm-2.0 — менеджер окон

Оконный менеджер Джо (Joe's Window Manager, www.joewing.net/programs/jwm/) — потрясающе легкий и дружественный менеджер окон. В SliTaz он является оконным менеджером по умолчанию. Основной файл конфигурации (/etc/jwm/system.jwnrc) содержит настройки стиля и меню настроек:

# cd ..
# wget http://www.joewing.net/programs/jwm/releases/jwm-2.0.tar.bz2
# tar xjf jwm-2.0.tar.bz2
# cd jwm-2.0
# ./configure --prefix=/usr --mandir=/usr/share/man \
  --sysconfdir=/etc/jwm --disable-xinerama
# make
# strip src/jwm
# cp src/jwm $fs/usr/bin
# mkdir $fs/etc/jwm
# cp example.jwmrc $fs/etc/jwm/system.jwmrc

Библиотеки

Команда ldd, как всегда, покажет нужные библиотеки:

    libX11.so.6 => /usr/lib/libX11.so.6 (0xb7e35000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7e12000)
    libXft.so.2 => /usr/lib/libXft.so.2 (0xb7e00000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7df7000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7dcc000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7d5f000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb7d4a000)
    libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb7d3a000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xb7d2c000)
    libc.so.6 => /lib/libc.so.6 (0xb7c1c000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xb7c19000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7c14000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7c0f000)
    libm.so.6 => /lib/libm.so.6 (0xb7bea000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7bc9000)

Можно запустить Х-сервер и JWM при помощи нижеприведенной команды или создать для этого скрипт в /usr/bin/startx с тем же содержимым:

Xvesa -ac -shadow -screen 1024x768x24 & exec jwm

Специфика работы Х-сервера в SliTaz

SliTaz использует файл ~/.Xsession для запуска графической сессии. Команда startx проверяет наличие этого файла или запускает tazx, чтобы настроить систему X. Руководство пользователя по X window содержится в /usr/share/doc/slitaz/user-guide/x-window.html или на сайте проекта.

В качестве набора иконок мы выбрали Tango (tango.freedesktop.org), не скомпилированную версию. Мы взяли самый минимум — значки формата 16×16 — и поместили их в /usr/share/icons.

Чтобы протестировать JWM в создаваемом ISO, выполните следующую команду:

# Xvesa -ac -shadow -screen 800x600x24 & exec jwm

jpeg-6b — библиотеки для работы с JPEG

В этом пакете представлены библиотеки для управления форматом JPEG и некоторые мелкие утилиты:

# wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
# tar xzf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# ./configure --enable-shared --prefix=/usr \
  --mandir=/usr/share/man
 # make
# strip .libs/*
# cp -a .libs/*.so* $fs/usr/lib
# cp .libs/{cjpeg,djpeg,jpegtran} $fs/usr/bin

tiff-3.8.2 — библиотеки и утилиты для формата TIFF

Здесь содержатся библиотеки для работы с форматом TIFF и несколько утилит.

# wget ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.8.2.tar.gz
# tar xzf tiff-3.8.2.tar.gz
# cd tiff-3.8.2
# ./configure  --prefix=/usr --mandir=/usr/share/man
# make
# make DESTDIR=$PWD/_pkg install
# strip _pkg/usr/bin/*
# strip _pkg/usr/lib/*.so*
# cp -a _pkg/usr/lib/*.so* $fs/usr/lib

Вы можете установить только нужные вам утилиты.

Links (links.twibright.com) является браузером, поддерживающим графический и текстовый режимы работы. Он переведен на многие языки, включая русский:

# cd ..
# wget http://links.twibright.com/download/links-2.1pre28.tar.gz
# tar xzf links-2.1pre28.tar.gz
# cd links-2.1pre28
# ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \
  --without-directfb --without-ssl --enable-graphics --enable-javascript
# make
# make DESTDIR=$PWD/_pkg install
# strip -v _pkg/usr/bin/*
# cp -v _pkg/usr/bin/* $fs/usr/bin

Библиотеки

    libtiff.so.3 => /usr/lib/libtiff.so.3
    libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb7ede000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7eba000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb7ea7000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xb7dbb000)
    libdl.so.2 => /lib/tls/libdl.so.2 (0xb7db7000)
    libpcre.so.0 => /usr/lib/libpcre.so.0 (0xb7d96000)
    libm.so.6 => /lib/tls/libm.so.6 (0xb7d70000)
    libc.so.6 => /lib/tls/libc.so.6 (0xb7c3e000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xb7c3b000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7c36000)
    /lib/ld-linux.so.2 (0xb7f5d000)

Создаем initramfs и ISO-образ

Для создания ISO-образа можно использовать утилиту mktaziso из SliTaz tools. Или же можно собрать новый образ initramfs, скопировать его в rootcd/boot и создать ISO-образ при помощи genisoimage:

# cd $fs
# find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz
# cd ..
# cp rootfs.gz rootcd/boot
# genisoimage -R -o slitaz-cooking.iso -b boot/isolinux/isolinux.bin \
  -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
  -V "SliTaz" -boot-info-table rootcd

Следующая глава

В главе Библиотеки GTK+ мы поговорим об установке библиотек GTK.


Статью перевел Cyril