lfs50rus/ 500 0 0 0 10740543060 5473 5lfs50rus/appa.htm 600 0 0 365157 10740542764 7225 Описание пакетов и зависимости

Приложение A. Описание пакетов и зависимости

Содержание
Вступление
Autoconf
Automake
Bash
Binutils
Bison
Bzip2
Coreutils
DejaGnu
Diffutils
E2fsprogs
Ed
Expect
File
Findutils
Flex
Gawk
GCC
Gettext
Glibc
Grep
Groff
Grub
Gzip
Inetutils
Kbd
Less
LFS-Bootscripts
Lfs-Utils
Libtool
Linux (ядро)
M4
Make
MAKEDEV
Man
Man-pages
Modutils
Ncurses
Net-tools
Patch
Perl
Procinfo
Procps
Psmisc
Sed
Shadow
Sysklogd
Sysvinit
Tar
Tcl
Texinfo
Util-linux
Vim
Zlib

Вступление

В этом приложении имеется информация по всем пакетам из этой книги в виде следующих пунктов:

Большая часть информации об этих пакетах (особенно их описания) взята из соответствующих man-страниц по этим пакетам. Я не стал включать сюда эти man-страницы полностью, только ряд ключевых элементов для сборки и информацию, необходимую для понимания назначения паета. Для получения более детальной информации по пакетам Вам надо посмотреть документацию по ним.

Определенные пакеты описаны более подробно, чем другие потому, что я знаю о них чуть больше, чем о других. Если Вы считаете, что надо добавить что-либо к этим описаниям, без колебаний пишите на e-mail или в списки рассылки. Я хочу дать наиболее полную информацию по пакетам, но не могу сделать этого без Вашей помощи.

Пожалуйста, заметьте, что здесь описаны только те пакеты, которые Вам необходимо установить сразу. Остальные можно добавить потом.

Также здесь приведены зависимости установки для всех пакетов, устанавливаемых в этой книге. Они содержат программы, необходимые для успешной сборки устанавливаемых пакетов.

Это не зависимости для запуска программ, а только для их сборки.

Эти зависимости могут меняться в зависимости от версий устанавливаемых пакетов. Проверка зависимостей является сложной работой, но она нужна при обновлении пакетов. Но как правило зависимости меняются от младшей версии к старшей. Когда Вы устанавливаете более новую версию, надо проверять зависимости.

Autoconf

Для получения инструкций по установке смотрите раздел "Установка Autoconf-2.57" главы 6 .

Официальный адрес пакета

Autoconf (2.57): ftp://ftp.gnu.org/gnu/autoconf.

Содержимое Autoconf

Autoconf содержит shell-скрипты для автоматического конфигурирования исходных текстов пакетов.

Устанавливаемые программы: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate и ifnames.

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

autoconf является средством для составления shell-скриптов, которые автоматически настраивают исходные тексты пакетов для адаптации к большинству Unix-систем. Скрипты конфигурации создаются сомостоятельными: они работают без программы autoconf.

autoheader является средством для создания шаблонов файлов с директивами C #define для настройки использования.

autom4te представляет собой оболочку для макропроцессора M4.

autoreconf может вызываться при наличии множества сгенерированых autoconf сонфигурационных скриптов. Программа запускает autoconf и autoheader повторно (в случае надобности) для повторного создания скриптов настройки autoconf и шаблонов заголовков конфигурации в текущем дереве каталогов.

autoscan может помочь при создании файла configure.in для пакета программ. Он проверяет исходные тексты в дереве каталогов, ищет в них возможность возникновения проблем при переносимости и создает файл configure.scan, который служит предварительным configure.in для пакета.

autoupdate модифицирует файл configure.in, обновляя имена вызова макросов autoconf.

ifnames может помочь при написании configure.in для пакета программ. Он печатает идентификаторы, используемые пакетом в условиях препроцессора C. Если пакет уже настроен на определенную переносимость, эта программа может помочь определить, что надо проверять скрипту configure. Он может заполнить некоторые пропуски в файле configure.in, сгенерированом autoscan.

Зависимости установки Autoconf

Autoconf зависит от Bash, Coreutils, Diffutils, Grep, M4, Make, Perl, Sed.

Automake

Для получения инструкций по установке смотрите раздел "Установка Automake-1.7.6" в главе 6.

Официальный адрес пакета

Automake (1.7.6): ftp://ftp.gnu.org/gnu/automake.

Содержимое Automake

Automake генерирует файлы Makefile.in, предназначеные для использования Autoconf.

Устанавливаемые программы: acinstall, aclocal, aclocal-1.7, automake, automake-1.7, compile, config.guess, config.sub, depcomp, elisp-comp, install-sh, mdate-sh, missing, mkinstalldirs, py-compile, ylwrap.

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

acinstall: скрипт, устанавливающий файлы aclocal-style M4.

aclocal генерирует файлы aclocal.m4, основанные на содержимом файлов configure.in.

automake: средство для автоматической генерации Makefile.in из файлов Makefile.am. Для создания всех файлов Makefile.in для пакета, запустите программу в верхнем каталоге пакета. При сканировании файлов configure.in он автоматически найдет соответствующие Makefile.am и сгенерирует Makefile.in.

compile: оболочка для компиляторов.

config.guess: скрипт, который определяет каноническое имя (триплет) системы: версия, хост и тип архитектуры.

config.sub: скрипт проверки конфигурации.

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

elisp-comp: байт-компиляция кода Emacs Lisp.

install-sh: скрипт, который устанавливает программу, скрипт или файл данных.

mdate-sh выводит время модификации каталога или файла.

missing: скрипт, заменяющий ряд пропущенных программ GNU при инсталяции.

mkinstalldirs создает дерево каталогов.

py-compile компилирует программу Python.

ylwrap оболочка для lex и yacc.

Зависимости установки Automake

Automake зависит от: Autoconf, Bash, Coreutils, Diffutils, Grep, M4, Make, Perl, Sed.

Bash

Для получения инструкций по установке смотрите раздел "Установка Bash-2.05b" в главе 6.

Официальный адрес пакета

Bash (2.05b): ftp://ftp.gnu.org/gnu/bash, Bash Patch: http://www.linuxfromscratch.org/patches/lfs/5.0/bash-2.05b-2.patch.

Содержимое Bash

Bash (Bourne-Again SHell), который часто используется в качестве интерпретатора командной строки в Unix-системах. Программа bash считывает данные со стандартного ввода (клавиатуры). Пользователь вводит что-либо, а программа вычисляет, что именно он ввел и делает что-либо, например, запускает программу.

Устанавливаемые программы: bash, sh (ссылка на bash) и bashbug.

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

bash: часто используемый интерпретатор команд. Он поддерживает различные расширения и подстановки в получаемой командной строке, что делает его весьма мощным средством.

bashbug: shell-скрипт для помощи пользователю в составлении и отправке сообщения об ошибках, относящихся к bash, в стандартном формате.

sh: ссылка на программу bash. При вызове как sh, bash запускается в режиме эмуляции исторической версии sh, насколько это возможно, для большего соответствия стандартам POSIX.

Зависимости установки Bash

Bash зависит от: Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Sed.

Binutils

Для получения инструкций по установке смотрите раздел "Установка Binutils-2.14" в главе 6.

Официальный адрес пакета

Binutils (2.14):
ftp://ftp.gnu.org/gnu/binutils.

Содержимое Binutils

Binutils является набором средств разработки программ, включая компоновщик, ассемблер и другие средства для работы с объектными файлами и архивами.

Устанавливаемые программы: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings и strip.

Устанавливаемые библиотеки: libiberty.a, libbfd.[a,so] и libopcodes.[a,so].

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

addr2line транслирует адрес программы в имя файла и номер строки. Адрес и имя исполняемого файла используются с отладочной информацией двоичного модуля для определения исходного файла и номера строки, ассоциированного с адресом.

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

as ассемблер. Ассемблирует вывод gcc в объектные файлы.

c++filt используется компоновщиком для сортировки символов C++ и Java, для пропуска перезагрузки функций при конфликтах.

gprof отображает график системных вызовов.

ld компоновщик. Он соединяет несколько объектных и архивных файлов в один, переопределяет их данные и устанавливает символические ссылки.

nm выводит символы, содержащиеся в объектном файле.

objcopy используется для преобразования из одного типа объектного файла в другой.

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

ranlib генерирует список содержимого архива и сохраняет его в архиве. Список содержит все символы, определенные частями архива, которые являются объектными файлами.

readelf выводит информацию о типе двоичного файла.

size выводит список размеров частей и общий размер для каждого объектного файла.

strings выводит для каждого файла список печатных символов больше указанной длины (по умолчанию 4). Для объектных файлов печатаются только строки из инициализационного и загружаемого разделов. Для других типов файлов выводятся все строки.

strip удаляет символы из объектных файлов.

libiberty содержит правила, используемые различными программами GNU, включая getopt, obstack, strerror, strtol и strtoul.

libbfd библиотека Binary File Descriptor.

libopcodes библиотека для работы с опкодами, используется в сборке утилит вроде objdump. Опкоды представляют собой "читаемые" версии инструкций процессора.

Зависимости установки Binutils

Binutils зависит от Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo.

Bison

Для получения инструкций по установке смотрите раздел "Установка Bison-1.875" в главе 6.

Официальный адрес пакета

Bison (1.875):
ftp://ftp.gnu.org/gnu/bison,
Bison Attribute Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/bison-1.875-attribute.patch .

Содержимое Bison

Bison является генератором обработчиков, заменяющим yacc. Bison генерирует простую программу, которая анализирует структуру текстовых файлов.

Устанавливаемые программы: bison и yacc.

Устанавливаемая библиотека: liby.a.

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

bison генерирует, согласно ряду правил, программу для анализа структуры текстовых файлов. Bison заменяет yacc (Yet Another Compiler Compiler).

yacc является оболочкой для bison, специально для программ, использующих yacc вместо bison. Он вызывает bison с параметром -y.

liby.a библиотека Yacc, содержащая Yacc-совместимые функции yyerror и main. Эта библиотека практически не используется, но она упоминается в стандарте POSIX.

Зависимости установки Bison

Bison зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, M4, Make и Sed.

Bzip2

Для получения инструкций по установке смотрите раздел "Установка Bzip2-1.0.2" в главе 6.

Официальный адрес пакета

Bzip2 (1.0.2):
http://sources.redhat.com/bzip2.

Содержимое Bzip2

Bzip2 является блочносортирующим компрессором файлов, который генерирует архивы с большей степенью сжатия, нежели традиционный gzip.

Устанавливаемые программы: bunzip2 (ссылка на bzip2), bzcat (ссылка на bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless и bzmore.

Устанавливаемые билиотеки: libbz2.a, libbz2.so (ссылка на libbz2.so.1.0), libbz2.so.1.0 (ссылка на libbz2.so.1.0.2) и libbz2.so.1.0.2.

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

bunzip2 распаковывает упакованные с помощью bzip файлы.

bzcat распаковывает на стандартный вывод.

bzcmp запускает cmp для сжатых с помощью bzip файлов.

bzdiff запускает diff для сжатых с помощью bzip файлов.

bzgrep и подобные запускают grep для сжадых с помощью bzip файлов.

bzip2 сжимает файлы, используя Burrows-Wheeler block sorting алгоритм сжатия для текста с дожатимем по алгоритму Хуффмана. Степень сжатия обычно получается больше, чем у архиваторов, использующих алгоритмы LZ77/LZ78, например, gzip.

bzip2recover пытается восстановить данные из поврежденных файлов bzip2.

bzless запускает less для сжатых с помощью bzip файлов.

bzmore запускает more для сжатых с помощью bzip файлов.

libbz2* библиотека с функциями для сжатия данных по алгоритму Burrows-Wheeler.

Зависимости установки Bzip2

Bzip2 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc и Make.

Для получения инструкций по установке смотрите раздел "Установка Coreutils-5.0" в главе 6.

Официальный адрес пакета

Coreutils (5.0):
ftp://ftp.gnu.org/gnu/coreutils,
Coreutils Hostname Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/coreutils-5.0-hostname-2.patch ,
Coreutils Uname Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/coreutils-5.0-uname.patch .

Содержимое Coreutils

Пакет Coreutils содержит ряд основных утилит для shell.

Устанавливаемые программы: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, kill, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami и yes.

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

basename возвращает имя файла по указанному полному имени с путями и суффиксами.

cat выводит содержимое файла на стандартный вывод.

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

chmod изменяет режим доступа к файлу на указанный. Режим может быть указан в качестве последовательности символов для изменения режима доступа или как восьмеричное число для определения нового режима.

chown изменяет пользователя и/или группу, которые являются владельцем файла на указанную пару user:group.

chroot запускает указанную команду с указанным каталогом в качестве корня /. Эта команда может быть интерактивной оболочкой. На большинстве систем только пользователь root может это сделать.

cksum печатает контрольную сумму CRC и количество байт в указанном файле.

comm сравнивает два файла и выводит в три колонки одинаковые и разные строки.

cp копирует файлы.

csplit разделяет указанный файл на несколько других файлов, разделяя их по указанному шаблону либо по номерам строк и выводит количество байт для каждого нового файла.

cut печетает часть строк, соответствующих заданным параметрам.

date показывает текущее время в указанном формате или устанавливает системное время.

dd копирует файл, используя указанные размеры блоков и опциональные преобразования.

df показывает сколько места доступно (и используется) для всех смонтированных файловых систем или только для системы, содержащий указанные файлы.

dir синоним ls.

dircolors выдает команду для установки переменной окружения LS_COLOR, используемой для изменения цветовой схемы для ls.

dirname удаляет суффикс, не являющийся каталогом, из имени файла.

du возвращает место на диске, занимаемое указанным или текущим каталогом со всеми вложенными каталогами или файлами.

echo показывает заданную строку.

env меняет переменные окружения.

expand заменяет знаки табуляции пробелами.

expr вычисляет выражения.

factor выводит разложение на простые множители всех указанных целых чисел.

false ничего не делает, но неудачно. Она всегда завершается со статусом ошибки.

fmt форматирует абзацы в указанных файлах.

fold переносит строки в заданных файлах.

groups выводит группу, к которой принадлежит пользователь.

head печатает первые десять строк файла (или указанное число строк).

hostid возвращает числовой идентификатор хоста (в шестнадчатиричном формате)

hostname возвращает установленное имя хоста.

id возвращает ID пользователя, ID группы, и группу к которой принадлежит текущий или заданный пользователь.

install копирует файлы, устанавливая им режим доступа и, если возможно, их владельца и группу.

join соединяет строки двух файлов в поля.

kill завершает указанный процесс.

link создает жесткую ссылку на указанное имя или файл.

ln создает жесткую или символическую ссылку на файлы.

logname возвращает идентификационное имя текущего пользователя.

ls выводит содержимое указанного каталога. По умолчанию в алфавитном порядке подкаталоги и файлы.

md5sum возвращает контрольную сумму MD5.

mkdir создает каталог с указанным именем.

mkfifo создает FIFO с заданным именем.

mknod создает элемент устройства с заданным именем. Элемент устройства может быть специальным символьным фалом, блочным файлом или FIFO.

mv перемещает или переименовывает указанные каталоги или файлы.

nice запускает программу с измененным приоритетом выполнения.

nl возвращает количество строк в указанном файле.

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

od выводит дамп файла в восьмеричном или ином формате.

paste выводит строки, соответствующие заданным образцам из указанных файлов и разделенные символами табуляции.

pathchk проверяет корректность или портируемость имен файлов.

pinky упрощенный вариант finger. Возвращает некоторую информацию об указанных пользователях.

pr форматирует файл по страницам и колонкам для печати.

printenv печатает окружение.

printf печатает заданные параметры в указанном формате, очень похож на одноименную функцию C.

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

pwd возвращает имя текущего каталога.

readlink возвращает значение символической ссылки.

rm удаляет каталоги или файлы.

rmdir удаляет каталог, если он пустой.

seq печатает ряд чисел в заданном диапазоне с заданным шагом.

sha1sum возвращает или проверяет контрольную сумму 160-bit SHA1.

shred удаляет указанные файлы, перезаписывая занимаемые ими блоки указанным шаблоном, что очень сильно затрудняет их последующее восстановление.

sleep: пауза на указанное время.

sort сортирует строки заданных файлов.

split разрезает указанный файл на части заданного размера или по номерам строк.

stty устанавливает или печатает установки терминала.

su запускает оболочку с правами указанных пользователя и группы.

sum печатает контрольную сумму и количество блоков для указанного файла.

sync переключает буфер файловой системы. Он принудительно записывает измененные блоки на диск и обновляет superblock.

tac выводит содержимое указанных файлов в обратном порядке.

tail печатает последние десять строк (или указанное их количество) из заданного файла.

tee считывает данные со стандартного ввода и записывает их в файл, дублируя на стандартном выводе.

test сравнивает значения и проверяет типы файлов.

touch изменяет время изменения файла, устанавливает доступ к файлу. Если файл не существует, то он будет создан с нулевой длиной.

tr заменяет, вставляет и удаляет символы со стандартного ввода.

true успешно ничего не делает. Он всегда возвращает результат успешно завершенной операции.

tsort проводит топологическую сортировку. Она выводит полностью отсортированный список с учетом уже произведенной сортировки указанного файла.

tty возвращает имя файла терминала, присоединенного к стандартному вводу.

uname выводит информацию о системе.

unexpand заменяет пробелы символами табуляции.

uniq удаляет все повторяющиеся строки из отсортированного файла.

unlink удаляет указанный файл.

uptime возвращает время, которое система работает, сколько пользователей к ней подключились и загрузку системы.

users выводит список подключенных к системе пользователей.

vdir синоним ls -l.

wc выводит количество строк, слов и байт в указанном файле и общее количество строк, если указано более одного файла.

who сообщает, кто сейчас подключен.

whoami возвращает имя пользователя, соответствующее текущему ID.

yes выводит циклически 'y' или заданную строку, после чего завершается.

Зависимости установки Coreutils

Coreutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl и Sed.

DejaGnu

Для получения инструкций по установке смотрите раздел "Установка DejaGnu-1.4.3" в главе 5 .

Официальный адрес пакета

DejaGnu (1.4.3):
ftp://ftp.gnu.org/gnu/dejagnu.

Содержимое DejaGnu

Пакет DejaGnu содержит средства для тестирования других программ.

Устанавливаемая программа: runtest.

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

runtest является скриптом-оболочкой для определения правильной оболочки системы и последующего запуска DejaGnu.

Зависимости установки DejaGnu

Dejagnu зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

Diffutils

Для получения инструкций по установке смотрите раздел "Установка Diffutils-2.8.1" в главе 6.

Официальный адрес пакета

Diffutils (2.8.1):
ftp://ftp.gnu.org/gnu/diffutils.

Содержимое Diffutils

Программы из этого пакета покажут Вам различия между двумя-тремя каталогами или файлами. Они обычно используются для создания патчей к программам.

Устанавливаемые программы: cmp, diff, diff3 и sdiff.

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

cmp сравнивает два файла и возвращает информацию о различающихся байтах.

diff сравнивает два файла и возвращает информацию о различающихся строках.

diff3 сравнивает три файла построчно.

sdiff совмещает два файла и интерактивно выводит результаты.

Зависимости установки Diffutils

Diffutils зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

Для получения инструкций по установке смотрите раздел "Установка E2fsprogs-1.34" в главе 6.

Официальный адрес пакета

E2fsprogs (1.34):
ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/,
http://download.sourceforge.net/e2fsprogs.

Содержимое E2fsprogs

E2fsprogs содержит утилиты для работы с файловой системой ext2. Также поддерживается журналируемая файловая система ext3.

Устанавливаемые программы: badblocks, blkid, chattr, compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label, findfs, fsck, fsck.ext2, fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mklost+found, resize2fs, tune2fs и uuidgen.

Устанавливаемые библиотеки: libblkid.[a,so], libcom_err.[a,so], libe2p.[a,so], libext2fs.[a,so], libss.[a,so] и libuuid.[a,so].

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

badblocks ищет на устройстве (обычно разделе диска) плохие блоки.

blkid утилита командной строки для определения и печати атрибутов блочного устройства.

chattr изменяет атрибуты файла в файловой системе ext2.

compile_et компилятор таблицы ошибок. Он конвертирует таблицу названий кодов ошибок и сообщений в исходный код на C для использования с библиотекой com_err.

debugfs отладчик файловой системы. Он может использоваться для проверки и изменения состояния параметров файловой системы ext2.

dumpe2fs печатает информацию о superblock и группы блоков для файловых систем на указанном устройстве.

e2fsck используется для проверки и исправления ошибок файловых систем ext2 и ext3.

e2image используется для сохранения критически важных данных файловой системы ext2 в файл.

e2label возвращает или изменяет метку тома на файловой системе ext2 на указанном устройстве.

findfs ищет файловую систему по метке тома или UUID.

fsck используется для проверки и исправления ошибок файловых систем. По умолчанию проверяет файловые системы, перечисленные в /etc/fstab.

logsave сохраняет вывод команды в лог-файл протокола.

lsattr выводит список атрибутов файлов на файловой системе ext2.

mk_cmds конвертирует таблицу команд и справочных сообщений в исходный текст на C для использования с библиотекой libss.

mke2fs используется для создания файловой системы ext2 на указанном устройстве.

mklost+found используется для создания каталога lost+found в файловой системе ext2. Он заранее выделяет блоки для этого каталога для нужд e2fsck.

resize2fs используется для изменения размеров файловой системы ext2.

tune2fs используется для изменения настраиваемых параметров файловой системы ext2.

uuidgen создает новый универсальный уникальный идентификатор (universally unique identifier, UUID). Этот новый UUID будет уникальным среди всех созданных UUID на локальной или другой системе в прошлом и будущем.

libblkid содержит правила идентификации устройств и получения содержимого.

libcom_err содержит правила вывода стандартных ошибок.

libe2p используется dumpe2fs, chattr и lsattr.

libext2fs содержит правила для работы программ уровня пользователя для манипулирования файловой системы ext2.

libss используется debugfs.

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

Зависимости установки E2fsprogs

E2fsprogs зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Sed и Texinfo.

Ed

Для получения инструкций по установке смотрите раздел "Установка Ed-0.2" в главе 6.

Официальный адрес пакета

Ed (0.2):
ftp://ftp.gnu.org/gnu/ed,
Ed Mkstemp Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/ed-0.2-mkstemp.patch.

Содержимое Ed

GNU ed является 8-ми битовым POSIX-совместимым редактором строк.

Устанавливаемые программы: ed и red (ссылка на ed).

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

ed является строчно-ориентированым текстовым редактором. Он может использоваться для создания, вывода, редактирования и других манипуляций с текстовыми файлами.

red (ограниченный ed) может только редактировать файлы в текущем каталоге и не может выполнять команды.

Зависимости установки Ed

Ed зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

Expect

Для получения инструкций по установке смотрите раздел "Установка Expect-5.39.0" в главе 5 .

Официальный адрес пакета

Expect (5.39.0):
http://expect.nist.gov/src,
Expect Spawn Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/expect-5.39.0-spawn.patch .

Содержимое Expect

Пакет Expect содержит программы для организации интерактивных диалогов в других программах.

Устанавливаемая программа: expect.

Устанавливаемая библиотека: libexpect5.39.a.

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

expect "общается" с другими программами через скрипт.

Зависимости установки Expect

Expect зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed и Tcl.

File

Для получения инструкций по установке смотрите раздел "Установка File-4.04" в главе 6.

Официальный адрес пакета

File (4.04):
ftp://ftp.gw.com/mirrors/pub/unix/file.
Альтернативный адрес:
ftp://gaosu.rave.org/pub/linux/lfs.

Содержимое File

File является утилитой для определения типа файлов.

Устанавливаемая программа: file.

Устанавливаемая библиотека: libmagic.[a,so].

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

Программа file пытается классифицировать указанный файл. Она делает это посредством ряда тестов: теста файловой системы, теста магических чисел и языкового теста. От первого теста зависит удачное определение результата.

Библиотека libmagic содержит правила распознавания магических чисел, используемые программой file.

Зависимости установки File

File зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed и Zlib.

Findutils

Для получения инструкций по установке смотрите раздел "Установка Findutils-4.1.20" в главе 6.

Официальный адрес пакета

Findutils (4.1.20):
ftp://alpha.gnu.org/gnu/findutils.

Содержимое Findutils

Пакет Findutils содержит программы для поиска файлов, как "на лету" (выполняя рекурсивный поиск в каталогах и возвращая файлы, соответствующие заданному шаблону поиска), так и по базе данных.

Устанавливаемые программы: bigram, code, find, frcode, locate, updatedb и xargs.

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

bigram раньше использовался для создания поисковых баз данных.

code раньше использовался для создания поисковых баз данных. Предшественник frcode.

find ищет внутри указанного дерева каталогов файлы, соответствующие заданным критериям.

frcode вызывается updatedb для сжатия списка имен файлов. Он использует front-сжатие, уменьшая размер базы данных в 4-5 раз.

locate ищет в базе данных имен файлов и выводит имена, содержащие заданную строку или соответствующие шаблону.

updatedb обновляет поисковую базу данных. Он сканирует всю файловую систему (включая другие смонтированые файловые системы, если не указано обратное) и заносит все найденные имена файлов в базу данных.

xargs может использоваться для выполнения команды со списком файлов.

Зависимости установки Findutils

Findutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

Flex

Для получения инструкций по установке смотрите раздел "Установка Flex-2.5.4a" в главе 6.

Официальный адрес пакета

Flex (2.5.4a):
ftp://ftp.gnu.org/non-gnu/flex.

Содержимое Flex

Пакет Flex используется для генерации программ, распознающих шаблоны в тексте.

Устанавливаемые программы: flex, flex++ (ссылка на flex) и lex.

Устанавливаемая библиотека: libfl.a.

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

flex является средством для генерации программ. которые распознают шаблоны в тексте. Шаблоны для распознавания используются многими приложениями. Используя заданные правила поиска, flex создает программу, которая их использует в шаблонах. Причиной для использования flex является простота задания правил по сравнению с написанием собственной программы поиска по шаблону.

flex++ вызывает версию flex, используемую в сканерах C++.

libfl.a представляет собой библиотеку flex.

Зависимости установки Flex

Flex зависит от Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, M4, Make и Sed.

Gawk

Для получения инструкций по установке смотрите раздел "Установка Gawk-3.1.3" в главе 6.

Официальный адрес пакета

Gawk (3.1.3):
ftp://ftp.gnu.org/pub/gnu/gawk,
Gawk Libexecdir Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gawk-3.1.3-libexecdir.patch .

Содержимое Gawk

Gawk является реализацией awk, который используется для работы с текстовыми файлами.

Устанавливаемые программы: awk (ссылка на gawk), gawk, gawk-3.1.3, grcat, igawk, pgawk, pgawk-3.1.3 и pwcat.

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

gawk: программа для манипуляций с текстовыми файлами. Она является GNU-реализацией awk.

grcat делает дамп базы данных групп /etc/group.

igawk позволяет gawk включать файлы.

pgawk профильная версия gawk.

pwcat делает дамп базы данных паролей /etc/passwd.

Зависимости установки Gawk

Gawk зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

GCC

Для получения инструкций по установке смотрите раздел "Установка GCC-3.3.1" в главе 6.

Официальный адрес пакета

GCC (3.3.1):
ftp://ftp.gnu.org/pub/gnu/gcc,
GCC No-Fixincludes Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-3.3.1-no_fixincludes-2.patch ,
GCC Spec Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-3.3.1-specs-2.patch,
GCC Suppress-Libiberty Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-3.3.1-suppress-libiberty.patch ,
GCC-2 (2.95.3):
ftp://ftp.gnu.org/pub/gnu/gcc,
GCC-2 Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-2.95.3-2.patch,
GCC-2 No-Fixincludes Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-2.95.3-no-fixinc.patch ,
GCC-2 Return-Type Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-2.95.3-returntype-fix.patch .

Содержимое GCC

Пакет GCC содержит набор компиляторов GNU, в том числе компиляторы C и C++.

Устанавливаемые программы: c++, cc (ссылка на gcc), cc1, cc1plus, collect2, cpp, g++, gcc, gccbug и gcov.

Устанавливаемые библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] и libsupc++.a.

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

cpp является препроцессором C. Он используется компилятором для обработки директив #include и #define в файлах исходных кодов.

g++ компилятор C++.

gcc компилятор C. Он используется для преобразования исходных кодов в ассемблерный код.

gccbug скрипт, помогающий создать хороший отчет об ошибке.

gcov средство тестирования. Оно используется для анализа программы и поиска участков, которые можно оптимизировать.

libgcc* поддержка run-time для gcc.

libstdc++ стандартная библиотека C++. Она содержит многие часто используемые функции.

libsupc++ поддержка правил языка программирования c++.

Зависимости установки GCC

GCC зависит от Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo.

Gettext

Для получения инструкций по установке смотрите раздел "Установка Gettext-0.12.1" в главе 6 .

Официальный адрес пакета

Gettext (0.12.1):
ftp://ftp.gnu.org/gnu/gettext.

Содержимое Gettext

Пакет Gettext используется для интернационализации и локализации. Программы могут быть скомпилированы с поддержкой родного языка (Native Language Support, NLS) для получения возможности вывода ими сообщений на родном языке пользователя.

Устанавливаемые программы: autopoint, config.charset, config.rpath, gettext, gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, project-id, team-address, trigger, urlget, user-email и xgettext.

Устанавливаемые библиотеки: libasprintf[a,so], libgettextlib[a,so], libgettextpo[a,so] и libgettextsrc[a,so].

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

autopoint копирует файлы стандартной инфраструктуры gettext в пакет исходных текстов.

config.charset выводит системно-зависимую таблицу кодов символов.

config.rpath выводит системно-зависимый набор переменных, описывающий как установить путь для поиска библиотек и программ.

gettext переводит сообщение на исходном языке в сообщение на языке пользователя, находя перевод в каталоге сообщений.

gettextize копирует стандартные файлы Gettext в указанный корневой каталог пакета для возможности его интернационализации.

hostname возвращает сетевое имя хоста в разных форматах.

msgattrib фильтрует сообщения каталога переводов по их атрибутам и управляет этими атрибутами.

msgcat объединяет указанные файлы .po.

msgcmp сравнивает два файла .po, определяя наличие строк с одинаковым msgid.

msgcomm ищет одинаковые сообщения содержащиеся в указанных файлах .po.

msgconv преобразует каталог перевода в другую кодировку.

msgen создает каталог перевода на английский язык.

msgexec применяет команду ко всем переводам в каталоге переводов.

msgfilter применяет фильтр ко всем переводам в каталоге переводов.

msgfmt генерирует двоичный каталог сообщений из каталога переводов.

msggrep извлекает все сообщения из каталога перевода, которые содержат указанный шаблон или принадлежащие заданным исходным файлам.

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

msgmerge объединяет два перевода в один файл.

msgunfmt декомпилирует каталог двоичных сообщений в текст перевода.

msguniq унифицирует дублирующиеся переводы в каталоге переводов.

ngettext выводит перевод сообщения, чья форма зависит от числа, на родной язык.

xgettext извлекает переводы строк сообщений из указанных исходников для создания шаблона перевода.

libasprintf определяет класс autosprintf, который создает правила для форматирования вывода C в программах на C++ для использования в строках <string> и потоках <iostream>.

libgettextlib частная библиотека, содержащая основные правила, используемые различными программами gettext. Она не предназначена для общего использования.

libgettextpo используется для написания специализированных программ, создающих файлы PO. Эта библиотека используется, когда стандартных приложений, входящих в пакет gettext, недостаточно (таких, как msgcomm, msgcmp, msgattrib и msgen).

libgettextsrc частная библиотека, содержащая основные правила, используемые различными программами gettext. Она не предназначена для общего использования.

Зависимости установки Gettext

Gettext зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

Glibc

Для получения инструкций по установке смотрите раздел "Установка Glibc-2.3.2" в главе 6.

Официальный адрес пакета

Glibc (2.3.2):
ftp://ftp.gnu.org/gnu/glibc,
Glibc-linuxthreads (2.3.2):
ftp://ftp.gnu.org/gnu/glibc,
Glibc Sscanf Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/glibc-2.3.2-sscanf-1.patch .

Содержимое Glibc

Glibc представляет собой библиотеку C, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и другие. Библиотеку C используют все динамически скомпонованные программы.

Устанавливаемые программы: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic.

Устанавливаемые библиотеки: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so и libutil.[a,so].

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

catchsegv может использоваться для слежения за состоянием стека, когда программа завершается из-за ошибки распределения памяти (segmentation fault).

gencat генерирует каталоги сообщений.

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

getent получает записи из административных баз данных.

glibcbug создает отчет об ошибке и отсылает его по указанному адресу.

iconv обеспечивает преобразование кодировки.

iconvconfig создает файл конфигурации для модуля iconv.

ldconfig настраивает временные привязки динамического компоновщика.

ldd возвращает список разделяемых библиотек, требующихся для указанной программы или библиотеки.

lddlibc4 используется ldd для объектных файлов.

locale программа на Perl, которая указывает компилятору использовать или нет локали POSIX для встроеных операций.

localedef компилирует спецификации локали.

nscd имя демона сервиса кэширования, предоставляющего кэш для большинства запросов DNS.

nscd_nischeck проверяет необходимость защищенного или простого запроса к NIS+.

pcprofiledump делает дамп информации, генерируемой профилем PC.

pt_chown вспомогательная программа для grantpt. Устанавливает владельца, группу и права доступа дополнительного терминала pseudo.

rpcgen генерирует код C для реализации протокола RPC.

rpcinfo создает RPC-вызов на сервер RPC.

sln используется для создания символических ссылок. Программа скомпонована статически, так что она используется для создания символических ссылок на динамические библиотеки, если система динамической компоновки по каким-либо причинам нефункциональна.

sprof читает и отображает профильные данные распределяемого объекта.

tzselect спрашивает пользователя о его местонахождении и возвращает описание соответствующей временной зоны.

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

zdump делает дамп временной зоны.

zic компилятор временных зон.

ld.so вспомогательная программа для исполняемых файлов распределяемых библиотек.

libBrokenLocale используется программами, такими как Mozilla, для использования поврежденных локалей.

libSegFault обрабатывает ошибки распределения памяти (segmentation fault). Она пытается их перехватить.

libanl библиотека асинхронных запросов DNS.

libbsd-compat поддерживает портируемость, необходимую для запуска некоторых BSD-программ под Linux.

libc главная библиотека C: набор часто используемых функций.

libcrypt криптографическая библиотека.

libdl библиотека интерфейса динамического подключения.

libg библиотека времени выполнения для g++.

libieee библиотека IEEE для операций с числами с плавающей запятой.

libm математическая библиотека.

libmcheck содержит код запуска при загрузке.

libmemusage используется memusage для сбора информации о памяти, используемой программой.

libnsl библиотека сетевых сервисов.

libnss* библиотеки Name Service Switch, содержащие функции для работы с именами хостов, пользователей и групп, псевдонимами, сервисами, протоколами и всем, чем только можно.

libpcprofile содержит профили функций, используемых для отслеживания времени, затрачиваемого процессором на выполнения строк кода.

libpthread библиотека потоков POSIX.

libresolv содержит функции для создания, отправки и интерпретации пакетов серверов доменных имен (DNS).

librpcsvc содержит функции, обеспецивающие различные сервисы RPC.

librt содержит функции, обеспечивающие большинство интерфейсов, описанных в POSIX.1b Realtime Extension.

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

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

Зависимости установки Glibc

Glibc зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed и Texinfo.

Grep

Для получения инструкций по установке смотрите раздел "Установка Grep-2.5.1" в главе 6.

Официальный адрес пакета

Grep (2.5.1):
ftp://ftp.gnu.org/gnu/grep.

Содержимое Grep

Grep является программой, используемой для печати строк из файла, совпадающих с указанным шаблоном.

Устанавливаемые программы: egrep (ссылка на grep), fgrep (ссылка на grep) и grep.

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

egrep печатает строки, соответствующие регулярному выражению.

fgrep Печатает строки, соответствующие списку фиксированых строк.

grep печатает строки, соответствующие простому регулярному выражению.

Зависимости установки Grep

Grep зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Make, Sed и Texinfo.

Groff

Для получения инструкций по установке смотрите раздел "Установка Groff-1.19" в главе 6.

Официальный адрес пакета

Groff (1.19):
ftp://ftp.gnu.org/gnu/groff.

Содержимое Groff

Пакет Groff включает ряд программ для форматирования текста. Groff переводит стандартный текст и специальные команды в форматированный вывод, например, таким образом Вы просматриваете man-страницы.

Устанавливаемые программы: addftinfo, afmtodit, eqn, eqn2graph, geqn (ссылка на eqn), grn, grodvi, groff, groffer, grog, grolbp, grolj4, grops, grotty, gtbl (ссылка на tbl), hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff и zsoelim (ссылка на soelim).

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

addftinfo читает файл шрифта troff и добавляет некоторую дополнительную информацию о размерах шрифта, используемую системой groff.

afmtodit создает файл шрифта, используемый groff и grops.

eqn компилирует описания выражений, включенных в файлы troff, в команды, понимаемые troff.

eqn2graph преобразует уравнение EQN в уменьшеное изображение.

grn препроцессор groff для файлов gremlin.

grodvi драйвер для groff, который обеспечивает работу с форматом TeX dvi.

groff ядро для системы форматирования документов groff. Обычно оно запускает программу troff и постпроцесор, соответствующий выбранному устройству.

groffer отображает файлы groff и man-страницы в X и tty.

grog читает файлы, определяет, какие параметры groff (-e, -man, -me, -mm, -ms, -p, -s и -t) необходимы для вывода этих файлов и возвращает команду groff с этими параметрами.

grolbp драйвер для принтеров Canon CAPSL (лазерные принтеры серий LBP-4 и LBP-8).

grolj4 драйвер для groff, который обеспечивает вывод в формате PCL5 для принтеров HP Laserjet 4.

grops переводит вывод GNU troff в Postscript.

grotty переводит вывод GNU troff в формат, понятный для typewriter-like устройств.

gtbl GNU-реализацияtbl.

