wc
   wc выводит количество строк, слов и размер в байтах каждого указанного файла и сумму результатов, если указано более одного файла.
   Зависимости Textutils
   Последняя проверка: версия 2.0.
   Autoconf: autoconf, autoheader Automake: aclocal, automake Bash: sh Binutils: ar, as, ld, ranlib Diffutils: cmp Fileutils: chmod, install, ls, mv, rm Gettext: msgfmt, xgettext Gcc: cc, cc1, collect2, cpp0, gcc Glibc: getconf Grep: egrep, fgrep, grep M4: m4 Make: make Gawk: gawk Net-tools: hostname Perl: perl Sed: sed Sh-utils: basename, echo, expr, sleep, uname Tar: tar Texinfo: install-info, makeinfo Textutils: cat, tr

Установка Util-linux-2.11u

   Приблизительное время компиляции: 0.09 SBU Необходимое дисковое пространство: 9 MB
 
   Инсталляция Util-linux
   Мы не собираемся компилировать весь пакет целиком, т.к. на данном этапе нам нужны только программы mount и umount.
   Для инсталляции Util-linux выполните:
    ./configure && make -C lib && make -C mount LDFLAGS=-static mount umount && cp mount/{mount,umount} $LFS/static/bin
 
   Зависимости Util-linux
   Последняя проверка: версия 2.11n.
   Bash: sh Binutils: as, ld Diffutils: cmp Fileutils: chgrp, chmod, cp, install, ln, mv, rm Gettext: msgfmt, xgettext Gcc: cc, cc1, collect2, cpp, cpp0 Glibc: rpcgen Grep: grep Make: make Sed: sed Sh-utils: uname, whoami Textutils: cat

Глава 6. Установка основных компонентов системы

Вступление

   В этой главе мы всерьез займемся установкой системы LFS. Сначала мы войдем в созданную в предыдущей главе мини-систему Linux, создадим несколько вспомогательных вещей и перейдем к поочередной инсталляции всех пакетов.
   Инсталляция программ довольно однообразна. Вероятно, можно было бы дать общие инструкции установки, а более подробно пояснять установку тех пакетов, которые требуют иного подхода. Однако мы решили предоставить полное руководство по установке для каждого пакета с целью минимизации возможных ошибок.
   Если вы собираетесь воспользоваться оптимизациями компилятора в данной главе, см. соответствующее руководство по адресу http://hints.linuxfromscratch.org/hints/optimization.txt. Оптимизации компилятора позволяют ускорить выполнение той или иной программы, однако иногда они создают трудности при компиляции. В случае если пакет не компилируется с использованием оптимизаций, попробуйте скомпилировать его без них.
   Настоятельно рекомендуется строго соблюдать порядок инсталляции пакетов в данной главе для того, чтобы не включить в программу ссылку на каталог /static. По той же причине, ни в коем случае не компилируйте несколько пакетов одновременно. Параллельная компиляция хоть и позволяет сэкономить время (особенно на двухпроцессорных системах), однако в этом случае в программу может быть встроена ссылка на каталог /static. После удаления данного каталога, программа будет давать сбои.

