Table of Contents
Базовые приложения
Установка и настройка основных приложений и библиотек.
Введение
В этой главе описывается сборка и настройка основных библиотек и консольных приложений SliTaz.
Назначаем переменную окружения ($fs)
В переменных окружения не указывается путь к папке, а только ее имя. Пропишем в переменную '$fs' путь к корневой файловой системе (rootfs). Для этого войдем в рабочую папку SliTaz/ и выполним:
# export fs=$PWD/rootfs
А для проверки введем такую команду:
# echo $fs
bc-1.06 — консольный калькулятор
Приложение bc (www.gnu.org/software/bc/) — это маленький калькулятор. При его компиляции также собирается dc, но последний не будет устанавливаться в SliTaz. Что интересно — dc также входит в состав BusyBox. Если вы захотите включить dc отдельно, потребуется удалить соответствующую ссылку на BusyBox, если она существует. Мы будем использовать папку _pkg (package) для установки и утилиту strip для сокращения размеров исполняемых файлов, а затем скопируем полученные утилиты в нужную папку.
# cd src # wget http://ftp.gnu.org/pub/gnu/bc/bc-1.06.tar.gz # tar xzfv bc-1.06.tar.gz # cd bc-1.06 # ./configure --prefix=/usr --infodir=/usr/share/info \ --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip -vs _pkg/usr/bin/* # cp -avi _pkg/usr/bin/bc $fs/usr/bin
Библиотеки
Выполнение команды ldd на bc выведет:
libc.so.6 => /lib/libc.so.6 (0x40029000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
zlib-1.2.3 — библиотеки сжатия
Пакет zlib (www.zlib.net) обеспечивает функции сжатия и распаковки, используемые, среди прочего, SSH-сервером Dropbear и X-сервером:
# cd .. # wget http://www.gzip.org/zlib/zlib-1.2.3.tar.bz2 # tar xjfv zlib-1.2.3.tar.bz2 # cd zlib-1.2.3 # ./configure --shared --prefix=/usr # make # strip -vs libz.so* # cp -av libz.so* $fs/usr/lib
pcre-7.4 — Perl-совместимые регулярные выражения
Пакет pcre (www.pcre.org) содержит библиотеки функций для Perl-совместимых регулярных выражений, которые использует, например, веб-сервер Lighttpd:
# cd .. # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.gz # tar xzfv pcre-7.4.tar.gz # cd pcre-7.4 # ./configure --prefix=/usr # make # make DESTDIR=$PWD/_pkg install # strip -vs _pkg/usr/bin/* # strip -vs _pkg/usr/lib/* # cp -av _pkg/usr/bin/* $fs/usr/bin # cp -av _pkg/usr/lib/*.so* $fs/usr/lib
e2fsprogs-1.39 — управление файловыми системами
Пакет e3fsprogs (e2fsprogs.sourceforge.net) имеет в своем составе утилиты для управления файловыми системами ext2 и ext3. Мы не будем брать их все, потому что нам понадобится место для других программ. Также мы будем использовать fsck из BusyBox:
# cd .. # wget http://puzzle.dl.sourceforge.net/sourceforge/e2fsprogs/e2fsprogs-1.39.tar.gz # tar xzf e2fsprogs-1.39.tar.gz # cd e2fsprogs-1.39 # ./configure --prefix=/usr --with-root-prefix="" \ --enable-elf-shlibs --disable-evms --sysconfdir=/etc \ --infodir=/usr/share/info --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip -vs _pkg/sbin/* # strip -vs _pkg/lib/* # strip -vs _pkg/usr/bin/* # strip -vs _pkg/usr/sbin/* # strip -vs _pkg/usr/lib/*
Далее установим полученные утилиты, файлы настроек и библиотеки в папку rootfs. При использовании fsck будьте осторожны и не сотрите ссылку на BusyBox:
# cp -i _pkg/sbin/{badblocks,blkid,dumpe2fs,e2fsck,e2image} $fs/sbin # cp -i _pkg/sbin/{e2label,findfs,logsave,mke2fs,mkfs.*} $fs/sbin # cp -i _pkg/sbin/{resize2fs,tune2fs} $fs/sbin # cp -a _pkg/lib/* $fs/lib # rm -rf $fs/lib/libss* # cp -a _pkg/etc/* $fs/etc # cp -a _pkg/usr/bin/* $fs/usr/bin # cp -a _pkg/usr/sbin/* $fs/usr/sbin # cp -ad _pkg/usr/lib/*.so $fs/usr/lib # rm -rf $fs/usr/lib/libss*
Также можно скопировать файлы для русской раскладки:
# mkdir $fs/usr/share/locale # cp -a _pkg/usr/share/locale/ru $fs/usr/share/locale
Dropbear-0.50 — легкий сервер и клиент SSH
Dropbear (matt.ucc.asn.au/dropbear/dropbear.html) — это маленький надежный клиент/сервер c поддержкой SSH 2. Dropbear совместим с OpenSSH и использует ~/.ssh/authorized_keys для управления общими ключами. Dropbear также предоставляет собственную версию scp, для чего его нужно компилировать с опцией “make scp”:
# cd .. # wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.50.tar.gz # tar xzf dropbear-0.50.tar.gz # cd dropbear-0.50 # ./configure --prefix=/usr # make # make scp # make DESTDIR=$PWD/_pkg install # strip -v scp # strip -v _pkg/usr/bin/* # strip -v _pkg/usr/sbin/*
Установим клиент и его утилиты в /usr/bin, а сервер — в /usr/sbin:
# cp scp $fs/usr/bin # cp -a _pkg/usr/bin/* $fs/usr/bin # cp -a _pkg/usr/sbin/* $fs/usr/sbin
Библиотеки
libutil.so.1 => /lib/libutil.so.1 (0x40025000) libz.so.1 => /usr/lib/libz.so.1 (0x40028000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4003b000) libc.so.6 => /lib/libc.so.6 (0x40068000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Скопируем библиотеку libutil.so.1 в $fs/lib, если она там еще не находится. Другие библиотеки должны присутствовать при создании основы системы:
# cp -a /lib/libutil* $fs/lib
Настройка Dropbear
Пользовательские конфигурационные файлы authorized_keys и known_hosts находятся в ~/.ssh. Эта папка и файл known_hosts создаются автоматически, когда пользователь впервые запускает dbclient. Системные конфигурационные файлы для Dropbear расположены в /etc/dropbear:
# mkdir $fs/etc/dropbear
Вы должны сгенерировать ключи безопасности, перед тем как запустить сервер Dropbear в Slitaz. Можно использовать dropbearkey со следующими опциями:
# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key # dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
Запустить SSH-сервер в SliTaz можно следующей командой:
# /etc/init.d/dropbear start
lighttpd-1.4.18 — веб-сервер HTTP
Lighttpd (www.lighttpd.net) — легкий, безопасный и мощный веб-сервер. Эта программа активно развивается и легко настраивается. Она поддерживает виртуальные хосты, CGI-скрипты и интеллектуальное управление процессором:
# cd .. # wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.gz # tar xzf lighttpd-1.4.18.tar.gz # cd lighttpd-1.4.18 # ./configure -enable-shared --disable-ipv6 --prefix=/usr \ --libdir=/usr/lib/lighttpd --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip -vs _pkg/usr/bin/* # strip -vs _pkg/usr/sbin/* # strip -vs _pkg/usr/lib/lighttpd/*
Установим сервер и собранные библиотеки, а затем скопируем некоторые модули (9):
# cp _pkg/usr/bin/* $fs/usr/bin # cp _pkg/usr/sbin/* $fs/usr/sbin # mkdir $fs/usr/lib/lighttpd
Модули:
# cp _pkg/usr/lib/lighttpd/mod_access.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_accesslog.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_alias.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_auth.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_cgi.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_compress.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_rewrite.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_status.so $fs/usr/lib/lighttpd # cp _pkg/usr/lib/lighttpd/mod_userdir.so $fs/usr/lib/lighttpd
Библиотеки
У нас уже должна быть библиотека libsdl.so.2; если же нет, скопируем ее:
# cp -a /lib/libdl* $fs/lib
/var/www — корневая папка обслуживаемых документов
/var/www — это корневая папка документов, обслуживаемых по умолчанию. Получить доступ к ней можно, перейдя по ссылке http://localhost/. Эта папка содержит index.html, который автоматически выводится по запросу. Создадим папку /var/www и посмотрим, что там внутри:
# mkdir -p $fs/var/www
lighttpd.conf — файл конфигурации Lighttpd
Основной файл настроек Lighttpd расположен в папке /etc/lighttpd и называется lighttpd.conf. Этот же файл, входящий в состав SliTaz, прост для понимания, можете в этом убедиться, прочитав его. Другие примеры этого файла вы найдете на сайте Lighttpd, а пример его конфигурации — в папке /doc в архиве Lighttpd:
# cp -a ../slitaz-tools-1.1/etc/lighttpd $fs/etc
Создадим папку, содержащую log-файлы:
# mkdir $fs/var/log/lighttpd
Пользователь и группа www
Добавим к веб-серверу пользователя и группу, это увеличит безопасность, кроме того, нет надобности запускать его от имени root. Соответствующий пользователь в SliTaz по умолчанию — www, это имя вы можете изменить в файле lighttpd.conf. Приложение adduser из BusyBox имеет некоторые ограничения, так что добавим пользователя www вручную. Мы также изменим права доступа к папке с log-файлами веб-сервера:
# echo "www:x:80:80:www:/var/www:/bin/sh" >> $fs/etc/passwd # echo "www:*:13509:0:99999:7:::" >> $fs/etc/shadow # echo "www:*:13509:0:99999:7:::" >> $fs/etc/shadow- # chroot $fs /bin/ash /# addgroup -g 80 www /# chown www.www /var/log/lighttpd # exit
Чтобы запустить веб-сервер, можно использовать скрипт /etc/init.d/lighttpd из SliTaz tools, набрав: /etc/init.d/lighttpd start. Запуск сервера можно автоматизировать при загрузке системы, создав ссылку /etc/init.d/lighttpd, указывающую на /etc/rc.d/60lighttpd.
iptables-1.3.7 — файрволл для Linux
Netfilter (www.netfilter.org) — это модуль, обеспечивающий функции файрволла для ядра Linux, разделяемые Интернет-соединения (NAT) и архивирование сетевого трафика. Команда iptables позволяет конфигурировать Netfilter, используя iptables-restore и iptable-save для сохранения и восстановления конфигурации Netfilter:
# cd .. # wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.7.tar.bz2 # tar xjf iptables-1.3.7.tar.bz2 # cd iptables-1.3.7 # make KERNEL_DIR=../linux-2.6.20 BINDIR=/sbin \ LIBDIR=/lib MANDIR=/usr/share/man # make KERNEL_DIR=../linux-2.6.20 BINDIR=/sbin \ LIBDIR=/lib MANDIR=/usr/share/man \ DESTDIR=$PWD/_pkg install # strip _pkg/sbin/* # strip _pkg/lib/iptables/*
Установим приложения и библиотеки по маске iptables*, достаточные для базового файрволла:
# cp -a _pkg/sbin/iptables* $fs/sbin # mkdir $fs/lib/iptables # cp -a _pkg/lib/iptables/{libipt_standard.so,libipt_conntrack.so} \ $fs/lib/iptables # cp -a _pkg/lib/iptables/{libipt_tcp.so,libipt_udp.so} $fs/lib/iptables
Чтобы удовлетворить зависимости iptables, скопируем библиотеки libnsl*:
# cp -va /lib/libnsl* $fs/lib/tls # strip $fs/lib/libnsl*
sqlite-3.5.1 — маленький движок баз данных SQL
Этот пакет предоставляет sqlite3 (www.sqlite.org) и библиотеки sqlite3.so*. SQLite быстр и эффективен, и при этом напрямую интегрируется в программы, использующие файлы баз данных:
# cd .. # wget http://www.sqlite.org/sqlite-3.5.1.tar.gz # tar xzf sqlite-3.5.1.tar.gz # cd sqlite-3.5.1 # ./configure --prefix=/usr --disable-tcl # make # make DESTDIR=$PWD/_pkg install # strip _pkg/usr/lib/*.so* # strip _pkg/usr/bin/*
Установим sqlite3 и его библиотеки в папку rootfs:
# cp -a _pkg/usr/lib/*.so* $fs/usr/lib # cp -a _pkg/usr/bin/* $fs/usr/bin
cdrkit-1.1.5 — утилиты для управления CD-ROM и ISO-образами
cdrkit (www.cdrkit.org) имеет в своем составе средства управлениями CD-ROM. По умолчанию SliTaz устанавливает wodim для прожига дисков и genisoimage для создания ISO-образов. Компиляция осуществляется немного по-другому (через cmake), но это не должно вызвать проблем:
# cd .. # wget http://cdrkit.org/releases/cdrkit-1.1.5.tar.gz # tar xzf cdrkit-1.1.5.tar.gz # cd cdrkit-1.1.5 # make # make install PREFIX=$PWD/_pkg/usr # strip -v _pkg/usr/bin/* # strip -v _pkg/usr/sbin/* # cp _pkg/usr/bin/genisoimage $fs/usr/bin # cp _pkg/usr/bin/wodim $fs/usr/bin
Скопируем библиотеку libcap.so.1, которая необходима wodim:
# cp -a /lib/libcap.so* $fs/lib
cpio-2.8 — архиватор
cpio (www.gnu.org/software/cpio/) предоставляет средства для управления cpio-архивами. Этот формат используется при создании пакетов SliTaz и образа initramfs для CD-ROM. Кстати, BusyBox содержит свою версию cpio, которая только распаковывает архивы:
# cd .. # wget ftp://sunsite.cnlab-switch.ch/mirror/gnu/cpio/cpio-2.8.tar.gz # tar xzf cpio-2.8.tar.gz # cd cpio-2.8 # ./configure --prefix=/usr --bindir=/bin \ --libexecdir=/usr/bin --mandir=/usr/share/man \ --infodir=/usr/share/info # make # make DESTDIR=$PWD/_pkg install # strip -v _pkg/bin/* # strip -v _pkg/usr/bin/*
Установим cpio в папку /bin, а rmt — в /usr/bin. Также можно установить для него русскую локализацию:
# cp -a _pkg/bin/* $fs/bin # cp -a _pkg/usr/bin/* $fs/usr/bin # cp -a _pkg/usr/share/locale/ru $fs/usr/share/locale
microperl-5.8.8 — микрокопия Perl
Microperl — это крохотная версия Perl, использующая большинство важнейших функций этого языка. Более подробную информацию вы найдете в архиве с исходниками программы и в файле README.micro. Мы используем маленькую утилиту sed на файле конфигурации, которая осуществляет поиск модулей microperl в /usr/lib/perl5. После этого создадим ссылку на скрипт #! /usr/bin/perl:
# wget http://ftp.funet.fi/pub/CPAN/src/perl-5.8.8.tar.gz # tar xzf perl-5.8.8.tar.gz # cd perl-5.8.8 # sed -i s/'usr\/local'/'usr'/ uconfig.sh # sed -i s/'perl5\/5.9'/'perl5'/ uconfig.sh # sed -i s/'unknown'/'i486-pc-linux-gnu'/ uconfig.sh # make -f Makefile.micro regen_uconfig # make -f Makefile.micro # strip microperl # cp microperl $fs/usr/bin # chroot $fs /bin/ash /# cd /usr/bin /# ln -s microperl perl /# exit
module-init-tools-3.2 — утилиты для управления модулями ядра
Пакет module-init-tools с сайта kernel.org включает modprobe, insmod, rmmod и lsmod. Мы выбрали именно эти утилиты, поскольку мы можем компилировать modutils/modprobe с поддержкой сжатых модулей (.gz) для экономии места. Для этого мы используем опцию --enable-zlib, а затем выполняем очистку и копирование исполняемых файлов. Мы не берем все собранные программы, а только то, что нам нужно — depmod, insmod, modinfo, modprobe и rmmod (помещаем их в /sbin), а также lsmod, который кладем в /bin:
# cd .. # wget http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2 # tar xjf module-init-tools-3.2.tar.bz2 # cd module-init-tools-3.2 # ./configure --enable-zlib --prefix=/usr --sbindir=/sbin --bindir=/bin \ --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip -v _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod} # strip -v _pkg/bin/lsmod # cp -i _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod} $fs/sbin # cp -i _pkg/bin/lsmod $fs/bin # cd ..
Копируем модули ядра
Копируем файлы из linux-2.6.20/_pkg:
# cp -a linux-2.6.20/_pkg/lib/* $fs/lib
Сжимаем модули ядра
Осуществляем сжатие модулей, что освободит нам около половины занятого места. Начнем с перехода в папку rootfs, после чего поищем в ней все файлы с расширением .ko и осуществим их сжатие. То же самое можно проделать и через скрипт gzmodtaz.sh из SliTaz tools:
# cd $fs
Используя gztazmod.sh:
# cp -v ../src/slitaz-tools-1.1/utils/gztazmod.sh sbin # ./sbin/gztazmod.sh lib/modules/2.6.20-slitaz
Или вручную:
# cd lib/modules/2.6.20-slitaz # find . -name "*.ko" -exec gzip '{}' \; # sed 's/\.ko/.ko.gz/g' modules.dep > tmp.dep # rm modules.dep # mv tmp.dep modules.dep
Собираем initramfs и ISO-образ
Для создания нового ISO-образа можно использовать утилиту mktaziso из состава Slitaz tools. Или же можно создать новый образ initramfs, скопировать его в папку /boot в корневой папке CD-ROM (rootcd) и в конце собрать ISO-образ командой genisoimage:
# cd $fs # find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz # cd .. # cp rootfs.gz rootcd/boot # genisoimage -R -o slitaz-test.iso -b boot/isolinux/isolinux.bin \ -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ -V "SliTaz" -input-charset iso8859-1 -boot-info-table rootcd
Тестируем ISO-образ:
# qemu -cdrom slitaz-test.iso
Следующая глава
Следующая глава называется "Базовые приложения ncurses". В ней рассказывается об установке и настройке библиотек и приложений ncurses.
Статью перевел Cyril