hpftodit создает файл шрифта для использования с groff -Tlj4 из файла метрик шрифта, размеченного HP.

indxbib создает инвертированный индекс для библиографической базы данных в указанном файле, для использования с refer, lookbib и lkbib.

lkbib производит поиск в библиографической базе данных на предмет поиска ссылок, соответствующих заданным образцам, и возвращает результаты поиска.

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

mmroff простой препроцессор для groff.

neqn форматирует выражения для вывода в ascii.

nroff скрипт, который эмулирует команду nroff, используемую groff.

pfbtops преобразует шрифт Postscript в формате .pfb в ASCII.

pic компилирует описания изображений, включенных в файлы ввода troff или TeX в команды, понятные для TeX или troff.

pic2graph конвертирует диаграмму PIC в сжатое изображение.

pre-grohtml преобразует вывод GNU troff в html.

post-grohtml преобразует вывод GNU troff в html.

refer копирует содержимое файла на стандартный вывод, за исключением строк между .[ и .], которые интерпретируются как цитаты, и строк между .R1 и .R2, которые интерпретируются как команды обработки цитат.

soelim читает файлы и заменяет строки в форме .so file на содержимое файла file.

tbl компилирует описания таблиц, включенных в файлы ввода troff в команды, понимаемые troff.

tfmtodit создает файл шрифта для использования с groff -Tdvi.

troff совместим с trff для Unix. Обычно должен быть вызван командой groff, которая также запустит препроцессор и постпроцессор в необходимом порядке и с необходимыми параметрами.

zsoelim GNU-реализация soelim.

Зависимости установки Groff

Groff зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

Grub

Для получения инструкций по установке смотрите раздел "Установка Grub-0.93" в главе 6.

Официальный адрес пакета

Grub (0.93):
ftp://alpha.gnu.org/pub/gnu/grub,
Grub Gcc33 Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/grub-0.93-gcc33-1.patch.

Содержимое Grub

Пакет Grub содержит загрузчик.

Устанавливаемые программы: grub, grub-install, grub-md5-crypt, grub-terminfo и mbchk.

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

grub оболочка для GRand Unified Bootloader.

grub-install устанавливает GRUB на указанное устройство.

grub-md5-crypt кодирует пароли в формате MD5.

grub-terminfo генерирует команду terminfo из имени terminfo. Это можно использовать, если у Вас применен нестандартный терминал.

mbchk проверяет формат мультизагрузочного ядра.

Зависимости установки Grub

Grub зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

Gzip

Для получения инструкций по установке смотрите раздел "Установка Gzip-1.3.5" в главе 6.

Официальный адрес пакета

Gzip (1.3.5):
ftp://alpha.gnu.org/gnu/gzip.

Содержимое Gzip

Пакет Gzip содержит программы для сжатия и распаковки файлов с использованием алгоритма сжатия LZ77.

Устанавливаемые программы: gunzip (ссылка на gzip), gzexe, gzip, uncompress (ссылка на gunzip), zcat (ссылка на gzip), zcmp, zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore и znew.

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

gunzip распаковывает сжатые файлы.

gzexe используется для создания самораспаковывающихся исполняемых файлов.

gzip сжимает указанный файл, используя алогритм LZ77.

zcat распаковывает указанные сжатые с помощью gzip файлы на стандартный вывод.

zcmp запускает cmp для сжатых с помощью gzip файлов.

zdiff запускает diff для сжатых с помощью gzip файлов.

zegrep запускает egrep для сжатых с помощью gzip файлов.

zfgrep запускает fgrep для сжатых с помощью gzip файлов.

zforce добавляет расширение .gz для всех сжатых с помощью gzip файлов из указанных так, что они не будут потом сжаты повторно. Это может быть использовано в случаях, когда файлы были переименованы после скачивания.

zgrep запускает grep для сжатых с помощью gzip файлов.

zless запускает less для сжатых с помощью gzip файлов.

zmore запускает more для сжатых с помощью gzip файлов.

znew пересжимает файлы из вормата compress в формат gzip: из .Z в .gz.

Зависимости установки Gzip

Gzip зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

Inetutils

Для получения инструкций по установке смотрите раздел "Установка Inetutils-1.4.2" в главе 6.

Официальный адрес пакета

Inetutils (1.4.2):
http://freshmeat.net/projects/inetutils.

Содержимое Inetutils

Пакет Inetutils содержит сетевые клиенты и серверы.

Устанавливаемые программы: ftp, ping, rcp, rlogin, rsh, talk, telnet и tftp.

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

ftp программа для передачи данных в сетях ARPANET.

ping посылает пакеты echo-request и отчитывается о времени прибытия ответа.

rcp обеспечивает удаленное копирование файлов.

rlogin обеспечивает удаленный вход в систему.

rsh запускает удаленную оболочку.

talk используется для чата с другим пользователем.

telnet интерфейс для протокола TELNET.

tftp тривиальная программа передачи файлов.

Зависимости установки Inetutils

Inetutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

Kbd

Для получения инструкций по установке смотрите раздел "Установка Kbd-1.08" в главе 6.

Официальный адрес пакета

Kbd (1.08):
ftp://ftp.win.tue.nl/pub/linux-local/utils/kbd,
Kbd More-Programs Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/kbd-1.08-more-programs.patch .

Содержимое Kbd

Kbd содержит файлы раскладки и утилиты для клавиатуры.

Устанавливаемые программы: chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, psfaddtable (ссылка на psfxtable), psfgettable (ссылка на psfxtable), psfstriptable (ссылка на psfxtable), psfxtable, resizecons, setfont, setkeycodes, setleds, setlogcons, setmetamode, setvesablank, showconsolefont, showkey, unicode_start и unicode_stop.

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

chvt изменяет используемый виртуальный терминал.

deallocvt закрывает неиспользуемые виртуальные терминалы.

dumpkeys делает дамп таблицы преобразований клавиатуры.

fgconsole печатает номер активного виртуального терминала.

getkeycodes печатает таблицу перевода сканкодов в коды клавиш ядра.

getunimap печатает используемую сейчас таблицу unimap.

kbd_mode возвращает или устанавливает режим клавиатуры.

kbdrate устанавливает время повтора и задержки нажатий клавиш.

loadkeys загружает таблицу преобразований клавиатуры.

loadunimap загружает таблицу перевода unicode-to-font ядра.

mapscrn устаревшая программа, которая используется для загрузки заданной пользователем таблицы преобразований вывода в драйвер консоли. Теперь это делается через setfont.

openvt запускает программу на новом виртуальном терминале (VT).

psf* набор средств для таблицы соответствия кодов символов Unicode консольным шрифтам.

resizecons изменяет установленные ядром размеры консоли.

setfont изменяет шрифт EGA/VGA на консоли.

setkeycodes загружает таблицу сканкодов в коды клавиш, используемую если у Вас есть неиспользуемые клавиши на клавиатуре.

setleds устанавливает флаги клавиатуры и LED (светодиоды). Многие люди используют включенный по умолчанию NumLock, это обеспечивает команда setleds +num.

setlogcons отсылает сообщения ядра на консоль.

setmetamode определяет метауправление клавиатурой.

setvesablank позволяет использовать встроенный аппаратный пустой хранитель экрана (без изображений, просто пустой экран).

showconsolefont показывает текущий EGA/VGA экранный шрифт консоли.

showkey возвращает сканкоды и коды клавиш, а также ASCII-коды нажатых на клавиатуре клавиш.

unicode_start включает на консоли и клавиатуре режим unicode.

unicode_stop возвращает консоль и клавиатуру из режима unicode.

Зависимости установки Kbd

Kbd зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc, Grep, Gzip, M4, Make и Sed.

Less

Для получения инструкций по установке смотрите раздел "Установка Less-381" в главе 6.

Официальный адрес пакета

Less (381):
ftp://ftp.gnu.org/gnu/less.

Содержимое Less

Less является просмотрщиком файлов или текста. Он выводит содержимое файла или потока и поддерживает прокрутку. Less имеет ряд возможностей, не входящих в просмотрщик more, например, он позволяет прокрутку в обратном направлении.

Устанавливаемые программы: less, lessecho и lesskey.

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

less является просмотрщиком файлов. Он отображает содержимое указанного файла, позволяет его прокручивать для просмотра, находить строки и переходить к отметкам.

lessecho нужен для расширеных метасимволов, таких как * и ?, в именах файлов на системах Unix.

lesskey используется для определения управляющих клавиш less.

Зависимости установки Less

Less зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

LFS-Bootscripts

Для получения инструкций по установке смотрите раздел "Установка LFS-Bootscripts-1.12" в главе 6.

Официальное место для скачивания

LFS-Bootscripts (1.12):
http://downloads.linuxfromscratch.org.

Содержимое LFS-bootscripts

Пакет LFS-Bootscripts содержит инициализационные скрипты в стиле SysV. Эти скрипты совершают определенные действия, например, проверяют файловую систему в момент загрузки, загружают раскладку клавиатуры, запускают сеть и завершают процессы при выключении.

Устанавливаемые скрипты: checkfs, cleanfs, functions, halt, ifdown, ifup, loadkeys, localnet, mountfs, mountproc, network, rc, reboot, sendsignals, setclock, swap, sysklogd и template.

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

Скрипт checkfs проверяет файловые системы перед тем, как система их смонтирует (за исключением журналируемых и сетевых файловых систем).

Скрипт cleanfs удаляет файлы, которые не нужны между перезагрузками, ткаие как файлы в /var/run и /var/lock. Он заново создает файл /var/run/utmp и удаляет /etc/nologin, /fastboot и /forcefsck.

Скрипт functions содержит общие для многих скриптов функции, такие как error и status.

Скрипт halt выключает систему.

Скрипты ifdown и ifup предназначены для работы сетевых скриптов с сетевыми устройствами.

Скрипт loadkeys загружает определенную Вами таблицу раскладки клавиатуры.

Скрипт localnet устанавливает имя системы и локальные устройства loopback.

Скрипт mountfs монтирует все файловые системы, которые не отмечены как noauto и не являются сетевыми.

Скрипт mountproc используется для монтирования файловой системы proc.

Скрипт network запускает сетевые интерфейсы, такие как сетевые карты, и определяет шлюз по умолчанию.

Скрипт rc является мастером уровней запуска. Он отвечает за выполнение других скриптов в порядке очередности.

Скрипт reboot перезагружает систему.

Скрипт sendsignals позволяет убедиться, что все запущенные поцессы были остановлены перед перезагрузкой или отключением системы.

Скрипт setclock сбрасывает часы ядра для локального времени в случае если аппаратные часы не установлены в GMT.

Скрипт swap включает и отключает своп-файлы и разделы.

Скрипт sysklogd запускает и останавливает демон протоколов системы и ядра.

Скрипт template является шаблоном, который Вы можете использовать для создания собственных загрузочных скриптов для других демонов.

Зависимости установки LFS-Bootscripts

Bzip2 зависит от Bash и Coreutils.

Lfs-Utils

Для получения инструкций по установке смотрите раздел "Установка Lfs-Utils-0.3 в главе 6 ".

Официальный адрес пакета

Lfs-utils (0.3):
http://www.linuxfromscratch.org/~winkie/downloads/lfs-utils.

Содержимое Lfs-Utils

Пакет Lfs-Utils содержит ряд разносторонних программ. используемых различными пакетами, которые, однако, недоступны в виде отдельных пакетов.

Устанавливаемые программы: mktemp, tempfile, http-get и iana-net.

Устанавливаемые файлы: protocols, services.

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

mktemp создает временные файлы в безопасном месте. Он используется в скриптах.

tempfile создает временные файлы менее безопасно, чем mktemp. Он устанавливается для обратной совместимости.

Скрипт http-get содержит расширение bash, называемое "сетевым перенаправлением". Он используется для скачивания с веб-сайтов без использования других программ.

iana-net используется скриптом http-get для простого доступа к настройкам сервисов и протоколов IANA.

Libtool

Для получения инструкций по установке смотрите раздел "Установка Libtool-1.5" в главе 6 .

Официальный адрес пакета

Libtool (1.5):
ftp://ftp.gnu.org/gnu/libtool.

Содержимое Libtool

GNU libtool является общей библиотекой поддержки скриптов. Libtool скрывает сложность использования распределенных библиотек под последовательным, переносимым интерфейсом.

Устанавливаемые программы: libtool и libtoolize.

Устанавливаемые библиотеки: libltdl.[a,so].

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

libtool предоставляет общие сервисы сборки библиотек.

libtoolize предоставляет стандартные средства для включения поддержки libtool в пакет.

libltdl скрывает различные сложности библиотек (dlopen).

Зависимости установки Libtool

Libtool зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

Linux (ядро)

Для получения инструкций по установке смотрите раздел "Установка Linux-2.4.22" в главе 8 .

Официальный адрес пакета

Linux (2.4.22):
ftp://ftp.kernel.org/pub/linux/kernel.

Содержимое Linux

Ядро Linux является основой любой системы Linux. Это то, что делает Linux таковой. Когда компьютер включается и загружает систему Linux, самым первым из всех программ Linux загружается ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. Если сказать иначе, то ядро делает аппаратные средства доступными, после чего программы могут запускаться.

Устанавливаемые файлы: ядро и заголовки ядра.

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

Ядро является мотором Вашей системы GNU/Linux. При включении компьютера ядро будет первой загруженной частью операционной системы. Оно определит и инициализирует все аппаратные компоненты компьютера, что сделает их доступными в виде дерева файлов для программ и переключает CPU в мультипроцессный режим для возможности одновременной работы нескольких программ.

Заголовки ядра определяют интерфейс для сервисов, которые поддерживаются ядром. Заголовки из системного каталога include должны быть всегда теми, с которыми была скомпилирована Glibc, и ни в коем случае не должны быть заменены при обновлении ядра.

Зависимости установки Linux

Linux зависит от Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl и Sed.

M4

Для получения инструкций по установке смотрите раздел "Установка M4-1.4" в главе 6.

Официальный адрес пакета

M4 (1.4):
ftp://ftp.gnu.org/gnu/m4 .

Содержимое M4

M4 является макропроцессором. Он копирует ввод в вывод, выполняя макросы. Макросы могут быть встроенными или определенными пользователем и могут получать любое количество параметров. Помимо простого выполнения макросов, m4 имеет встроеные функции для включения файлов, запуска команд Unix, целочисленных арифметических расчетов, различных манипуляций с текстом, рекурсии и другого. Программа m4 может использоваться в качестве обработчика для компилятора или как макропроцессор по Вашим собственным правилам.

Устанавливаемые программы: m4.

Зависимости установки M4

M4 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl и Sed.

Make

Для получения инструкций по установке смотрите раздел "Установка Make-3.80" в главе 6.

Официальный адрес пакета

Make (3.80):
ftp://ftp.gnu.org/gnu/make.

Содержимое Make

Make автоматически определяет, какие части большой программы ныждаются в перекомпиляции и отдает команду на их компиляцию.

Устанавливаемые программы: make.

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

make автоматически определяет, какие части большой программы нуждаются в перекомпиляции и отдает соответствующую команду.

Зависимости установки Make

Make зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep и Sed.

MAKEDEV

Для получения инструкций по установке смотрите раздел "Создание устройств (Makedev-1.7)" в главе 6.

Официальный адрес пакета

MAKEDEV (1.7):
http://downloads.linuxfromscratch.org.

Содержимое MAKEDEV

Скрипт MAKEDEV создает статические записи устройств, которые обычно расположены в каталоге /dev. Подробную информацию о записях устройств можно найти в файле Documentation/devices.txt в каталоге с исходными текстами ядра.

Устанавливаемый скрипт: MAKEDEV.

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

MAKEDEV скрипт для создания необходимых статических элементов устройств, обычно расположенных в каталоге /dev.

Зависимости установки MAKEDEV

Make зависит от Bash, Coreutils.

Man

Для получения инструкций по установке смотрите раздел "Установка Man-1.5m2" в главе 6.

Официальный адрес пакета

Man (1.5m2):
ftp://ftp.win.tue.nl/pub/linux-local/utils/man,
Man 80-Columns Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/man-1.5m2-80cols.patch,
Man Manpath Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/man-1.5m2-manpath.patch,
Man Pager Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/man-1.5m2-pager.patch.

Содержимое Man

Man является просмотрщиком man-страниц.

Устанавливаемые программы: apropos, makewhatis, man, man2dvi, man2html и whatis.

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

apropos ищет в базе данных whatis и отображает краткое описание системной команды, которое содержит указанную строку.

makewhatis создает базу данных whatis. Просматривает все страницы документации man в соответствующих путях и добавляет запись команды и ее краткое описание в базу данных whatis.

man форматирует и отображает запрошенную man-страницу.

man2dvi конвертирует man-страницу в формат dvi.

man2html конвертирует man-страницу в html.

whatis ищет в базе данных whatis и отображает краткое описание системной команды, содержащей указанное ключевое слово или несколько слов.

Зависимости установки Man

Man зависит от Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make и Sed.

Man-pages

Для получения инструкций по установке смотрите раздел "Установка Man-pages-1.60" в главе 6.

Официальный адрес пакета

Man-pages (1.60):
ftp://ftp.kernel.org/pub/linux/docs/manpages.

Содержимое Man-pages

Пакет Man-pages содержит более 1200 man-страниц. Эта документация подробно описывает функции C и C++, ряд важных файлов устройств и содержит документацию, не включенную по тем или иным прицинам в другие пакеты.

Устанавливаемые файлы: различные man-страницы.

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

Примером поставляемых man-страниц служит описание всех функций C и C++, важных файлов устройств и важных файлов конфигурации.

Зависимости установки Man-pages

Man зависит от Bash, Coreutils и Make.

Modutils

Для получения инструкций по установке смотрите раздел "Установка Modutils-2.4.25" в главе 6.

Официальный адрес пакета

Modutils (2.4.25):
ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils.

Содержимое Modutils

Пакет Modutils содержит программы, которые Вы можете использовать для работы с модулями ядра.

Устанавливаемые программы: depmod, genksyms, insmod, insmod_ksymoops_clean, kallsyms (ссылка на insmod), kernelversion, ksyms (ссылка на insmod), lsmod (ссылка на insmod), modinfo, modprobe (ссылка на insmod) и rmmod (ссылка на insmod).

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

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

genksyms генерирует символьную информацию о версиях.

insmod устанавливает загружаемый модуль в запущеное ядро.

insmod_ksymoops_clean удаляет сохраненную символьную информацию и модули не используемые в течение двух дней.

kallsyms извлекает все символы ядра для отладки.

kernelversion возвращает старшую версию запущенного ядра.

ksyms показывает экспортированные символя ядра.

lsmod показывает загруженные модули.

modinfo проверяет объектный файл, ассоциированный с модулем ядра, и выводит любую доступную информацию о нем.

modprobe использует файл зависимостей, созданный depmod, для автоматической загрузки необходимых модулей.

rmmod выгружает модули из запущенного ядра.

Зависимости установки Modutils

Modutils зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Flex, M4, GCC, Glibc, Grep, Make и Sed.

Ncurses

Для получения инструкций по установке смотрите раздел "Установка Ncurses-5.3" в главе 6 .

Официальный адрес пакета

Ncurses 5.3):
ftp://ftp.gnu.org/gnu/ncurses,
Ncurses Etip Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/ncurses-5.3-etip-2.patch,
Ncurses Vsscanf Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/ncurses-5.3-vsscanf.patch .

Содержимое Ncurses

Пакет Ncurses содержит библиотеки для создания интерфейса работы с символами и терминалами, включая панели и меню.

Устанавливаемые проограммы: captoinfo (ссылка на tic), clear, infocmp, infotocap (ссылка на tic), reset (ссылка на tset), tack, tic, toe, tput и tset.

Устанавливаемые библиотеки: libcurses.[a,so] (ссылка на libncurses.[a,so]), libform.[a,so], libmenu.[a,so], libncurses++.a, libncurses.[a,so], libpanel.[a,so].

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

captoinfo конвертирует описание termcap в описание terminfo.

clear очищает экран, если это возможно.

infocmp сравнивает или печатает описания terminfo.

infotocap конвертирует описание terminfo в описание termcap.

reset реинициализирует терминал со значениями по умолчанию.

tack проверяет действия terminfo. Он главным образом используется для тестирования корректировок элементов базы данных terminfo.

tic компилятор описаний записей terminfo. Он преобразует файл terminfo из исходного формата в двоичный, необходимый для работы библиотеки ncurses. Файл terminfo содержит информацию о возможностях соответствующего терминала.

toe выводит список всех доступных типов терминалов по их имени и описанию.

tput делает информацию о терминале доступной оболочке. Он также может использоваться для сброса или инициализации терминала или показа его полного имени.

tset может использоваться для инициализации терминала.

libncurses* содержит функции для отображения текста разными способами на экране терминала. Хорошим примером использования этих функций является меню, отображаемое при настройке параметров ядра командой make menuconfig.

libform* содержит функции работы с формами.

libmenu* содержит функции работы с меню.

libpanel* содержит функции работы с панелями.

Зависимости установки Ncurses

Ncurses зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

Net-tools

Для получения инструкций по установке смотрите раздел "Установка Net-tools-1.60" в главе 6.

Официальный адрес пакета

Net-tools (1.60):
http://www.tazenda.demon.co.uk/phil/net-tools,
Net-tools Mii-Tool-Gcc33 Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/net-tools-1.60-miitool-gcc33-1.patch .

Содержимое Net-tools

Пакет Net-tools содержит набор программ, которые формируют основу поддержки сетей в Linux.

Устанавливаемые программы: arp, dnsdomainname (ссылка на hostname), domainname (ссылка на hostname), hostname, ifconfig, nameif, netstat, nisdomainname (ссылка на hostname), plipconfig, rarp, route, slattach и ypdomainname (ссылка на hostname).

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

arp используется для манипулирования ARP-кэшем ядра, обычно для удаления или добавления элемента или для дампа элементов кэша.

dnsdomainname возвращает доменное DNS-имя системы.

domainname возвращает набор NIS/YP-доменных имен системы.

hostname возвращает набор имен текущей системы.

ifconfig главная утилита для настройки сетевых интерфейсов.

nameif присваивает имя сетевым интерфейсам на основе MAC-адресов.

netstat используется для получения отчета о сетевых соединениях, таблицах маршрутизации (routing tables) и статистики интерфейсов.

nisdomainname синоним domainname.

plipconfig используется для настройки параметров устройств PLIP и для обеспечения их работоспособности.

rarp используется для работы с RARP-таблицей ядра.

route используется для работы с таблицей IP-маршрутизации.

slattach присоединяет сетевой интерфейс к последовательному порту. Это позволяет Вам использовать обычные строковые терминалы для point-to-point соединений с другими компьютерами.

ypdomainname синоним domainname.

Зависимости установки Net-tools

Net-tools зависит от Bash, Binutils, Coreutils, GCC, Glibc и Make.

Patch

Для получения инструкций по установке смотрите раздел "Установка Patch-2.5.4" в главе 6.

Официальный адрес пакета

Patch (2.5.4):
ftp://ftp.gnu.org/gnu/patch.

Содержимое Patch

Программа patch модифицирует файлы в соответствии с файлом патча. Патч-файл обычно является списком, созданным программой diff, который содержит список инструкций по изменению оригинального файла.

Устанавливаемая программа: patch.

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

patch модифицирует файлы в соответствии с файлом патча. Патч-файл является списком, созданным программой diff. Применяя эти изменения к оригинальным файлам, patch создает их пропатченную версию. Используя патчи вместо цельных архивов с исходными текстами, Вы экономите время скачивания новых версий программ.

Зависимости установки Patch

Patch зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

Perl

Для получения инструкций по установке смотрите раздел "Установка Perl-5.8.0" в главе 6.

Официальный адрес пакета

Perl (5.8.0):
http://www.perl.com,
Perl Libc Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/perl-5.8.0-libc-3.patch .

Содержимое Perl

Пакет Perl содержит язык perl (Practical Extraction and Report Language). Perl сочетает достоинства C, sed, awk и sh в одном мощном языке.

Устанавливаемые программы: a2p, c2ph, dprofpp, enc2xs, find2perl, h2ph, h2xs, libnetcfg, perl, perl5.8.0 (ссылка на perl), perlbug, perlcc, perldoc, perlivp, piconv, pl2pm, pod2html, pod2latex, pod2man, pod2text, pod2usage, podchecker, podselect, psed (ссылка на s2p), pstruct (ссылка на c2ph), s2p, splain и xsubpp.

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

a2p переводит awk в perl.

c2ph делает дамп структур C, генерируемых командой "cc -g -S".

dprofpp отображает данные профиля perl.

en2cxs собирает расширение Perl для модулей Encode, из таблиц символов Unicode или файлов кодировки Tcl.

find2perl транслирует команды find в perl.

h2ph конвертирует файлы заголовков .h для C в файлы заголовков .ph для Perl.

h2xs конвертирует файлы заголовков .h для C в расширения Perl.

libnetcfg может использоваться для настройки libnet.

perl сочетает достоинства C, sed, awk и sh в одном мощном языке.

perlbug используется для генерации отчетов об ошибках в Perl или в поставляемых с ним модулях и их отправки по E-mail.

perlcc генерирует исполняемые файлы из программ Perl.

perldoc выводит часть документации в формате pod, которая расположена в дереве установки perl или в скриптах perl.

perlivp процедура верификации установки Perl. Она может быть применена для проверки того, насколько корректно был установлен как сам Perl, так и его библиотеки.

piconv Perl-реализация конвертера кодировок iconv.

pl2pm средство для конвертирования файлов Perl4 .pl в модули Perl5 .pm.

pod2html конвертирует файлы из формата pod в формат HTML.

pod2latex конвертирует файлы из формата pod в формат LaTeX.

pod2man конвертирует данные pod в форматированый вывод *roff.

pod2text конвертирует данные pod в форматированый текст ASCII.

pod2usage печатает сообщения usage из документов pod в файлах.

podchecker проверяет синтаксис формата pod-файлов документации.

podselect отображает выбранную часть документации pod.

psed Perl-реализация редактора потоков sed.

pstruct делает дамп C-структур, генерируемых "cc -g -S".

s2p транслирует sed в perl.

splain используется для пропуска полных диагностических сообщений perl.

xsubpp конвертирует Perl XS-код в код на языке C.

Зависимости установки Perl

Perl зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

Procinfo

Для получения инструкций по установке смотрите раздел "Установка Procinfo-18" в главе 6 .

Официальный адрес пакета

Procinfo (18):
ftp://ftp.cistron.nl/pub/people/svm.

Содержимое Procinfo

Программа procinfo собирает информацию о системе, такую как использование памяти и номера IRQ, из каталога /proc и форматирует эти данные в удобный вид.

Устанавливаемые программы: lsdev, procinfo и socklist.

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

lsdev выводит список устройств, присутствующих в Вашей системе, и используемые ими IRQ и порты ввода-вывода.

procinfo отображает инфоромацию из виртуальной файловой системы proc.

socklist выводит список открытых сокетов, показывает их тип, номер порта и другую информацию.

Зависимости установки Procinfo

Procinfo зависит от Binutils, GCC, Glibc, Make и Ncurses.

Procps

Для получения инструкций по установке смотрите раздел ""Установка Procps-3.1.11" в главе 6 .

Официальный адрес пакета

Procps (3.1.11):
http://procps.sourceforge.net,
Procps Locale Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/procps-3.1.11-locale-fix.patch .

Содержимое Procps

Пакет Procps содержит программы для мониторинга и завершения системных процессов. Procps получает информацию о процессах из каталога /proc.

Устанавливаемые программы: free, kill, pgrep, pkill, pmap, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w и watch.

Устанавливаемая библиотека: libproc.so.

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

free возвращает информацию о свободной и используемой памяти в системе, как физической, так и свопа.

kill используется для посылки сигналов процессам.

pgrep выводит список процессов, отфильтрованный по их именам и другим атрибутам.

pkill посылает сигналы процессам по их имени или другим атрибутам.

pmap возвращает карту памяти указанного процесса.

ps выводит список текущих процессов.

skill посылает сигналы процессам, попадающим под критерий.

snice изменяет приоритет выполнения процессов, соответствующих критериям.

sysctl модифицирует параметры ядра во время его работы.

tload отображает график загрузки системы.

top отображает загрузку процессора. Используется для слежения за активностью процессора в реальном времени.

uptime возвращает время работы системы, количество вошедших в нее пользователей и загрузку системы.

vmstat отображает статистику виртуальной памяти, включая информацию о процессах, памяти, страницах, блоках ввода-вывода, прерываниях и активности CPU.

w показывает сколько пользователей подключено к системе, где и как они подключились.

watch циклически выполняет указанную команду, выводя ее первый полный экран вывода. Это позволяет контролировать вывод все время.

libproc содержит функции, используемые большей частью программ этого пакета.

Зависимости установки Procps

Procps зависит от Bash, Binutils, Coreutils, GCC, Glibc, Make и Ncurses.

Psmisc

Для получения инструкций по установке смотрите раздел "Установка Psmisc-21.3" в главе 6 .

Официальный адрес пакета

Psmisc (21.3):
http://download.sourceforge.net/psmisc,
ftp://download.sourceforge.net/pub/sourceforge/psmisc.

Содержимое Psmisc

Пакет Psmisc содержит три программы для работы с каталогом /proc.

Устанавливаемые программы: fuser, killall и pstree.

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

fuser возвращает PID процессов, которые используют указанные файлы или фаловые системы.

killall завершает процессы по имени. Он посылает сигнал всем процессам, запущенным одной из указанных в параметре команд.

pidof возвращет PID указанных программ. Вместо этой программы используется pidof из Sysvinit.

pstree отображает дерево запущенных процессов.

Зависмости установки Psmisc

Psmisc зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses и Sed.

Sed

Для получения инструкций по установке смотрите раздел "Установка Sed-4.0.7" в главе 6.

Официальный адрес пакета

Sed (4.0.7):
ftp://ftp.gnu.org/gnu/sed.

Содержимое Sed

Sed является редактором потоков. Редактор потоков используется для простых преобразований текста со ввода потока (файла или из командной строки).

Устанавливаемые программы: sed.

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

sed используется для однопроходной фильтрации и преобразования текстовых файлов.

Зависимости установки Sed

Sed зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Texinfo.

Shadow

Для получения инструкций по установке смотрите раздел "Установка Shadow-4.0.3" в главе 6 .

Официальный адрес пакета

Shadow (4.0.3):
ftp://ftp.pld.org.pl/software/shadow,
Shadow Newgrp Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/shadow-4.0.3-newgrp-fix.patch .

Содержимое Shadow

Пакет Shadow усиливает безопасность системных паролей.

Устанавливаемые программы: chage, chfn, chpasswd, chsh, dpasswd, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck, grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers, passwd, pwck, pwconv, pwunconv, sg (ссылка на newgrp), useradd, userdel, usermod, vigr (ссылка на vipw) и vipw.

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

chage используется для изменения максимального количества дней до обязательной смены пароя.

chfn используется для изменения полного имени пользователя и некоторой другой информации.

chpasswd используется для обновления паролей пользовательских логинов.

chsh используется для изменения оболочки пользователя по умолчанию.

dpasswd используется для изменения dial-up паролей для пользовательских оболочек.

expiry проверяет и изменяет правила использования паролей.

faillog используется для обработки протоколов ошибочных входов в систему, для установки лимита на ошибки входа до блокирования логина или для сброса счетчика этих ошибок.

gpasswd используется для добавления или удаления членов и администраторов групп.

groupadd создает группу с указанным именем.

groupdel удаляет группу с указанным именем.

groupmod используется для изменения имени указанной группы или ее GID.

groups возвращает группы. членом которых является указанный пользователь.

grpck проверяет целостность файлов групп /etc/group и /etc/gshadow.

grpconv создает или обновляет теневой файл групп, используя обычный файл групп.

grpunconv обновляет /etc/group из /etc/gshadow и удаляет последний.

lastlog отчитывается о входах пользователей или указанного пользователя в систему.

login используется для начала новой сессии работы с системой.

logoutd демон, контролирующий время регистрации и порты.

mkpasswd шифрует указанный пароль указанным алгоритмом.

newgrp используется для изменения текущего GID рабочей сессии.

newusers используется для создания или обновления пользовательских логинов.

passwd используется для изменения пароля пользователя или группы.

pwck проверяет целостность файлов паролей /etc/passwd и /etc/shadow.

pwconv создает или обновляет теневой файл паролей, используя обычный файл паролей.

pwunconv обновляет /etc/passwd из /etc/shadow и удаляет последний.

sg выполняет указанную команду с правами группы с указанным GID.

useradd создает нового пользователя с указанным именем или обновляет информацию по умолчанию для новых пользователей.

userdel удаляет указанный пользовательский логин.

usermod используется для модификации указанного имени пользователя, UID, оболочки, группы, домашнего каталога и т. п.

vigr может использоваться для редактирования файлов /etc/group или /etc/gshadow.

vipw может использоваться для редактирования файлов /etc/passwd или /etc/shadow.

libshadow содержит функции, используемые большинством программ этого пакета.

Зависимости установки Shadow

Shadow зависит от Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

Sysklogd

Для получения инструкций по установке смотрите раздел "Установка Sysklogd-1.4.1" в главе 6.

Официальный адрес пакета

Sysklogd (1.4.1):
http://www.infodrom.org/projects/sysklogd.

Содержимое Sysklogd

Пакет Sysklogd содержит программы для записи протоколов системы, таких как отчеты ядра.

Устанавливаемые программы: klogd и syslogd.

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

klogd системный демон для перехвата и протоколирования сообщений ядра.

syslogd протоколирует сообщения посланные системными программами для протоколирования событий. Все сообщения содержат время и имя системы, обычно также имя программы, а остальные сведения зависят от программы.

Зависимости установки Sysklogd

Sysklogd зависит от Binutils, Coreutils, GCC, Glibc и Make.

Sysvinit

Для получения инструкций по установке смотрите раздел "Установка Sysvinit-2.85" в главе 6 .

Официальный адрес пакета

Sysvinit (2.85):
ftp://ftp.cistron.nl/pub/people/miquels/sysvinit.

Содержимое Sysvinit

Пакет Sysvinit содержит программы для контроля запуска работы и завершения всех остальных программ.

Устанавливаемые программы: halt, init, killall5, last, lastb (ссылка на last), mesg, pidof (ссылка на killall5), poweroff (ссылка на halt), reboot (ссылка на halt), runlevel, shutdown, sulogin, telinit (ссылка на init), utmpdump и wall.

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

halt обычно вызывает shutdown с параметром -h, если текущй уровень запуска не 0, затем отдает команду ядру на отключение системы. Но сначала записывает в файл /var/log/wtmp, что система отключается.

init материнский процесс для всех остальных. Он считывает команды из файла /etc/inittab, которые обычно говорят, какие скрипты запускать для текущего уровня запуска и сколько создавать getty.

killall5 посылает сигнал всем процессам, за исключением родительских процессов, таким образом он не завершит оболочку, вызвавшую скрипт.

last показывает, какие пользователи подключены и отключены в системе, просматривая файл /var/log/wtmp. Он также может отображать загрузки и отключения системы и все изменения уровней запуска.

lastb показывает ошибки входа в систему, отмеченные в /var/log/btmp.

mesg контролирует возможность отправки другими пользователями сообщений на текущий терминал пользователя.

pidof возвращает PID указанных программ.

poweroff передает ядру команду на отключение системы и выключение компьютера. См. halt.

reboot передает ядру команду на перезагрузку системы. См. halt.

runlevel возвращает предыдущий и текущий уровни запуска, последний уровень запуска записан в файле /var/run/utmp.

shutdown безопасно отключает систему, отсылает сигнал всем процессам и уведомляет всех подключенных пользователей.

sulogin подключает к системе суперпользователя. Обычно используется в скрипте init, когда система загружается в однопользовательском режиме.

telinit посылает init уведомление о необходимости смены уровня запуска.

utmpdump отображает содержимое указанного login-файла в удобочитаемом формате.

wall пишет сообщение всем подключенным пользователям.

Зависимости установки Sysvinit

Sysvinit зависит от Binutils, Coreutils, GCC, Glibc и Make.

Tar

Для получения инструкций пао установке смотрите раздел "Установка Tar-1.13.25" в главе 6.

Официальный адрес пакета

Tar (1.13.25):
ftp://alpha.gnu.org/gnu/tar.

Содержимое Tar

Tar является архиватором предназначенным для сохранения в файле архива, известного как tar-файл, или извлечения из него файлов.

Устанавливаемые программы: rmt и tar.

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

rmt используется для удаленного управления приводами магнитных лент через межпроцессорное связное соединение.

tar используется для сохранения в файле архива, известного как tar-файл, или извлечения из него файлов.

Зависимости установки Tar

Tar зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep и Make, Sed.

Tcl

Для получения инструкций по установке смотрите раздел "Установка Tcl-8.4.4" в главе 5.

Официальный адрес пакета

Tcl (8.4.4):
http://download.sourceforge.net/tcl,
ftp://download.sourceforge.net/pub/sourceforge/tcl.

Содержимое Tcl

Пакет Tcl содержит язык Tool Command Language.

Устанавливаемые программы: tclsh (ссылка на tclsh8.4), tclsh8.4.

Устанавливаемая библиотека: libtcl8.4.so.

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

tclsh8.4 командная оболочка Tcl.

libtcl8.4.so библиотека Tcl.

Зависимости установки Tcl

Tcl зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

Texinfo

Для получения инструкций по установке смотрите раздел "Установка Texinfo-4.6" в главе 6 .

Официальный адрес пакета

Texinfo (4.6):
ftp://ftp.gnu.org/gnu/texinfo.

Содержимое Texinfo

Пакет Texinfo содержит программы, используемые для чтения, записи и конвертирования документов Info, которые содержат системную документацию.

Устанавливаемые программы: info, infokey, install-info, makeinfo, texi2dvi и texindex.

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

info используется для чтения документов Info. Документы Info похожи на man-страницы. но содержат больше, чем простое описание опций программы. Сравните для примера man tar и info tar.

infokey компилирует файл с исходными текстами, содержащий персонализацию Info, в двоичный формат.

install-info используется для установки файлов Info. Он обновляет записи в файле индекса Info.