Отладочные символы

   Большинство программ и библиотек по умолчанию компилируются с символами отладки. ( с опцией gcc -g).
   При отладке программы или библиотеки, скомпилированной с отладочной информацией, отладчик предоставляет не только адреса в памяти, но и имена алгоритмов и переменных.
   Однако включение символов отладки значительно увеличивает размер программы или библиотеки. Для того, чтобы получить представление о размере отладочных символов, взглянем на пример:
   оболочка bash, скомпилированная с отладочными символами: 1200 KB
   оболочка bash, скомпилированная без отладочных символов: 480 KB
   файлы glibc и gcc (/lib и /usr/lib) с отладочными символами: 87 MB
   файлы glibc и gcc скомпилированная без отладочных символов: 16 MB
   Размеры могут различаться в зависимости от использованного компилятора Си и библиотеки. При сопоставлении размера программы, скомпилированной с отладочными символами и без них, разница составляет примерно 2 – 5 раз.
   Так как большинство пользователей никогда не используют отладчик, удаление этих символов позволит значительно сэкономить дисковое пространство.
   Для удаления символов отладки из бинарного файла (файл a.out или бинарный файл ELF), выполните strip –strip-debug filename. Допускается использование символа *для обработки нескольких файлов (например, strip –strip-debug $LFS/static/bin/*).
   Для удобства, в главе 9 описана программа, удаляющая отладочные символы со всех программ и библиотек системы. Для получения дополнительных сведений по оптимизации, см. руководство: http://hints.linuxfromscratch.org/hints/optimization.txt.

Вход в среду chroot

   Для последующей инсталляции пакетов необходимо войти в среду chroot. Для этого войдите в систему в режиме пользователя root, т.к. только root он имеет право выполнять команду chroot.
   После перехода в режим пользователя root, выполните следующую команду для входа в среду chroot:
    chroot $LFS /static/bin/env -i \
    HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \
    /static/bin/bash –login
 
   Команда envс опцией -iочистит значения всех переменных среды chroot. Затем только переменные HOME, TERM, PS1 и PATH будут заданы. Конструкция TERM=$TERM устанавливает значение TERM для среды chroot равным значению TERM вне этой среды; эта переменная необходима для корректной работы программ типа vim и less. Если вы нуждаетесь в других переменных, например CFLAGS или CXXFLAGS, самое время задать их снова.
   Отныне нет необходимости использовать переменную LFS, т.к. все действия выполняются в файловой системе LFS (то, что оболочка считает / , на самом деле является /mnt/lfs).
   Обратите внимание, что все команды, начиная с данной главы, следует выполнять из среды chroot. Если по какой-то причине (например, перезагрузка системы) вы вышли из этой среды, прежде чем возобновить инсталляцию, заново войдите в нее и монтируйте файловую систему proc (см. далее).
   Заметьте, что приглашение bash выглядит следующим образом: «I have no name!» Это нормально, т.к. пакет Glibc еще не был установлен.

Изменение прав

   Первое что мы сделаем в режиме пользователя root– передадим права файлов и директорий, установленных в Главе 5, пользователю root. Это необходимо, т.к. когда в дальнейшем мы оставим директорию /static добавим несколько пользователей, один из них может оказаться владельцем программы со статическими ссылками, а это не самая лучшая идея.
   Выполните следующую команду для передачи прав на все программы, скомпилированные с использованием статических ссылок:
    chown -R 0:0 /static
 
   Эта команда использует «0:0» вместо «root:root», т.к. оболочка не может резольвировать имя «root», т.к. пакет glibc еще не был установлен.

Создание директорий

   Давайте создадим структуру файловой системы LFS. Начнем с создания более или менее стандартного дерева с помощью следующих команд:
    mkdir -p /{bin,boot,dev/pts,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}} &&
    ln -s ../var/tmp /usr
 
   По умолчанию директории создаются с правами доступа 755, однако это подходит не для всех директорий. Мы сделаем два изменения: для домашнего каталога root и для каталога временных файлов.
    chmod 0750 /root &&
    chmod 1777 /tmp /var/tmp
 
   Первое изменение гарантирует, что не все пользователи имеют доступ к директории /root directory – аналогичные действия выполняет обычный пользователь со своим домашним каталогом. Второе изменение дает любому пользователю право на запись в директории /tmp и /var/tmp, однако не разрешает удалять из них файлы других пользователей. Удаление чужих файлов определяется параметром «sticky bit» – наивысший двоичный знак в двоичной маске 1777.
   Итак, после создания директорий переместите tar-архивы исходных кодов пакетов, загруженных по инструкциям Главы 3, в некоторый самостоятельно созданный подкаталог в /usr/src.
   Соответствие FHS
   При создании директорий мы основывались на стандарте FHS (см. http://www.pathname.com/fhs/). Помимо созданных каталогов данный стандарт ставит условием наличие каталогов /usr/local/games и /usr/share/games, но, по нашему мнению, для базовой системы они не нужны. Однако можете смело привести свою систему к полному соответствию с FHS. Что касается структуры каталога /usr/local/share, стандарт FHS строго не оговаривает его содержимое, так что мы решили создать в нем необходимые, по нашему убеждению, подкаталоги.

Монтирование файловой системы proc

   Для обеспечения корректной работы некоторых программ, необходимо установить файловую систему proc в среде chroot. Так как файловая система может быть монтирована сколько угодно раз и в каких угодно местах, проблем с тем, что файловая система proc уже монтирована в вашем базовом дистрибутиве, возникнуть не должно. Тем более, что proc – виртуальная файловая система.
   Для монтирования файловой системы proc в /proc, выполните:
    mount proc /proc -t proc
 
   Вероятно, следующие предупреждения команды mount будут выведены на экран:
   warning: can't open /etc/fstab: No such file or directory
   not enough memory
 
   Не обращайте на них особого внимания – наша система полностью не установлена, и некоторые файлы отсутствуют. Само монтирование файловой системы будет выполнено, и на данном этапе нам больше ничего не требуется.

Создание символической ссылки mtab

   Следующий шаг – создание символической ссылки /etc/mtab на /proc/mounts. Для этого выполните:
    ln -sf /proc/mounts /etc/mtab
 
   Создание этой символической ссылки предотвращает возможные проблемы при монтировании / только для чтения, когда информация в /etc/mtab устарела. Символическая ссылка на /proc/mounts позволяет всегда иметь свежую информацию о монтированных устройствах.
   Примечание: Использование данной символической ссылки предполагает, что в ядро вашей системы встроена поддержка файловой системы proc. Данная поддержка встроена по умолчанию, не удаляйте ее, если вы не уверены в своих действиях, т.к. множество других вещей кроме символической ссылки /etc/mtab зависят от нее. Вкратце, убедитесь, что поддержка файловой системы proc включена в ядре.

Создание символических ссылок bash и sh

   Некоторые программы при компиляции прописывают ссылки на пока не существующие программы. Для предотвращения связанных с этим проблем, создадим символические ссылки /bin/bash и /bin/sh, указывающие на программу bash, скомпилированную с использованием статических ссылок.
   Для создания символических ссылок /bin/bash и /bin/sh, выполните:
    ln -s /static/bin/bash /bin/bash &&
    ln -s bash /bin/sh

Создание файлов passwd и group

   Для возможности входа в систему под учетной записью root и для распознавания оболочкой имени «root», необходимо создать соответствующие записи в файлах /etc/passwd и /etc/group.
   Для создания файла /etc/passwd, выполните:
    echo «root:x:0:0:root:/root:/bin/bash» > /etc/passwd
 
   Пароль для 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 рекомендует наличие только группы «bin», с GID <идентификатор группы> равным 1. Все остальные названия групп и их GID пользователю разрешается выбирать произвольно, т.к. грамотно написанные программы не зависят от номеров GID, а используют название группы.

Создание устройств (Makedev-1.7)

   Приблизительное время компиляции: 0.07 SBU Необходимое дисковое пространство: 50 KB
 
   Создание файлов устройств
   Примите к сведению, что при распаковке архива MAKEDEV-1.7.bz2 не создается директория для перехода, т.к. архив содержит только файл скрипта.
   Подготовим создание файлов устройств следующей командой:
    cp MAKEDEV-1.7 /dev/MAKEDEV && cd /dev && chmod 754 MAKEDEV
 
   Большинство пользователей захотят сразу же создать файлы устройств командой:
    ./MAKEDEV -v generic
 
   Однако, если вы планируете использовать devpts, выполните:
    ./MAKEDEV -v generic-nopty
 
   Если вы не уверены в своих действиях, для создания всех необходимых устройств лучше выполнить команду ./MAKEDEV -v generic. В случае, если вы уверены, что собираетесь использовать devpts, вторая команда пропускает создание ненужных устройств.
   MAKEDEV создает устройства с hda[1-20] по hdh[1-20] и многие другие подобные файлы дисковых узлов, однако имейте ввиду, что из-за ограничений ядра на максимальное количество разделов многие из них будут недоступны.
   Пояснения команд
    ./MAKEDEV -v generic:Эта команда создает огромное количество файлов устройств. Обычно, это все, что вам нужно. Однако существует вероятность, что некоторые специфические файлы для ваших аппаратных устройств отсутствуют. Их можно создать командой ./MAKEDEV -v <устройство>. Опция generic-noptyв создает, в основном, те же устройства, что и опция generic, за исключением тех, которые не нужны при использовании devpts.
   Содержимое MAKEDEV
   Последняя проверка: версия 1.5.
   Программы
   MAKEDEV
   Описания
   MAKEDEV
   MAKEDEV – скрипт, создающий необходимые статические связи с устройствами, обычно располагающимися в каталоге /dev. Детальная информация о связях с устройствами может быть найдена в дереве исходных кодов ядра Linux в Documentation/devices.txt.
   Зависимости MAKEDEV
   Последняя проверка: версия 1.5.
   Bash: sh Fileutils: chmod, chown, cp, ln, mknod, mv, rm Grep: grep Sh-utils: expr, id

Установка Linux-2.4.19

   Приблизительное время компиляции: 0.02 Необходимое место на диске: 142 MB
 
   Установка заголовочных файлов ядра
   На данном этапе мы не будем компилировать ядро – мы сделаем это после установки всех пакетов. Однако, в связи с тем, что некоторые пакеты требуют заголовочных файлов ядра, мы распакуем ядро, настроим его и скопируем заголовки туда, где их будут искать пакеты при компиляции.
   Скопируем заголовки ядра, выполнив следующие команды:
    ln -s /static/bin/pwd /bin/pwd && make mrproper && make include/linux/version.h && make symlinks && mkdir /usr/include/asm && cp include/asm/* /usr/include/asm && cp -R include/asm-generic /usr/include && cp -R include/linux /usr/include && touch /usr/include/linux/autoconf.h && rm /bin/pwd
 
   Пояснения команд
    ln -s /static/bin/pwd /bin/pwd: В исходных кодах ядра путь к программе pwd прописан как /bin/pwd, поэтому создадим временную символическую ссылку, а в конце удалим ее.
    make mrproper: Выполнение данной команды обеспечивает чистое дерево исходников ядра. Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра, даже если вы только что распаковали исходные коды из tar-архива.
    make include/linux/version.hи make symlinks: Создадим файл include/linux/version.h file и символическую ссылку include/asm для конкретной платформы.
    mkdir /usr/include/asm, cp include/asm/* /usr/include/asmи cp -R include/asm-generic /usr/include: Эти команды копируют заголовочные файлы ядра ассемблера для конкретной платформы в /usr/include/asm и /usr/include/asm-generic.
    cp -R include/linux /usr/include: Эта команда копирует кросс-платформенные файлы заголовков в /usr/include.
    touch /usr/include/linux/autoconf.h: Создаем пустой файл 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}.
   Содержимое Linux
   Последняя проверка: версия 2.4.18.
   Файлы поддержки
   Ядро Linux и его заголовочные файлы
   Описания
   Ядро Linux
   Ядро – основа любой системы Linux. Когда компьютер включается и загружает Linux, первое, что загружается – ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. In a nutshell the kernel makes the hardware available so that the software can run.
   linux kernel headers
   Это файлы, которые мы копируем в /usr/include/{linux,asm} в 5-й главе. Они должны соответствовать тем, с которым был скомпилирован glibc, и поэтому недолжны быть заменены при смене ядра. Они имеют ключевое значение для компиляции многих программ.
   Зависимости Linux
   Последняя проверка: версия 2.4.17.
   Bash: sh Binutils: ar, as, ld, nm, objcopy Fileutils: cp, ln, mkdir, mv, rm, touch Findutils: find, xargs Gcc: cc1, collect2, cpp0, gcc Grep: grep Gzip: gzip Make: make Gawk: awk Modutils: depmod, genksyms Net-tools: dnsdomainname, hostname Sed: sed Sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes Textutils: cat, md5sum, sort, tail

Установка Man-pages-1.52

   Приблизительное время компиляции: 0.01 SBU Необходимое дисковое пространство: 6 MB
 
   Инсталляция Man-pages
   Для инсталляции Man-pages выполните:
    make install
 
   Содержимое Man-pages
   Последняя проверка: версия 1.52.
   Файлы поддержки
   Различные страницы руководства, не поставляемые с пакетами
   Описания
   Страницы руководства
   Примеры предоставляемых страниц руководства – описания всех функций C and C++, файлов /dev/ и многое другое.
   Зависимости Man-pages
   Последняя проверка: версия 1.47.
   Bash: sh Fileutils: install Make: make

Установка Glibc-2.2.5

   Приблизительное время компиляции: 14.71 SBU Необходимое дисковое пространство: 369 MB
 
   Инсталляция Glibc
   Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.
   Перед выполнением инсталляционных инструкций войдите в каталог glibc-2.2.5 и распакуйте архив glibc-linuxthreads в каталоге glibc-2.2.5, а не в /usr/src.
   Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Glibc рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Glibc. Изменяя оптимизации для Glibc, вы действуете на свой страх и риск.
   Также не стоит запускать скрипт configure с опцией –enable-kernel. Это может вызвать ошибки сегментации при ссылке на него пакетов вроде fileutils, make и tar.
   Вообще, чтобы не рисковать, рекомендуем компилировать Glibc в точности как указано в этом разделе.
   Для инсталляции Glibc выполните:
    patch -Np1 -i ../glibc-2.2.5-2.patch && touch /etc/ld.so.conf && mkdir ../glibc-build && cd ../glibc-build && ../glibc-2.2.5/configure –prefix=/usr –disable-profile \ –enable-add-ons –libexecdir=/usr/bin && echo «cross-compiling = no» > configparms && make && make install && make localedata/install-locales && exec /static/bin/bash –login
 
   Вместо выполнения make localedata/install-localesможно установить только те локали, которые вам необходимы с помощью команды localedef. Более подробную информацию можно найти в файле INSTALL в директории glibc-2.2.5. Не забудьте создать директорию /usr/lib/local, т.к. localedefпредполагает ее наличие.
   На данном этапе мы не будем инсталлировать страницы руководства потоков (The Linux Threads man pages), т.к. они требуют функционирующего пакета Perl. Мы вернемся к их инсталляции после установки Perl.
   Во время стадии configure на экран будет выведено следующее предупреждение:
   configure: warning: *** These auxiliary programs are missing or too old: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.
 
   Отсутствие файла msgfmt (из пакета gettext, который мы установим позже в данной главе) не вызовет никаких проблем. Файл msgfmt используется для генерирования бинарных файлов перевода, которые позволяют системе общаться на другом языке. Так как эти файлы перевода уже сгенерированы, в использовании msgfmt нет необходимости. Нам понадобился бы msgfmt лишь в том случае, если мы изменили исходники файлов перевода (файлы *.po в подкаталоге po), т.к. нам пришлось бы заново генерировать бинарные файлы.
   Пояснения команд
    patch -Np1 -i ../glibc-2.2.5-2.patch:Этот патч переводит все упоминания о $(PERL) на /usr/bin/perl в файле malloc/Makefile. Это необходимо, т.к. Glibc не может определить местонахождение программ Perl, так как пакет Perl еще не был установлен. Данный патч также заменяет все упоминания о rootна 0в файле login/Makefile. Это необходимо, потому что сам пакет Glibc еще не установлен, и выявление идентификационного номера пользователя <userid> из имени пользователя невозможно. К примеру, команда chown root fileне будет работать, в то время как при замене имени пользователя на userid, программа будет выполнена.
   Данный патч также устраняет некоторые другие ошибки, например, «errlist», «dns resolver», «xdr_array», «calloc», «thread exit», «udivdi3», «math test», «restrict_arr» и «divbyzero». Для получения более подробной информации, см. http://www.zipworld.com.au/~gschafer/lfs-tweaks.html.
    touch /etc/ld.so.conf:Один из заключительных шагов установки Glibc installation – выполнение команды ldconfig для обновления динамического кэша загрузки. Если этот файл не существует, инсталляция завершится с ошибкой, что не может прочесть файл. Для избегания подобной ошибки, мы просто создаем пустой файл (в случае пустого файла, Glibc будет по умолчанию использовать каталоги /lib и /usr/lib).
    –disable-profile:Отменяет компиляцию библиотек с профильной информацией. Если вы собираетесь использовать профили, пропустите эту опцию.
    –enable-add-ons:Включает дополнительные модули, в нашем случае linuxthreads.
    –libexecdir=/usr/bin:Инсталлирует программу pt_chown в каталог /usr/bin.
    echo «cross-compiling = no» > configparms:Этой командой мы даем понять, что компилируем пакет только для нашей системы. Кросс-компиляция используется, например, для того, чтобы скомпилировать пакет для системы Apple Power PC на Intel-совместимом компьютере. Glibc по умолчанию полагает, что мы кросс-компилируем, потому что не может скомпилировать тестовую программу для проверки, т.к. сам пакет Glibc еще не установлен.
    exec /static/bin/bash –login:Данная программа запустит новый сеанс оболочки bash вместо текущего. Мы, таким образом, избавимся от приглашения «I have no name!» командной строки, которое было вызвано невозможностью bash получить имя пользователя из userid (из-за отсутствия Glibc).
   Содержимое Glibc
   Последняя проверка: версия 2.2.5.
   Программы
   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
   Описания
   catchsegv
   catchsegv может быть использования для слежения за состоянием стека, когда выполнение программы прерывается из-за ошибки распределения памяти.
   gencat
   gencat генерирует каталоги сообщений.
   getconf
   getconf отображает значения переменных, зависящих от системной конфигурации.
   getent
   getent позволяет получить записи административной базы данных.
   glibcbug
   glibcbug создает сообщение об ошибке в glibc и отправляет по указанному адресу сообщения об ошибках.
   iconv
   iconv осуществляет преобразование наборов символов.
   iconvconfig
   iconvconfig создает конфигурационные файлы для модулей iconv.
   ldconfig
   ldconfig настраивает привязки времени исполнения динамического линкера.
   ldd
   ldd выводит список разделяемых библиотек, необходимых заданным программам.
   lddlibc4
   lddlibc4 используется ldd при работе с объектными файлами.
   locale
   locale – скрипт на Perl, разрешающий (или запрещающий) компилятору использование локалей POSIX для встроенных операций.
   localedef
   localedef компилирует спецификации локалей.
   mtrace
   mtrace выводит путь multicast от источника к получателю (запрос IP trace).
   nscd
   nscd – демон, предоставляющий кэш для большинства запросов DNS.
   nscd_nischeck
   nscd_nischeck проверяет нужен или нет защищенный режим для запроса NIS+.
   pcprofiledump
   pcprofiledump выводит информацию, полученной из профиля PC.
   pt_chown
   pt_chown устанавливает владельца, группу и права доступа подчиненного псевдотерминала в соответствии с основным псевдотерминалом, переданном в описании `3'. Это вспомогательная программа для функции `grantpt'. Не предназначается для прямого запуска из командной строки.
   rpcgen
   rpcgen генерирует код C для реализации протокола RPC.
   rpcinfo
   rpcinfo делает запрос RPC к серверу.
   sln
   sln символически связывает dest и source. Программа собрана статически. Использование sln полезно для создания символических ссылок на динамические библиотеки, если система динамического связывания по какой-то причине нефункциональна.