======Оконная система X======
Установка и базовая настройка системы Х.
=====Введение=====
В этой главе описываются установка и настройка иксов в SliTaz. Мы установим библиотеки для expat, XML, шрифтов, графический сервер (Xvesa), эмулятор терминала (xterm), оконный менеджер (JWM) и различные мелкие утилиты. Также поставим библиотеки для JPEG-изображений и браузер Links.
===Переменные окружения ($fs)===
Если у вас еще не указан путь к папке rootfs, экспортируйте соответствующую переменную окружения:
# export fs=$PWD/rootfs
Для проверки можно ввести:
# echo $fs
=====expat-2.0.0 — библиотека анализатора XML=====
Expat ([[http://expat.sourceforge.net/|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 ([[http://www.freetype.org/|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 ([[http://www.fontconfig.org/wiki/|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 ([[http://www.xfree86.org/|www.xfree86.org]]) и шрифтов, предоставляемых Xfree86.org. Мы также могли бы скопировать библиотеки Xorg из основной системы, которая будет использоваться для компиляции Х-приложений, но Xvesa сам по себе хорошо работает и при этом значительно проще. Также можно пересобрать [[xorg|пакеты 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|пакета 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 ([[http://invisible-island.net/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 ([[http://libpng.org/pub/png/libpng.html|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, [[http://www.joewing.net/programs/jwm/|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 ([[http://tango.freedesktop.org/|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-2.1pre29 — консольный и графический веб-браузер=====
Links ([[http://links.twibright.com/|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 из [[ru:cookbook:slitaz-tools|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-libs|Библиотеки GTK+]] мы поговорим об установке библиотек GTK.
----
Статью перевел [[http://forum.slitaz.org/index.php/profile/1273/Cyril|Cyril]]