makeinfo преобразует указанный файл документации исходников Texinfo в различные другие форматы: файлы Info, текст или HTML.

texi2dvi используется для форматирования указанного документа Texinfo в аппаратно-независимый файл, который может быть распечатан.

texindex используется для сортировки файла индекса Texinfo.

Зависимости установки Texinfo

Texinfo зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses и Sed.

Util-linux

Для получения инструкций по установке смотрите раздел "Установка Util-linux-2.12" в главе 6.

Официальный адрес пакета

Util-linux (2.12):
http://ftp.cwi.nl/aeb/util-linux.

Содержимое Util-linux

Пакет Util-linux содержит ряд различных утилит. Некоторые из наиболее используемых утилит монтируют, размонтируют и обеспечивают работу с дисками, открывают порты tty и отправляют различные сообщения ядру.

Устанавливаемые программы: agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock, ipcrm, ipcs, isosize, kill, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash, parse.tcsh, pg, pivot_root, ramsize (ссылка на rdev), raw, rdev, readprofile, rename, renice, rev, rootflags (ссылка на rdev), script, setfdprm, setsid, setterm, sfdisk, swapoff (ссылка на swapon), swapon, test.bash, test.tcsh, tunelp, ul, umount, vidmode (ссылка на rdev), whereis и write.

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

agetty открывает порт tty, запрашивает имя пользователя и запускает программу login.

arch возвращает архитектуру машины.

blockdev позволяет вызвать ioctl блочного устройства из командной строки.

cal отображает простой календарь.

cfdisk используется для монипуляций с таблицей разделов указанного устройства.

chkdupexe ищет дубликаты исполняемых файлов.

col фильтрует перевернутые строки, поступающие со ввода.

colcrt используется для фильтрации вывода nroff для терминалов CRT.

colrm отфильтровывает указанные колонки.

column форматирует указанный файл в несколько колонок.

ctrlaltdel устанавливает функцию для комбинации клавиш Ctrl+Alt+Del для аппаратного или программного сброса.

cytune используется для настройки параметров драйверов последовательного порта для карт Cyclades.

ddate выдает Discordian дату или конвертирует указанную дату по Григорианскому календарю в Discordian-дату.

dmesg выводит загрузочные сообщения ядра.

elvtune может использоваться для настройки работы и взаимодействия блочных устройств.

fdformat низкоуровневое форматирование дискет.

fdisk может использоваться для манипуляций с таблицей разделов указанного устройства.

fsck.cramfs проводит проверку целостности файловой системы Cramfs на указанном устройстве.

fsck.minix проводит проверку целостности файловой системы Minix на указанном устройстве.

getopt анализирует параметры командной строки.

hexdump отображает заданный файл в шестнадцатиричном или другом указанном формате.

hwclock используется для чтения или установки аппаратных часов системы (также называемых RTC или BIOS-часами).

ipcrm удаляет указанный ресурс IPC.

ipcs отображает статус IPC.

isosize возвращает размер файловой системы iso9660.

kill прерывает заданные процессы.

line копирует строку.

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

look выводит строки, начинающиеся с указанной подстроки.

losetup используется для установки и управления loop-устройствами.

mcookie генерирует "магические" ключи для xauth.

mkfs используется для создания файловой системы на устройстве (обычно в разделе жесткого диска).

mkfs.bfs создает файловую систему SCO bfs.

mkfs.cramfs создает файловую систему cramfs.

mkfs.minix создает файловую систему Minix.

mkswap инициализирует указанное устройство или файл для использования в качестве свопа.

more фильтр для постраничного вывода текста. Но less намного лучше.

mount присоединяет файловую систему на указанном устройстве к указанному каталогу в дереве системных файлов.

namei показывает символические ссылки в указанных путях.

pg постранично отобрахает текстовый файл.

pivot_root делает указанную файловую системы корневой для текущих прооцессов.

ramsize может использоваться для установки размера RAM-диска в загрузочной карте.

rdev может использоваться для запроса и установки корневого устройства и других параметров карты загрузки.

readprofile считывает профильную информацию ядра.

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

renice используется для изменения проритета выполнения работающего процесса.

rev переворачивает строки в указанном файле.

rootflags может использоваться для установки или снятия параметров корневой файловой системы в карте загрузки.

script создает скрипт терминальной сессии.

setfdprm устанавливает пользовательские параметры дискеты.

setsid запускает указанную программу в новой сессии.

setterm используется для установки атрибутов терминала.

sfdisk манипулирует таблицами разделов дисков.

swapdev может использоваться для установки свопа в карте загрузки.

swapoff отключает устройства или файлы свопа.

swapon подключает устройства или файлы свопа.

tunelp используется для настройки параметров LP-устройств.

ul фильтр для перевода знаков подчеркивания в escape-последовательности подчеркивания текущего терминала.

umount отключает файловую систему от дерева системных файлов.

vidmode может использоваться для установки видеорежима в карте загрузки.

whereis возвращает местоположение двоичных модулей, исходных текстов или man-страниц для указанной команды.

write посылает сообщение указанному пользователю в том случае, если пользователь не отключил эту возможность.

Зависимости установки Util-linux

Util-linux зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed и Zlib.

Vim

Для получения инструкций по установке смотрите раздел "Установка Vim-6.2" в главе 6.

Официальный адрес пакета

Vim (6.2):
ftp://ftp.vim.org/pub/editors/vim/unix.

Содержимое Vim

Пакет Vim содержит настраиваемый текстовый редактор предназначеный для эффективного редактирования текстов.

Устанавливаемые программы: efm_filter.pl, efm_perl.pl, ex (ссылка на vim), less.sh, mve.awk, pltags.pl, ref, rview (ссылка на vim), rvim (ссылка на vim), shtags.pl, tcltags, vi (ссылка на vim), view (ссылка на vim), vim, vim132, vim2html.pl, vimdiff (ссылка на vim), vimm, vimspell.sh, vimtutor и xxd.

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

efm_filter.pl фильтр для создания файла ошибки, который может быть прочитан vim.

efm_perl.pl переформатирует сообщения об ошибках интерпретатора Perl для использования в режиме quickfix для vim.

ex запускает vim в режиме ex.

less.sh скрипт, запускающий vim с less.vim.

mve.awk обрабатывает ошибки vim.

pltags.pl создает файл тегов кода perl для использования vim.

ref проверяет написание параметров.

rview урезанная версия view: нет поддержки команд оболочки и не может быть приостановлен view.

rvim урезанная версия vim: нет поддержки команд оболочки и не может быть приостановлен vim.

shtags.pl генерирует файл тегов для скриптов perl.

tcltags генерирует файл тегов для кода TCL.

vi запускает vim в режиме vi-совместимости.

view запускает vim в режиме "только для чтения".

vim собственно редактор.

vim132 запускает vim в режиме 132-колоночного терминала.

vim2html.pl конвертирует документацию vim в HTML.

vimdiff редактирует две или три версии файла в vim и показывает различия.

vimm включает модель ввода DEC locator на удаленном терминале.

vimspell.sh скрипт, который просматривает файл и генерирует синтаксические выражения, подсвечиваемые в vim.

vimtutor обучает Вас основным командам и горячим клавишам vim.

xxd отображает двоичный код в шестнадцатиричном формате. Он также может работать в обратном направлении, что позволяет использовать его для правки двоичных модулей.

Зависимости установки Vim

Vim зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

Zlib

Для получения инструкций по установке смотрите раздел "Установка Zlib-1.1.4" в главе 6.

Официальный адрес пакета

Zlib (1.1.4):
http://www.gzip.org/zlib,
Zlib Vsnprintf Patch:
http://www.linuxfromscratch.org/patches/lfs/5.0/zlib-1.1.4-vsnprintf.patch .

Содержимое Zlib

Пакет Zlib содержит библиотеку libz, которая используется некоторыми программами для своих функций сжатия и распаковки.

Устанавливаемые библиотеки: libz[a,so].

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

libz* содержит функции сжатия и распаковки, используемые некоторыми программами.

Зависимости установки Zlib

Zlib зависит от Binutils, Coreutils, GCC, Glibc, Make и Sed.

aeb/util-linux"> http://ftp.cwi.nl/aeb/util-linux.

Содержимое Util-linux

Пакет Util-linux содержит ряд различных утилит. Некоторые из наиболее используемых утилит монтируют, размонтируют и обеспечивают работу с дисками, открывают порты tty и отправляют различные сообщения ядру.

Устанавливаемые программы: agetty, arch, blockdev, callfs50rus/appb.htm 600 0 0 117277 10740542764 7224 Список программ и библиотек

Приложение B. Список программ и библиотек

Это список программ и библиотек, устанавливаемых в этой книге, со ссылками на подробное описание всех содержащих их пакетов в Приложении A.

>Ncurses
  • resize2fs : E2fsprogs
  • resizecons : Kbd
  • rev : Util-linux
  • rlogin : Inetutils
  • rm : Coreutilfs50rus/chap01.htm 600 0 0 151706 10740542764 7351 Вступление

    Глава 1. Вступление

    Содержание
    Как Вы будете работать
    Соглашения, используемые в книге
    Версия книги
    Список изменений
    Ресурсы
    Благодарности
    Как Вы будете работать

    Вы собираетесь собрать LFS-систему, используя ранее установленный дистрибутив Linux (такой как Debian, Mandrake, Red Hat или SuSE). Эта существующая Linux-система (основа) будет использована как отправная точка, потому, что будут необходимы некоторые программы, такие как компилятор, компоновщик и командный интерпретатор для сборки системы. Обычно все перечисленные средства доступны, если при установке дистрибутива Вы отметили пункт "разработка" ("development").

    В главе 3 Вы сначала создадите новый раздел Linux native и файловую систему, место для компиляции и установки LFS-системы. Затем в главе 4 Вы скачаете все необходимые пакеты и патчи для LFS-системы и сохраните их в новой файловой системе.

    Глава 5 описывает установку ряда пакетов, которые составят среду разработки (или инструментальные средства) с помощью которых Вы соберете систему в главе 6. Некоторые из этих пакетов являются рекурсивно зависимыми: к примеру, компилятору для компиляции тоже нужен компилятор.

    Первым делом в главе 5 Вы соберете инструментальные средства: Binutils и GCC. Программы из этих пакетов будут скомпонованы статически для того, чтобы обеспечить независимость при их использовании от основной системы. После этого Вы соберете Glibc, библиотеку C. Glibc будет скомпилирована с использованием средств, собранных ранее. Затем Вы соберете средства снова. На этот раз Ваши средства будут динамически скомпонованы с использованием только что собранной Glibc. Все остальные пакеты из главы 5 будут собраны с использованием новых средств и динамически скомпонованы с использованием новой, независимой от основной системы, Glibc. Когда Вы все сделаем, дальнейший процесс установки LFS не будет более зависеть от основного дистрибутива и запущенного ядра.

    Это большая работа, почему надо обязательно не зависеть от основного дистрибутива? Техническое описание ответа на этот вопрос содержится в самом начале главы 5, включая описание разницы между статически и динамически скомпонованными программами.

    В главе 6 система LFS быдет собрана. С помощию программы chroot (change root) Вы войдете в виртуальную среду и запустите интерпретатор команд с использованием в качестве корневого каталога раздела LFS. Это намного проще перезагрузки и указаний для ядра использовать раздел LFS в качестве корневого. Помимо этого, чтобы перезагрузиться, а не использовать chroot, надо создать полностью способную к загрузке систему, что Вы еще не сделали к этому времени. Но главной причиной при использовании chroot является то, что Вы можете использовать основную систему во время сборки LFS. Пока идет компиляция, Вы можете просто переключится на другую VC (Virtual Console) или на X (графический сервер) и продолжить нормальное использование компьютера.

    В заключение установки Вы установите загрузочные скрипты в главе 7, ядро и загрузчик в главе 8, а глава 9 содержит некоторые моменты, которые могут помочь по окончании прочтения книги. В конце концов Вы будете готовы перезагрузить компьютер в Вашу новую LFS-систему.

    Это общее описание процесса. Более детальная информация содержится в соответствующих главах и описаниях пакетов. Если что-то не совсем ясно сейчас, не волнуйтесь, со временем Вы все поймете.

    Пожалуйста, прочтите главу 2 внимательно, она содержит важную информацию, которую Вы должны принять к сведению перед работой с главой 5 и последующими главами.

    Соглашения, используемые в книге

    Для облегчения понимания книги, ознакомьтесь с некоторыми соглашениями, которые будут в ней использованы:

    ./configure --prefix=/usr
    

    Текст такого формата предназначен для набора в командной строке в точности как на экране, помимо случаев, когда даны другие указания. Также он используется в пояснительных разделах для пояснения команды, о которой идет речь.

    install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir'

    Текст такого формата (моноширный) показывает вывод на экран, как результат выполнения какой-либо команды. Также он используется для указания имени файла, например /etc/ld.so.conf.

    Выделение

    Текст такого формата имеет несколько назначений в книге. В основном, он используется для подчеркивания наиболее важных моментов и для примеров.

    http://www.linuxfromscratch.org

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

    cat > $LFS/etc/group << "EOF"
    root:x:0:
    bin:x:1:
    ......
    EOF
    

    Такой раздел используется, в основном длоя создания файлов конфигурации. Первая команда говорит системе создать файл $LFS/etc/group, наполняя его строчками до EOF. В командной строке эта секция печатается в точности как на экране.

    Это версия 5.0 книги Linux From Scratch, датированная 5-м ноября 2003 г. Если этой книге больше двух месяцев, то более новая и улучшенная версия, возможно, уже есть на одном из зеркал из списка на http://www.linuxfromscratch.org.

    Список изменений

    5.0: 5 ноября 2003

    Release of version 4.1 on April 28th, 2003.

    Ресурсы

    ЧАВО

    Если в процессе построения Вашей системы LFS Вы обнаружили ошибку, у Вас возникли вопросы, или Вы считаете, что в книгу вкралась опечатка, то просмотрите в первую очередь ЧАВО (ЧАсто задаваемые ВОпросы) на http://www.linuxfromscratch.org/faq.

    IRC

    Множество членов сообщества LFS используют IRC-сервер сообщества. Перед тем как использовать этот вид поддержки, проверьте LFS ЧАВО и архивы списков рассылки. Возможно, на Ваш вопрос уже есть ответ. Вы сможете найти IRC-сервер на irc.linuxfromscratch.org, порт 6667. Канал поддержки называется #LFS-support.

    Списки рассылки

    На linuxfromscratch.org есть несколько списков рассылки, используемых разработчиками проекта LFS. Эти списки включают, помимо прочего, список разработчиков и список поддержки.

    За информацией о доступных списках рассылки, подписки на них, просмотра их архивов и т. п. загляните на http://www.linuxfromscratch.org/mail.html.

    Сервер новостей

    Все списки рассылки с linuxfromscratch.org также доступны в виде NNTP-сервера. Все сообщения, отправленные в списки рассылки, копируются в соответствующую группу новостей.

    Сервер новостей доступен по адресу news.linuxfromscratch.org.

    Зеркала сайта

    Проект LFS имеет ряд зеркал в сети. Список зеркал можно увидеть на http://www.linuxfromscratch.org .

    Контактная информация

    Пожалуйста, направляйте все Ваши вопросы и комментарии в списки рассылки LFS (см. выше).

    Но если Вы хотите обратиться лично к Джерарду Бикмансу, то пишите на gerard@linuxfromscratch.org.

    Благодарности

    Я хочу поблагодарить следующих людей и организации за их вклад в развитие проекта Linux From Scratch. Никто не забыт, и ничто не забыто...

    Члены группы проекта

    Переводчики

    Поддержка зеркал

    Материальная поддержка

    Члены команды формирования

    h2>

    Пожалуйста, направляйте все Ваши вопросы и комментlfs50rus/chap02.htm 600 0 0 21402 10740542764 7317 Важная информация

    Глава 2. Важная информация

    Содержание
    О $LFS
    О SBU
    О тестировании
    Как просить о помощи

    О $LFS

    Пожалуйста, внимательно прочитайте этот раздел. В этой книге будет часто использоваться переменная LFS. $LFS должно будет всегда заменяться на каталог примонтированого раздела для будущей системы LFS. О том, как создать такой раздел, будет подробно написано в главе 3. К примеру, пусть раздел LFS будет смонтирован в /mnt/lfs.

    Когда Вас попросят выполнить команду ./configure --prefix=$LFS/tools, следует выполнить ./configure --prefix=/mnt/lfs/tools.

    Важно всегда использовать ее подобным образом: в командной строке или в создаваемых файлах.

    Но можно облегчить задачу, задав переменную окружения LFS. Таким образом, $LFS будет автоматически восприниматься системой как /mnt/lfs. Это достигается командой:

    export LFS=/mnt/lfs
    

    Теперь, когда Вас просят выполнить команду ./configure --prefix=$LFS/tools, надо набрать ее как есть. Ваш интерпритатор сам заменит "$LFS" на "/mnt/lfs" когда Вы нажмете Enter после ввода команды.

    О SBU

    Многие люди хотят заранее знать. сколько займет сборка и установка того или иного пакета. Но "Linux from Scratch" собирается на разных системах. и невозможно точно указать этот отрезок времени: самый большой пакет (Glibc) может собраться менее чем за 20 минут на быстрой системе, но может собираться и больше трех дней на медленной. В связи с этим я решил использовать для указания времени сборки и установки пакета SBU (Static Binutils Unit): время статической сборки и установки пакета Binutils.

    Это используется следующим образом: первым пакетом, который надо будет собрать в этой книге, является статически скомпонованый Binutils в главе 5, и время его компиляции берется за "Static Binutils Unit" или "SBU". Время компиляции всех других пакетов выражается через эту единицу.

    К примеру, сборка статически скомпонованной версии GCC занимает 4.4 SBU. Это значит, что если Вашей системе понадобилось 10 минут на сборку статической версии Binutils, то сборка GCC займет 44 минуты. Как Вы увидите, время сборки большинства пакетов меньше, чем у Binutils.

    Примите к сведению, что если системный компилятор основной системы базируется на GCC-2, то указанный SBU будет неверным. Это происходит по причине того, что SBU основан на самом первом из скомпилированых пакетов, который собран с помощью старого GCC, а при сборке остальной части системы будет использоваться GCC-3.3.1 который работает на 30% медленнее.

    Также SBU нельзя будет использовать на SMP-машинах. Если Вы являетесь обладателем многопроцессорного компьютера, то эта единица будет неточной, за счет распараллеливания выполняемых процессов на разные процессоры.

    О тестировании

    Многие из пакетов поддерживают тестирование. Запуск его для только что собранного пакета будет хорошей идеей, так как можно будет проверить корректность компиляции. Тестирование содержит несколько тестов для проверки функциональности пакета. Это в какой-то мере может гарантировать полное отсутствие ошибок в программе.

    Некоторые тестирования более важны. чем другие. К примеру, тестирование пакетов с основными средствами, GCC, Binutils и Glibc (библиотека C), которые играют решающую роль для общей функциональности системы. Но учтите, что тестирование GCC и Glibc может занять весьма продолжительное время, особенно на медленном оборудовании.

    В процессе чтения книги Вам встретятся команды запуска различных тестов. Вам решать, стоит ли их запускать или нет. Каждый раз будут приводится аргументы за и против запуска этих команд и их важность для системы.

    Примечание: Общей проблемой при запуске тестов для Binutils и GCC является запуск вне терминала (PTY, для краткоти). Симптомом ее является большое количество неудачных тестов. Это может происходить по многим причинам. Наиболее распространенная: Ваша основная система не имеет корректно установленной файловой системы devpts. Я более подробно опишу это в главе 5.

    Как просить о помощи

    Если Вы столкнетесь с проблемой при использовании этой книги, и Ваша проблема не будет описана в ЧАВО ( http://www.linuxfromscratch.org/faq), то множество людей в Internet Relay Chat (IRC) и в списках рассылки будут рады Вам помочь. Обзор списков рассылки LFS Вы можете найти в главе 1. Для получения помощи в диагностике и устранении проблемы надо будет дать наиболее полную информацию о ней в своем вопросе.

    Что необходимо указать

    Помимо краткого сообщения об ошибке, не забудьте привести следующую информацию:

    Имейте в виду, что если Вы скажете, что отклонялись от действий, описанных в книге, то это еще не значит, что Вам не помогут. Все-таки LFS это выбор. Просто это поможет решить Вашу проблему.

    Проблемы конфигурации

    Если что-то пошло не так при выполнении скрипта configure, то посмотрите в файле config.log. Этот файл содержит ошибки, которые не были выведены на экран. Включите информацию из этого файла в просьбу о помощи.

    Проблемы при компиляции

    Для того, чтобы помочь найти причину проблемы, важен как вывод на экране, так и содержание некоторых файлов. Вывод на экране из скрипта ./configure и команды make содержат много полезной информации. Не стоит слепо включать в свое сообщение весь вывод, но и не следует включать слишком мало информации. Ниже приведен вывод на экран команды make:

    gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
    -DLOCALEDIR=\"/mnt/lfs/usr/share/locale\" -DLIBDIR=\"/mnt/lfs/usr/lib\"
    -DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
    -g -O2 -c getopt1.c
    gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o expand.o file.o function.o getopt.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o variable.o vpath.o default.o remote-stub.o version.o opt1.o -lutil job.o: In function `load_too_high': /lfs/tmp/make-3.79.1/job.c:1565: undefined reference to `getloadavg' collect2: ld returned 1 exit status make[2]: *** [make] Error 1 make[2]: Leaving directory `/lfs/tmp/make-3.79.1' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/lfs/tmp/make-3.79.1' make: *** [all-recursive-am] Error 2

    В этом случае большинство людей включают в сообщение строку:

    make [2]: *** [make] Error 1
    

    и все, что после нее. Но этого недостаточно для решения проблемы потому, что это только скажет что что-то не так, но не скажет что именно не так. В сообщение с просьбой помочь необходимо включить всю секцию вывода, так как она содержит выполненные команды и их сообщения об ошибках.

    В Интернете есть отличная статья о том, как надо правильно задавать вопросы, написанная Эриком С. Раймондом. Ее можно найти на http://catb.org/~esr/faqs/smart-questions.html. Прочтите эту статью и примите ее к сведению при задавании вопросов, тогда шансы получить полный и квалифицированный ответ значительно возрастут.

    Проблемы при тестировании

    Многие пакеты поддерживают тестирование, и я, в зависимости от его важности, буду советовать Вам запускать его. Иногда пакеты выдают ошибки. Если это случилось, посмотрите страничку LFS Wiki на http://wiki.linuxfromscratch.org , возможно, там уже нашли способ ее решения. Если там уже знают о проблеме, Вам не стоит беспокоится.

    линых баннеров LFS.
  • Simon Perreault <nomis80@videotron.ca>: поддержка Hints Project.
  • Geert Poels <Geert.Poels@skynet.be>: создательlfs50rus/chap03.htm 600 0 0 12671 10740542764 7330 Подготовка нового раздела

    Глава 3. Подготовка нового раздела

    Содержание
    Вступление
    Создание нового раздела
    Создание файловой системы на новом разделе
    Монтирование нового раздела

    Вступление

    В этой главе Вы подготовите раздел для Вашей новой LFS-системы. Вы создадите раздел, установите в нем файловую систему и смонтируете ее.

    Создание нового раздела

    Для сборки новой Linux-системы будет нужно некоторое место: пустой раздел диска. Если у Вас дифицит со свободным местом, то можете, в принципе, собрать LFS на том же разделе, где установлен нынешний дистрибутив. Это не рекомендуется для первой установки LFS, но если мало свободного места на диске, и Вы очень смелый, то посмотрите справку на http://www.linuxfromscratch.org/hints/downloads/files/lfs_next_to_existing_systems.txt.

    Для минимальной системы понадобится раздел около 1.2 GB. Это позволит сохранить все исходные тексты и архивы и собрать все пакеты. Но если Вы хотите установить LFS в качестве основной Linux-системы, то, видимо, понадобятся дополнительные программы, и надо будет больше места, возможно, около 2 или 3 GB.

    Для того, чтобы всегда хватало памяти RAM, неплохо было бы использовать небольшой раздел диска для свопа (swap space): это место будет использоваться ядром для сохранения редко используемых данных из памяти для увеличения объема доступной памяти за счет этого раздела. Своп может быть одним для всех Ваших систем: LFS и основной, так что не надо создавать второй своп-раздел, если у Вас один уже есть.

    Программы для оперирования разделами, такие как cfdisk или fdisk, запускаются с именем диска, на котором будет производится изменение. в кочестве параметра: к примеру, /dev/hda для первого IDE-диска. Создайте Linux native и своп разделы в случае надобности. Пожалуйста, внимательно изучите руководства по cfdisk или по fdisk, если Вы не знаете, как использовать эти программы.

    Запомните расположение нового раздела, что-то наподобие hda5. Эта книга ссылается на этот раздел как на "раздел LFS". Если у Вас есть своп-раздел, то запоните и его расположение. Оно еще понадобится для файла /etc/fstab.

    Создание файловой системы на новом разделе

    Теперь есть пустой раздел и надо создать на нем файловую систему. Наиболее используемой системой в Linux является extended file system 2 (ext2), но современные высококачественные жесткие диски делают более популярными журналируемые файловые системы. Здась Вы создадите файловую системы ext2, но инструкции по установке других файловых систем можно найти на http://www.linuxfromscratch.org/blfs/view/stable/postlfs/filesystems.html.

    Для создания файловой системы ext2 в разделе LFS необходимо выполнить:

    mke2fs /dev/xxx
    

    Замените xxx на имя Вашего раздела LFS (что-то типа hda5).

    Если Вы создали новый своп-раздел, то необходимо инициализировать и его запуском команды:

    mkswap /dev/yyy
    

    Замените здесь yyy на имя соответствующего своп-раздела.

    Монтирование нового раздела

    Теперь, когда Вы создали файловую систему, нам надо получить доступ к ее разделу. Для этого необходимо смонтировать его и выбрать точку монтирования. В этой книге подразумевается, что файловая система смонтирована в /mnt/lfs, но это не обязательно, поступите как Вам больше нравится.

    Выберите точку монтирования и свяжите ее с переменной окружения LFS, для этого запустите:

    export LFS=/mnt/lfs
    

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

    mkdir -p $LFS
    mount /dev/xxx $LFS
    

    Замените xxx на имя Вашего раздела LFS.

    Если Вы решили использовать несколько разделов для LFS (один для /, другой для /usr), смонтируйте их следующим образом:

    mkdir -p $LFS
    mount /dev/xxx $LFS
    mkdir $LFS/usr
    mount /dev/yyy $LFS/usr
    

    Само собой, надо заменить xxx и yyy на соответствующие имена разделов.

    Вам также надо убедиться, что новый раздел не смонтировался с ограничениями доступа (такие опции как nosuid, nodev или noatime). Вы можете запустить команду mount без параметров для того, чтобы увидеть с какими опциями смонтировался раздел. Если Вы увидите nosuid, nodev или noatime, надо будет перемонтировать раздел снова.

    Теперь у Вас есть место для работы, и Вы готовы к закачке пакетов.

    ой при использовании этой книги, и Ваша проблема не будет описана в ЧАlfs50rus/chap04.htm 600 0 0 40635 10740542764 7332 Материалы: пакеты и патчи

    Глава 4. Материалы: Пакеты и патчи

    Содержание
    Вступление
    Все пакеты
    Необходимые патчи

    Вступление

    Дальше будет приведен список пакетов которые надо будет скачать для сборки простейшей Linux-системы. Указанные версии являются версиями, о которых точно известно, что они работают, и эта книга базируется на них. Если Вы не являетесь опытным установщиком LFS, я строго рекомендую не испытывать новые версии, так как команды сборки для них могут отличаться. Также не рекомендуется использовать последние версии пакетов из-за того, что еще неизвесно, какие проблемы может вызвать их установка, и как они будут работать.

    Все ссылки, по возможности, указаны на страницу проекта на http://www.freshmeat.net/. Страницы с Freshmeat дают простой доступ к официальным сайтам для скачивания (сайтам проектов), спискам рассылки, ЧАВО, спискам изменений и др.

    Я не могу гарантировать, что эти адреса для скачивания будут все время доступны. В случае отсутствия доступа по ссылке в этой книге, попробуйте поискать в Google. Если это не решит проблемы, можете проконсультироваться на странице errata этой книги по адресу http://linuxfromscratch.org/lfs/print или, что лучше, попробовать скачать пакеты по ссылкам из списка на http://linuxfromscratch.org/lfs/packages.html.

    Вам надо сохранить скачанные пакеты и патчи так, чтобы они были доступны из точки сборки. Вам также будет нужен каталог для распаковки исходных текстов и их сборки. В книге я использую каталог $LFS/sources как место для записи архивов и патчей, а также как рабочий каталог. Это позволяет сделать их доступными из раздела LFS на всем протяжении процесса сборки системы.

    Таким образом, надо выполнить (с правами root) следующую команду перед скачиванием:

    mkdir $LFS/sources
    

    И сделать этот каталог доступным для записи Вашим нормальным пользователям (если Вы не собираетесь скачивать пакеты от имени root) командой:

    chmod a+wt $LFS/sources
    

    Все пакеты

    Скачайте (или получите другим способом) следующие пакеты:

    Autoconf (2.57) - 792 KB:
    http://freshmeat.net/projects/autoconf,
    Automake (1.7.6) - 545 KB:
    http://freshmeat.net/projects/automake,
    Bash (2.05b) - 1,910 KB:
    http://freshmeat.net/projects/gnubash,
    Binutils (2.14) - 10,666 KB:
    http://freshmeat.net/projects/binutils,
    Bison (1.875) - 796 KB:
    http://freshmeat.net/projects/bison,
    Bzip2 (1.0.2) - 650 KB:
    http://freshmeat.net/projects/bzip2,
    Coreutils (5.0) - 3,860 KB:
    http://freshmeat.net/projects/coreutils,
    DejaGnu (1.4.3) - 1,775 KB:
    http://freshmeat.net/projects/dejagnu,
    Diffutils (2.8.1) - 762 KB:
    http://freshmeat.net/projects/diffutils,
    E2fsprogs (1.34) - 3,003 KB:
    http://freshmeat.net/projects/e2fsprogs,
    Ed (0.2) - 182 KB:
    http://freshmeat.net/projects/ed,
    Expect (5.39.0) - 508 KB:
    http://freshmeat.net/projects/expect,
    File (4.04) - 338 KB:
    http://freshmeat.net/projects/file,
    Findutils (4.1.20) - 760 KB:
    http://freshmeat.net/projects/findutils,
    Flex (2.5.4a) - 372 KB:
    ftp://ftp.gnu.org/gnu/non-gnu/flex,
    Gawk (3.1.3) - 1,596 KB:
    http://freshmeat.net/projects/gnuawk,
    GCC (2.95.3) - 9,618 KB:
    http://freshmeat.net/projects/gcc,
    GCC-core (3.3.1) - 10,969 KB:
    http://freshmeat.net/projects/gcc,
    GCC-g++ (3.3.1) - 2,017 KB:
    http://freshmeat.net/projects/gcc,
    GCC-testsuite (3.3.1) - 1,033 KB:
    http://freshmeat.net/projects/gcc,
    Gettext (0.12.1) - 5,593 KB:
    http://freshmeat.net/projects/gettext,
    Glibc (2.3.2) - 13,064 KB:
    http://freshmeat.net/projects/glibc,
    Glibc-linuxthreads (2.3.2) - 211 KB:
    http://freshmeat.net/projects/glibc,
    Grep (2.5.1) - 545 KB:
    http://freshmeat.net/projects/grep,
    Groff (1.19) - 2,360 KB:
    http://freshmeat.net/projects/groff,
    Grub (0.93) - 870 KB:
    ftp://alpha.gnu.org/pub/gnu/grub,
    Gzip (1.3.5) - 324 KB:
    ftp://alpha.gnu.org/gnu/gzip,
    Inetutils (1.4.2) - 1,019 KB:
    http://freshmeat.net/projects/inetutils,
    Kbd (1.08) - 801 KB:
    http://freshmeat.net/projects/kbd,
    Less (381) - 259 KB:
    http://freshmeat.net/projects/less,
    LFS-Bootscripts (1.12) - 25 KB:
    http://downloads.linuxfromscratch.org/lfs-bootscripts-1.12.tar.bz2,
    Lfs-Utils (0.3) - 221 KB:
    http://www.linuxfromscratch.org/~winkie/downloads/lfs-utils,
    Libtool (1.5) - 2,751 KB:
    http://freshmeat.net/projects/libtool,
    Linux (2.4.22) - 28,837 KB:
    http://freshmeat.net/projects/linux,
    M4 (1.4) - 310 KB:
    http://freshmeat.net/projects/gnum4,
    Make (3.80) - 899 KB:
    http://freshmeat.net/projects/gnumake,
    MAKEDEV (1.7) - 8 KB:
    http://downloads.linuxfromscratch.org/MAKEDEV-1.7.bz2,
    Man (1.5m2) - 196 KB:
    http://freshmeat.net/projects/man,
    Man-pages (1.60) - 627 KB:
    http://freshmeat.net/projects/man-pages,
    Modutils (2.4.25) - 215 KB:
    http://freshmeat.net/projects/modutils,
    Ncurses (5.3) - 2,019 KB:
    http://freshmeat.net/projects/ncurses,
    Net-tools (1.60) - 194 KB:
    http://freshmeat.net/projects/net-tools,
    Patch (2.5.4) - 182 KB:
    http://freshmeat.net/projects/patch,
    Perl (5.8.0) - 10,765 KB:
    http://freshmeat.net/projects/perl,
    Procinfo (18) - 24 KB:
    http://freshmeat.net/projects/procinfo,
    Procps (3.1.11) - 242 KB:
    http://freshmeat.net/projects/procps,
    Psmisc (21.3) - 259 KB:
    http://freshmeat.net/projects/psmisc,
    Sed (4.0.7) - 678 KB:
    http://freshmeat.net/projects/sed,
    Shadow (4.0.3) - 760 KB:
    http://freshmeat.net/projects/shadow,
    Sysklogd (1.4.1) - 80 KB:
    http://freshmeat.net/projects/sysklogd,
    Sysvinit (2.85) - 91 KB:
    http://freshmeat.net/projects/sysvinit,
    Tar (1.13.25) - 1,281 KB:
    ftp://alpha.gnu.org/gnu/tar,
    Tcl (8.4.4) - 3,292 KB:
    http://freshmeat.net/projects/tcltk,
    Texinfo (4.6) - 1,317 KB:
    http://freshmeat.net/projects/texinfo,
    Util-linux (2.12) - 1,814 KB:
    http://freshmeat.net/projects/util-linux,
    Vim (6.2) - 3,193 KB:
    http://freshmeat.net/projects/vim,
    Zlib (1.1.4) - 144 KB:
    http://freshmeat.net/projects/zlib.
    Общий размер пакетов: 134 MB

    Примечание: File (4.04) может быть недоступен, когда Вы это читаете. На главных местах для скачивания удаляют старые версии пакетов. Пожалуйста, посмотрите Приложение A для получения информации об альтернативных адресах сайтов.

    Необходимые патчи

    Помимо всех пакетов Вам будут нужны некоторые патчи. Они корректируют некоторые ошибки в пакетах, которые были обнаружены, или улучшают функциональность. Вам будут нужны:

    Bash Patch - 7 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/bash-2.05b-2.patch,
    Bison Attribute Patch - 2 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/bison-1.875-attribute.patch ,
    Coreutils Hostname Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/coreutils-5.0-hostname-2.patch ,
    Coreutils Uname Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/coreutils-5.0-uname.patch ,
    Ed Mkstemp Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/ed-0.2-mkstemp.patch,
    Expect Spawn Patch - 6 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/expect-5.39.0-spawn.patch ,
    Gawk Libexecdir Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gawk-3.1.3-libexecdir.patch ,
    GCC No-Fixincludes Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-3.3.1-no_fixincludes-2.patch ,
    GCC Specs Patch - 10 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-3.3.1-specs-2.patch ,
    GCC Suppress-Libiberty Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-3.3.1-suppress-libiberty.patch ,
    GCC-2 Patch - 16 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-2.95.3-2.patch,
    GCC-2 No-Fixincludes Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-2.95.3-no-fixinc.patch ,
    GCC-2 Return-Type Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/gcc-2.95.3-returntype-fix.patch ,
    Glibc Sscanf Patch - 2 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/glibc-2.3.2-sscanf-1.patch ,
    Grub Gcc33 Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/grub-0.93-gcc33-1.patch ,
    Kbd More-Programs Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/kbd-1.08-more-programs.patch ,
    Man 80-Columns Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/man-1.5m2-80cols.patch ,
    Man Manpath Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/man-1.5m2-manpath.patch ,
    Man Pager Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/man-1.5m2-pager.patch ,
    Ncurses Etip Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/ncurses-5.3-etip-2.patch ,
    Ncurses Vsscanf Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/ncurses-5.3-vsscanf.patch ,
    Net-tools Mii-Tool-Gcc33 Patch - 2 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/net-tools-1.60-miitool-gcc33-1.patch ,
    Perl Libc Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/perl-5.8.0-libc-3.patch ,
    Procps Locale Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/procps-3.1.11-locale-fix.patch ,
    Shadow Newgrp Patch - 1 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/shadow-4.0.3-newgrp-fix.patch ,
    Zlib Vsnprintf Patch - 10 KB:
    http://www.linuxfromscratch.org/patches/lfs/5.0/zlib-1.1.4-vsnprintf.patch .

    Кроме необходимых патчей есть еще дополнительные, которые были созданы сообществом LFS. Большая часть из них устраняет мелкие проблемы или добавляет функциональность не доступную по умолчанию. При желании Вы можете их скачать по ссылкам в базе данных патчей LFS на http://www.linuxfromscratch.org/patches и выбрать любые дополнительные патчи для использования.

    ef="http://freshmeat.net/projects/kbd"> http://freshmeat.net/projects/kbd,
    Less (381) -lfs50rus/chap05.htm 600 0 0 235767 10740542764 7367 Построение временной системы

    Глава 5. Построение временной системы

    Содержание
    Вступление
    Технические моменты
    Создание каталога $LFS/tools
    Добавление пользователя lfs
    Установка окружения
    Установка Binutils-2.14: Шаг 1
    Установка GCC-3.3.1: Шаг 1
    Установка Glibc-2.3.2
    Взгляд в Glibc
    Установка Tcl-8.4.4
    Установка Expect-5.39.0
    Установка DejaGnu-1.4.3
    Установка GCC-3.3.1: Шаг 2
    Установка Binutils-2.14: Шаг 2
    Установка Gawk-3.1.3
    Установка Coreutils-5.0
    Установка Bzip2-1.0.2
    Установка Gzip-1.3.5
    Установка Diffutils-2.8.1
    Установка Findutils-4.1.20
    Установка Make-3.80
    Установка Grep-2.5.1
    Установка Sed-4.0.7
    Установка Gettext-0.12.1
    Установка Ncurses-5.3
    Установка Patch-2.5.4
    Установка Tar-1.13.25
    Установка Texinfo-4.6
    Установка Bash-2.05b
    Установка Util-linux-2.12
    Установка Perl-5.8.0
    Урезание

    Вступление

    В этой главе мы откомпилируем и установим минимальную систему Linux. Эта система будет использоваться для построения конечной LFS-системы в следующей главе.

    Сборка этой минимальной системы будет проходить в два этапа: сначала соберем независящие от основной системы средства (компилятор, ассемблер, компоновщик и библиотеки), а потом используем их для сборки других средств.

    Файлы, компилируемые в этой главе, устанавливаются в каталог $LFS/tools для отделения их от файлов, устанавливаемых в следующей главе. Эти пакеты просто временные, мы не будем засорять ими нашу конечную LFS-систему.

    Ключевым для понимания работы Linux-системы является знание того, какие пакеты используются, и для чего они нужны системе. Из этих соображений я даю краткие содержание и описание пакетов перед инструкциями по их установке. Для изучения краткого описания програм, входящих в пакет, обратитесь к Приложению A.

    Инструкции по сборке подразумевают, что Вы используете интерпретатор командной строки bash. Также считается, что Вы уже распаковали исходные тексты и перешли с помощью команды cd в каталог с ними перед использованием команд.

    Некоторые пакеты необходимо пропатчить перед компиляцией, но только когда это необходимо для решения тех или иных проблем. Часто патчи нужно применять в обеих главах (этой и следующей), но некоторые необходимы только в одной из глав. Поэтому не беспокойтесь, если не найдете инструкций по наложению некоторых скачанных патчей в этой главе.

    В процессе установки многих пакетов Вы увидите предупреждения (warning) на экране. Это нормально, и Вы можете не обращать на них внимания. Все, что они говорят: внимание, есть неточность, но не ошибка, в коде C или C++. Это из-за того, что изменяются стандарты на язык C, а некоторые пакеты написаны в соответствии со старыми стандартами, а это не представляет проблемы для компилятора.

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

    Перед тем как продолжить, убедитесь, что переменная окружения LFS задана корректно выполнением команды:

    echo $LFS
    

    Вывод должен указывать на точку монтирования раздела LFS, я использую /mnt/lfs в качестве примера.

    Технические моменты

    Этот раздел предназначен для объяснения некоторых логических и технических моментов рационального метода сборки. Ничего страшного, если Вы не поймете все, что написано здесь. Большая часть имеет значение при выполнении сборки конкретных пакетов. Вы можете вернуться сюда в любое время.

    Основной целью главы 5 является подготовка окружения для входа через chroot для создания полноценной системы в главе 6. По ходу дела Вы соберете, используя основную систему, самодостаточные средства. Это будет сделано для обеспечения минимального риска и максимальной независимости одновременно. Другими словами, Вы соберете инструменты для сборки системы.

    Важно: Перед дальнейшей работой Вы должны знать название Вашей платформы, которое также называется target triplet. В некоторых случаях target triplet может быть, к примеру таким: i686-pc-linux-gnu. Простейшим способом определения Вашего target triplet является запуск скрипта config.guess, который содержится во многих пакетах. Распакуйте архив с исходными текстами Binutils, запустите скрипт ./config.guess и запомните вывод.

    Вам также необходимо знать имя динамичаского компоновщика для Вашей платформы, его также называют динимическим загрузчиком, не спутайте его со стандартным компоновщиком ld из Binutils. Динамический компоновщик является частью Glibc и служит для поиска и загрузки библиотек, в которых нуждается программа, подготовки программы к запуску и ее запуска. Как правило, динамический компоновщик называется ld-linux.so.2. На некоторых не очень распространенных платформах он называется ld.so.1, а на некоторых 64-ьитных платформах по другому. Вы можете определить имя динамического компоновщика для Вашей платформы, заглянув в каталог /lib основной системы. Безошибочным способом проверки случайной библиотеки на Вашей основной системе является запуск 'readelf -l <name of binary> | grep interpreter' и просмотр вывода команды.

    Некоторые технические моменты, которые позволяют методам сборки из главы 5 работать:

    Binutils устанавливаются первыми потому, что GCC и Glibc выполняют тестирование ассемблера и компоновщика во время запуска ./configure для определения того, какие настройки программного обеспечения выбраны или отключены. Это очень важно при первой реализации. Неверно сконфигурированные GCC и Glibc могут испортить все сборку средств и дистрибутив будет с ошибками. Благодаря тестированию Вы можете опрделить это своевременно.

    Binutils устанавливают ассемблер и компоновщик в два места: /tools/bin и /tools/$TARGET_TRIPLET/bin. Точнее, средства в одном из каталогов являются жесткими ссылками на другие. Очень важным для компоновщика является порядок поиска библиотек. Точную информацию о нем можно получить от ld указав параметр --verbose. К примеру: 'ld --verbose | grep SEARCH' покажет текущие пути поиска и их порядок. Вы можете увидеть, какие файлы скомпонованы с помощью ld при компиляции программы-пустышки и используя переключатель --verbose. К примеру: 'gcc dummy.c -Wl,--verbose 2>&1 | grep succeeded' покажет, какие файлы были открыты удачно в процессе компоновки.

    Следующим пакетом Вы установите GCC и в процессе работы ./configure увидите, например:

    checking what assembler to use... /tools/i686-pc-linux-gnu/bin/as
    checking what linker to use... /tools/i686-pc-linux-gnu/bin/ld
    

    Это важно по причинам, описанным выше. И это также показывает, что скрипт конфигурации GCC не ищет в каталогах $PATH, какие средства использовать. Тем не менее, текущий процесс gcc, не использует эти пути поиска. Вы можете определить, какой стандартный компоновщик gcc используется, запуском: 'gcc -print-prog-name=ld'. Детальная информация получается от gcc добавлением параметра -v при компиляции. Например: 'gcc -v dummy.c' покажет полную информацию о препроцессоре, компиляторе и ассемблере, включая пути поиска gcc и другую информацию.

    Следующим устанавливаемым пакетом будет Glibc. Наиболее важными зависимостями сборки Glibc являются компилятор, средства для двоичных файлов и заголовки ядра. Компилятор не представляет проблемы, Glibc всегда использует gcc из каталога $PATH. Двоичные средства и заголовки ядра могут привести к некоторым проблемам. Поэтому я не рискую и использую переключатели конфигурации для правильного выбора. После запуска ./configure Вы можете проверить содержимое файла config.make в каталоге glibc-build для получения информации. Вы будете использовать некотоые интересные параметры, такие как CC="gcc -B/tools/bin", которые определяют используемые средства, а также флаги -nostdinc и -isystem для контроля за путем поиска компилятора. Эти параметры показывают важный аспект пакета Glibc: он не обязательно полагается на средства по умолчанию.

    После установки Glibc, Вы создадите некоторые установки для того, чтобы убедиться что пути для поиска содержат только каталоги в /tools. Вы установите откорректированный ld, в котором будет жестко указан путь поиска в /tools/lib. Затем Вы исправите spec-файл gcc для указания на Ваш новый динамический компоновщик в /tools/lib. Этот последний шаг жизненно важен для процесса. Как указано выше, путь к динамическому компоновщику будет жестко вшит в каждый исполняемый файл ELF. Вы можете убедиться в этов, запустив 'readelf -l <name of binary> | grep interpreter'. Благодаря исправлению spec-файла gcc, Вы убедитесь, что все программы из оставшейся части главы 5 будут использовать новый динамический компоновщик из /tools/lib.

    Необходимость использования нового динамического компоновщика также является причиной, по которой Вы применяете Spec-патч на втором этапе сборки GCC. Опускание этого патча приведет к тому, что программы GCC будут использовать системный динамический компоновщик из каталога /lib основной системы, а это будет означать зависимость от основной системы.

    В ходе второго шага сборки Binutils Вы будете использовать переключатель --with-lib-path для контроля путя поиска библиотек для ld. С этого момента все средства будут самодостаточными. Остальные пакеты из главы 5 будут собраны с новой Glibc из каталога /tools.

    После входа в окружение chroot в главе 6, Вы первым делео установите Glibc по вышеописаным причинам. Теперь Glibc будет установлена в /usr, и Вы будете использовать средства по умолчанию для сборки остальных пакетов из главы 6 для LFS-системы.

    О статической компоновке

    Многие программы выполняют, помимо своей основной задачи, и многие другие операции. Это включает распределение памяти, поиск каталогов, чтение и запись файлов, манипуляции со строками, использование шаблонов, арифметические операции и многое другое. Вместо того, чтобы включать все это в программу, GNU-система поддерживает простые функции в библиотеках. Самой главной из них для любой Linux-системы является Glibc.

    Есть два варианта использования библиотечных функций: статически и динамически. Когда программа скомпонована статически, код используемых функций включается в программу, и она становится более громоздкой. Когда же программа скомпонована динамически, в программу включаются только ссылка на динамический компоновщик, имя библиотеки и имя функции, в результате Вы получаете более маленький исполняемый файл. Есть еще третий путь: использование программного интерфейса для динамического компоновщика. Смотрите руководство по dlopen для более полной информации.

    Динамическая компоновка является компоновкой по умолчанию в Linux и имеет три главных преимущества перед статической компоновкой. Первое: достаточно иметь только одну копию исполняемого кода библиотеки на жестком диске, в отличие от нескольких копий в каждом исполняемом файле в противном случае. Вы экономите место на диске. Второе, когда несколько программ используют одну и ту же библиотечную фунцию одновременно, только одна копия этой функции находится в памяти: Вы экономите оперативную память. Третье, если Вы обнаружили ошибку в функции, достаточно перекомпилировать одну библиотеку, в отличие от необходимости перекомпилировать все программы, использующие эту функцию, в противном случае.

    Если динамическая компоновка настолько лучше, то почему ее не используют, а первые два пакета в этой главе компонуются статически? Есть тройственная причина для этого: историческая, образовательная и техническая. Историческая потому, что простейшая версия LFS статически компонует все программы из этой главы. Образовательная потому, что надо знать отличие между статической и динамической компоновкой. Техническая потому, что Вы получаете элемент независимости от основной системы, Ваши программы не должны от нее зависеть, они должны иметь возможность работать самостоятельно. Таким образом, если Вы хотите построить LFS-систему, необходимо отказаться от динамической компоновки первых двух пакетов.

    Создание каталога $LFS/tools

    Все программы, компилируемые в этой главе, устанавливаются в каталог $LFS/tools для обеспечения отсутствия проблемм с программами, собираемыми в следующей главе. Программы, компилируемые здесь, являются только временными средствами, и надо получить возможность легко избавится от них в дальнейшем.

    Помимо этого надо отделить имя этого каталога от остальных. Для этого используется название "tools", при желаниии Вы можете использовать и другие названия, например, "tools_for_lfs".

    Создайте каталог:

    mkdir $LFS/tools
    

    Теперь надо создать ссылку /tools на новый каталог в основной системе:

    ln -s $LFS/tools /
    

    Эта ссылка нужна потому, что все средства из этой главы будут собираться с префиксом /tools, и они же понадобятся в следующей главе (когда с помощью chroot войдете в новый раздел).

    Замечание: Изучите эти команды внимательно. Это может показаться странным на первый взгляд. Но команда ln имеет множество различных вариантов синтаксиса, и Вы должны изучить man-страницу по ln прежде, чем сообщать о том, что Вы считаете, что обнаружили ошибку.

    Добавление пользователя lfs

    Если Вы зарегистрировались в ситеме как root, малейшая ошибка может иметь фатальные последствия для системы. Поэтому я рекомендую собирать пакеты из этой главы под непривилегированым пользователем. Вы, конечно, можете использовать имя текущего пользователя, но более простым шагом будет создание нового пользователя lfs и его повсеместное применение в процессе установки. Под правами root исполните следующие команды для добавления нового пользователя:

    useradd -s /bin/bash -m lfs
    passwd lfs
    

    Чтобы новый пользователь lfs получил полный доступ к каталогу $LFS/tools, измените ее владельца:

    chown lfs $LFS/tools
    

    Если Вы создали отдельный каталог для работы, смените также и его владельца на lfs:

    chown lfs $LFS/sources
    

    Теперь, войдите в систему как пользователь lfs. Это можно сделать через виртуальную консоль, через менеджер экрана или через команду:

    su - lfs
    

    Параметр "-" команды su запустит новый интерпретатор командной строки.

    Настройка окружения

    Когда Вы войдете в систему как lfs, введите следующие команды для настройки окружения:

    cat > ~/.bash_profile << "EOF"
    set +h
    umask 022
    LFS=/mnt/lfs
    LC_ALL=POSIX
    PATH=/tools/bin:$PATH
    export LFS LC_ALL PATH
    unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
    EOF
    source ~/.bash_profile
    

    Команда set +h отключает функцию запоминания bash. Обычно это используется так: bash использует hash-таблицу для запоминания полного пути к исполняемым файлам для сокращения времени поиска и отсутствия необходимости запоминания путей этих файлов. Но Вы собираетесь использовать новые средства после установки. При отключении этой функции Ваши интерактивные команды (make, patch, sed, cp и другие) будут использовать наиболее новые из доступных версий программ в процессе сборки.

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

    Переменная LFS указывает на точку монтирования, которую Вы выбрали для раздела LFS.

    Переменная LC_ALL контролирует локализацию некоторых программ, делает вывод их сообщений зависимым от страны. Если Ваша система основана на Glibc старше версии 2.2.4, установка LC_ALL в что-то отличное от "POSIX" или "C" может создать проблемы при выходе и входе в среду chroot. Установкой LC_ALL в "POSIX" (или "C", что аналогично) Вы страхуетесь от ошибок при использовании chroot.

    Вы добавляете /tools/bin к стандартной переменной PATH для того, чтобы на этапе сборки использовались средства, которые Вы уже собрали.

    Переменные CC, CXX, CPP, LD_LIBRARY_PATH и LD_PRELOAD несут потенциальную опасность для средств из главы 5. Вы обнуляете их для того, чтобы было больше шансов собрать все корректно.

    Теперь Вы можете приступить к сборке временных средств, используемых в следующих главах.

    Установка Binutils-2.14: Шаг 1

    Ожидаемое время сборки:           1.0 SBU
    Ожидаемое место на диске:         194 MB
    

    Описание Binutils

    Binutils является коллекцией средств разработки программ, содержащих компоновщик, ассемблер и другие средства для работы с объектными файлами и архивами.

    Устанавливаемые программы: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings и strip.

    Устанавливаемые библиотеки: libiberty.a, libbfd.[a,so] и libopcodes.[a,so]

    Зависимости установки Binutils

    Binutils зависит от: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.

    Установка Binutils

    Важно, чтобы Binutils был первым из пакетов, которые мы установим, потому, что Glibc и GCC проводят некоторые тесты на доступные компоновщик и ассемблер для определения доступных опций.

    Замечание: Хотя Binutils является важным пакетом, мы не собираемся запускать тестирование на этом простом шаге. Во-первых, тестирование пока неуместно, а во-вторых, программы с этого этапа будут заново установлены на втором.

    Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Binutils рекомендуется компилировать с настройками по умолчанию. Следовательно, если Вы задали переменные, такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета binutils. Изменяя оптимизации для binutils, Вы действуете на свой страх и риск.

    В документации по Binutils рекомендуется собирать Binutils вне каталога с исходными текстами, в отдельном каталоге, выделенном для сборки:

    mkdir ../binutils-build
    cd ../binutils-build
    

    Обратите внимание: Если Вы хотите вычислить переменную SBU, которая используется в этой книге, надо засечь время, которое понадобится на сборку этого пакета. Это очень просто сделать чем-то похожим на такую команду: time {./configure ... && ... && ... && make install;}.

    Теперь подготовим Binutils к компиляции:

    ../binutils-2.14/configure --prefix=/tools --disable-nls
    

    Описание используемых опций:

    Вернемся к компиляции пакета:

    make configure-host
    make LDFLAGS="-all-static"
    

    Описание параметров сборки:

    Теперь установим пакет:

    make install
    

    Теперь подготовим компоновщик к последующему встраиванию в Glibc:

    make -C ld clean
    make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
    

    Описание параметров сборки:

    Внимание! Не удаляйте сейчас каталоги для сборки и исходных текстов Binutils. Вам они еще будут нужны в этой главе далее в их теперешнем состоянии.

    Установка GCC-3.3.1: Шаг 1

    Ожидаемое время сборки:           4.4 SBU
    Ожидаемое место на диске:         300 MB
    

    Описание GCC

    Пакет GCC pсодержит коллекцию компиляторов GNU, включая компиляторы C и C++.

    Устанавливаемые программы: c++, cc (ссылка на gcc), cc1, cc1plus, collect2, cpp, g++, gcc, gccbug и gcov.

    Устанавливаемые библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] и libsupc++.a.

    Зависимости установки GCC

    GCC зависит от Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo.

    Установка GCC

    Распакуйте только архив GCC-core, Вам пока не нужен компилятор C++.

    Замечание: Несмотря на то, что GCC является очень важным пакетом средств, сейчас тестирование не запускайте. Во-первых, тестирование сейчас не нужно, а во-вторых, программы с этого шага будут перезаписаны на следующем.

    Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Следовательно, если Вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC. Изменяя оптимизации для GCC, Вы действуете на свой страх и риск.

    В документации на GCC рекомендуется собирать GCC вне каталога с исходными текстами в отдельном каталоге для сборки:

    mkdir ../gcc-build
    cd ../gcc-build
    

    Подготовьте GCC к компиляции:

    ../gcc-3.3.1/configure --prefix=/tools --with-local-prefix=/tools \
                           --disable-nls --enable-shared --enable-languages=c
    

    Описание опций конфигурации:

    Продолжите компиляцию пакета:

    make BOOT_LDFLAGS="-static" bootstrap
    

    Описание параметров сборки:

    Теперь установите пакет:

    make install
    

    Под конец создайте ссылку /tools/bin/cc. Многие программы и скрипты используют cc вместо gcc для обеспечения переносимости программ на все Unix-системы. Не у всех установлен именно компилятор GNU C. Запуск cc позволяет администратору выбирать, какой компилятор C устанавливать в систему, так что создайте ссылку на него:

    ln -sf gcc /tools/bin/cc
    

    Установка заголовков Linux-2.4.22

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         186 MB
    

    Описание Linux

    Ядро Linux является основой любой Linux-системы. Это то, что делает Linux самой собой. Когда компьютер включается и загружает систему Linux, самым первым загружается ядро. Ядро инициализирует аппаратные компоненты: последовательные и параллельные порты, звуковые карты, сетевые карты, контролеры IDE, контролеры SCSI и много чего еще. Собственно, ядро делает доступным аппаратные элементы системы и позволяет запускаться программам.

    Устанавливаемые файлы: ядро и заголовки ядра.

    Зависимости установки Linux

    Linux зависит от Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl и Sed.

    Установка заголовков ядра

    Некоторые пакеты нуждаются в ссылках на заголовки ядра, и Вы должны распаковать архив ядра, собрать и скопировать необходимые файлы туда, где их сможет найти gcc.

    Подготовьтесь к установке заголовков:

    make mrproper
    

    Это гарантирует, что дерево с исходными текстами ядра будет абсолютно чистым. Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра. Вы не можете быть абсолютно уверены в чистоте дерева даже после распаковки.

    Создайте файл include/linux/version.h:

    make include/linux/version.h
    
    

    Создайте платформно-зависимую ссылку include/asm:

    make symlinks
    

    Установите платформно-зависимые файлы заголовков:

    mkdir /tools/include/asm
    cp include/asm/* /tools/include/asm
    cp -R include/asm-generic /tools/include
    

    Установите кросс-платформенные файлы заголовков:

    cp -R include/linux /tools/include
    

    Некоторые из заголовков ядра используют файл заголовков autoconf.h. Поскольку Вы пока не сконфигурировали ядро, надо создать этот файл для того, чтобы компиляция следующих пакетов не закончилась ошибкой. Создайте пустой файл autoconf.h:

    touch /tools/include/linux/autoconf.h
    

    Установка Glibc-2.3.2

    Ожидаемое время сборки:           11.8 SBU
    Ожидаемое место на диске:         800 MB
    

    Описание Glibc

    Glibc является библиотекой C (версия GNU), которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т.д. Библиотека C используется всеми динамически скомпонованными программами. Это один из важнейших компонентов системы.

    Устанавливаемые программы: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic.

    Устанавливаемые библиотеки: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so и libutil.[a,so].

    Зависимости установки Glibc

    Glibc зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed и Texinfo.

    Установка Glibc

    Перед началом установки Glibc, Вы должны перейти (с помощию команды cd, например) в каталог glibc-2.3.2 и распаковать архив Glibc-linuxthreads в этом каталоге, а не там, где Вы обычно распаковываете все исходные тексты.

    Замечание: Я собираюсь запустить тестирование для Glibc в этой главе. Это тестирование тут является менее важным, чем тестирование Glibc в главе 6.

    Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Glibc рекомендуется компилировать с настройками по умолчанию. Следовательно, если Вы задали такие переменные, как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Glibc. Изменяя оптимизации для glibc, Вы действуете на свой страх и риск.

    Хотя это и безвредное сообщение, но при установке Glibc жалуется на отсутствие /tools/etc/ld.so.conf. Исправьте это с помощью команд:

    mkdir /tools/etc
    touch /tools/etc/ld.so.conf
    

    Также, Glibc имеет некоторые тонкие проблемы при компиляции с помощью GCC 3.3.1. Примените следующий патч для их исправления:

    patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch
    

    Документация по Glibc рекомендует собирать Glibc вне каталога с исходными текстами, в отдельном каталоге для сборки:

    mkdir ../glibc-build
    cd ../glibc-build
    

    Далее, подготовьте Glibc к компиляции:

    ../glibc-2.3.2/configure --prefix=/tools --disable-profile --enable-add-ons \
                             --with-headers=/tools/include \
                             --with-binutils=/tools/bin --without-gd
    

    Описание опций конфигурации:

    На этом шаге Вы можете увидеть следующее предупреждение:

    configure: WARNING:
    *** These auxiliary programs are missing or incompatible versions: msgfmt
    *** some features will be disabled.
    *** Check the INSTALL file for required versions.
    

    Отсутствующая или несовместимая версия программы msgfmt безвредна, но может привести к определенным проблемам при тестировании.

    Скомпилируйте пакет:

    make
    

    Запустите тестирование:

    make check
    

    Тестирование Glibc сильно зависит от некоторых функций основной системы, в частности, от ее ядра. Также, некоторые тесты в этой главе могут взаимодействовать с окружением Вашей системы. Само собой, Вы уже не должны получить таких проблем при запуске тестирования в главе 6. В общем, тестирование Glibc должно пройти удачно. Тем не менее, по причинам, перечисленным ниже, тестирование может закончиться и неудачно. Вот список наиболее вероятных причин этого:

    В общем, не стоит беспокоится, если увидите, что тестирование Glibc не прошло. Glibc в главе 6 будет последним из устанавливаемых пакетов, и его тестирование будет более важным. Но имейте в виду. что в главе 6 некоторые тесты могут также не пройти: тест math, к примеру. Когда Вы получите сообщение о непрохождении теста, запомните его, а затем продолжите тестирование дальше. Это можно сделать, так как скрипт тестирования запоминает пройденые тесты для возможности его продолжения после выхода из-за ошибки. Вы можете использовать эту возможность "запуска-остановки" автоматически с помощью команды make -k check. Но если Вы так сделаете, проверьте протокол тестирования и посмотрите общее количество и причины проваленных тестов.

    Теперь установите пакет:

    make install
    

    Разные страны и культуры имеют различные соглашения для коммуникаций. Эти соглашения состоят как из очень простых, таких как форматы даты и времени, так и из более сложных, таких как разговорный язык. "Интернационализация" программ GNU работает с помощью локалей (locales). Так что установите локали для Glibc:

    make localedata/install-locales
    

    Альтернативой запуску предыдущей команды является установка только определенных локалей, тех, которые Вам нужны. Это может быть достигнуто использованием команды localedef. Информацию об использовании этой команды можно получить из файла INSTALL в исходных текстах glibc-2.3.2. Тем не менее, список локалей может быть существенным для некоторых тестов, в частности, теста libstdc++ из GCC. Следующие команды, используемые вместо вышеописаной install-locales, установят минимальный набор локалей для успешного завершения тестирования:

    mkdir -p /tools/lib/locale
    localedef -i de_DE -f ISO-8859-1 de_DE
    localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
    localedef -i en_HK -f ISO-8859-1 en_HK
    localedef -i en_PH -f ISO-8859-1 en_PH
    localedef -i en_US -f ISO-8859-1 en_US
    localedef -i es_MX -f ISO-8859-1 es_MX
    localedef -i fr_FR -f ISO-8859-1 fr_FR
    localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
    localedef -i it_IT -f ISO-8859-1 it_IT
    localedef -i ja_JP -f EUC-JP ja_JP
    

    Интеграция Glibc

    Теперь, когда временные библиотеки C были установлены, Вы хотите, чтобы все оставшиеся в этой главе пакеты компоновались с использованием уже установленных библиотек. Чтобы обеспечить это, Вы должны настроить spec-файл компилятора.

    Для начала установите откорректированый компоновщик запуском следующей команды в каталоге binutils-build:

    make -C ld install
    

    Вы установили откорректированый компоновщик вместо того, который был установлен на первом шаге сборки Binutils. С этого момента все пакеты быдут собраны только с использованием библиотек из /tools/lib.

    Замечание: Если Вы пропустили предупреждение о том, что не надо было удалять каталоги с исходными текстами и сборкой Binutils из первого шага или у Вас нет доступа к ним, не беспокойтесь, не все потеряно. Просто проигнорируйте вышеприведенную команду. В результате появится небольшой шанс, что программы будут скомпонованы с использованием библиотек основной системы. Это не очень хорошо, но тем не менее не является такой уж большой проблемой. Ситуация будет исправлена позже на втором шаге установки Binutils.

    Теперь, когда установлен откорректированый компоновщик, Вы можете удалить каталоги с исходными текстами и сборкой Binutils.

    Следующим Вашим действием будет исправление spec-файла GCC для задания расположения Вашего компоновщика. Просто выполните следующую команду:

    SPECFILE=/tools/lib/gcc-lib/*/*/specs &&
    sed -e 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
           $SPECFILE > tempspecfile &&
    mv -f tempspecfile $SPECFILE &&
    unset SPECFILE
    

    Я рекомендую просто скопировать и вставить вышеуказанное вместо того, чтобы просто вводить. Или, при желании, Вы можете просто отредактировать spec-файл вручную: замените встречающиеся строки "/lib/ld-linux.so.2" на "/tools/lib/ld-linux.so.2".

    Важно: Если Вы работаете на платформе, где имя динамического компоновщика отлично от ld-linux.so.2, Вы должны заменить ld-linux.so.2 на имя динамического компоновщика Вашей платформы в вышеуказанных командах. При необходимости вернитесь к разделу "Технические моменты".

    Есть возможность, что некоторые включаемые файлы из основной системы имеются внутри каталогов для включаемых файлов GCC. Это могло произойти по причине того, что процесс "fixincludes" запускается как часть сборки GCC. Позже я расскажу об этом подробнее в этой главе. А пока запустите следующую команду, чтобы исключить эту возможность:

    rm -f /tools/lib/gcc-lib/*/*/include/{pthread.h,bits/sigthread.h}
    

    Внимание! На этом месте необходимо остановиться и убедиться, что основные функции (компиляция и компоновка) новых средств работают корректно. Для этого есть простой тест:

    echo 'main(){}' > dummy.c
    gcc dummy.c
    readelf -l a.out | grep ': /tools'
    

    Если все в порядке, то не будет ошибок, и на выводе Вы увидите:

    [Requesting program interpreter: /tools/lib/ld-linux.so.2]
    

    Если эта надпись вообще не появилась или появилась другая, то что-то сильно не так. Вам надо исследовать и повторить все пройденные шаги, чтобы найти, в чем проблема и устранить ее. Точки для возврата после этого места уже не будет. Как правило, что-то не так бывает с вышеописанной правкой spec-фала. Убедитесь, что /tools/lib содержит префикс Вашего динамического компоновщика. Само собой, если Вы работаете на платформе с названием динамического компоновщика, отличным от ld-linux.so.2, вывод будет несколько иным.

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

    rm dummy.c a.out
    

    Теперь Вы закончили установку самодостаточных средств, и они будут использованы для сборки оставшихся временных средств.

    Установка Tcl-8.4.4

    Ожидаемое время сборки:           0.9 SBU
    Ожидаемое место на диске:         23 MB
    

    Описание Tcl

    Пакет Tcl содержит язык Tool Command Language.

    Устанавливаемые программы: tclsh (ссылка на tclsh8.4), tclsh8.4.

    Устанавливаемые библиотеки: libtcl8.4.so.

    Зависимости установки Tcl

    Tcl зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

    Установка Tcl

    Этот и следующие два устанавливаемых пакета нужны для работы тестирования GCC и Binutils. Установка этих трех пакетов нужна только для этого, и если Вы не хотите тестировать устанавливаемые средства, то можно пропустить эти установки, но я рекомендую проверять работоспособность собираемых средств.

    Подготовьте Tcl к компиляции:

    cd unix
    ./configure --prefix=/tools
    

    Соберите пакет:

    make
    

    Этот пакет поддерживает тесты для определения корректности сборки. Тем не менее, тестирование Tcl в этой главе может не завершиться успещно из-за зависимостей от основной системы, которые полностью не понятны. Таким образом, неудачное завершение тестирования здесь не будет сюрпризом и не является критичным. Если Вы решили протестировать Tcl, то запустите команду:

    TZ=UTC
    make test
    

    Описание параметров сборки:

    Иногда, тестирование пакета не проходит. Вы можете проконсультироваться на LFS Wiki по адресу http://wiki.linuxfromscratch.org для проверки того, какие из ошибок нормальны. Это относится ко всем тестированиям в этой книге.

    Установите полученный пакет:

    make install
    

    Важно: Не удаляйте каталог с исходными текстами tcl8.4.4 сейчас, так как следующие пакеты будут нуждаться во внутренних заголовках из этого каталога.

    Создайте необходимую символическую ссылку:

    ln -s tclsh8.4 /tools/bin/tclsh
    

    Установка Expect-5.39.0

    Ожидаемое время установки:           0.1 SBU
    Ожидаемое мето на диске:             3.9 MB
    

    Описание Expect

    Пакет Expect содержит программы, обеспечивающие программируемый диалог с другими интерактивными программами.

    Устанавливаемые программы: expect.

    Устанавливаемые библиотеки: libexpect5.39.a.

    Зависимости установки Expect

    Expect зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed и Tcl.

    Установка Expect

    Для начала примениие патч:

    patch -Np1 -i ../expect-5.39.0-spawn.patch
    

    Этот патч устранит неисправность в Expect, которая выдает неверный результат при тестировании GCC.

    Теперь подготовьте Expect к компиляции:

    ./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no
    

    Описание опций конфигурации:

    Теперь откомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование для проверки корректности сборки. Тем не менее, тестирование Expect здесь, в главе 5, известно своими ошибками из-за влияния основной системы. Таким образом, отрицательные результаты тестов не будут здесь сюрпризом и не являются критичными. Если Вы захотите запустить тестирование, воспользуйтесь следующей командой:

    make test
    

    Установите готовый пакет:

    make SCRIPTS="" install
    

    Описание параметров установки:

    Теперь Вы можете удалить каталог с исходными текстами Tcl и Expect.

    Установка DejaGnu-1.4.3

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         8.6 MB
    

    Описание DejaGnu

    Пакет DejaGnu содержит основы для тестирования других программ.

    Устанавливаемые программы: runtest

    Зависимости установки DejaGnu

    Dejagnu зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed.

    Установка DejaGnu

    Подготовим DejaGnu к компиляции:

    ./configure --prefix=/tools
    

    Соберите и установите пакет:

    make install
    

    Установка GCC-3.3.1: Шаг 2

    Ожидаемое время сборки:          11.0 SBU
    Ожидаемое место на диске:        274 MB
    

    Переустановка GCC

    Средства, необходимые для тестирования GCC и Binutils, теперь установлены (Tcl, Expect и DejaGnu). Можно вернуться к пересборке GCC и Binutils, соединить их с новой Glibc и правильно их протестировать. Но есть одно замечание: тестирование сильно зависит от правильного функционирования терминалов PTY из основной системы. На данный момент, PTY реализованы с помощью файловой системы devpts. Вы можете быстро проверить правильность установки системы командой:

    expect -c "spawn ls"
    

    Если Вы получили ответ:

    The system has no more ptys. Ask your system administrator to create more.
    

    то Ваш основной дистрибутив не поддерживает операции PTY. В этом случае здесь не место запуску тестирования для GCC и Binutils, и Вы можете пропустить его. Вы можете проконсультироваться в LFS Wiki на http://wiki.linuxfromscratch.org для более подробной информации.

    Распакуйте все три архива GCC (core, g++ и testsuite) в одном рабочем каталоге. Они распакуются в один общий подкаталог gcc-3.3.1.

    Для начала исправьте одну проблему и создайте необходимую сборку:

    patch -Np1 -i ../gcc-3.3.1-no_fixincludes-2.patch
    patch -Np1 -i ../gcc-3.3.1-specs-2.patch
    

    Первый патч отключит скрипт GCC fixincludes. При нормальных обстоятельствах скрипт GCC fixincludes сканирует систему на предмет поиска файлов заголовков Glibc, нуждающихся в исправлении, исправляет их и переносит их в каталог подключаемых файлов для GCC. После чего, в главе 6, после установки новой Glibc, этот каталог будет найден, и в результате GCC найдет заголовки основной системы, а Вы не сможете корректно использовать Glibc в системе LFS.

    Последний патч изменяет расположение по умолчанию для динамического компоновщика GCC (обычно ld-linux.so.2). Он также удаляет /usr/include из пути для поиска GCC. Пропатчивание spec-файла сейчас позволит убедиться, что Ваш новый динамический компоновщик будет использоваться собираемым GCC. То есть, Ваши окончательные и временные двоичные иодули будут скомпонованы уже с новой Glibc.

    Важно: Эти патчи являются критичными для корректной сборки. Не забудьте применить их.

    Создайте отдельный каталог для сборки и перейдите в него:

    mkdir ../gcc-build
    cd ../gcc-build
    

    Перед началом сборки GCC не забудьте дезактивировать все переменные окружения, в которых были изменены параметры для оптимизации.

    Теперь подготовьте GCC к компиляции:

    ../gcc-3.3.1/configure --prefix=/tools --with-local-prefix=/tools \
                           --enable-clocale=gnu --enable-shared \
                           --enable-threads=posix --enable-__cxa_atexit \
                           --enable-languages=c,c++
    

    Описание опций конфигурации:

    Скомпилируйте пакет:

    make
    

    Здесь нет необходимости использовать цепь bootstrap, так как Вы компилируете этот GCC с помощью той же самой версии GCC, но установленой ранее.

    Замечание: Запуск тестирования здесь не настолько важен, как в главе 6.

    Протестируйте результаты:

    make -k check
    

    Флаг -k используется для того, чтобы тестирование не прекратилось после получения первого отрицательного результата, а проводились дальнейшие тесты. Тестирование GCC довольно исчерпывающее, и поэтому Вы практически гарантировано получите пару отрицательных результатов тестов. Для просмотра результатов тестирования выполните команду:

    ../gcc-3.3.1/contrib/test_summary | more
    

    Вы можете сравнить Ваши результаты с результатами из списка рассылки для того, чтобы найти аналогичные Вашим. К примеру, посмотреть результаты тестирования GCC-3.3.1 на i686-pc-linux-gnu можно на http://gcc.gnu.org/ml/gcc-testresults/2003-08/msg01612.html.

    Проверьте, чтобы в результатах были:

    * 1 XPASS (unexpected pass) for g++
    * 1 FAIL (unexpected failure) for g++
    * 2 FAIL for gcc
    * 26 XPASS's for libstdc++
    

    Неожиданным прохождением тест для g++ обязан использованию --enable-__cxa_atexit. Но не все платформы поддерживающие GCC поддерживают также и "__cxa_atexit" в своих библиотеках C, поэтому этот тест не всегда может пройти.

    26 неожиданных успешных тестов libstdc++ обязаны использованию --enable-clocale=gnu, которая корректирует выбор на Glibc-системах версий 2.2.5 и выше. Поддержка основных локалей в библиотеке GNU C важнее, в противном случае выбирается "общая" модель (которая может быть применима в случаях использования Newlibc, Sun-libc или других libc). Тестирование libstdc++ в случае применения "основной" модели для тестов не всегда может пройти успешно.

    Неожиданные отрицательные результаты также не могут быть проигнорированы. Разработчики GCC обычно знают о них, но пока не могут исправить. В общем, проверьте результаты, как было описано выше. Если все в порядке, то можно продолжать.

    Наконец установите пакет:

    make install
    

    Замечание: В этом месте рекомендуется повторить простой тест, описанный ранее. Вернитесь к части "Интеграция Glibc" и повторите проверку. Если она не удалась, видимо, Вы забыли наложить вышеупомянутый патч GCC Specs.

    Установка Binutils-2.14: Шаг 2

    Ожидаемое время сборки:           1.5 SBU
    Ожидаемое место на диске:         108 MB
    

    Переустановка Binutils

    Снова создадим отдельный каталог для сборки:

    mkdir ../binutils-build
    cd ../binutils-build
    

    Теперь подготовим Binutils к компиляции:

    ../binutils-2.14/configure --prefix=/tools --enable-shared \
                               --with-lib-path=/tools/lib
    

    Описание опций конфигурации:

    Перед началом сборки Binutils не забудьте сбросить значения переменных окружения с флагами оптимизации по умолчанию.

    Теперь откомпилируем пакет:

    make
    

    Замечание: Здесь не обязательно запускать тестирование Binutils, так как это не настолько важно, как в главе 6.

    Протестируем полученные результаты:

    make check
    

    К сожалению, нет простого пути увидеть результаты теста, как в предыдущем пакете GCC. Тем не менее, если тестирование не прошло, то это сразу будет видно. На выводе будет что-то наподобие:

    make[1]: *** [check-binutils] Error 2
    

    Теперь установим пакет:

    make install
    

    Теперь подготовим Binutils к переопределению средств в следующей главе:

    make -C ld clean
    make -C ld LIB_PATH=/usr/lib:/lib
    

    Внимание! Не удаляйте сейчас каталоги с исходными текстами и сборкой Binutils. Они будут нужны в следующей главе в их нынешнем виде.

    Установка Gawk-3.1.3

    Ожидаеморе время сборки:           0.2 SBU
    Ожидаемое место на диске:          17 MB
    

    Описание Gawk

    Gawk является реализацией awk, который используется для манипуляций с текстовыми файлами.

    Устанавливаемые программы: awk (ссылка на gawk), gawk, gawk-3.1.3, grcat, igawk, pgawk, pgawk-3.1.3 и pwcat.

    Зависимости установки Gawk

    Gawk зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Gawk

    Подготовьте Gawk к компиляции:

    ./configure --prefix=/tools
    

    Откомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборуи. Вы можете запустить его командой:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Coreutils-5.0

    Ожидаемое время сборки:           0.9 SBU
    Ожидаемое место на диске:         69 MB
    

    Описание Coreutils

    Пакет Coreutils содержит некоторые простые системные утилиты.

    Устанавливаемые программы: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, kill, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami и yes.

    Зависимости установки Coreutils

    Coreutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

    Установка Coreutils

    Подготовьте Coreutils к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Вы можете запустить его командой:

    make RUN_EXPENSIVE_TESTS=yes check
    

    Описание параметров make:

    Теперь установите пакет:

    make install
    

    Установка Bzip2-1.0.2

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         2.5 MB
    

    Описание Bzip2

    Bzip2 является блочным файловым компрессором (block-sorting file compressor), который сжимает, как правило, лучше традиционного gzip.

    Устанавливаемые программы: bunzip2 (ссылка на bzip2), bzcat (ссылка на bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless и bzmore.

    Устанавливаемые библиотеки: libbz2.a, libbz2.so (link to libbz2.so.1.0), libbz2.so.1.0 (link to libbz2.so.1.0.2) и libbz2.so.1.0.2.

    Зависимости установки Bzip2

    Bzip2 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Make.

    Установка Bzip2

    Пакет Bzip2 не содержит скрипта configure. Он компилируется и устанавливается одной командой:

    make PREFIX=/tools install
    

    Установка Gzip-1.3.5

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         2.6 MB
    

    Описание Gzip

    Пакет Gzip содержит программы для сжатия и распаковки файлов с использованием алгоритма сжатия LZ77.

    Устанавливаемые программы: gunzip (ссылка на gzip), gzexe, gzip, uncompress (ссылка на gunzip), zcat (ссылка на gzip), zcmp, zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore и znew.

    Зависимости установки Gzip

    Gzip зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

    Установка Gzip

    Подготовьте Gzip к установке:

    ./configure --prefix=/tools
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Diffutils-2.8.1

    Ожидаемое время сборки:          0.1 SBU
    Ожидаемое место на диске:        7.5 MB
    

    Описание Diffutils

    Программы из этого пакета могут показать различия между двумя (или тремя) файлами или каталогами. Они обычно используются для создания различных патчей.

    Устанавливаемые программы: cmp, diff, diff3 и sdiff.

    Зависимоти установки Diffutils

    Diffutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Diffutils

    Подготовьте Diffutils к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Findutils-4.1.20

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         7.6 MB
    

    Описание Findutils

    Пакет Findutils содержит программы для поиска файлов, в том числе на лету (путем рекурсивного поиска по каталогам и показывая только файлы, удовлетворяющие параметрам поиска) или поиск через базу данных.

    Устанавливаемые программы: bigram, code, find, frcode, locate, updatedb и xargs.

    Зависимости установки Findutils

    Findutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Findutils

    Подготовьте Findutils к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите запустить его, выполните следующую команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Make-3.80

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         8.8 MB
    

    Описание Make

    Make автоматически определяет, какие части большой программы должны быть перекомпилированы и вызывает команды для их перекомпиляции.

    Устанавливаемые программы: make.

    Зависимости установки Make

    Make зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep и Sed.

    Установка Make

    Подготовьте Make к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте программу:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите запустить его, выполните следующую команду:

    make check
    

    Теперь установим пакет и документацию к нему:

    make install
    

    Установка Grep-2.5.1

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         5.8 MB
    

    Описание Grep

    Grep является пролграммой, используемой для печати строк из файла, которые совпадают с заданым шаблоном.

    Устанавливаемые программы: egrep (ссылка на grep), fgrep (ссылка на grep) и grep.

    Зависимости установки Grep

    Grep зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Make, Sed и Texinfo.

    Установка Grep

    Подготовьте Grep к компиляции:

    ./configure --prefix=/tools --disable-perl-regexp --with-included-regex
    

    Описание параметров конфигурации:

    Скомпилируйте программу:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите это использовать, выполните команду:

    make check
    

    Теперь установите пакет и документацию к нему:

    make install
    

    Установка Sed-4.0.7

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         5.2 MB
    

    Описание Sed

    Sed является редактором потоков. Редактор потоков используется для выполнения простых преобразований текста во входном потоке (файл или стандартный ввод).

    Устанавливаемые программы: sed.

    Зависимости установки Sed

    Sed зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Texinfo.

    Установка Sed

    Подготовьте Sed к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте программу:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать это, то выполните команду:

    make check
    

    Теперь установите пакет и документацию:

    make install
    

    Установка Gettext-0.12.1

    Ожидаемое время сборки:           7.2 SBU
    Ожидаемое место на диске:         55 MB
    

    Описание Gettext

    Пакет Gettext используется для интернационализации и локализации. Программы могут быть скомпилированы с поддержкой родного языка (Native Language Support, NLS) для получения возможности вывода сообщений на языке пользователя.

    Устанавливаемые программы: autopoint, config.charset, config.rpath, gettext, gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, project-id, team-address, trigger, urlget, user-email и xgettext.

    Устанавливаемые библиотеки: libasprintf[a,so], libgettextlib[a,so], libgettextpo[a,so] и libgettextsrc[a,so].

    Зависимости установки Gettext

    Gettext зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Gettext

    Подготовьте Gettext к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Тем не менее, тестирование Gettext в этой главе может не пройти успешно из-за зависимостей от основной системы, к примеру, если будет найден компилятор Java. Тестирование Gettext занимает много времени и не является критичным. Поэтому я не рекомендую запускать его здесь. Если же Вы все-таки захотите использовать его, выполните команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Ncurses-5.3

    Ожидаемое время сборки:           0.7 SBU
    Ожидаемое место на диске:         26 MB
    

    Описание Ncurses

    Пакет Ncurses содержит библиотеки для расширения возможностей текстового интерфейса, включая панели и меню.

    Устанавливаемые программы: captoinfo (ссылка на tic), clear, infocmp, infotocap (ссылка на tic), reset (ссылка на tset), tack, tic, toe, tput и tset.

    Устанавливаемые библиотеки: libcurses.[a,so] (ссылка на libncurses.[a,so]), libform.[a,so], libmenu.[a,so], libncurses++.a, libncurses.[a,so] и libpanel.[a,so].

    Зависимости установки Ncurses

    Ncurses зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Ncurses

    Сначала сделайте следующее:

    patch -Np1 -i ../ncurses-5.3-etip-2.patch
    patch -Np1 -i ../ncurses-5.3-vsscanf.patch
    

    Первый патч скорректирует файл заголовков etip.h, а второй исправит некоторые предупреждения компилятора при присутствии конкурирующих библиотек.

    Теперь подготовьте Ncurses к компиляции:

    ./configure --prefix=/tools --with-shared --without-debug --without-ada \
                --enable-overwrite
    

    Описание параметров конфигурации:

    Скомпилируйте программы и библиотеки:

    make
    

    Теперь установите пакет и документацию:

    make install
    

    Установка Patch-2.5.4

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         1.9 MB
    

    Описание Patch

    Программа patch модифицирует файлы в соответствии с файлом патча. Файл с патчем, как правило, список, сгенерированный программой diff, который содержит инструкции к тому, какие из оригинальных файлов нуждаются в модификации.

    Устанавливаемые программы: patch.

    Зависимости установки Patch

    Patch зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

    Установка Patch

    Подготовьте Patch к компиляции:

    CPPFLAGS=-D_GNU_SOURCE
    ./configure --prefix=/tools
    

    Флаг препроцессора -D_GNU_SOURCE нужен только на платформах PowerPC. На других платформах Вы можете его пропустить.

    Скомпилируйте программу:

    make
    

    Теперь установите пакет и документацию:

    make install
    

    Установка Tar-1.13.25

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         10 MB
    

    Описание Tar

    Tar является архиватором, разработанным для сохранения и распаковки файлов в и из архивов, известных как tar-файлы.

    Устанавливаемые программы: rmt и tar.

    Зависимости установки Tar

    Tar зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Tar

    Подготовьте Tar к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте программу:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите это использовать. то выполните команду:

    make check
    

    Теперь установите пакет и документацию:

    make install
    

    Установка Texinfo-4.6

    Ожидаемое сремя сборки:           0.2 SBU
    Ожидаемое место на диске:         16 MB
    

    Описание Texinfo

    Пакет Texinfo содержит программы, используемые для чтения, записи и конвертирования документов Info, которые содержат системную документацию.

    Устанавливаемые программы: info, infokey, install-info, makeinfo, texi2dvi и texindex.

    Зависимости установки Texinfo

    Texinfo зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses и Sed.

    Установка Texinfo

    Подготовьте Texinfo к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте программы:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать его, то выполните команду:

    make check
    

    Теперь установим пакет и документацию:

    make install
    

    Установка Bash-2.05b

    Ожидаемое время сборки:           1.2 SBU
    Ожидаемое место на диске:         27 MB
    

    Описание Bash

    Bash (Bourne-Again SHell) обычно используется как интерпретатор команд в Unix-системах. Программа bash считывает данные со стандартного ввода (клавиатуры, к примеру). Пользователь вводит что-либо, и программа определяет, что именно пользователь ввел, и что ей с этим делать, например, запустить другую программу.

    Устанавливаемые программы: bash, sh (ссылка на bash) и bashbug.

    Зависимости установки Bash

    Bash зависит от Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses и Sed.

    Установка Bash

    Bash содержит несколько известных ошибок. Исправьте их, применив патч:

    patch -Np1 -i ../bash-2.05b-2.patch
    

    Теперь подготовьте Bash к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте программу:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, выполните команду:

    make tests
    

    Теперь установите пакет и документацию:

    make install
    

    Теперь создайте ссылку для программ, которые используют sh в качестве системной оболочки:

    ln -s bash /tools/bin/sh
    

    Установка Util-linux-2.12

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         8 MB
    

    Описание Util-linux

    Пакет Util-linux содержит ряд разнообразных утилит. Некоторые из них используются весьма часто для монтирования, размонтирования, форматирования и управления драйверами дисков, открытия портов tty и вывода сообщений ядра.

    Устанавливаемые программы: agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock, ipcrm, ipcs, isosize, kill, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash, parse.tcsh, pg, pivot_root, ramsize (ссылка на rdev), raw, rdev, readprofile, rename, renice, rev, rootflags (ссылка на rdev), script, setfdprm, setsid, setterm, sfdisk, swapoff (ссылка на swapon), swapon, test.bash, test.tcsh, tunelp, ul, umount, vidmode (ссылка на rdev), whereis и write.

    Зависимости установки Util-linux

    Util-linux зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed и Zlib.

    Установка Util-linux

    Util-linux не может использовать заголовки и библиотеки из каталога /tools. Это исправляется с помощью исправления скрипта конфигурации:

    cp configure configure.backup
    sed "s@/usr/include@/tools/include@g" configure.backup > configure
    

    Подготовьте Util-linux к компиляции:

    ./configure
    

    Скомпилируйте поддержку некоторых шаблонов:

    make -C lib
    

    Поскольку Вам нужны только некоторые из утилит из этого пакета, соберите только их:

    make -C mount mount umount
    make -C text-utils more
    

    Теперь скопируйте эти файлы в каталог временных средств:

    cp mount/{,u}mount text-utils/more /tools/bin<
    

    Установка Perl-5.8.0

    Ожидаемое время сборки:           0.8 SBU
    Ожидаемое место на диске:         74 MB
    

    Описание Perl

    Пакет Perl содержит язык perl (Practical Extraction and Report Language). Perl собрал некоторые лучшие свойства C, sed, awk и sh в одном мощном языке.

    Устанавливаемые программы: a2p, c2ph, dprofpp, enc2xs, find2perl, h2ph, h2xs, libnetcfg, perl, perl5.8.0 (ссылка на perl), perlbug, perlcc, perldoc, perlivp, piconv, pl2pm, pod2html, pod2latex, pod2man, pod2text, pod2usage, podchecker, podselect, psed (ссылка на s2p), pstruct (ссылка на c2ph), s2p, splain и xsubpp.

    Зависимости установки Perl

    Perl зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Perl

    Для начала примените патч для библиотеки C:

    patch -Np1 -i ../perl-5.8.0-libc-3.patch
    

    Убедитесь, что некоторые статические расширения будут собраны:

    chmod u+w hints/linux.sh
    echo 'static_ext="IO re Fcntl"' >> hints/linux.sh
    

    Теперь подготовьте Perl к компиляции:

    ./configure.gnu --prefix=/tools
    

    Скомпилируйте только необходимые средства:

    make perl utilities
    

    Теперь скопируйте эти средства и их библиотеки в каталоги назначения:

    mkdir -p /tools/lib/perl5/5.8.0
    cp perl pod/pod2man /tools/bin
    cp -R lib/* /tools/lib/perl5/5.8.0
    

    Урезание

    Описываемый здесь шаг не является обязательным. Если Ваш раздел LFS очень мал, Вы хотите просто попробовать или у Вас есть другие причины, то Вы можете выполнить инструкции этого раздела. Исполняемые файлы и библиотеки собираются с использованием ненужных символов отладки, это около 130 MB. Вы можете удалить эти символы командами:

    strip --strip-unneeded /tools/{,s}bin/*
    strip --strip-debug /tools/lib/*
    

    Первая команда пропустит около двадцати файлов, сообщив что они неподдерживаемого формата. Большая часть из них скрипты.

    Ни в коем случае не используйте параметр --strip-unneeded для библиотек: они будут испорчены, и Вам придеться собирать их все заново вместе с Glibc.

    Для освобождения еще пары мегабайт, можете убрать всю документацию:

    rm -rf /tools/{,share/}{doc,info,man}
    

    Вам понадобится около 850 MB свободного места на Вашей системе LFS для сборки и установки Glibc на следующем шаге. Если Вы сможете собрать и установить Glibc, то сможете собрать и установить все остальное.

    ерь подгоlfs50rus/chap06.htm 600 0 0 363343 10740542764 7360 Установка основных системных программ

    Глава 6. Установка основных системных программ

    Содержание
    Вступление
    Про отладочные символы
    Вход в среду chroot
    Изменение владельца
    Создание каталогов
    Монтирование файловых систем proc и devpts
    Создание необходимых ссылок
    Создание файлов passwd и group
    Создание устройств (Makedev-1.7)
    Установка заголовков Linux-2.4.22
    Установка Man-pages-1.60
    Установка Glibc-2.3.2
    Переустановка средств
    Установка Binutils-2.14
    Установка GCC-3.3.1
    Установка Coreutils-5.0
    Установка Zlib-1.1.4
    Установка Lfs-Utils-0.3
    Установка Findutils-4.1.20
    Установка Gawk-3.1.3
    Установка Ncurses-5.3
    Установка Vim-6.2
    Установка M4-1.4
    Установка Bison-1.875
    Установка Less-381
    Установка Groff-1.19
    Установка Sed-4.0.7
    Установка Flex-2.5.4a
    Установка Gettext-0.12.1
    Установка Net-tools-1.60
    Установка Inetutils-1.4.2
    Установка Perl-5.8.0
    Установка Texinfo-4.6
    Установка Autoconf-2.57
    Установка Automake-1.7.6
    Установка Bash-2.05b
    Установка File-4.04
    Установка Libtool-1.5
    Установка Bzip2-1.0.2
    Установка Diffutils-2.8.1
    Установка Ed-0.2
    Установка Kbd-1.08
    Установка E2fsprogs-1.34
    Установка Grep-2.5.1
    Установка Grub-0.93
    Установка Gzip-1.3.5
    Установка Man-1.5m2
    Установка Make-3.80
    Установка Modutils-2.4.25
    Установка Patch-2.5.4
    Установка Procinfo-18
    Установка Procps-3.1.11
    Установка Psmisc-21.3
    Установка Shadow-4.0.3
    Установка Sysklogd-1.4.1
    Установка Sysvinit-2.85
    Установка Tar-1.13.25
    Установка Util-linux-2.12
    Установка GCC-2.95.3
    Перезапуск команды chroot
    Установка LFS-Bootscripts-1.12
    Настройка компонентов системы

    Вступление

    В этой главе Вы плавно войдете в фазу сборки и начнете серьезно собирать LFS-систему. Для этого войдите в среду chroot внутри мини-Linux-системы, проделайте некоторые дополнительные работы и начните устанавливать пакеты один за лругим.

    Установка всех этих пакетов весьма проста, и Вы можете подумать, что достаточно было бы указать общее описание установки для всех пакетов, а конкретезировать только если установка их отличается от стандартной. Несмотря на то, что я согласен с этим утверждением, я решил дать полные инструкции по установке каждого из пакетов просто для того, чтобы минимизировать возможность возникновения ошибок.

    Если Вы решите использовать оптимизацию компилятора в этой главе, то стоит посмотреть справку по оптимизации на http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt. Оптимизация компилятора может сделать программы быстрее, но могут возникнуть сложности при компиляции и некоторые проблемы при работе этих программ. Если пакет отказывается компилироваться при использовании оптимизации, попробуйте скомпилировать пакет без нее, возможно, проблемы исчезнут. Если пакет компилируется с использованием оптимизации, то есть возможность, что он скомпилируется некорректно, например, могут появиться проблемы между интерактивностью в коде и собранными средствами. В общем, использование оптимизауии при сборке является рискованным. Новичкам в LFS рекомендуется собирать систему без оптимизации. В Ваших силах сделать систему быстрой и стабильной одновременно.

    Список пакетов, которые надо собрать, является строго последовательным, надо убедиться, что в них не будет прописан путь к /tools. По некоторым причинам, не стоит компилировать пакеты параллельно. Параллельная сборка может показаться выгодной иногда (в особенности на многопроцессорных системах), но в результате у программ появится зависимость от средств из /tools, и они не смогут работать, когда Вы удалите этто каталог.

    Про отладочные символы

    Большинство программ и библиотек по умолчанию компилируются с символами отладки (с опцией -g для gcc).

    Когда отлаживается программа или библиотека, которая была собрана с включением отладочной информации, то отладчик может передать Вам не только адреса в памяти, но и имена всех переменных и функций.

    Но исключение отладочных символов существенно уменьшает размер программы или библиотеки. Чтобы получить представление о том, сколько места занимает отладочная информация, посмотрите следующее:

    Размер может немного варьироваться в зависимости от используемых компилятора и библиотеки C. Но размер между программами и библиотеками, собранными с отладочной информацией и без нее, может различаться в 2-5 раз.

    Большинство людей никогда не используют отладчик, и довольно много места на диске освободится при удалении отладочных символов.

    Для удаления отладочных символов из исполняемых модулей (которые должны быть в форматах a.out или ELF), запустите strip --strip-debug filename . Могут использоваться шаблоны для выбора нескольких файлов (например, strip --strip-debug $LFS/tools/bin/*).

    Для Вашего удобства, глава 9 включает одну простую команду для удаления всех отладочных символов из всех программ и библиотек в системе. Дополнительную информацию по оптимизации можно получить на http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt.

    Вход в среду chroot

    Теперь пришло время войти в среду chroot для установки необходимых пакетов. Перед тем, как войти в chroot, необходимо войти в систему как root потому, что только root может выполнить команду chroot.

    Убедитесь, что переменная окружения LFS установлена корректно запуском echo $LFS, и проверьте, что она содержит путь к точке монтирования раздела LFS, к примеру /mnt/lfs.

    Из-под привелегий root запустите следующую команду для входа в среду chroot:

    chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
           PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
           /tools/bin/bash --login
    

    Параметр -i, передаваемый команде env, очистит все переменные окружения среды chroot. После этого Вы устанавливаете только переменные HOME, TERM, PS1 и PATH. Конструкция TERM=$TERM означает, что переменная окружения TERM внутри среды chroot примет то же значение, что и вне среды. Эта переменная нужна таким программам как vim и less для правильной работы. Если нужны другие переменные, такие как CFLAGS или CXXFLAGS, то это хорошее место, чтобы задать их.

    С этого места уже не надо использовать переменную LFS, потому что каталог, указанный в ней, стал корневым при входе в среду chroot.

    Вы указали /tools/bin последней в списке путей PATH. Благодаря этому пакеты из этого каталога не будут использованы, если Вы уже установили окончательную версию соответствующего пакета. Это действует в том случае, когда shell не запоминает расположение исполняемых файлов, именно поэтому Вы отключили эту функцию в предыдущей главе.

    Запомните, что все команды до конца этой главы и во всех последующих выполняются из среды chroot. Если Вы покинули эту среду по любой причине (например, после перезагоузки), то должны снова зайти в среду chroot и смонтировать файловые системы proc и devpts (описываются позже) перед продолжением установки.

    Заметьте, что bash выводит "I have no name!". Это нормально, поскольку файл /etc/passwd пока еще не создан.

    Изменение владельца

    На данный момент, права на каталог /tools принадлежат пользователю lfs, пользователю, который существует только в основной системе. Хотя Вы все равно удалите каталог /tools, когда система будет собрана, Вы можете захотеть не делать этого, Например, для построения другой системы LFS. Но если Вы хотите оставить каталог /tools, то у нее будет владелец с определенным ID но без логина. Это опасно потому, что впоследствии созданный пользовательский логин может получить такой же ID и станет владельцем каталога /tools и всех файлов внутри него, и использовать это в своих целях.

    Чтобы избежать этого, Вы можете добавить пользователя lfs в Вашу новую LFS при создании файла /etc/passwd, и подправить его таким образом, чтобы ID этого пользователя и группы были идентичны им же в основной системе. Помимо этого, Вы можете (в этой книге так и делается) связать содержимое каталога /tools с пользователем root запуском команды:

    chown -R 0:0 /tools
    

    Команда использует "0:0" вместо "root:root" потому, что chown не может использовать имя "root" до того, как будет создан файл паролей.

    Создание каталогов

    Теперь надо создать структуру файловой системы LFS. Создайте дерево каталогов, используя следующие команды:

    mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc}
    mkdir -p /{root,sbin,tmp,usr/local,var,opt}
    for dirname in /usr /usr/local do
    mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
    ln -s share/{man,doc,info} $dirname
    mkdir $dirname/share/{dict,doc,info,locale,man}
    mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
    mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
    done
    mkdir /var/{lock,log,mail,run,spool}
    mkdir -p /var/{tmp,opt,cache,lib/misc,local}
    mkdir /opt/{bin,doc,include,info}
    mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}
    

    По умолчанию, каталоги создаются с правами доступа 755, но это правильно не для всех из них. Вы сделаете два изменения: одно для домашнего каталога пользователя root, а другое для каталога, предназначенного для временных файлов.

    chmod 0750 /root
    chmod 1777 /tmp /var/tmp
    

    Первой командой Вы запрещаете доступ в каталог /root для всех, кроме владельца. То же самое надо будет потом сделать для домашних каталогов остальных пользователей. Второй командой Вы позволяете всем пользователям записывать и читать файлы в и из каталогов /tmp и /var/tmp, но они не смогут удалять оттуда файлы других пользователей. Последнее достигается установкой "sticky bit", старшего бита в битовой маске 1777.

    Совместимость с FHS

    Вы создаете дерево каталогов совместимым со стандартом FHS (доступен на http://www.pathname.com/fhs). За исключением каталогов /usr/local/games и /usr/share/games, поскольку они не нужны в минимальной системе. Тем не менее, можно сделать Вашу систему FHS-совместимой. Поскольку структура подкаталогов /usr/local/share не описана в стандарте FHS, то Вы создаете ее так, как Вам надо.

    Монтирование файловых систем proc и devpts

    Для правильного функционирования основных программ файловые системы proc и devpts должны быть доступны из среды chroot. Файловые системы могут монтироваться несколько раз в различных точках, так что то, что они будут смонтированы и на Вашей основной системе, не создаст проблем. Особенно потому, что они являются виртуальными файловыми системами.

    Файловая система proc является системой с информацией о процессах, которая используется ядром для представления информации о статусе системы.

    Файловая система proc монтируется в /proc запуском команды:

    mount proc /proc -t proc
    

    Вы можете получить предупреждение от команды mount следующего вида:

    warning: can't open /etc/fstab: No such file or directory
             not enough memory
    

    Проигнорируйте его, оно выводится только потому, что система еще не полностью установлена и отсутствуют некоторые файлы. Команда mount все равно прошла успешно и это все, о чем Вам следует беспокоится здесь.

    Файловая система devpts описывается проще, она обеспечивает доступ к терминалам PTY.

    Файловая система devpts монтируется в /dev/pts командой:

    mount devpts /dev/pts -t devpts
    

    Если эта команда не прошла, то появится сообщение вида:

    filesystem devpts not supported by kernel
    

    Как правило, это означает, что ядро Вашей основной системы было скомпилировано без поддержки файловой системы devpts. Вы можете проверить, какие файловые системы поддерживаются ядром запуском команды cat /proc/filesystems. Если файловая система с названием devfs будет присутствовать в этом списке, то Вы можете пока работать без проблем смонтировав основную файловую систему devfs в корне структуры /dev, которую Вы создадите позднее в разделе "Создание устройств (Makedev)". Если devfs нет в списке, то не беспокойтесь потому, что не обязательно использовать именно такую работу с PTY в среде chroot. Вы исправите это в последующем разделе Makedev.

    Запомните, если по любой причине Вы прекратили работу с LFS и решили возобновить позже, важно убедиться, что эти системы будут смонтированы внутри среды chroot, иначе могут возникнуть определенные проблемы.

    Создание необходимых ссылок

    Некоторые программы имеют встроенные пути к программам, которые пока не установлены. Чтобы обеспечить доступ к этим программам, создайте ссылки на них, которые заменят пока реальные файлы до тех пор, пока их не установите.

    ln -s /tools/bin/{bash,cat,pwd,stty} /bin
    ln -s /tools/bin/perl /usr/bin
    ln -s /tools/lib/libgcc_s.so.1 /usr/lib
    ln -s bash /bin/sh
    

    Создание файлов passwd и group

    Для возможности регистрации в качестве пользователя root и для распознавания имени "root", необходимо создать соответствующие элементы в файлах /etc/passwd и /etc/group.

    Создайте файл /etc/passwd запуском команды:

    cat > /etc/passwd << "EOF"
    root:x:0:0:root:/root:/bin/bash
    EOF
    

    Пароль пользователя root (символ "x" заменяет его здесь) будет определен позднее.

    Создайте файл /etc/group запуском следующей команды:

    cat > /etc/group << "EOF"
    root:x:0:
    bin:x:1:
    sys:x:2:
    kmem:x:3:
    tty:x:4:
    tape:x:5:
    daemon:x:6:
    floppy:x:7:
    disk:x:8:
    lp:x:9:
    dialout:x:10:
    audio:x:11:
    EOF
    

    Созданные группы не являются частью какого-то стандарта, эти группы используются скриптом MAKEDEV в следующей главе. Помимо группы "root", LSB (http://www.linuxbase.org) рекомендует устанавливать GID равный 1 для группы "bin". Все другие имена групп и их GID могут свободно выбираться пользователем, но некоторые пакеты зависят от имени группы, хотя и не зависят от номера GID.

    Наконец, Вы перезайдете в chroot. Имя пользователя и имя группы начнут работать правильно после создания файлов /etc/passwd и /etc/group потому, что Вы установили полную Glibc в главе 5. Это должно убрать вывод сообщения "I have no name!".

    exec /tools/bin/bash --login +h
    

    Замечание по использованию параметра +h. Это скажет bash не использовать внутренний кэш путей. Без этого bash будет запоминать пути к исполненным двоичным модулям. Поскольку Вы собираетесь использовать вновь скомпилированные пакеты по мере их установки, Вы должны отключить эту функцию в этой главе.

    Создание устройств (Makedev-1.7)

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         50 KB
    

    Описание MAKEDEV

    Скрипт MAKEDEV создает статические записи для устройств, которые обычно расположены в каталоге /dev. Детальную информацию об устройствах Вы можете получить в файле Documentation/devices.txt в каталоге с исходными кодами ядра.

    Устанавливаемый скрипт: MAKEDEV.

    Зависимости установки MAKEDEV

    Make зависит от Bash, Coreutils.

    Создание устройств

    Заметьте, что распаковка файла MAKEDEV-1.7.bz2 не создаст каталога, и Вам не надо будет переходить в него с помощью cd, так как этот файл содержит только сам скрипт.

    Установите скрипт MAKEDEV:

    bzcat MAKEDEV-1.7.bz2 > /dev/MAKEDEV
    chmod 754 /dev/MAKEDEV
    

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

    cd /dev
    ./MAKEDEV -v generic-nopty
    

    Описание аргументов:

    Если скрипт не выполниться из-за пропуска какого-либо специального устройства zzz, попробуйте запустить ./MAKEDEV -v zzz. Помимо этого, Вы можете создать устройства через программу mknod. Пожалуйста, загляните на man или info-страницы этой программы для получения более подробной информации.

    Помимо этого, если Вы не смонтировали файловую систему devpts в главе "Монтирование файловых систем proc и devpts", сейчас самое время сделать это. Если Ваше ядро поддерживает файловую систему devfs, запустите следующую команду для монтирования devfs:

    mount -t devfs devfs /dev
    

    Эта команда смонтирует файловую систему devfs внутри новой статической структуры /dev. Это не создаст проблем, так как если уже были файлы устройств, то они перекрылись новой файловой системой devfs.

    Если у Вас что-либо не сработало, то Вам надо запустить скрипт MAKEDEV для создания файлов ptyXX и ttyXX, которые в противном случае Вам не нужны. Убедитесь, что Вы находились в именно в каталоге /dev и запустите ./MAKEDEV -v pty. Последнее создаст более 512 специальных файлов устройств, которые не понадобятся, когда Вы окончательно загрузите законченую систему LFS.

    Установка заголовков Linux-2.4.22

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         186 MB
    

    Описание Linux

    Ядро Linux является основой любой Linux-системы. Это то, что делает Linux самой собой. Когда компьютер включается и загружает систему Linux, самым первым загружается ядро. Ядро инициализирует аппаратные компоненты: последовательные и параллельные порты, звуковые карты, сетевые карты, контролеры IDE, контролеры SCSI и много чего еще. Собственно, ядро делает доступным аппаратные элементы системы и позволяет запускаться программам.

    Устанавливаемые файлы: ядро и заголовки ядра.

    Зависимости установки Linux

    Linux зависит от Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl и Sed.

    Установка заголовков ядра

    На данном этапе Вы не будете компилировать ядро. Вы сделаете это после установки всех пакетов. Однако, в связи с тем, что некоторые пакеты требуют заголовочных файлов ядра, Вы распакуете ядро, настроите его и скопируете заголовки туда, где их будут искать пакеты при компиляции.

    Важно отметить. что файлы в каталоге с исходными текстами ядра не являются файлами с владельцем root. Когда Вы распакуете пакет как пользователь root (как это происходит здесь, в среде chroot), конечные файлы будут иметь ID владельца и группы как на компьютере, где создавался пакет. Это обычно не создает проблемы для любых других пакетов потому, что Вы обычно удаляете каталог с исходными текстами после установки. Но каталог с исходными текстами ядра Linux будет еще нужна очень долго, и может получиться, что какой-либо пользователь Вашей системы получит доступ к исходным текстам ядра.

    Чтобы исправить это, запустите команду chown -R 0:0 в каталоге linux-2.4.22 чтобы убедиться, что владельцем всех файлов оттуда будет root.

    Подготовьте заголовки к установке:

    make mrproper
    

    Это гарантирует, что дерево с исходными текстами ядра будет абсолютно чистым. Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра. Вы не можете быть абсолютно уверены в чистоте дерева даже после распаковки.

    Создайте файл include/linux/version.h:

    make include/linux/version.h
    

    Создайте платформно-зависимую ссылку include/asm:

    make symlinks
    

    Установите платформно-зависимые файлы заголовков:

    cp -HR include/asm /usr/include
    cp -R include/asm-generic /usr/include
    

    Установите кросс-платформенные файлы заголовков:

    cp -R include/linux /usr/include
    

    Некоторые из заголовков ядра используют файл заголовков autoconf.h. Поскольку Вы пока не сконфигурировали ядро, надо создать этот файл для того, чтобы компиляция следующих пакетов не закончилась ошибкой. Создайте пустой файл autoconf.h:

    touch /usr/include/linux/autoconf.h
    

    Почему Вы копируете заголовки ядра, а не создаете для них символические ссылки?

    Раньше было принято создавать символические ссылки для каталогов /usr/include/{linux,asm} на /usr/src/linux/include/{linux,asm}. Однако, это была плохая идея, как объясняет Линус Торвальдс в списке рассылки ядра Linux (Linux Kernel Mailing List, отрывок):

    Тем, кто компилирует новые ядра, настоятельно рекомендую не создавать
    символических ссылок (кроме той, которую создает само ядро,
    "linux/include/asm", символическая ссылка, которая используется при
    внутренней компиляции ядра.) именно так делаю я. В моем каталоге
    /usr/src/linux есть заголовки старого ядра 2.2.13, несмотря на то, что я не
    использовал ядро 2.2.13 уже очень давно. Однако именно с этими заголовками
    компилировался пакет glibc, соответственно именно эти заголовки соответствуют
    файлам объектов библиотеки. Также именно такое положение вещей являлось
    рекомендуемым на протяжении последних пяти лет. Я не могу понять, почему вся
    эта заморочка с символическими ссылками все еще существует, как зомби.
    Практически во всех дистрибутивах есть эта неработающая символическая ссылка,
    и люди до сих пор помнят, что исходники ядра Linux должны находится в
    "/usr/src/linux", несмотря на то, что это уже давно не так.
    

    Наиболее важная часть сообщения Линуса заключается в том, что файлы заголовков должны быть именно теми, с которыми компилировался пакет glibc. Это те заголовки, которые следует использовать в будущем при компиляции других пакетов, так как именно они соответствуют файлам библиотек объектного кода. Копируя заголовки, Вы удостоверяетесь, что они останутся доступными, если позже Вы решите обновить ядро.

    Заметьте, что не страшно, если исходные тексты ядра находятся в /usr/src/linux, главное, чтобы у Вас не было ссылок на /usr/include/{linux,asm}.

    Установка Man-pages-1.60

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         15 MB
    

    Описание Man-pages

    Пакет Man-pages содержит более 1200 страниц документации. Это детальная информация по функциям C и C++, описание наиболее важных файлов устройств и документация, которая обычно опущена в других пакетах.

    Устанавливаемые файлы: страницы документации.

    Зависимости установки Man-pages

    Man зависит от Bash, Coreutils, Make.

    Установка Man-pages

    Установите Man-pages запуском:

    make install
    

    Установка Glibc-2.3.2

    Ожидаемое время сборки:           12.3 SBU
    Ожидаемое место на диске:         784 MB
    

    Описание Glibc

    Glibc является библиотекой C, которая обеспечивает системные вызовы и основные функции, такие как  open, malloc, printf и другие. Библиотека C используется всеми динамически скомпонованными программами.

    Устанавливаемые программы: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic.

    Устанавливаемые библиотеки: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so и libutil.[a,so].

    Зависимости установки Glibc

    Glibc зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed и Texinfo.

    Установка Glibc

    Система сборки Glibc является весьма самодостаточной и должна установится корректно, если Ваши компоновщик и spec-файл находятся в /tools. Вы не можете установить spec и компоновщик перед установкой Glibc потому, что тест автоконфинурации Glibc даст фиктивные результаты, а от этого зависит чистота сборки.

    Замечание: Тестирование Glibc в этой главе является критичным. Ни в коем случае нельзя его пропускать.

    Перед началом сборки Glibc не забудьте снова распаковать архив Glibc-linuxthreads в каталоге glibc-2.3.2 и отключить переменные окружения, отвечающие за параметры оптимизации.

    На стадии установки Glibc выдает ошибку при отсутствии файла /etc/ld.so.conf. Исправьте это командой:

    touch /etc/ld.so.conf
    

    Примените ранее использовавшийся патч:

    patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch
    

    Документация по Glibc рекомендует собирать Glibc вне каталога с исходными текстами в отдельном каталоге для сборки:

    mkdir ../glibc-build
    cd ../glibc-build
    

    Теперь подготовим Glibc к компиляции:

    ../glibc-2.3.2/configure --prefix=/usr --disable-profile --enable-add-ons \
                             --libexecdir=/usr/bin --with-headers=/usr/include
    

    Описание параметров конфигурации:

    Скомпилируйте пакет:

    make
    

    Протестируйте результаты:

    make check
    

    Тестирование, описанное в части "Установка Glibc-2.3.2" главы 5, будет очень уместно здесь. Убедитесь перед продолжением установки, что все в порядке.

    Теперь установите пакет:

    make install
    

    Локали позволят Вашей системе работать на разных языках. Их установка не обеспечивается предыдущей командой, надо сделать это с помощью:

    make localedata/install-locales
    

    Альтернативой запуску предыдущей команды будет установка только необходимых локалей. Это обеспечивается запуском команды localedef. Информацию о ней можно получить из файла INSTALL из каталога glibc-2.3.2. Тем не менее, есть ряд локалей, которые необходимы для успешного прохождения некоторых тестов других пакетов. Следующие инструкции установят минимально необходимый набор локалей:

    mkdir -p /usr/lib/locale
    localedef -i de_DE -f ISO-8859-1 de_DE
    localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
    localedef -i en_HK -f ISO-8859-1 en_HK
    localedef -i en_PH -f ISO-8859-1 en_PH
    localedef -i en_US -f ISO-8859-1 en_US
    localedef -i es_MX -f ISO-8859-1 es_MX
    localedef -i fr_FR -f ISO-8859-1 fr_FR
    localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
    localedef -i it_IT -f ISO-8859-1 it_IT
    localedef -i ja_JP -f EUC-JP ja_JP
    

    Наконец, соберите man-страницы для linuxthreads:

    make -C ../glibc-2.3.2/linuxthreads/man
    

    Теперь установите их:

    make -C ../glibc-2.3.2/linuxthreads/man install
    

    Конфигурирование Glibc

    Вам нужно создать файл /etc/nsswitch.conf потому, что по умолчанию Glibc не создает этот файл, а без него Glibc не работает с сетью. Также это надо для работы с Вашей временной зоной.

    Создайте новый файл /etc/nsswitch.conf запуском следующих команд:

    cat > /etc/nsswitch.conf << "EOF"
    # Begin /etc/nsswitch.conf
    passwd: files
    group: files
    shadow: files
    publickey: files
    hosts: files dns
    networks: files
    protocols: db files
    services: db files
    ethers: db files
    rpc: db files
    netgroup: db files
    # End /etc/nsswitch.conf
    EOF
    

    Для определения Вашей временной зоны, запустите скрипт:

    tzselect
    

    Когда ответите на некоторые вопросы о Вашем местонахождении, скрипт выдаст Вашу временную зону. Что-то наподобие EST5EDT или Canada/Eastern. Создайте файл /etc/localtime запуском:

    cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime
    

    Описание параметров:

    Само собой, надо заменить Canada/Eastern на Вашу временную зону, которую определили с помощью скрипта tzselect.

    Настройка динамического загрузчика

    По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет динамические библиотеки, необходимые для программ, в /lib и /usr/lib. Таким образом, если есть каталоги с библиотеками, отличные от /lib и /usr/lib, надо указать их в файле /etc/ld.so.conf. Два наиболее распространенные каталога с дополнительными библиотеками находятся в /usr/local/lib и в /opt/lib, и Вы добавите их в путь поиска динамического компоновщика.

    Создайте новый файл /etc/ld.so.conf запуском команды:

    cat > /etc/ld.so.conf << "EOF"
    # Begin /etc/ld.so.conf
    /usr/local/lib
    /opt/lib
    # End /etc/ld.so.conf EOF

    Переустановка средств

    Теперь, когда Вы установили новую библиотку C, пришло время переустановить все остальные средства. Это надо для того, чтобы вновь скомпилированые программы использовали именно новую библиотеку C. Если говорить проще, то то, что Вы сейчас сделаете, это реверсия того, что Вы делали на этапе интеграции в прошлой главе.

    Первым делом отрегулируйте компоновщик. Для этого вернитесь к каталогам с исходными текстами и сборкой из второго шага установки Binutils. Установите отрегулированый компоновщик запуском следующей команды из каталога binutils-build:

    make -C ld INSTALL=/tools/bin/install install
    

    Замечание: Если Вы пропустили предупреждение о нежелательности удаления каталогов с исходными текстами и сборкой Binutils из второго шага их установки в главе 5 или по другим причинам удалили их, или у Вас нет доступа к ним, не беспокойтесь, пока еще не все потеряно. Просто проигнорируйте вышеприведенную команду. В результате следующий пакет, Binutils, будет скомпонован с использованием библиотек Glibc из /tools вместо /usr. Это не идеально, но тестирование показывает что в обоих случаях двоичный код Binutils будет идентичным.

    С этого момента все компилируемые программы будут собираться только с использованием библиотек из /usr/lib и /lib. Параметр INSTALL=/tools/bin/install необходим потому, что Makefile, созданый на втором шаге, содержит ссылки на /usr/bin/install, который пока что еще не установлен. Некоторые дистрибутивы содержат ссылку ginstall которая имеет первенство в Makefile, и это может создать здесь проблему. Вышеуказанная команда также решает и эту проблему.

    Теперь Вы можете удалить оба каталога Binutils.

    Теперь необходимо исправить точки в spec-файлах GCC, которые указывают на динамический компоновщик, так, чтобы они указывали на новый компоновщик. Самым простым будет следующее:

    SPECFILE=/tools/lib/gcc-lib/*/*/specs &&
    sed -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \
    $SPECFILE > newspecfile &&
    mv -f newspecfile $SPECFILE &&
    unset SPECFILE
    

    Желательно просто скопировать и вставить эту команду. После этого также неплохо было бы проверить spec-файлы, чтобы убедиться в сделаных изменениях.

    Важно: Если Вы работаете на платформах, на которых имя динамического компоновщика отличается от ld-linux.so.2, Вы должны заменить ld-linux.so.2 на имя компоновщика для Вашей платформы в вишеуказанной команде. Вернитесь к части "Технические моменты" в главе 5, если у Вас возникли вопросы.

    Внимание! На этом месте необходимо остановиться и убедиться, что основные функции (компиляция и компоновка) новых средств работают корректно. Для этого есть простой тест:

    echo 'main(){}' > dummy.c
    gcc dummy.c
    readelf -l a.out | grep ': /lib'
    

    Если все в порядке, то не будет ошибок, и на выводе Вы увидите:

    [Requesting program interpreter: /lib/ld-linux.so.2]
    

    Если эта надпись вообще не появилась или появилась другая, то что-то сильно не так. Вам надо исследовать и повторить все пройденные шаги, чтобы найти, в чем проблема и устранить ее. Точки для возврата после этого места уже не будет. Как правило, что-то не так бывает с вышеописаной правкой spec-файла. Убедитесь, что /lib содержит префикс динамического компоновщика. Само собой, если Вы работаете на платформе с названием динамического компоновщика, отличным от ld-linux.so.2, вывод будет несколько иным.

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

    rm dummy.c a.out
    

    Установка Binutils-2.14

    Ожидаемое время сборки:           1.4 SBU
    Ожидаемое место на диске:         167 MB
    

    Описание Binutils

    Binutils является набором средств разработки, содержащим компоновщик, ассемблер и другие средства для работы с объектными файлами и архивами.

    Устанавливаемые программы: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings и strip.

    Устанавливаемые библиотеки: libiberty.a, libbfd.[a,so] и libopcodes.[a,so].

    Зависмости установки Binutils

    Binutils зависит от: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.

    Установка Binutils

    Сейчас необходимо проверить правильность работы терминалов (PTY) в среде chroot. Мы проверим что все в порядке простым тестом:

    expect -c "spawn ls"
    

    Если Вы получили сообщение вида:

    The system has no more ptys. Ask your system administrator to create more.
    

    То Ваша среда chroot не может оперировать PTY. В этом случае не стоит запускать тестирование для Binutils и GCC до того, как Вы исправите это. Пожалуйста. вернитесь к частям "Монтирование файловых систем proc и devpts" и "Создание устройств (Makedev-1.7)" и выполните необходимые действия по устранению проблемы.

    Замечание: Тестирование Binutils здесь является критичным. Ни в коем случае не пропускайте его!

    Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Binutils рекомендуется компилировать с настройками по умолчанию. Следовательно, если Вы задали переменные такие, как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Binutils. Изменяя оптимизации для binutils, Вы действуете на свой страх и риск.

    Документация по Binutils рекомендует собирать Binutils вне каталога с исходными текстами в отдельном каталоге, выделенном для сборки:

    mkdir ../binutils-build
    cd ../binutils-build
    

    Теперь подготовьте Binutils к компиляции:

    ../binutils-2.14/configure --prefix=/usr --enable-shared
    

    Скомпилируйте весь пакет:

    make tooldir=/usr
    

    Обычно каталог со средствами (каталог, где располагаются исполняемые файлы) устанавливается в $(exec_prefix)/$(target_alias), куда они и располагаются, например, /usr/i686-pc-linux-gnu. Когда мы собираем средства только для своей системы, мы не нуждаемся в этом, достаточно установить только /usr. Такая установка нужна только в случае использования cross-компиляции (к примеру, компилируем пакет на машине Intel, но нужен код для работы на платформе PowerPC).

    Проверьте результаты компиляции:

    make check
    

    Тестирование, описанное в части "Установка Binutils-2.14: Шаг 2 " главы 5 является весьма уместным здесь. Убедитесь, что все в порядке перед продолжением установки.

    Теперь установите пакет:

    make tooldir=/usr install
    

    Установите заголовки libiberty, которые нужны для некоторых пакетов:

    cp ../binutils-2.14/include/libiberty.h /usr/include
    

    Установка GCC-3.3.1

    Ожидаемое время сборки:           11.7 SBU
    Ожидаемое место на диске:         294 MB
    

    Описание GCC

    Пакет GCC сдержит коллекцию компиляторов GNU, включая компиляторы C и C++.

    Устанавливаемые программы: c++, cc (ссылка на gcc), cc1, cc1plus, collect2, cpp, g++, gcc, gccbug и gcov.

    Устанавливаемые библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] и libsupc++.a.

    Зависимости установки GCC

    GCC зависит от Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo.

    Установка GCC

    Замечание: Тестирование GCC в этой главе является критичным. Ни в коем случае не пропускайте его.

    Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Следовательно, если Вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC. Изменяя оптимизацию для GCC, Вы действуете на свой страх и риск.

    Сейчас Вы собираетесь установить компиляторы языков C и C++, таким образом Вам надо распаковать архивы GCC-core и GCC-g++: они распакуются в один и тот же каталог. Вы можете также распаковать пакет GCC-testsuite. Полный пакет GCC содержит намного больше компиляторов. Инструкции по их установке Вы можете найти на http://www.linuxfromscratch.org/blfs/view/stable/general/gcc.html.

    Сначала наложите патчи:

    patch -Np1 -i ../gcc-3.3.1-no_fixincludes-2.patch
    patch -Np1 -i ../gcc-3.3.1-suppress-libiberty.patch
    

    Второй патч отключает установку libiberty из GCC, которые Вы установили вместе с binutils. Будьте внимательны, не применяйте патч GCC specs из главы 5 здесь!

    Документация на GCC рекомендует собирать GCC вне каталога с исходными текстами, в отдельном каталоге для сборки:

    mkdir ../gcc-build
    cd ../gcc-build
    

    Теперь подготовьте GCC к компиляции:

    ../gcc-3.3.1/configure --prefix=/usr --enable-shared --enable-threads=posix \
                           --enable-__cxa_atexit --enable-clocale=gnu \
                           --enable-languages=c,c++
    

    Скомпилируйте пакет:

    make
    

    Протестируйте результаты, но не останавливайтесь при ошибках (Вы должны просто запомнить их):

    make -k check
    

    Тестирование из части "Установка GCC-3.3.1: Шаг 2" главы 5 является весьма желательным здесь. Убедитесь, что все в порядке перед продолжением установки.

    Теперь установите пакет:

    make install
    

    Некоторые пакеты рассчитывают, что C PreProcessor будет установлен в каталоге /lib. Для удовлетворения нужд этих пакетов, создайте ссылку:

    ln -s ../usr/bin/cpp /lib
    

    Многие пакеты используют имя cc для вызова компилятора C. Для этих пакетов тоже создайте ссылку:

    ln -s gcc /usr/bin/cc
    

    Замечание: В этом месте рекомендуется повторить тест из части "Переустановка средств". Если тест не прошел, то, скорее всего, Вы применили-таки патч GCC Specs из главы 5.

    Установка Coreutils-5.0

    Ожидаемое время сборки:           0.9 SBU
    Ожидаемое место на диске:         69 MB
    

    Описание Coreutils

    Пакет Coreutils содержит ряд основных утилит для shell.

    Устанавливаемые программы: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, kill, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami и yes.

    Зависимости установки Coreutils

    Coreutils зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

    Установка Coreutils

    Нормальное функционирование uname иногда нарушается, тогда параметр -p всегда возвращает "unknown". Следующий патч исправляет это для архитектуры Intel:

    patch -Np1 -i ../coreutils-5.0-uname.patch
    

    Я не хочу использовать Coreutils для установки программы hostname потому, что более новая версия содержится в Net-tools. Отключим эту установку патчем:

    patch -Np1 -i ../coreutils-5.0-hostname-2.patch
    

    Теперь подготовим Coreutils к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируем пакет:

    make
    

    Программа su из Coreutils не была установлена в главе 5 потому, что ей нужны привелегии root. Я собираюсь установить ее, поскольку она нужна для тестирования. Установите ее командой:

    make install-root
    

    Этот пакет поддерживает тестирование для определения корректности сборки. Тем не менее, этот специфический тест использует непревилигированных пользователей и группы, которые пока не определены в простой системе. Поэтому создадим фиктивного пользователя и две фиктивных группы для корректной работы тестов. Если Вы не хотите запускать тестирование, то переходите к установке пакета. Следующие команды подготовят систему к тестированию. Создайте фиктивных пользователя и группы:

    echo "dummy1:x:1000" >> /etc/group
    echo "dummy2:x:1001:dummy" >> /etc/group
    echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd
    

    Следующий тест проверит запуск от имени root:

    make check-root
    

    Следующий тест проверит запуск от имени фиктивного пользователя:

    su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"
    

    Удалите фиктивные группы и пользователя:

    sed -i.bak '/dummy/d' /etc/passwd /etc/group
    

    Установите готовый пакет:

    make install
    

    Переместите некоторые программы в правильное место:

    mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
    mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin
    mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin
    mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin
    mv /usr/bin/{touch,true,uname,vdir} /bin
    mv /usr/bin/chroot /usr/sbin
    

    Наконец, создайте необходимые ссылки:

    ln -s test /bin/[
    ln -s ../../bin/install /usr/bin
    

    Установка Zlib-1.1.4

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         1.5 MB
    

    Описание Zlib

    Пакет Zlib содержит библиотеку libz, которая используется некоторыми программами для функций сжатия и распаковки.

    Устанавливаемые библиотеки: libz[a,so].

    Зависимости установки Zlib

    Zlib зависит от Binutils, Coreutils, GCC, Glibc, Make и Sed.

    Установка Zlib

    Zlib имеет потенциальную опасность переполнения буфера в функции gzprintf(), которая, для предохранения от использования этой возможности взлома, исправляется наложением следующего патча:

    patch -Np1 -i ../zlib-1.1.4-vsnprintf.patch
    

    Теперь подготовьте Zlib к компиляции:

    ./configure --prefix=/usr --shared
    

    Замечание: Zlib известна некорректной сборкой shared-библиотеки при указанной переменной окружения CFLAGS. Если Вы используете эту переменную, добавите директиву -fPIC на этом этапе и удалите ее по окончании.

    Скомпилируйте пакет:

    make
    

    Установите shared-библиотеку:

    make install
    

    Теперь установите остальные библиотеки:

    make clean
    ./configure --prefix=/usr
    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, выполните команду:

    make test
    

    Теперь установите пакет:

    make install
    

    Shared-библиотека Zlib устанавливается в каталог /lib. Таким образо, если Вы хотите загрузиться без каталога /usr, жизненно важные системные программы не получат доступа к библиотеке:

    mv /usr/lib/libz.so.* /lib
    

    Ссылка /usr/lib/libz.so указывает на несуществующий файл потому, что Вы только что его переместили. Создайте ссылку на новое расположение этой библиотеки:

    ln -sf ../../lib/libz.so.1 /usr/lib/libz.so
    

    Zlib не устанавливает свою man-страницу. Используйте следующую команду для установки этой документации:

    cp zlib.3 /usr/share/man/man3
    

    Установка Lfs-Utils-0.3

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         1.1 MB
    

    Описание Lfs-Utils

    Пакет Lfs-Utils содержит разные программы, используемые другими пакетами, но которые не доступны в виде отдельных пакетов либо в составе каких либо из них.

    Устанавливаемые программы: mktemp, tempfile, http-get и iana-net.

    Устанавливаемые файлы: protocols, services.

    Зависимости установки Lfs-Utils

    Пока не проверены.

    Установка Lfs-Utils

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Теперь скопируйте два файла из архива Lfs-Utils на свое место:

    cp etc/{services,protocols} /etc
    

    Файл /etc/services используется для представления номеров сервисов в читабельном виде, а файл /etc/protocols используется для того же, но применительно к протоколам.

    Установка Findutils-4.1.20

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         7.5 MB
    

    Описание Findutils

    Пакет Findutils содержит программы для поиска файлов, как "на лету" (для рекурсивного поиска в каталогах и вывода только файлов, удовлетворяющих шаблону), так и для поиска по базе данных.

    Устанавливаемые программы: bigram, code, find, frcode, locate, updatedb и xargs.

    Зависимости установки Findutils

    Findutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Findutils

    Подготовьте Findutils к компиляции:

    ./configure --prefix=/usr --libexecdir=/usr/bin
    

    По умолчанию, база данных для updatedb расположена в /usr/var. Для размещения ее в /var/lib/misc/locatedb для совместимости с FHS, добавьте опцию --localstatedir=/var/lib/misc к команде configure.

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Gawk-3.1.3

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         17 MB
    

    Описание Gawk

    Gawk является свободным вариантом языка awk, который используется для манипуляций с текстовыми данными.

    Устанавливаемые программы: awk (ссылка на gawk), gawk, gawk-3.1.3, grcat, igawk, pgawk, pgawk-3.1.3 и pwcat.

    Зависимости установки Gawk

    Gawk зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Sed.

    Установка Gawk

    Сначала примените патч по следующим причинам:

    patch -Np1 -i ../gawk-3.1.3-libexecdir.patch
    

    Теперь подготовьте Gawk к компиляции:

    ./configure --prefix=/usr --libexecdir=/usr/bin
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Ncurses-5.3

    Ожидаемое время сборки:           0.6 SBU
    Ожидаемое место на диске:          27 MB
    

    Описание Ncurses

    Пакет Ncurses содержит библиотеки для тектового и консольного интерфейса, включая панели и меню.

    Устанавливаемые программы: captoinfo (ссылка на tic), clear, infocmp, infotocap (ссылка на tic), reset (ссылка на tset), tack, tic, toe, tput и tset.

    Устанавливаемые библиотеки: libcurses.[a,so] (ссылка на libncurses.[a,so]), libform.[a,so], libmenu.[a,so], libncurses++.a, libncurses.[a,so] и libpanel.[a,so].

    Зависимости установки Ncurses

    Ncurses зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Ncurses

    Для начала исправьте две проблемы:

    patch -Np1 -i ../ncurses-5.3-etip-2.patch
    patch -Np1 -i ../ncurses-5.3-vsscanf.patch
    

    Первый патч откорректирует файл заголовков etip.h, а второй патч устранит проблемы при компиляции конфликтующих заголовков.

    Теперь подготовьте Ncurses к компиляции:

    ./configure --prefix=/usr --with-shared --without-debug
    

    Скомпилируйте пакет:

    make
    

    Установите пакет:

    make install
    

    Установите права на исполнение библиотекам Ncurses:

    chmod 755 /usr/lib/*.5.3
    

    Теперь отметьте библиотеки, которые не должны выполняться:

    chmod 644 /usr/lib/libncurses++.a
    

    Переместите библиотеки в каталог /lib, где они должны быть:

    mv /usr/lib/libncurses.so.5* /lib
    

    Поскольку библиотеки были перемещены в /lib, некоторые ссылки теперь указывают на несуществующие файлы. Исправьте их:

    ln -sf ../../lib/libncurses.so.5 /usr/lib/libncurses.so
    ln -sf libncurses.so /usr/lib/libcurses.so
    

    Установка Vim-6.2

    Ожидаемое время сборки:           0.4 SBU
    Ожидаемое место на диске:         34 MB
    

    Альтернативы для Vim

    Если Вы предпочитаете другие редакторы, такие как Emacs, Joe или Nano, вместо Vim, загляните на http://www.linuxfromscratch.org/blfs/view/stable/postlfs/editors.html для получения инструкций по установке.

    Описание Vim

    Пакет Vim содержит конфигурируемый текстовый редактор для эффективного редактирования текста.

    Устанавливаемые программы: efm_filter.pl, efm_perl.pl, ex (ссылка на vim), less.sh, mve.awk, pltags.pl, ref, rview (ссылка на vim), rvim (ссылка на vim), shtags.pl, tcltags, vi (ссылка на vim), view (ссылка на vim), vim, vim132, vim2html.pl, vimdiff (ссылка на vim), vimm, vimspell.sh, vimtutor и xxd.

    Зависимости установки Vim

    Vim зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

    Установка Vim

    Измените расположение по умолчанию файлов vimrc и gvimrc на /etc.

    echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
    echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h
    

    Теперь подготовьте Vim к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Vim может быть запущен в "старом" режиме vi созданием ссылки, которая создается командой:

    ln -s vim /usr/bin/vi
    

    Если Вы собираетесь устанавливать систему X Window на Вашей системе LFS, надо будет перекомпилировать Vim после установки X. Vim содержит хорошую GUI-версию редактора, который использует X и некоторые другие библиотеки при установке. Для более подробной информации прочитайте документацию по Vim.

    Конфигурирование Vim

    По умолчанию vim запускается в режиме совместимости с vi. Некоторым это нравится, но Вы получите больше преимуществ при запуске vim в режиме vim (иначе бы я не включил vim в эту книгу, а обошелся бы оригинальным vi). Создайте /root/.vimrc запуском команды:

    cat > /root/.vimrc << "EOF"
    " Begin /root/.vimrc
    set nocompatible
    set bs=2
    " End /root/.vimrc
    EOF
    

    Установка M4-1.4

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         3.0 MB
    

    Описание M4

    M4 является макропроцессором. Он копирует ввод в вывод, используя макросы. Макросы могут быть как встроеными, так и пользовательскими и могут иметь несколько аргументов. Помимо макропреобразований, m4 имеет встроенные функции для включения именованных файлов, запуска команд Unix, целочисленной арифметики, разносторонних манипуляциями с текстом, рекурсию и др. Программа m4 может использоваться в качестве обработчика для компиляторов или как макропроцессор на Ваше усмотрение.

    Устанавливаемые программы: m4.

    Зависимости установки M4

    M4 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl и Sed.

    Установка M4

    Подготовьте M4 к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Bison-1.875

    Ожидаемое время сборки:           0.6 SBU
    Ожидаемое место на диске:         10.6 MB
    

    Описание Bison

    Bison является генератором синтаксических анализаторов, заменой для yacc. Генерирует программу, которая анализирует структуру текстового файла.

    Устанавливаемые программы: bison и yacc

    Устанавливаемые библиотеки: liby.a

    Зависимости установки Bison

    Bison зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, M4, Make, Sed.

    Установка Bison

    Первым делом наложите патч на bison, скачаный с CVS, который исправит проблемы компиляции с некоторыми пакетами:

    patch -Np1 -i ../bison-1.875-attribute.patch
    

    Подготовим Bison к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируем этот пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, то запустите команду (это займет много времени):

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Less-381

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         3.4 MB
    

    Описание Less

    Less является просмотрщиком файлов или текста. Он отображает содержимое файла или потока и позволяет его прокрутку. Less имеет некоторые возможности, которые не включены в просмотрщик more, например, позволяет прокрутку назад.

    Устанавливаемые программы: less, lessecho и lesskey.

    Зависимости установки Less

    Less зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

    Установка Less

    Подготовьте Less к компиляции:

    ./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc
    

    Описание опций конфигурации:

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Groff-1.19

    Ожидаемое время сборки:           0.5 SBU
    Ожидаемое место на диске:         43 MB
    

    Описание Groff

    Пакет Groff содержит некоторые программы для форматирования текста. Groff транслирует стандартный текст и специальные команды в форматированый вывод, так Вы, например, просматриваете все man-страницы.

    Устанавливаемые программы: addftinfo, afmtodit, eqn, eqn2graph, geqn (ссылка на eqn), grn, grodvi, groff, groffer, grog, grolbp, grolj4, grops, grotty, gtbl (ссылка на tbl), hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff и zsoelim (ссылка на soelim).

    Зависмости установки Groff

    Groff зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Groff

    Groff использует переменную окружения PAGE для определения размеров бумаги по умолчанию. При использовании в США, нижеприведенная команда корректна. Но в России Вам, видимо, надо будет поменять PAGE=letter на PAGE=A4.

    Подготовьте Groff к компиляции:

    PAGE=letter
    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Некоторые программы документации, например, xman, не работают правильно без следующих ссылок:

    ln -s soelim /usr/bin/zsoelim
    ln -s eqn /usr/bin/geqn
    ln -s tbl /usr/bin/gtbl
    

    Установка Sed-4.0.7

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         5.2 MB
    

    Описание Sed

    Sed является редактором потоков. Редактор потоков используется для простых трансформаций текста во входном потоке (файл или ввод из командной строки).

    Устанавливаемые программы: sed

    Зависимости установки Sed

    Sed зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Texinfo.

    Установка Sed

    Подготовьте Sed к компиляции:

    ./configure --prefix=/usr --bindir=/bin
    

    Скомпилируйте весь пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    
    

    Установите готовый пакет:

    make install
    

    Установка Flex-2.5.4a

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         3.4 MB
    

    Описание Flex

    Пакет Flex используется для генерации программ, которые могут обрабатывать шаблоны в тексте.

    Устанавливаемые программы: flex, flex++ (ссылка на flex) и lex.

    Устанавливаемые библиотеки: libfl.a.

    Зависимости установки Flex

    Flex зависит от Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, M4, Make и Sed.

    Установка Flex

    Подготовьте Flex к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make bigcheck
    

    Теперь установите пакет:

    make install
    

    Некоторые пакеты ищут библиотеку Lex в /usr/lib. Создайте необходимую им ссылку:

    ln -s libfl.a /usr/lib/libl.a
    

    Некоторые программы не знают о flex и используют его предыдущий вариант lex. Для поддержки таких программ создайте shell-скрипт lex, который будет вызывать flex в режиме эмуляции Lex:

    cat > /usr/bin/lex << "EOF"
    #!/bin/sh
    # Begin /usr/bin/lex
    exec /usr/bin/flex -l "$@"
    # End /usr/bin/lex
    EOF
    chmod 755 /usr/bin/lex
    

    Установка Gettext-0.12.1

    Ожидаемое время сборки:           7.2 SBU
    Ожидаемое место на диске:         55 MB
    

    Описание Gettext

    Пакет Gettext используется для интернационализации и локализации. Программы могут быть скомпилированы с поддержкой родного языка (Native Language Support, NLS) для получения возможности вывода сообщений на языке пользователя.

    Устанавливаемые программы: autopoint, config.charset, config.rpath, gettext, gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, project-id, team-address, trigger, urlget, user-email и xgettext.

    Устанавливаемые библиотеки: libasprintf[a,so], libgettextlib[a,so], libgettextpo[a,so] и libgettextsrc[a,so].

    Зависимости установки Gettext

    Gettext зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Gettext

    Подготовьте Gettext к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Тем не менее, тестирование Gettext в этой главе может не пройти успешно из-за зависимостей от основной системы, к примеру, если будет найден компилятор Java. Тестирование Gettext занимает много времени и не является критичным. Поэтому я не рекомендую запускать его здесь. Если же Вы все-таки захотите использовать его, выполните команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Net-tools-1.60

    Ожидаемое время сборки:           0.1 SBU
    Ождидаемое место на диске:        9.4 MB
    

    Описание Net-tools

    Пакет Net-tools содержит набор программ для обеспечения основы поддержки сети в Linux.

    Устанавливаемые программы: arp, dnsdomainname (ссылка на hostname), domainname (ссылка на hostname), hostname, ifconfig, nameif, netstat, nisdomainname (ссылка на hostname), plipconfig, rarp, route, slattach и ypdomainname (ссылка на hostname).

    Зависимости установки Net-tools

    Net-tools зависит от Bash, Binutils, Coreutils, GCC, Glibc и Make.

    Установка Net-tools

    Если Вы не знаете, как ответить на задаваемые командой make config вопросы, то просто соглашайтесь со всем. Этого будет достаточно в большинстве случаев. Вас спросят только о том, какие сетевые протоколы Вы выберете в ядре. Ответы по умолчанию достаточны для нормальной работы программ из этого пакета с наиболее распространенными протоколами: TCP, PPP и рядом других. Вам еще надо будет выбрать поддержку этих протоколов при сборке ядра: то, что Вы здесь сделаете просто позволит программам использовать выбранные протоколы, но только включение в ядро сделает их доступными для системы.

    Для начала исправьте синтаксическую ошибку в исходных текстах программы mii-tool:

    patch -Np1 -i ../net-tools-1.60-miitool-gcc33-1.patch
    

    Теперь подготовьте Net-tools к компиляции:

    make config
    

    Если Вы собираетесь собирать этот пакет с установками по умолчанию, то Вы можете избавится от необходимости отвечать на каждый вопрос запуском вместо make config команды yes "" | make config.

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make update
    

    Установка Inetutils-1.4.2

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         11 MB
    

    Содержание Inetutils

    Пакет Inetutils содержит ряд сетевых клиентов и серверов.

    Устанавливаемые программы: ftp, ping, rcp, rlogin, rsh, talk, telnet и tftp

    Зависимости установки Inetutils

    Inetutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

    Установка Inetutils

    Подготовим Inetutils к компиляции:

    ./configure --prefix=/usr --disable-syslogd --libexecdir=/usr/sbin \
                --disable-logger --sysconfdir=/etc --localstatedir=/var \
                --disable-whois --disable-servers
    

    Описание параметров конфигурации:

    Скомпилируйте пакет:

    make
    

    Установите его:

    make install
    

    Переместите программу ping на ее место:

    mv /usr/bin/ping /bin
    

    Установка Perl-5.8.0

    Ожидаемое время сборки:           2.9 SBU
    Ожидаемое место на диске:         143 MB
    

    Описание Perl

    Пакет Perl содержит perl (Practical Extraction and Report Language). Perl совмещает в себе некоторые лучшие элементы от C, sed, awk и sh в одном мощном языке.

    Устанавливаемые программы: a2p, c2ph, dprofpp, enc2xs, find2perl, h2ph, h2xs, libnetcfg, perl, perl5.8.0 (ссылка на perl), perlbug, perlcc, perldoc, perlivp, piconv, pl2pm, pod2html, pod2latex, pod2man, pod2text, pod2usage, podchecker, podselect, psed (ссылка на s2p), pstruct (ссылка на c2ph), s2p, splain и xsubpp.

    Зависимости установки Perl

    Perl зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed.

    Устанорвка Perl

    Подготовьте Perl к компиляции:

    ./configure.gnu --prefix=/usr
    

    Если Вы хотите контролировать процесс настроек опций сборки Perlt, можете запустить интерактивный скрипт Configure и указывать опции сборки Perl. Если хотите оставить настройки (разумные) Perl, которые определяются автоматически по умолчанию, то просто запустите команду, приведенную выше.

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, то сначала создайте простой файл /etc/hosts, необходимый для тестов, использующих сетевое имя localhost:

    echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
    

    Теперь, если хотите, запустите тест:

    make test
    

    Теперь установите пакет:

    make install
    

    Установка Texinfo-4.6

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         17 MB
    

    Описание Texinfo

    Пакет Texinfo содержит программы, используемые для чтения, записи и преобразования документов Info, которые содержат системную документацию.

    Устанавливаемые программы: info, infokey, install-info, makeinfo, texi2dvi и texindex.

    Зависимости установки Texinfo

    Texinfo зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses и Sed.

    Установка Texinfo

    Подготовим Texinfo к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируем пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, то запустите:

    make check
    

    Установим пакет:

    make install
    

    Дополнительно установите компоненты входящие в установку TeX:

    make TEXMF=/usr/share/texmf install-tex
    

    Описание параметров сборки:

    Установка Autoconf-2.57

    Ожидаемое время сборки:           2.9 SBU
    Ожидаемое место на диске:         7.7 MB
    

    Описание Autoconf

    Autoconf создает скрипты, которые автоматически конфигурируют исходный код.

    Устанавливаемые программы: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate и ifnames.

    Зависимости установки Autoconf

    Autoconf зависит от Bash, Coreutils, Diffutils, Grep, M4, Make, Perl и Sed.

    Установка Autoconf

    Подготовьте Autoconf к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, то запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Automake-1.7.6

    Ожидаемое время сборки:           5.3 SBU
    Ожидаемое место на диске:         6.8 MB
    

    Описание Automake

    Automake генерирует файлы Makefile.in, которые впоследствии должен использовать Autoconf.

    Устанавливаемые программы: acinstall, aclocal, aclocal-1.7, automake, automake-1.7, compile, config.guess, config.sub, depcomp, elisp-comp, install-sh, mdate-sh, missing, mkinstalldirs, py-compile, ylwrap.

    Зависимости установки Automake

    Automake зависит от Autoconf, Bash, Coreutils, Diffutils, Grep, M4, Make, Perl и Sed.

    Установка Automake

    Подготовьте Automake к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Установите пакет:

    make install
    

    Теперь создайте необходимые ссылки:

    ln -s automake-1.7 /usr/share/automake
    

    Установка Bash-2.05b

    Ожидаемое время сборки:           1.2 SBU
    Ожидаемое место на диске:         27 MB
    

    Описание Bash

    Bash (Bourne-Again SHell) обычно используется как интерпретатор команд в Unix-системах. Программа bash считывает данные со стандартного ввода (клавиатуры, к примеру). Пользователь вводит что-либо, и программа определяет, что именно пользователь ввел, и что ей с этим делать, например, запустить другую программу.

    Устанавливаемые программы: bash, sh (ссылка на bash) и bashbug.

    Зависимости установки Bash

    Bash зависит от Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses и Sed.

    Установка Bash

    Bash содержит несколько известных ошибок. Исправьте их, применив патч:

    patch -Np1 -i ../bash-2.05b-2.patch
    

    Теперь подготовьте Bash к компиляции:

    ./configure --prefix=/tools
    

    Скомпилируйте программу:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, выполните команду:

    make tests
    

    Теперь установите пакет и документацию:

    make install
    

    Теперь создайте ссылку для программ, которые используют sh в качестве системной оболочки:

    ln -s bash /tools/bin/sh
    

    Установка File-4.04

    Ожидаемое время сборки:          0.1 SBU
    Ожидаемое место на диске:        6.3 MB
    

    Описание File

    File является утилитой для определения типа файла.

    Устанавливаемая программа: file.

    Устанавливаемая библиотека: libmagic.[a,so].

    Зависимости установки File

    File зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed и Zlib.

    Установка File

    Подготовьте File к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Libtool-1.5

    Ожидаемое время сборки:           1.5 SBU
    Ожидаемое место на диске:         20 MB
    

    Описание Libtool

    GNU libtool является общей библиотекой поддержки скриптов. Libtool скрывает сложность использования системных библиотек обеспечивая совместимый, портируемый интерфейс.

    Устанавливаемые программы: libtool и libtoolize.

    Устанавливаемые библиотеки: libltdl.[a,so].

    Зависимости установки Libtool

    Libtool зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

    Установка Libtool

    Подготовьте Libtool к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Bzip2-1.0.2

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         3.0 MB
    

    Описание Bzip2

    Bzip2 является блочно-сортирующим компрессором файлов, который генерирует архивы с лучшей степенью сжатия, чем традиционный gzip.

    Устанавливаемые программы: bunzip2 (ссылка на bzip2), bzcat (ссылка на bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless и bzmore.

    Устанавливаемые библиотеки: libbz2.a, libbz2.so (ссылка на libbz2.so.1.0), libbz2.so.1.0 (ссылка на libbz2.so.1.0.2) и libbz2.so.1.0.2.

    Зависимости установки Bzip2

    Bzip2 зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Make.

    Установка Bzip2

    Подготовьте Bzip2 к компиляции:

    make -f Makefile-libbz2_so
    make clean
    

    Флаг -f нужен Bzip2 для использования при сборке файла, отличного от Makefile, в Вашем случае это будет Makefile-libbz2_so, который создает динамическую библиотеку libbz2.so и подключает ее к утилитам Bzip2.

    Скомпилируйте пакет и установите его:

    make
    make install
    

    Установите библиотеку bzip2 в каталог /bin, затем создайте необходимые ссылки и удалите старые:

    cp bzip2-shared /bin/bzip2
    cp -a libbz2.so* /lib
    ln -s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
    rm /usr/bin/{bunzip2,bzcat,bzip2}
    mv /usr/bin/{bzip2recover,bzless,bzmore} /bin
    ln -s bzip2 /bin/bunzip2
    ln -s bzip2 /bin/bzcat
    

    Установка Diffutils-2.8.1

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         7.5 MB
    

    Описание Diffutils

    Программы из этого пакета покажут различия между двумя (или тремя) файлами или каталогами. Как правило, они используются для создания патчей к программам.

    Устанавливаемые программы: cmp, diff, diff3 и sdiff.

    Зависимости установки Diffutils

    Diffutils зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Diffutils

    Подготовьте Diffutils к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Ed-0.2

    Ожидаемое время сборки:          0.1 SBU
    Ожидаемое место на диске:        3.1 MB
    

    Описание Ed

    GNU ed является 8-ми битовым, POSIX-совместимым редактором строк.

    Устанавливаемые программы: ed и red (ссылка на ed).

    Зависимости установки Ed

    Ed зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

    Установка Ed

    Замечание: Ed не является чем-то, что многие используют. Он устанавливается здесь потому, что он используется программой patch, если Вы применяете ed-файл патча. Это случается довольно редко, сейчас, в основном, используются diff-патчи.

    Ed использует функцию mktemp для создания временных файлов в каталоге /tmp, но эта функция содержит уязвимость (смотрите раздел "Временные файлы" на http://en.tldp.org/HOWTO/Secure-Programs-HOWTO/avoid-race.html). Следующий патч позволяет Ed использовать замену mkstemp, что является рекомендованным для создания временных файлов.

    Примените этот патч:

    patch -Np1 -i ../ed-0.2-mkstemp.patch
    

    Теперь подготовьте Ed к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте весь пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Установите готовый пакет:

    make install
    

    Теперь переместите программы в каталог /bin, для возможности использования программы при недоступном разделе /usr:

    mv /usr/bin/{ed,red} /bin
    

    Установка Kbd-1.08

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         12 MB
    

    Описание Kbd

    Kbd содержит файлы раскладки клавиатуры и утилиты для нее.

    Устанавливаемые программы: chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, psfaddtable (ссылка на psfxtable), psfgettable (ссылка на psfxtable), psfstriptable (ссылка на psfxtable), psfxtable, resizecons, setfont, setkeycodes, setleds, setlogcons, setmetamode, setvesablank, showconsolefont, showkey, unicode_start и unicode_stop.

    Зависимости установки Kbd

    Kbd зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc, Grep, Gzip, M4, Make и Sed.

    Установка Kbd

    По умолчанию некоторые утилиты Kbd (setlogcons, setvesablank и getunimap) не устанавливаются. Для начала выберите установку этих утилит:

    patch -Np1 -i ../kbd-1.08-more-programs.patch
    

    Теперь подготовьте Kbd к компиляции:

    
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка E2fsprogs-1.34

    Ожидаемое время сборки:           0.6 SBU
    Ожидаемое место на диске:         48.4 MB
    

    Описание E2fsprogs

    E2fsprogs содержит ряд системных утилит для использования их с файловой системой ext2. Они также поддерживают новую файловую систему ext3 с поддержкой журналирования.

    Устанавливаемые программы: badblocks, blkid, chattr, compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label, findfs, fsck, fsck.ext2, fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mklost+found, resize2fs, tune2fs и uuidgen.

    Устанавливаемые библиотеки: libblkid.[a,so], libcom_err.[a,so], libe2p.[a,so], libext2fs.[a,so], libss.[a,so] и libuuid.[a,so].

    Зависимости установки E2fsprogs

    E2fsprogs зависит от Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Sed, Texinfo.

    Установка E2fsprogs

    Рекомендуется собирать E2fsprogs вне каталога с исходными текстами:

    mkdir ../e2fsprogs-build
    cd ../e2fsprogs-build
    

    Подготовьте E2fsprogs к компиляции:

    ../e2fsprogs-1.34/configure --prefix=/usr --with-root-prefix="" \
                                --enable-elf-shlibs
    

    Описание параметров конфигурации:

    • --with-root-prefix="": Определенные программы (такие, как программа e2fsck) рассматриваются как необходимые программы. Когда, например, раздел /usr не смонтирован, эти программы не будут доступны. Они должны находится в таких каталогах, как /lib и /sbin. Если этот параметр пропущен при конфигурации E2fsprogs, программы разместятся в каталоге /usr, что нам совсем не нужно.
    • --enable-elf-shlibs: Это создаст разделяемую библиотеку для использования некоторыми программами из этого пакета.

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Установите основную часть пакета:

    make install
    

    Также установите разделяемую библиотеку:

    make install-libs
    

    Установка Grep-2.5.1

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         5.8 MB
    

    Описание Grep

    Grep является программой для печати строк, совпадающих с заданным шаблоном.

    Устанавливаемые программы: egrep (ссылка на grep), fgrep (ссылка на grep) и grep.

    Зависмости установки Grep

    Grep зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Make, Sed, Texinfo.

    Установка Grep

    Подготовьте Grep к компиляции:

    ./configure --prefix=/usr --bindir=/bin --with-included-regex
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Grub-0.93

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         10 MB
    

    Описание Grub

    Пакет Grub содержит загрузчик.

    Устанавливаемые программы: grub, grub-install, grub-md5-crypt, grub-terminfo и mbchk.

    Зависимости установки Grub

    Grub зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed.

    Установка Grub

    Этот пакет известен ошибками при сборке с использованием измененных опций оптимизации компиляции (включая параметры -march и -mcpu). Таким образом, если Вы меняли переменные окружения, отвечающие за оптимизацию сборки, такие как CFLAGS и CXXFLAGS, я рекомендую сбросить их перед началом сборки Grub.

    Для начала исправьте проблему с компиляцией при использовании GCC-3.3.1:

    patch -Np1 -i ../grub-0.93-gcc33-1.patch
    

    Теперь подготовьте Grub к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    А теперь установите его:

    make install
    mkdir /boot/grub
    cp /usr/share/grub/i386-pc/stage{1,2} /boot/grub
    

    Замените i386-pc на каталог, соответствующий Вашему железу.

    Каталог i386-pc содержит также ряд файлов *stage1_5 для разных файловых систем. Посмотрите какие из них доступны и скопируйте их в каталог /boot/grub. Обычно следует скопировать файлы e2fs_stage1_5 и/или reiserfs_stage1_5.

    Установка Gzip-1.3.5

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         2.6 MB
    

    Описание Gzip

    Пакет Gzip содержит программы для сжатия и распаковки файлов с использованием алгоритма сжатия LZ77.

    Устанавливаемые программы: gunzip (ссылка на gzip), gzexe, gzip, uncompress (ссылка на gunzip), zcat (ссылка на gzip), zcmp, zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore и znew.

    Зависимости установки Gzip

    Gzip зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed.

    Установка Gzip

    Подготовьте Gzip к компиляции:

    ./configure --prefix=/usr
    

    Программа gzexe встраивает в себя путь к исполняемому модулю gzip. Поскольку позднее положение этого файла изменится, следующая команда позволит встроить новый путь:

    cp gzexe.in{,.backup}
    sed 's%"BINDIR"%/bin%' gzexe.in.backup > gzexe.in
    

    Скомпилируйте пакет:

    make
    

    Установите готовый пакет:

    make install
    

    Теперь переместите программы в каталог /bin и переделайте ссылки на них:

    mv /usr/bin/gzip /bin
    rm /usr/bin/{gunzip,zcat}
    ln -s gzip /bin/gunzip
    ln -s gzip /bin/zcat
    ln -s gunzip /bin/uncompress
    

    Установка Man-1.5m2

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         1.9MB
    

    Описание Man

    Man является просмотрщиком man-страниц.

    Устанавливаемые программы: apropos, makewhatis, man, man2dvi, man2html и whatis.

    Зависимости установки Man

    Man зависит от Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make и Sed.

    Установка Man

    Я собираюсь сделать три дополнения к исходникам Man.

    Первым патчем Вы раскоментируете строку "MANPATH /usr/man" в файле man.conf для предупреждения излишней многословности результатов при использовании таких программ как whatis:

    patch -Np1 -i ../man-1.5m2-manpath.patch
    

    Второй патч добавит параметр -R в переменную PAGER для правильного использования escape-последовательностей:

    patch -Np1 -i ../man-1.5m2-pager.patch
    

    Третий и последний патч решит проблему с фоматированием man-страниц, содержащих более 80 символов в строке в связке с существующими релизами groff:

    patch -Np1 -i ../man-1.5m2-80cols.patch
    

    Теперь подготовьте Man к компиляции:

    ./configure -default -confdir=/etc
    

    Описание параметров конфигурации:

    • -default: Скрипт конфикурации будет использовать разумные настройки по умолчанию. К примеру: только английские мануалы, не выводить каталог, man без suid, использование сжатых страниц документации, сжатые cat-страницы, создание cat-страниц, когда существует соответствующий каталог, поддерживать FHS выводом cat-страниц в /var/cache/man, если такой каталог существует.
    • -confdir=/etc: Программа man будет искать файл конфигурации man.conf в каталоге /etc.

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Замечание: Если Вы собираетесь отключить SGR escape-последовательности, Вы можете отредактировать файл man.conf или добавить параметр -c к вызову nroff.

    Возможно, Вы захотите также посмотреть страницу BLFS на http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/compressdoc.html, которая описывает использование форматированных и сжатых файлов man-страниц.

    Установка Make-3.80

    Ожидаемое время сборки:          0.2 SBU
    Ожидаемое место на диске:        8.8 MB
    

    Описание Make

    Make автоматически определяет, какие части больших программ нуждаются в перекомпиляции, и вызывает команды для их сборки.

    Устанавливаемая программа: make.

    Зависимости установки Make

    Make зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Sed.

    Установка Make

    Подготовьте Make к компиляции:

    ./configure --prefix=/usr
    

    Скомпилируйте пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Modutils-2.4.25

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         2.9 MB
    

    Описание Modutils

    Пакет Modutils содержит программы, которые Вы можете использовать для работы с модулями ядра.

    Устанавливаемые пргограммы: depmod, genksyms, insmod, insmod_ksymoops_clean, kallsyms (ссылка на insmod), kernelversion, ksyms (ссылка на insmod), lsmod (ссылка на insmod), modinfo, modprobe (ссылка на insmod) и rmmod (ссылка на insmod).

    Зависимости установки Modutils

    Modutils зависит от Bash, Binutils, Bison, Coreutils, Diffutils, Flex, M4, GCC, Glibc, Grep, Make и Sed.

    Установка Modutils

    Подготовьте Modutils к компиляции:

    ./configure
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Patch-2.5.4

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         1.9 MB
    

    Описание Patch

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

    Устанавливаемая программа: patch.

    Зависимости установки Patch

    Patch зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make и Sed.

    Установка Patch

    Подготовьте Patch к компиляции:

    CPPFLAGS=-D_GNU_SOURCE
    ./configure --prefix=/usr
    

    Опять же, флаг препроцессора -D_GNU_SOURCE необходим на платформах PowerPC. На других архитектурах его можно опустить.

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Установка Procinfo-18

    Ожидаемое время сборки:          0.1 SBU
    Ожидаемое место на диске:        0.2 MB
    

    Описание Procinfo

    Программа procinfo собирает системные данные, такие как использование памяти и номера IRQ, из каталога /proc и приводит их к удобному виду.

    Устанавливаемые программы: lsdev, procinfo и socklist.

    Зависимости установки Procinfo

    Procinfo зависит от Binutils, GCC, Glibc, Make и Ncurses.

    Установка Procinfo

    Скомпилируйте Procinfo:

    make LDLIBS=-lncurses
    

    Описание параметров сборки:

    • LDLIBS=-lncurses: Procinfo будет использовать библиотеку libncurses вместо сильно устаревшей libtermcap.

    Теперь установите пакет:

    make install
    

    Установка Procps-3.1.11

    Ожидаемое время сборки:          0.1 SBU
    Ожидаемое время установки:       6.2 MB
    

    Описание Procps

    Пакет Procps содержит программы для мониторинга и завершения системных процессов. Procps собирает информацию о процессах из каталога /proc.

    Устанавливаемые программы: free, kill, pgrep, pkill, pmap, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w и watch.

    Устанавливаемая библиотека: libproc.so.

    Зависимости установки Procps

    Procps зависит от Bash, Binutils, Coreutils, GCC, Glibc, Make и Ncurses.

    Установка Procps

    Для начала исправьте проблему с возможным крахом w из-за установок локали:

    patch -Np1 -i ../procps-3.1.11-locale-fix.patch
    

    Теперь скомпилируйте Procps:

    make
    

    Установите полученный пакет:

    make install
    

    Теперь удалите одну ошибочную ссылку на библиотеку:

    rm /lib/libproc.so
    

    Установка Psmisc-21.3

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         2.2 MB
    

    Описание Psmisc

    Пакет Psmisc содержит три программы для работы с каталогом /proc.

    Устанавливаемые программы: fuser, killall и pstree.

    Зависимости установки Psmisc

    Psmisc зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses и Sed.

    Установка Psmisc

    Подготовьте Psmisc к компиляции:

    ./configure --prefix=/usr --exec-prefix=/
    

    Описание параметров конфигурации:

    • --exec-prefix=/: Это необходимо для установки двоичных модулей в /bin вместо /usr/bin. Поскольку программы Psmisc часто используются в загрузочных скриптах, они должны быть доступны даже при недоступной файловой системне /usr.

    Скомпилируйте пакет:

    make
    

    Теперь установите пакет:

    make install
    

    По умолчанию программа pidof не устанавливается. Обычно, это не является проблемой, поскольку устанавливаемый позже пакет Sysvinit содержит лучший вариант программы pidof. Но если Вы не собираетесь использовать Sysvinit, то Вам стоит завершить установку Psmisc созданием следующей ссылки:

    ln -s killall /bin/pidof
    

    Установка Shadow-4.0.3

    Ожидаемое время сборки:           0.4 SBU
    Ожидаемое место на диске:         11 MB
    

    Описание Shadow

    Пакет Shadow создан для усиления безопасности системных паролей.

    Устанавливаемые программы: chage, chfn, chpasswd, chsh, dpasswd, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck, grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers, passwd, pwck, pwconv, pwunconv, sg (ссылка на newgrp), useradd, userdel, usermod, vigr (ссылка на vipw) и vipw.

    Зависимости установки Shadow

    Shadow зависит от Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make и Sed.

    Установка Shadow

    Программы login, getty и init (и некоторые другие) поддерживают лог-файлы для записи кто, когда и где входил в систему. Эти программы, тем не менее, сами не создают эти лог-файлы, если они еще не существуют. Таким образом, если Вы собираетесь протоколировать эти события, то Вам надо создать эти файлы самостоятельно. Пакету Shadow нужны эти файлы в определенном месте, так что Вы создадите их для удовлетворения зависимостей:

    touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
    chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}
    

    Файл /var/run/utmp содержит список пользователей, которые на данный момент работают в системе, файл /var/log/wtmp показывает кто, где подключился к системе и когда. Файл /var/log/lastlog показывает последние входы для каждого пользователя, а /var/log/btmp является списком ошибочных входов.

    Shadow встраивает в себя путь к исполняемому модулю passwd, но это плохой метод в случае отсутствия этого файла на момент установки. Если двоичный файл passwd еще не существует перед установкой Shadow, пакет неверно определит путь как /bin/passwd, а установит его в /usr/bin/passwd. Это приведет к ошибке при попытке найти файл /bin/passwd. Для исправления этого, создайте фиктивный файл passwd:

    touch /usr/bin/passwd
    

    Текущий релиз Shadow содержит проблему с командой newgrp. Следующий патч (также применяющийся к CVS-версии Shadow) исправит эту проблему:

    patch -Np1 -i ../shadow-4.0.3-newgrp-fix.patch
    

    Теперь подготовьте Shadow к компиляции:

    ./configure --prefix=/usr --libdir=/usr/lib --enable-shared
    

    Скомпилируйте пакет:

    make
    

    Теперь установите его:

    make install
    

    Shadow использует два файла для настройки параметров аутентификации в системе. Установите эти файлы:

    cp etc/{limits,login.access} /etc
    

    Вы собираетесь изменить метод паролирования выбором паролей MD5, которые, теоретически, являются более безопасными, чем метод по умолчанию "crypt" и заодно допускает создание паролей длинее 8-ми символов. Вы также должны изменить старое расположение /var/spool/mail для пользовательских почтовых ящиков на /var/mail. Вы сделаете это проведя следующие изменения конфигурационного файла:

    sed -e 's%/var/spool/mail%/var/mail%' \
        -e 's%#MD5_CRYPT_ENAB.no%MD5_CRYPT_ENAB yes%' etc/login.defs.linux > \
        /etc/login.defs
    

    Замечание: Будьте очень внимательны при вводе указанной команды. Лучше всего скопировать и вставить ее вместо того, чтобы просто набрать.

    Согласно man-странице vipw, программа vigr также должна существовать. Поскольку процедура установки не создает эту программу, создайте ссылку вручную:

    ln -s vipw /usr/sbin/vigr
    

    Поскольку ссылка /bin/vipw не нужна (и ссылается на несуществующий файл), удалите ее:

    rm /bin/vipw
    

    Теперь переместите программу sg в правильное место:

    mv /bin/sg /usr/bin
    

    Переместите динамические библиотеки Shadow в более корректное расположение:

    mv /usr/lib/lib{shadow,misc}.so.0* /lib
    

    Поскольку некоторые пакеты нуждаются в расположении только что перемещенных библиотек в /usr/lib, создайте следующие ссылки:

    ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so
    ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so
    

    Coreutils уже установил программу groups в /usr/bin. Если хотите, то можете удалить такую же, установленную Shadow:

    rm /bin/groups
    

    Настройка Shadow

    Этот пакет содержит утилиты для модификации паролей пользователей, добавления или удаления пользователей и групп и тому подобные. Я не собираюсь объяснять здесь что такое 'затенение паролей' ('password shadowing'). Полное объяснение можно найти в файле doc/HOWTO в распакованном каталоге с исходными текстами Shadow. Здесь я опишу только то, что Вам понадобится, если Вы захотите использовать поддержку Shadow: программы, которые должны проверять пароли (к примеру, xdm, демоны ftp, демоны pop3) должны будут компилироваться с поддержкой shadow-совместимости, что надо для использования работы со скрытыми паролями.

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

    /usr/sbin/pwconv
    

    А для использования скрытых паролей для групп, выполните:

    /usr/sbin/grpconv
    

    При нормальных обстоятельствах пока нет надобности создавать пароли. Запомните, что если Вы решите вернуться к этой главе для включения затенения паролей, надо будет сбросить пароли всех пользователей командой passwd и пароли всех групп командой gpasswd.

    Установка Sysklogd-1.4.1

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         0.5 MB
    

    Описание Sysklogd

    Пакет Sysklogd содержит программы для записи системных сообщений в протоколы (логи), например, сообщений ядра.

    Устанавливаемые программы: klogd и syslogd.

    Зависимости установки Sysklogd

    Sysklogd зависит от Binutils, Coreutils, GCC, Glibc и Make.

    Установка Sysklogd

    Скомпилируйте Sysklogd:

    make
    

    Теперь установите его:

    make install
    

    Настройка Sysklogd

    Создайте новый файл /etc/syslog.conf запуском команды:

    cat > /etc/syslog.conf << "EOF"
    # Begin /etc/syslog.conf
    auth,authpriv.* -/var/log/auth.log
    *.*;auth,authpriv.none -/var/log/sys.log
    daemon.* -/var/log/daemon.log
    kern.* -/var/log/kern.log mail.* -/var/log/mail.log user.* -/var/log/user.log *.emerg * # End /etc/syslog.conf EOF

    Установка Sysvinit-2.85

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         0.9 MB
    

    Описание Sysvinit

    Пакет Sysvinit содержит пограммы для контроля загрузки, запуска и выключения всех других программ.

    Установливаемые программы: halt, init, killall5, last, lastb (ссылка на last), mesg, pidof (ссылка на killall5), poweroff (ссылка на halt), reboot (ссылка на halt), runlevel, shutdown, sulogin, telinit (ссылка на init), utmpdump и wall.

    Зависимоти установки Sysvinit

    Sysvinit зависит от Binutils, Coreutils, GCC, Glibc и Make.

    Установка Sysvinit

    Когда изменяется уровень запуска (например, при выключении системы), init посылает сигналы TERM и KILL запущенным процессам. Init печатает "Sending processes the TERM signal" на экране. Это предполагает, что init отсылает эти сигналы всем работающим процессам. Чтобы не входить в заблуждение, исправьте это сообщение на "Sending processes started by init the TERM signal".

    Исправьте сообщение:

    cp src/init.c{,.backup}
    sed 's/Sending processes/Sending processes started by init/g' \
        src/init.c.backup > src/init.c
    

    Скомпилируйте Sysvinit:

    make -C src
    

    Теперь установите его:

    make -C src install
    

    Настройка Sysvinit

    Создайте новый файл /etc/inittab запуском следующих команд:

    cat > /etc/inittab << "EOF"
    # Begin /etc/inittab
    id:3:initdefault:
    si::sysinit:/etc/rc.d/init.d/rc sysinit
    l0:0:wait:/etc/rc.d/init.d/rc 0
    l1:S1:wait:/etc/rc.d/init.d/rc 1
    l2:2:wait:/etc/rc.d/init.d/rc 2
    l3:3:wait:/etc/rc.d/init.d/rc 3
    l4:4:wait:/etc/rc.d/init.d/rc 4
    l5:5:wait:/etc/rc.d/init.d/rc 5
    l6:6:wait:/etc/rc.d/init.d/rc 6
    ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
    su:S016:once:/sbin/sulogin
    1:2345:respawn:/sbin/agetty tty1 9600
    2:2345:respawn:/sbin/agetty tty2 9600
    3:2345:respawn:/sbin/agetty tty3 9600
    4:2345:respawn:/sbin/agetty tty4 9600
    5:2345:respawn:/sbin/agetty tty5 9600
    6:2345:respawn:/sbin/agetty tty6 9600
    # End /etc/inittab
    EOF
    

    Установка Tar-1.13.25

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         10 MB
    

    Описание Tar

    Tar является архиватором, разработанным для записи и извлечения файлов из архива, извесного как tar-файл.

    Устанавливаемые программы: rmt и tar

    Зависимости установки Tar

    Tar зависит от Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Sed.

    Установка Tar

    Подготовьте Tar к компиляции:

    ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/bin
    

    Скомпилируйте готовый пакет:

    make
    

    Этот пакет поддерживает тестирование корректности сборки. Если Вы хотите использовать эту возможность, запустите команду:

    make check
    

    Теперь установите пакет:

    make install
    

    Установка Util-linux-2.12

    Ожидаемое время сборки:           0.2 SBU
    Ожидаемое место на диске:         16 MB
    

    Описание Util-linux

    Пакет Util-linux содержит ряд различных утилит. Некоторые из этих утилит используются для монтирования, размонтирования, форматирования, разбиения и обслуживания дисков, открытия портов tty и вызова сообщений ядра.

    Устанавливаемые программы: agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock, ipcrm, ipcs, isosize, kill, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash, parse.tcsh, pg, pivot_root, ramsize (ссылка на rdev), raw, rdev, readprofile, rename, renice, rev, rootflags (ссылка на rdev), script, setfdprm, setsid, setterm, sfdisk, swapoff (ссылка на swapon), swapon, test.bash, test.tcsh, tunelp, ul, umount, vidmode (ссылка на rdev), whereis и write.

    Зависимости установки Util-linux

    Util-linux зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, Zlib.

    FHS-совместимость

    FHS рекомендует использовать /var/lib/hwclock, вместо обычного /etc, в качестве расположения для файла adjtime. Для обеспечения программе hwclock FHS-совместимости, запустите следующую команду:

    cp hwclock/hwclock.c{,.backup}
    sed 's%etc/adjtime%var/lib/hwclock/adjtime%' hwclock/hwclock.c.backup \
        > hwclock/hwclock.c
    mkdir -p /var/lib/hwclock
    

    Установка Util-linux

    Подготовьте Util-linux к компиляции:

    ./configure
    

    Скомпилируйте весь пакет:

    make HAVE_SLN=yes
    

    Описание параметров компиляции:

    • HAVE_SLN=yes: Это предостережет программу sln (статически скомпонованный ln, уже установленный с Glibc) от повторной сборки.

    Теперь установите пакет:

    make HAVE_SLN=yes install
    

    Установка GCC-2.95.3

    Ожидаемое время сборки:           1.5 SBU
    Ожидаемое место на диске:         130 MB
    

    Установка GCC

    Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Следовательно, если Вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC.

    Это старая версия GCC, которую Вы собираетесь использовать для компиляции ядра в главе 8. Эта версия рекомендуется разработциками ядра для абсолютной стабильности. Поздние версии компилятора GCC не считаются идеальными для тестирования сборки ядра Linux. Можно использовать и более поздние версии, но я рекомендую следовать советам разработчиков и собирать ядро именно этой версией компилятора.

    Замечание: Вы не устанавливаете компилятор и библиотеки C++ здесь. Тем не менее, Вы можете захотеть установить их. Информацию о том, как это сделать, можно получить на http://www.linuxfromscratch.org/blfs/view/stable/general/gcc2.html.

    Вы будете устанавливать старую версию GCC с нестандартным префиксом /opt, поскольку используемый в Вашей системе пакет GCC уже установлен в каталог /usr.

    Примените следующие патчи:

    patch -Np1 -i ../gcc-2.95.3-2.patch
    patch -Np1 -i ../gcc-2.95.3-no-fixinc.patch
    patch -Np1 -i ../gcc-2.95.3-returntype-fix.patch
    echo timestamp > gcc/cstamp-h.in
    

    Документация на GCC рекомендует собирать GCC вне каталога с исходными текстами, в отдельном каталоге для сборки:

    mkdir ../gcc-2-build
    cd ../gcc-2-build
    

    Скомпилируйте и установите компилятор:

    ../gcc-2.95.3/configure --prefix=/opt/gcc-2.95.3 --enable-shared \
                            --enable-languages=c --enable-threads=posix
    make bootstrap
    make install
    

    Перезапуск команды chroot

    Теперь Вы должны покинуть среду chroot и снова войти в нее, это делается следующим вариантом команды chroot:

    chroot $LFS /usr/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
           PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
    

    Причиной этого является то, что Вам уже не надо использовать программы из каталога /tools. Тем не менее, Вы пока не удаляете его. Он Вам еще будет нужен в конце книги.

    Установка LFS-Bootscripts-1.12

    Ожидаемое время сборки:           0.1 SBU
    Ожидаемое место на диске:         0.3 MB
    

    Описание LFS-bootscripts

    Пакет LFS-Bootscripts содержит shell-скрипты в стиле SysV init. Эти скрипты нужны для выполнения определенных действий на этапе загрузки, таких как проверка файловых систем, загрузка раскладки клавиатуры, установка сети и завершения процессов при выходе.

    Устанавливаемые скрипты: checkfs, cleanfs, functions, halt, ifdown, ifup, loadkeys, localnet, mountfs, mountproc, network, rc, reboot, sendsignals, setclock, swap, sysklogd и template.

    Зависимости установки LFS-Bootscripts

    Bzip2 зависит от Bash, Coreutils.

    Установка LFS-Bootscripts

    Я собираюсь использовать init-скрипты в стиле SysV. Я выбрал этот тип потому, что его использование наиболее комфортно и часто встречается. Если Вы собираетесь попробовать что-либо другое, то Marc Heerdink написал советы по init-скриптам в стиле BSD, они находятся на http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt. Если же Вы собираетесь попробовать что-либо более радикальное, посмотрите в архиве списка рассылки LFS.

    Если Вы решили использовать стиль BSD или другой в скриптах, то следует пропустить следующую главу и перейти к главе 8.

    Установите загрузочные скрипты:

    cp -a rc.d sysconfig /etc
    

    Измените владельца скриптов на root:

    chown -R root:root /etc/rc.d /etc/sysconfig
    

    Настройка компонентов системы

    Теперь, когда Вы установили все программы, надо сделать некоторые настройки.

    Настройка клавиатуры

    Очень сильно раздражает, когда Linux использует неверную раскладку клавиатуры. Если у Вас стандартная клавиатура US, Вы можете пропустить этот раздел, поскольку раскладка US используется по умолчанию, и не надо это менять.

    Для изменения раскладки по умолчанию, создайте ссылку /usr/share/kbd/keymaps/defkeymap.map.gz запуском команды:

    ln -s /путь/к/раскладке /usr/share/kbd/keymaps/defkeymap.map.gz
    

    Само собой, замените /путь/к/раскладке на путь и имя раскладки, соответствующей Вашей клавиатуре. Например, если у Вас немецкая клавиатура, используйте i386/qwerty/nl.map.gz.

    Описание настройки раскладки клавиатуры и локали для российских пользователей ОС Linux содержится в документе Cyrilic-HOWTO (или Cyrilic-HOWTO-russian), который спокойно можно скачать из интернета. Но будьте внимательны! В этом документе, к сожалению, описывается использование kbd старой версии. Если Вы не собираетесь использовать перекодировку вводимых символов из koi8-r или из cp1251 в Unicode или Alt, то нечего волноваться. В противном же случае (для нормального отображения символов псевдографики), прочитайте документацию к Вашей версии kbd, иначе ничего не получится.

    Другим путем установки параметров клавиатуры является интеграция раскладки в ядро. Это позволит клавиатуре корректно работать даже при загрузке в режиме maintenance (задавая параметр ядру init=/bin/sh), когда загрузочные скрипты не запускаются и не могут установить Вашу раскладку.

    Запустите следующую команду для встраивания раскладки в исходные тексты ядра. Вам надо будет повторять эту команду после каждой новой распаковки ядра:

    loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz > \
             /usr/src/linux-2.4.22/drivers/char/defkeymap.c
    

    Установка пароля root

    Установите пароль пользователя root командой:

    passwd root
    
    e:/sbin/sulogin 1:2345:respawn:/sbin/agetty tty1 9600 2:2345:respawn:/sbin/agetty tty2 9600 3:2345:respawn:/sbin/agetty tty3 9600 4:2345:respawn:/sbin/agetty tty4 9600 5:2345:respawn:/sbin/agetty tty5 9600 6:2345:respawn:/sbin/agetty tty6 9600 # End /etc/inittab EOF
    lfs50rus/chap07.htm 600 0 0 26601 10740542764 7332 Установка скриптов загрузки

    Глава 7. Установка скриптов загрузки

    Содержание
    Вступление
    Как происходит загрузка с помощью этих скриптов?
    Настройка скрипта setclock
    Нужен ли мне скрипт loadkeys?
    Настройка скрипта sysklogd
    Настройка скрипта localnet
    Создание файла /etc/hosts
    Настройка скрипта network

    Вступление

    В этой главе Вы настроите загрузочные скрипты, установленные в главе 6. Большая их часть не нуждается в модификации, но некоторые надо подправить в соответствии с Вашей системой.

    Как происходит загрузка с помощью этих скриптов?

    Linux использует специальные возможности загрузки, называемые SysVinit. Они основаны на концепции уровней запуска (runlevels). Они могут сильно отличаться на различных системах, и я не могу сказать, что скрипты из <подставьте сюда имя любого дистрибутива> будут работать в LFS. У LFS свой подход к этим скриптам, но они также соответствуют стандартам.

    SysVinit (с этого момента я буду называть его init) работает, используя схему уровней запуска. Всего есть семь (от 0 до 6) уровней запуска (точнее, есть больше уровней запуска, но они предназначены для специальных целей и обычно не используются). Документация по init содержит более полную информацию по этому вопросу, и каждый из них сообщает компьютеру, что ему делать при запуске соответствующего уровня. Уровень запуска по умолчанию 3. Вот описание разных уровней загрузки и их назначение:

    0: выключение компьютера,
    1: однопользовательский режим,
    2: многопользовательский режим без поддержки сети,
    3: многопользовательский режим с поддержкой сети,
    4: зарезервирован или используется как 3,
    5: тоже самое, что и 4, он обычно используется для графического входа в систему (например, xdm из X, xdm или kdm из KDE),
    6: перезагрузка компьютера.

    Для изменения уровня запуска используется команда init <runlevel>, где <runlevel> нужный уровень запуска. Например, для перезагрузки компьютера можно использовать команду init 6. Это и делает команда reboot, а команда halt является аналогом init 0.

    Есть ряд каталогов в /etc/rc.d, которые выглядят как rc?.d, где ? является уровнем запуска, и rcsysinit.d, которые содержат ряд символических ссылок. Часть из них начинается с K, другие начинаются с S, затем идут две цифры уровня инициализации. K означает остановку (kill) сервиса, а S запуск (start). Число означает порядок, в котором запускаются скрипты, от 00 до 99: чем меньше номер, тем раньше вызывается скрипт. Когда init переключается на другой уровень загрузки, одни сервисы останавливаются, другие запускаются.

    Сами скрипты расположены в /etc/rc.d/init.d. Они проделывают всю работу, а ссылки только указывают на них. Ссылки остановки и запуска указывают на один и тот же скрипт в /etc/rc.d/init.d. Это возможно благодаря тому, что скрипты запукаются с различными параметрами, такими как start, stop, restart, reload, status. Когда обрабатывается ссылка K, то соответствующий скрипт вызывается с аргументом stop. Если же обрабатывается ссылка S, то тот же самый скрипт вызывается с параметром start.

    Но есть одно исключение. Ссылки, начинающиеся с S в каталогах rc0.d и rc6.d никогда не выполняются для запуска скрипта с параметром start. Они вызываются только с параметром stop для остановки чего-либо. Это понятно потому, что когда Вы собираетесь перезагрузить или отключить систему, Вам не надо ничего запускать, а только остановить систему.

    Вот описание параметров, которые можно передавать скриптам запуска:

    Вы спокойно можете настраивать и изменять процесс загрузки (после установки системы LFS). Файлы, описываемые здесь, являются только примерами и, возможно, Вы сделаете их лучше.

    Настройка скрипта setclock

    Этот скрипт setclock считывает время с внутренних часов Вашего компьютера (также известных как часы CMOS или BIOS) и конвертирует его в локальное время, используя файл /etc/localtime (если внутренние часы установлены в GMT) или не делает этого (если они установлены в местное время). Нет способа автоматического определения того, установлены ли внутренние часы Вашего компьютера в GMT или нет, поэтому Вам надо будет это настроить самим.

    Установите переменную UTC в 0 (нуль), если Ваши системные часы не установлены в GMT в нижеописанном файле.

    Создайте файл /etc/sysconfig/clock запуском команды:

    cat > /etc/sysconfig/clock << "EOF"
    # Begin /etc/sysconfig/clock
    UTC=1
    # End /etc/sysconfig/clock
    EOF
    

    Вы можете теперь посмотреть очень хорошие советы по настройке времени в системе LFS на http://www.linuxfromscratch.org/hints/downloads/files/time.txt. Они содержат информацию по временным зонам, UTC и переменной окружения TZ.

    Нужен ли мне скрипт loadkeys?

    Если Вы решили компилировать файл раскладки клавиатуры внутри ядра в конце главы 6, то, строго говоря, нет надобности запускать скрипт loadkeys, поскольку ядро само установит нужную раскладку для Вас. Вы можете все равно запускать его, если хотите. Это может пригодиться, если Вы запускаете разные ядра и забыли или не хотите компилировать все ядра со встроеной раскладкой.

    Если Вы решили, что Вам не нужен этот скрипт или просто не хотите его использовать, то удалите ссылку /etc/rc.d/rcsysinit.d/S70loadkeys.

    Настройка скрипта sysklogd

    Скрипт sysklogd вызывает программу syslogd с параметром -m 0. Этот параметр отключает периодическую отметку времени, которую syslogd по умолчанию пишет в лог-файл каждые 20 минут. Если Вы хотите использовать эту метку, то исправьте соответствующим образом скрипт sysklogd. Смотрите man syslogd для сбора более полной информации.

    Настройка скрипта localnet

    Часть скрипта localnet устанавливает имя системы. Для этого надо настроить файл /etc/sysconfig/network.

    Создайте файл /etc/sysconfig/network и укажите имя системы запуском:

    echo "HOSTNAME=lfs" > /etc/sysconfig/network
    

    Здесь "lfs" надо заменить на желаемое имя компьютера для вызова. Вам не надо здесь вводить FQDN (Fully Qualified Domain Name, полное доменное имя). Эту информацию Вы позже укажете в файле /etc/hosts.

    Создание файла /etc/hosts

    Если Вы хотите настроить сетевую карту, надо определить IP-адреса, FQDN и возможные псевдонимы в файле /etc/hosts. Его синтаксис следующий:

    <IP address> myhost.mydomain.org aliases
    

    Вы должны убедиться, что IP-адреса в частной сети соответствуют допустимым. Корректными значениями являются:

    Классы сетей
    A            10.0.0.0
    B            172.16.0.0 до 172.31.0.0
    C            192.168.0.0 до 192.168.255.0
    

    Корректным IP-адресом может быть 192.168.1.1. Корректным FQDN для этого IP может быть www.linuxfromscratch.org.

    Если Вы не собираетесь использовать сетевую карту, просто надо указать FQDN. Это важно для правильной работы ряда важных программ.

    Если сетевая карта не будет настраиваться, создайте файл /etc/hosts запуском:

    cat > /etc/hosts << "EOF"
    # Begin /etc/hosts (no network card version)
    127.0.0.1 <HOSTNAME>.mydomain.com <HOSTNAME> localhost
    # End /etc/hosts (no network card version)
    EOF
    

    Если собираетесь настраивать сетевую карту, то создайте файл /etc/hosts запуском:

    cat > /etc/hosts << "EOF"
    # Begin /etc/hosts (network card version)
    127.0.0.1 localhost.localdomain localhost
    192.168.1.1 <HOSTNAME>.mydomain.org <HOSTNAME>
    # End /etc/hosts (network card version)
    EOF
    

    Само собой, 192.168.1.1 и < HOSTNAME>.mydomain.org надо заменить на Ваши варианты (как Вам нравится, или как установил системный администратор).

    Настройка скрипта network

    Этот раздел нужен только в том случае, если Вы собираетесь настраивать сетевую карту.

    Если у Вас таковая отсутствует, Вам не надо создавать файлы конфигурации сетевой карты. В этом случае вам надо удалить все ссылки network изо всех каталогов с уровнями запуска (/etc/rc.d/rc*.d).

    Настройка шлюза по умолчанию

    Если Вы подключены к локальной сети, то Вам надо установить шлюз по умолчанию для этой машины. Это делается добавлением соответствующих параметров в файл /etc/sysconfig/network запуском следующей команды:

    cat >> /etc/sysconfig/network << "EOF"
    GATEWAY=192.168.1.2
    GATEWAY_IF=eth0
    EOF
    

    Значения GATEWAY и GATEWAY_IF надо заменить на соответствующие настройкам Вашей сети. GATEWAY содержит IP-адрес шлюза по умолчанию, а GATEWAY_IF содержит вид используемого шлюзом интерфейса.

    Создание конфигурационных файлов сетевого интерфейса

    Какие из интерфейсов будут запущены или остановлены скриптом network описывается в каталоге /etc/sysconfig/network-devices. Этот каталог содержит файлы вида ifconfig.xyz, где xyz является именем сетевого интерфейса (например, eth0 или eth0:1)

    Если Вы решите переименовать или переместить каталог /etc/sysconfig/network-devices, Вам надо будет отредактировать соответствующим образом файл /etc/sysconfig/rc и обновить network_devices в соответствии с новыми путями.

    Теперь Вам надо создать файлы в этом каталоге. Следующая команда создаст пример файла ifconfig.eth0:

    cat > /etc/sysconfig/network-devices/ifconfig.eth0 << "EOF"
    ONBOOT=yes
    IP=192.168.1.1
    NETMASK=255.255.255.0
    BROADCAST=192.168.1.255
    EOF
    

    Само собой, значения переменных надо будет изменить на правильные для Вашей системы. Если переменная ONBOOT установлена в yes, скрипт network запустит этот интерфейс при загрузке системы. Если же будет установлено что-либо другое, то этот интерфейс будет проигнорирован скриптом.

    ые возможности загрузки, называемые SysVinit. Они основаны на концепции уровней запуска (runlevels). Они могут сильнlfs50rus/chap08.htm 600 0 0 25704 10740542764 7336 Обеспечение возможности загрузки LFS системы

    Глава 8. Обеспечение возможности загрузки LFS-системы

    Содержание
    Вступление
    Создание файла /etc/fstab
    Установка Linux-2.4.22
    Обеспечение возможности загрузки LFS-системы

    Вступление

    В ходе этой главы Вы обеспечите возможность загрузки LFS. Эта глава объяснит, как создать новый файл fstab, собрать новое ядро для системы LFS и установить загрузчик Grub так, чтобы можно было выбрать загрузку LFS.

    Создание файла /etc/fstab

    Файл /etc/fstab используется рядом программ для определения того, какие разделы будут смонтированы по умолчанию, какие файловые системы должны быть проверены и т.д. Создайте новую таблицу файловых системм как здесь:

    cat > /etc/fstab << "EOF"
    # Begin /etc/fstab
    # filesystem  mount-point  fs-type  options         dump  fsck-order
    /dev/xxx      /            fff      defaults        1     1
    /dev/yyy      swap         swap     pri=1           0     0
    proc          /proc        proc     defaults        0     0
    devpts        /dev/pts     devpts   gid=4,mode=620  0     0
    shm           /dev/shm     tmpfs    defaults        0     0
    # End /etc/fstab
    EOF
    

    Само собой, замените xxx, yyy и fff на значения, соответствующие Вашей системе, к примеру, на hda2, hda5 и reiserfs. За более полной информацией обратитесь к man 5 fstab.

    При использовании раздела reiserfs, 1 1 в конце строк надо будет заменить на 0 0, поскольку этой файловой системе не нужны дампы или проверки.

    Точка монтирования /dev/shm для tmpfs включена для возможности использования POSIX shared memory. Ваше ядро должно быть собрано с поддержкой этой системы, более подробно об этом смотрите в следующем разделе. Имейте в виду, что небольшое количество аппаратного обеспечения использует POSIX shared memory. Поэтому надо знать, нужна ли Вам точка монтирования /dev/shm. Для получения более подробной информации смотрите файл Documentation/filesystems/tmpfs.txt в каталоге с исходными текстами ядра.

    Также Вы можете добавлять другие строки в файл fstab. Вот пример строки, использующейся intend для поддержки USB-устройств:

    usbfs       /proc/bus/usb  usbfs    defaults    0     0
    

    Эти параметры, конечно, будут работать только в случае, если Вы собрали ядро с поддержкой соответствующих систем.

    Установка Linux-2.4.22

    Ожидаемое время сборки:           При параметрах по умолчанию: 4.20 SBU
    Ожидаемое место на диске:         При параметрах по умолчанию: 180 MB
    

    Описание Linux

    Ядро Linux является основой любой системы Linux. Это и есть Linux. Когда компьютер включается и загружает Linux, первой из всех программ для Linux загружается ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. Если короче, то ядро делает доступным оборудование системы для запускаемых в дальнейшем программ и позволяет им запускаться.

    Устанавливаемые файлы: ядро и его заголовки.

    Зависимости установки Linux

    Linux зависит от Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl и Sed.

    Установка ядра

    Сборка ядра состоит из следующих этапов: конфигурирование, компиляция и установка. Если Вам не нравится способ установки, описанный в этой книге, то посмотрите файл README в каталоге с исходными текстами ядра на предмет поиска альтернативы.

    Подготовьтесь к компиляции запуском следующей команды:

    make mrproper
    

    Это позволит убедиться, что дерево исходных текстов будет абсолютно чистым. Команда разработки ядра рекомендует запускать эту команду перед каждой компиляцией ядра. Вы не можете быть абсолютно уверены в отсутствии лишних файлов даже после распаковки архива.

    Сконфигурируйте ядро с помощью меню:

    make menuconfig
    

    make oldconfig может быть более полезно в ряде случаев. Смотрите файл README для получения более полной информации.

    Если Вы хотите, то можете пропустить конфигурирование ядра и просто скопировать файл .config из Вашей основной системы (если, конечно, она доступна) в распакованный каталог linux-2.4.22. Но я не рекомендую делать это. Намного лучше будет просмотреть все меню настроек ядра и создать его конфигурацию с нуля.

    Для поддержки POSIX shared memory убедитесь, что параметр "Virtual memory file system support" выбран. Он расположен в меню "File systems" и обычно отмечен по умолчанию.

    Проверьте зависимости и создайте информационный файл о них:

    make CC=/opt/gcc-2.95.3/bin/gcc dep
    

    Скомпилируйте образ ядра:

    make CC=/opt/gcc-2.95.3/bin/gcc bzImage
    

    Скомпилируйте драйверы, доступные в виде модулей:

    make CC=/opt/gcc-2.95.3/bin/gcc modules
    

    Если Ваш intend использует модули ядра, то Вам нужен файл /etc/modules.conf. Информацию относительно модулей и конфигурации ядра в целом можно найти в документации на ядро, которая находится в каталоге linux-2.4.22/Documentation. Man-страница по modules.conf и документ kernel HOWTO на http://www.tldp.org/HOWTO/Kernel-HOWTO.html также могут Вам пригодиться.

    Установите модули:

    make CC=/opt/gcc-2.95.3/bin/gcc modules_install
    

    Создайте документацию по ядру:

    make mandocs
    

    Теперь установите ее:

    cp -a Documentation/man /usr/share/man/man9
    

    Компиляция ядра закончена, но ряд файлов есть только в каталоге с исходными текстами ядра. Для завершения установки надо скопировать два файла оттуда в каталог /boot.

    Путь к файлам ядра зависит от типа используемой платформы. Используйте следующую команду для установки ядра:

    cp arch/i386/boot/bzImage /boot/lfskernel
    

    Файл System.map является файлом карты символов для ядра. Он содержит карту точек входа всех функций в API ядра. Используйте следующую команду для установки этого файла:

    cp System.map /boot
    

    Обеспечение возможности загрузки LFS системы

    Вы полностью установили новую систему LFS. Теперь надо обеспечить возможность ее загрузки. Следующие инструкции применимы только для компьютеров с архитектурой IA-32, то есть к большинству PC. Информация о загрузке системы на других архитектурах может отличаться и использовать другие ресурсы.

    Загрузка может быть комплексной задачей. Для начала, несколько предостережений. Вы очень сильно зависите от текущего загрузчика, и любая операционая система на жестком диске (дисках) может перестать загружаться. Убедитесь в том, что у Вас есть резервная загрузочная дискета или диск, иначе рискуете получить нерабочий компьютер (точнее, незагружающийся, что вообще-то лишь немногим лучше).

    Вы скомпилировали и установили загрузчик Grub именно для этого шага. Процедура включает запись определенных файлов Grub на специальное место на жестком диске. Перед тем как Вы сделаете это, я крайне рекомендую создать загрузочную дискету с Grub. Вставьте пустую дискету и запустите следующие команды:

    dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
    dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1
    

    Выньте дискету и сохраните ее где-нибудь в надежном месте. Теперь запустите команду grub:

    grub
    

    Grub использует свою структуру имен для дисков и разделов в форме (hdn,m), где n является номером жесткого диска, а m номером раздела, которые начинаются с нуля. Таким образом, раздел hda1 будет (hd0,0), а hdb2 называется (hd1,1) для Grub. В отличие от Linux, Grub не считает CD-ROM приводы за жесткие диски, так что если у Вас есть CD на hdb, к примеру, а второй жесткий диск на hdc, то второй жесткий диск будет называться (hd1).

    Используя приведенную информацию, определите правильное название для Вашего корневого раздела. В нижеприведенных примерах будем считать, что он находится на hda4.

    Для начала, скажите Grub, где ему искать файлы stage{1,2}: Вы можете использовать клавишу Tab, как и в обычной оболочке:

    root (hd0,3)
    

    Предупреждение! Нижеприведенные команды перезапишут текущий загрузчик. Не запускайте эти команды, если Вам этого не надо. К примеру, Вы можете использовать загрузку в несколько этапов путем манипуляций с MBR (Master Boot Record). В этом случае стоит установить Grub в загрузочный сектор раздела LFS, в нашем случае это делается командой setup (hd0,3).

    Теперь дайте команду на установку загрузчика в MBR (Master Boot Record) на hda:

    setup (hd0)
    

    Если все в порядке, то Grub сообщит о том, что нашел файлы в /boot/grub. В этом случае все сделано. Завершите работу:

    quit
    

    Теперь надо создать файл меню, для загрузчика Grub:

    cat > /boot/grub/menu.lst << "EOF"
    # Begin /boot/grub/menu.lst
    # By default boot the first menu entry.
    default 0
    
    # Allow 30 seconds before booting the default.
    timeout 30
    
    # Use prettier colors.
    color green/black light-green/black
    
    # The first entry is for LFS.
    title LFS 5.0
    root (hd0,3)
    kernel /boot/lfskernel root=/dev/hda4 ro
    EOF
    

    Вы можете захотеть добавить пункт для основной системы. Это делается примерно так:

    cat >> /boot/grub/menu.lst << "EOF"
    title Red Hat
    root (hd0,2)
    kernel /boot/kernel-2.4.20 root=/dev/hda3 ro
    initrd /boot/initrd-2.4.20
    EOF
    

    Также, если у Вас есть Windows, следующая команда добавит пункт для ее загрузки:

    cat >> /boot/grub/menu.lst << "EOF"
    title Windows
    rootnoverify (hd0,0)
    chainloader +1
    EOF
    

    Если info grub не даст исчерпывающей информации, стоит посетить страничку Grub по адресу: http://www.gnu.org/software/grub.

    йл fstab, собрать новое ядро для системы LFS и установить зlfs50rus/chap09.htm 600 0 0 15363 10740542764 7337 Конец

    Глава 9. Конец

    Содержание
    Конец
    Регистрация
    Перезагрузка системы
    Что теперь?

    Конец

    Все закончено! Вы завершили установку Вашей системы LFS. Это могло быть весьма продолжительным процессом, но я надеюсь, что он Вам понравился, и Вы получили массу удовольствия от сборки собственной системы Linux.

    Теперь самое время очистить двоичные модули Вашей системы от отладочных символов. Если Вы не программист и не собираетесь заниматься отладкой Ваших программ, то Вас обрадует возможность освободить несколько десятков мегабайт удалением отладочных символов. Перед началом этого процесса убедитесь, что Вам не надо будет отлаживать никакие из установленных программ.

    Внимание: 98% людей, использующих описанный метод, не испытывают проблем. Но стоит создать резервный архив с копией системы LFS перед запуском описанных команд. Есть небольшой шанс, что что-либо пойдет не так и сделает Вашу системы неработоспособной (как правило, при разрушении модулей ядра и библиотек). Могут появится и другие проблемы при использовании данной команды.

    Я уже говорил, что параметр --strip-debug используется для безопасного удаления отладочной информации в нормальных условиях. Он не удалит из файлов ничего жизненно важного. Также можно использовать параметр --strip-all для обычных программ (но не для библиотек: они будут испорчены), но это не полностью безопасно, и Вы выиграете немного места. Но если важен каждый байт на диске, то Вам решать. Пожалуйста, посмотрите man-страницу по strip для получения информации по другим параметрам. Главное, это не запускать strip для библиотек (кроме --strip-debug).

    Если Вы собираетесь применять strip, надо убедиться, что не будут запущены никакие из модифицируемых программ, включая оболочку bash. Поэтому надо покинуть среду chroot и войти в нее с использованием видоизмененной команды:

    logout
    chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
           PATH=/bin:/usr/bin:/sbin:/usr/sbin /tools/bin/bash --login
    

    Теперь запустите следующую команду:

    /tools/bin/find /{,usr/,usr/local/}{bin,sbin,lib} -type f \
                    -exec /tools/bin/strip --strip-debug '{}' ';'
    

    Вы увидите, что ряд файлов имеет неподдерживаемый формат. Большая часть из них скрипты, а не двоичные модули. Так что эти предупреждения можно проигнорировать.

    Вы можете создать файл /etc/lfs-release. Наличие этого файла может иногда облегчить (и использоваться для определения того, какой версией документации по LFS пользоваться в случае надобности) для определения версии вашей установленной LFS. Создайте этот файл командой:

    echo 5.0 > /etc/lfs-release
    

    Регистрация

    Вы хотите зарегистрироваться как пользователь LFS по окончании прочтения книги? Посетите http://linuxfromscratch.org/cgi-bin/lfscounter.cgi и зарегистрируйтесь как пользователь LFS, введя Ваше имя и первую используемую Вами версию LFS.

    Теперь перезагрузитесь в систему LFS...

    Перезагрузка системы

    Теперь, когда Вы установили все необходимое программное обеспечение, настало время выйти из среды chroot и перезапустить компьютер. Перед выходом из среды chroot надо размонтировать виртуальные файловые системы, смонтированиые ранее, запуском команд:

    umount /proc
    umount /dev/pts
    

    Выйдите из среды chroot:

    logout
    

    Помимо всего прочего, после установки всех программ больше не нужен каталог /tools. Вы можете удалить его. Помимо этого, Вы можете удалить временные копии Tcl, Expect и DejaGnu, которые использовались для запуска тестов средств, Вы сможете перекомпилировать и установить их на Вашей системе LFS позже, если захотите снова использовать их.

    Также Вы можете захотеть переместить содержимое /sources в /usr/src/packages или куда-то еще (или просто удалить их, если они есть у Вас на CD) и удалить этот каталог.

    Перед перезагрузкой, отмонтируйте еще и сам раздел LFS:

    umount $LFS
    

    Если Вы решили создать несколько разделов, надо отмонтировать их все перед запуском unmount $LFS, как здесь:

    umount $LFS/usr
    umount $LFS/home
    umount $LFS
    

    Теперь Вы можете перезагрузить систему командой наподобие этой:

    /sbin/shutdown -r now
    

    Вы также можете настроить Grub на загрузку LFS 5.0 автоматически. После перезагрузки Ваша система LFS готова к использованию, и Вы можете начать устанавливать дополнительные программы.

    Что теперь?

    Я благодарю Вас за прочтение книги LFS и надеюсь, что Вы нашли в ней много полезного для себя и провели это время с пользой.

    Теперь, когда Вы закончили установку Вашей системы LFS, Вы наверное спросите: "Что тепрь?". Для ответа на этот вопрос я составил список ресурсов, который Вам может оказаться полезным.

    храните ее где-нибудь в надежном месте. Теперь запустите команду grub:

    grub
    

    Grub использует свою структуру имен для дисков и разделов в форме (hdn,m), где n является номером жесткого диска, а m номером раздела, lfs50rus/index.htm 600 0 0 3475 10740542764 7343 Linux From Scratch

    Linux From Scratch

    Версия 5.0

    Джерард Бикманс

    Copyright 1999-2003 Gerard Beekmans

    Перевод: Алексей Паутов в рамках некоммерческого проекта Russian LDP (http://www.botik.ru/~rldp), 2004.

    Эта книга описывает процесс создания Linux-системы с нуля, используя лишь исходные тексты необходимого программного обеспечения.

    Посвящение

    Эта книга посвящается моей любящей и заботливой жене Беверли Бикманс .

    Оглавление
    Пролог
    1. Вступление
    2. Важная информация
    3. Подготовка к сборке
    4. Материалы: пакеты и патчи
    5. Построение временной системы
    6. Установка основных системных программ
    7. Установка скриптов загрузки
    8. Обеспечение возможности загрузки LFS-системы
    9. Конец
    Приложение A. Описание пакетов и зависимости
    Приложение B. Список программ и библиотек
    страничку Grub по адресу: http://www.gnu.org/software/grub.

    йл fstab, собрать новое ядро для системы LFS и установить зlfs50rus/legalnot.htm 600 0 0 4026 10740542764 10032 Copyright

    Copyright (c) 1999-2003, Gerard Beekmans

    Все права защищены.

    Повторное распространение, использование двоичного и исходного кода, с изменениями или без оных, разрешено при условии соблюдения следующих положений:

    • Повторное распространение в любой форме всегда должно содержать вышестоящее уведомление об авторском праве, данные положения и нижеприведенный отказ от прав.
    • Ни название проекта "Linux From Scratch", ни имена его участников не могут быть использованы для подписи и рекламирования продуктов, произошедших из данного материала без специального письменного разрешения.
    • Все материалы, произошедшие из проекта Linux From Scratch, должны сохранять ссылку на проект "Linux From Scratch".

    ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПОСТАВЛЯЕТСЯ ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ НЕЯВНЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ НЕЯВНЫМИ ГАРАНТИЯМИ, КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТРИЦАЮТСЯ. НИ В КОЕМ СЛУЧАЕ РЕГЕНТЫ ИЛИ УЧАСТНИКИ НЕ ДОЛЖНЫ БЫТЬ ОТВЕТСТВЕННЫМИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, СПЕЦИАЛЬНЫЙ, ОБРАЗЦОВЫЙ ИЛИ ПОСЛЕДУЮЩИЙ УЩЕРБЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОСТАВКОЙ ТОВАРОВ ЗАМЕНЫ ИЛИ УСЛУГ; ПОТЕРЮ ДАННЫХ ИЛИ ИХ НЕПРАВИЛЬНУЮ ПЕРЕДАЧУ ИЛИ ПОТЕРИ; ПРИОСТАНОВЛЕНИЕ БИЗНЕСА), И ТЕМ НЕ МЕНЕЕ ВЫЗВАННЫЕ И В ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ КОНТРАКТНОЙ, СТРОГОЙ ОТВЕТСТВЕННОСТИ, ИЛИ ПРАВОНАРУШЕНИИ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНЫМ СПОСОБОМ), ВОЗНИКШЕМ ЛЮБЫМ ПУТЕМ ПРИ ИСПОЛЬЗОВАНИИ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫ БЫЛО СООБЩЕНО О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

    та. Но если важен каждый байт на диске, то Вам решать. Пожалуйста, посмотрите man-страницу по strip для получения информации по другим параметрам. Главное, это не запускать strip для библиотек (кроме --strip-debug).

    Если Вы собираетесь применять strip, надо убедиться, что не будут запущены никакие из модифицируемых программ, включая оболочку bash. Поэтому надо покинуть среду chroot и войти в нее с использованием видоизмененной команды:

    logout
    chroot $LFS /lfs50rus/part1.htm   600      0      0        1341 10740542764   7251 
    
    
      
      
      
      Часть I: Вступление
    
    
    
    

    Часть I: Вступление

    h1>Перезагрузка системы

    Теперь, когда Вы установили все необходимое программное обеспечение, настало время выйти из среды chroot и перезапустить компьютер. Перед выходом из среды chroot надо размонтировать виртуальные файловые системы, смонтированиыlfs50rus/part2.htm 600 0 0 1532 10740542764 7254 Часть II: Подготовка к сборке

    ие книги LFS и надеюсь, что Вы нашли в ней много полезного для себя и провели это время с пользой.

    Теперь, когда Вы закончили установку Вашей системы LFS, lfs50rus/part3.htm 600 0 0 1665 10740542764 7264 Part III: Building the LFS system

    n является номером жесткого диска, а m номером раздела, lfs50rus/part4.htm 600 0 0 1370 10740542764 7256 Часть IV: Приложения ">

    Эта книга описывает процесс создания Linux-системы с нуля, используя лишь исходные тексты необходимого программного обеспечения.

    Посвящение

    Эта книга посвящается моей любящей и заботливой жене Беверли Бикманс .

    lfs50rus/preface.htm 600 0 0 21626 10740542764 7657 Пролог

    Пролог

    Оглавление
    Предисловие
    Аудитория
    Предпосылки
    Организация

    Предисловие

    Я перепробовал несколько различных дистрибутивов Linux, но никогда не был полностью доволен ни одним из них. Мне не нравилось расположение загрузочных скриптов. Мне не нравилось, как некоторые программы были сконфигурированы по умолчанию. Это мне порядком надоело. В конце концов я понял, что только построив собственную систему из исходников, я буду доволен. Я решил отказаться от использования заранее скомпилированых пакетов и от загрузочного диска, который мог бы установить основу системы. Я буду использовать свою нынешнюю систему Linux для построения себе новой.

    Эта сумасбродная идея казалась очень сложной или вообще невыполнимой. Но после решения ряда проблем, таких как зависимости или ошибки на этапе компиляции, моя новая самосборная система оказалась полностью работоспособной. Я назвал свою систему "Linux From Scratch" или, для краткости, LFS.

    Я надеюсь, что Вы не зря проведете время, работая над своей собственной LFS!

    Джерард Бикманс
    gerard@linuxfromscratch.org

    Аудитория

    Кому эта книга будет интересна

    Существует ряд причин, по которым эта книга может представлять интерес. Главная причина: установка Linux-системы из исходных текстов. Многие спросят: зачем мучиться, вручную собирая Linux-систему с нуля, когда можно скачать и установить готовую? Это хороший вопрос, и мы постараемся ответить на него в этой части книги.

    Важная причина существования LFS: помочь узнать работу ситемы Linux изнутри. Построение LFS-системы помогает показать, что заставляет Linux работать, как работают ее компоненты, как они друг от друга зависят. И наконец, вероятно, важнее всего, оно учит как настроить Linux под себя, в соответствии со своими вкусами и потребностями.

    Основное преимущество LFS состоит в том, что Вы получаете больше контроля над системой, не полагаясь на чью-либо разработку. С LFS Вы определяете структуру системы и диктуете ей свои условия, в частности структуру каталогов и загрузочные скрипты. Вы также указываете как, куда и зачем устанавливаются программы.

    Другим преимуществом LFS является возможность создать наиболее компактную систему. При установке обычного дистрибутива, вместе с ним, как правило, устанавливается большое количество программ, котрорые Вы никогда не будете использовать. Они просто будут занимать место на диске (или, возможно, время центрального процессора). В то же время не составит труда установить систему LFS на 100 Mb диска. Вам кажется, это много? Некоторые пользователи смогли создать весьма компактную LFS систему. Они собрали систему, позволяющую запускать веб-сервер Apache, которая занимала всего 8 Mb на диске. Дальнейшее урезание ее позволит сократить используемое место до 5 Mb. Попробуйте сделать это, используя обычный дистрибутив.

    Можно сравнить дистрибутив Linux с гамбургером из закусочной: Вы не знаете точно, что едите... LFS же дает не гамбургер, а рецепт его приготовления. Внимательно изучив его, можно убрать ненужные ингридиенты и добавить свои по вкусу. Как только Вы будете довольны рецептом, можете смело приступать к приготовлению гамбургера. Вы можете также выбрать способ приготовления: поджарить, сварить или запечь.

    Также LFS можно сравнить с домом. Я даю Вам только его план, а строить его Вам. Разумеется, можно изменять план по ходу дела.

    Немаловажным преимуществом построения своей Linux-системы является также безопасность. При компиляции из исходников Вы получаете возможность проверять все компоненты системы и, в случае надобности, поставить патчи. Вам больше не придется ждать, пока кто-то выпустит бинарный пакет, устраняющий дырку в безопасности. Нет гарантии, что новый пакет адекватно собран и устраняет проблему, если Вы самостоятельно не изучили и не собрали патч.

    Есть еще много причин, по которым лучше собрать LFS, их настолько много, что их все здесь просто не привести. Эта часть только верхушка айсберга. При установке LFS Вы сами поймете, что все сила в информации и в знаниях.

    Кому эта книга будет неинтересна

    Здесь перечислены некоторые из причин, по которым Вам, возможно, не следует читать эту книгу. Если у Вас нет желания собирать Linux с нуля, то, наверное, эта книга не для Вас. Нашей целью является построение законченой и готовой системы основного уровня. Если Вы просто хотите узнать, что именно происходит при загрузке системы, то мы рекомендуем почитать "From Power Up To Bash Prompt" HOWTO. Это руководство описывает процесс построения голой системы, подобной нашей, но ставит перед собой целью создание системы, способной загрузиться до командной оболочки BASH.

    При выборе объекта для чтения, ясно определите свою цель. Если Вы хотите построить свою Linux-систему, изучая ее по ходу дела, то эта книга для Вас. Если же Ваша цель сугубо познавательная, и Вы не планируете создавать готовую систему, то лучше выбрать "From Power Up To Bash Prompt" HOWTO.

    "From Power Up To Bash Prompt" HOWTO находится по адресу http://axiom.anu.edu.au/~okeefe/p2b или на сайте The Linux Documentation Project: http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html.

    Предпосылки и требования

    Эта книга подразумевает, что у Вас есть хорошие познания в области использования и установки программ для Linux. Перед началом построения LFS-системы, следует внимательно прочитать следующие HOWTO:

    • Software-Building-HOWTO

      Это исчерпывающее руководство по установке UNIX-ориентированых пакетов программ. Это HOWTO доступно по адресу http://www.tldp.org/HOWTO/Software-Building-HOWTO.html.

    • The Linux Users' Guide

      Это руководство описывает использование различных Linux-программ и доступно на http://espc22.murdoch.edu.au/~stewart/guide/guide.html.

    • The Essential Pre-Reading Hint

      Это советы по LFS, написаные специально для новичков в мире Linux. В основном содержат ссылки на внешние источники информации на различные темы. Любой, собравшийся установить LFS, должен понимать многие темы из перечисленных в этом документе. Этот документ доступен по адресу http://www.linuxfromscratch.org/hints/downloads/files/essential_prereading.txt .

    Организация

    Эта книга состоит из следующих частей:

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

    Часть II описывает приготовления к процессу сборки: создание раздела, скачивание пакетов и компиляцию временных средств.

    Часть III руководит сборкой системы LFS: компиляцией и установкой всех пакетов по порядку, созданием загрузочных скриптов и установкой ядра. В результате будет создана простая Linux-система в которую Вы сможете установить дополнительные программы тем способом и такие, как захотите.

    Часть IV состоит из двух приложений. Первое является алфавитным списком всех устанавливаемых по ходу книги пакетов, для большинства из них с описанием и официальным ресурсом для скачивания, их содержанием и зависимостями установки. Второе приложение является списком всех устанавливаемых программ и библиотек в алфавитном порядке для того, чтобы Вы могли быстро найти пакет, содержащий программу или библиотеку.

    Большая часть первого приложения содержится в частях II и III книги. Это просто расширение книги, но я надеюсь, что это облегчит чтение книги. Вам не обязательно обращатся к первому приложению в процессе установки. Беготня вперед и назад по страницам будет пустым занятием, особенно если Вы читаете печатную версию этой книги.

    ass="PART">

    Часть IV: Приложения

    Пролог

    Пролог

    Оглавление
    Предисловие
    Аудитория
    Предпосылки
    Организация

    Предисловие

    Я перепробовал несколько различных дистрибутивов Linux, но никогда не был полностью доволен ни одним из них. Мне не нравилось расположение загрузочных скриптов. Мне не нравилось, как некоторые программы были сконфигурированы по умолчанию. Это мне порядком надоело. В конце концов я понял, что только построив собственную систему из исходников, я буду доволен. Я решил отказаться от использования заранее скомпилированых пакетов и от загрузочного диска, который мог бы установить основу системы. Я буду использовать свою нынешнюю систему Linux для построения себе новой.

    Эта сумасбродная идея казалась очень сложной или вообще невыполнимой. Но после решения ряда проблем, таких как зависимости или ошибки на этапе компиляции, моя новая самосборная система оказалась полностью работоспособной. Я назвал свою систему "Linux From Scratch" или, для краткости, LFS.

    Я надеюсь, что Вы не зря проведете время, работая над своей собственной LFS!

    Джерард Бикманс
    gerard@linuxfromscratch.org

    Аудитория

    Кому эта книга будет интересна

    Существует ряд причин, по которым эта книга может представлять интерес. Главная причина: установка Linux-системы из исходных текстов. Многие спросят: зачем мучиться, вручную собирая Linux-систему с нуля, когда можно скачать и установить готовую? Это хороший вопрос, и мы постараемся ответить на него в этой части книги.

    Важная причина существования LFS: помочь узнать работу ситемы Linux изнутри. Построение LFS-системы помогает показать, что заставляет Linux работать, как работают ее компоненты, как они друг от друга зависят. И наконец, вероятно, важнее всего, оно учит как настроить Linux под себя, в соответствии со своими вкусами и потребностями.

    Основное преимущество LFS состоит в том, что Вы получаете больше контроля над системой, не полагаясь на чью-либо разработку. С LFS Вы определяете структуру системы и диктуете ей свои условия, в частности структуру каталогов и загрузочные скрипты. Вы также указываете как, куда и зачем устанавливаются программы.

    Другим преимуществом LFS является возможность создать наиболее компактную систему. При установке обычного дистрибутива, вместе с ним, как правило, устанавливается большое количество программ, котрорые Вы никогда не будете использовать. Они просто будут занимать место на диске (или, возможно, время центрального процессора). В то же время не составит труда установить систему LFS на 100 Mb диска. Вам кажется, это много? Некоторые пользователи смогли создать весьма компактную LFS систему. Они собрали систему, позволяющую запускать веб-сервер Apache, которая занимала всего 8 Mb на диске. Дальнейшее урезание ее позволит сократить используемое место до 5 Mb. Попробуйте сделать это, используя обычный дистрибутив.

    Можно сравнить дистрибутив Linux с гамбургером из закусочной: Вы не знаете точно, что едите... LFS же дает не гамбургер, а рецепт его приготовления. Внимательно изучив его, можно убрать ненужные ингридиенты и добавить свои по вкусу. Как только Вы будете довольны рецептом, можете смело приступать к приготовлению гамбургера. Вы можете также выбрать способ приготовления: поджарить, сварить или запечь.

    Также LFS можно сравнить с домом. Я даю Вам только его план, а строить его Вам. Разумеется, можно изменять план по ходу дела.

    Немаловажным преимуществом построения своей Linux-системы является также безопасность. При компиляции из исходников Вы получаете возможность проверять все компоненты системы и, в случае надобности, поставить патчи. Вам больше не придется ждать, пока кто-то выпустит бинарный пакет, устраняющий дырку в безопасности. Нет гарантии, что новый пакет адекватно собран и устраняет проблему, если Вы самостоятельно не изучили и не собрали патч.

    Есть еще много причин, по которым лучше собрать LFS, их настолько много, что их все здесь просто не привести. Эта часть только верхушка айсберга. При установке LFS Вы сами поймете, что все сила в информации и в знаниях.

    Кому эта книга будет неинтересна

    Здесь перечислены некоторые из причин, по которым Вам, возможно, не следует читать эту книгу. Если у Вас нет желания собирать Linux с нуля, то, наверное, эта книга не для Вас. Нашей целью является построение законченой и готовой системы основного уровня. Если Вы просто хотите узнать, что именно происходит при загрузке системы, то мы рекомендуем почитать "From Power Up To Bash Prompt" HOWTO. Это руководство описывает процесс построения голой системы, подобной нашей, но ставит перед собой целью создание системы, способной загрузиться до командной оболочки BASH.

    При выборе объекта для чтения, ясно определите свою цель. Если Вы хотите построить свою Linux-систему, изучая ее по ходу дела, то эта книга для Вас. Если же Ваша цель сугубо познавательная, и Вы не планируете создавать готовую систему, то лучше выбрать "From Power Up To Bash Prompt" HOWTO.

    "From Power Up To Bash Prompt" HOWTO находится по адресу http://axiom.anu.edu.au/~okeefe/p2b или на сайте The Linux Documentation Project: http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html.

    Предпосылки и требования

    Эта книга подразумевает, что у Вас есть хорошие познания в области использования и установки программ для Linux. Перед началом построения LFS-системы, следует внимательно прочитать следующие HOWTO:

    • Software-Building-HOWTO

      Это исчерпывающее руководство по установке UNIX-ориентированых пакетов программ. Это HOWTO доступно по адресу http://www.tldp.org/HOWTO/Software-Building-HOWTO.html.

    • The Linux Users' Guide

      Это руководство описывает использование различных Linux-программ и доступно на http://espc22.murdoch.edu.au/~stewart/guide/guide.html.

    • The Essential Pre-Reading Hint

      Это советы по LFS, написаные специально для новичков в мире Linux. В основном содержат ссылки на внешние источники информации на различные темы. Любой, собравшийся установить LFS, должен понимать многие темы из перечисленных в этом документе. Этот документ доступен по адресу http://www.linuxfromscratch.org/hints/downloads/files/essential_prereading.txt .

    Организация

    Эта книга состоит из следующих частей:

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

    Часть II описывает приготовления к процессу сборки: создание раздела, скачивание пакетов и компиляцию временных средств.

    Часть III руководит сборкой системы LFS: компиляцией и установкой всех пакетов по порядку, созданием загрузочных скриптов и установкой ядра. В результате будет создана простая Linux-система в которую Вы сможете установить дополнительные программы тем способом и такие, как захотите.

    Часть IV состоит из двух приложений. Первое является алфавитным списком всех устанавливаемых по ходу книги пакетов, для большинства из них с описанием и официальным ресурсом для скачивания, их содержанием и зависимостями установки. Второе приложение является списком всех устанавливаемых программ и библиотек в алфавитном порядке для того, чтобы Вы могли быстро найти пакет, содержащий программу или библиотеку.

    Большая часть первого приложения содержится в частях II и III книги. Это просто расширение книги, но я надеюсь, что это облегчит чтение книги. Вам не обязательно обращатся к первому приложению в процессе установки. Беготня вперед и назад по страницам будет пустым занятием, особенно если Вы читаете печатную версию этой книги.

    ass="PART">

    Часть IV: Приложения

    Пролог

    Пролог

    Оглавление
    Предисловие
    Аудитория
    Предпосылки
    Организация

    Предисловие

    Я перепробовал несколько различных дистрибутивов Linux, но никогда не был полностью доволен ни одним из них. Мне не нравилось расположение загрузочных скриптов. Мне не нравилось, как некоторые программы были сконфигурированы по умолчанию. Это мне порядком надоело. В конце концов я понял, что только построив собственную систему из исходников, я буду доволен. Я решил отказаться от использования заранее скомпилированых пакетов и от загрузочного диска, который мог бы установить основу системы. Я буду использовать свою нынешнюю систему Linux для построения себе новой.

    Эта сумасбродная идея казалась очень сложной или вообще невыполнимой. Но после решения ряда проблем, таких как зависимости или ошибки на этапе компиляции, моя новая самосборная система оказалась полностью работоспособной. Я назвал свою систему "Linux From Scratch" или, для краткости, LFS.

    Я надеюсь, что Вы не зря проведете время, работая над своей собственной LFS!

    Джерард Бикманс
    gerard@linuxfromscratch.org

    Аудитория

    Кому эта книга будет интересна

    Существует ряд причин, по которым эта книга может представлять интерес. Главная причина: установка Linux-системы из исходных текстов. Многие спросят: зачем мучиться, вручную собирая Linux-систему с нуля, когда можно скачать и установить готовую? Это хороший вопрос, и мы постараемся ответить на него в этой части книги.

    Важная причина существования LFS: помочь узнать работу ситемы Linux изнутри. Построение LFS-системы помогает показать, что заставляет Linux работать, как работают ее компоненты, как они друг от друга зависят. И наконец, вероятно, важнее всего, оно учит как настроить Linux под себя, в соответствии со своими вкусами и потребностями.

    Основное преимущество LFS состоит в том, что Вы получаете больше контроля над системой, не полагаясь на чью-либо разработку. С LFS Вы определяете структуру системы и диктуете ей свои условия, в частности структуру каталогов и загрузочные скрипты. Вы также указываете как, куда и зачем устанавливаются программы.

    Другим преимуществом LFS является возможность создать наиболее компактную систему. При установке обычного дистрибутива, вместе с ним, как правило, устанавливается большое количество программ, котрорые Вы никогда не будете использовать. Они просто будут занимать место на диске (или, возможно, время центрального процессора). В то же время не составит труда установить систему LFS на 100 Mb диска. Вам кажется, это много? Некоторые пользователи смогли создать весьма компактную LFS систему. Они собрали систему, позволяющую запускать веб-сервер Apache, которая занимала всего 8 Mb на диске. Дальнейшее урезание ее позволит сократить используемое место до 5 Mb. Попробуйте сделать это, используя обычный дистрибутив.

    Можно сравнить дистрибутив Linux с гамбургером из закусочной: Вы не знаете точно, что едите... LFS же дает не гамбургер, а рецепт его приготовления. Внимательно изучив его, можно убрать ненужные ингридиенты и добавить свои по вкусу. Как только Вы будете довольны рецептом, можете смело приступать к приготовлению гамбургера. Вы можете также выбрать способ приготовления: поджарить, сварить или запечь.

    Также LFS можно сравнить с домом. Я даю Вам только его план, а строить его Вам. Разумеется, можно изменять план по ходу дела.

    Немаловажным преимуществом построения своей Linux-системы является также безопасность. При компиляции из исходников Вы получаете возможность проверять все компоненты системы и, в случае надобности, поставить патчи. Вам больше не придется ждать, пока кто-то выпустит бинарный пакет, устраняющий дырку в безопасности. Нет гарантии, что новый пакет адекватно собран и устраняет проблему, если Вы самостоятельно не изучили