Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Создание сайта
Администрирование сервера
Администрирование сервера
Администрирование сервера


Новая демониада, или FreeBSD 5. 3. Устройство установочного CD.

Автор : Алексей Федорчук

3. Устройство установочного CD

Если смонтировать установочный (1-й) диск дистрибутива FreeBSD (а в ней штатной точкой монтирования для этого является каталог /cdrom) и просмотреть его содержимое командой

$ ls /cdrom

перед нами предстанет полтора десятка файлов и более двух десятков подкаталогов:

5.1-RELEASE@    INSTALL.TXT     catpages/       crypto/         packages/
EARLY.HTM       README.HTM      cdrom.inf       dict/           ports/
EARLY.TXT       README.TXT      compat1x/       doc/            proflibs/
ERRATA.HTM      RELNOTES.HTM    compat20/       docbook.css     src/
ERRATA.TXT      RELNOTES.TXT    compat21/       floppies/       tools/
HARDWARE.HTM    base/           compat22/       games/
HARDWARE.TXT    boot/           compat3x/       info/
INSTALL.HTM     boot.catalog    compat4x/       manpages/

Содержание файлов корня CD понятно из их имен: 5.1-RELEASE - символическая ссылка на текущий каталог, в файле cdrom.inf содержится краткое описание диска (CD_VERSION = 5.1-RELEASE - чтобы не забыть, с какой версией мы имеем дело), boot.catalog - бинарный файл, имеющий отношение к загрузке с CD. Прочие файлы содержат различную информацию о проекте, текущей версии FreeBSD, поддерживаемом обрудовании, а также инструкцию по установке (в текстовом и html-форматах, на английском, разумеется, языке).

Из числа каталогов boot/ содержит файлы, обеспечивающие загрузку системы с CD, в том числе собственно загрузчик (boot/loader) и его конфигуратор (boot/defaults/loader.conf), ядро (boot/kernel/kernel) и его модули (boot/kernel/*.ko), и так далее. Собственно к дистрибутиву они отношения не имеют. И вообще, разговор о загрузке FreeBSD пока преждевременен. В дальнейшем у нас будет немало поводов вернуться к этой теме.

Также прямо не относятся к дистрибуции FreeBSD каталоги floppies/ и tools/. Первый из них содержит образы загрузочных дискет, используемых в случае невозможности загрузки машины каким-либо иным способом. А во втором собраны всякого рода DOS-утилиты, призванные облегчить пользователю этой системы вхождение в мир BSD. В частности, здесь можно видеть утилиту FIPS для "урезания" объема FAT-раздела (с целью создания неразбитого дискового пространства для помещения BSD-раздела), RAWRITE для изготовления загрузочных дискет по образам из каталога floppies/, DOS-версии утилит gzip и gunzip, и так далее.

Теперь рассмотрим состав собственно дистрибутивных каталогов. Первым в нашем списке буде base/, имя которого говорит само за себя: он содержит базовые компоненты системы. Строго говоря, это и есть FreeBSD в чистом виде.

Основной объем каталога занимают несколько странные файлы вида base.??, где ?? варьирует от "aa" до "сколько букв потребуется" (в данном случае потребовались литеры вплоть до *.bf). Причем все эти файлы (кроме последнего) имеют фиксированный объем - ровно 1457152 байт, что равно объему стандартной 3-дюймовой дискеты). Что это такое? Очень просто - обычный tar-архив, сжатый компрессором gzip и поделенный утилитой split на части с тем расчетом, чтобы каждая из них помещалась на дискету. В память о тех временах, когда CD-привод относился к категории роскошного...

Убедиться в том, что так оно и есть, очень легко - достаточно дать команду

$ file /cdrom/base/base.aa

которая выведет следующее сообщение

base.aa: gzip compressed data, from Unix, max compression

Состав того же файла можно посмотреть с помощью утилиты tar и соответствующих опций:

$ tar txvf /cdrom/base/base.aa

в ответ на что последует

drwxr-xr-x root/wheel        0  5 июн 05:57 2003 ./
drwxr-xr-x root/wheel        0  5 июн 05:59 2003 ./bin/
-r-xr-xr-x root/wheel    91124  5 июн 05:54 2003 ./bin/cat
-r-xr-xr-x root/wheel    85208  5 июн 05:54 2003 ./bin/chflags
...
-r-xr-xr-x root/wheel   564092  5 июн 05:54 2003 ./bin/pax

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

Сообщению об ошибке в конце удивляться не приходится - ведь мы имеем дело не с целым файлом *tar.gz. И, к слову, обе эти операции не пройдут со всеми остальными base.?? каталога: ведь они являют собой просто механически нарезанные части полного архива, и не содержат соответствующих заголовочных записей, позволяющих их идентифицировать.

Прочие файлы каталога base/ имеют служебные функции. В CHECKSUM.MD5 и base.inf содержатся контрольные суммы для каждого архивного фрагмента, base.mtree содержит описание заархивированного дерева каталогов и содержащихся в них файлов, с указанием их владельца и группы, атрибутов доступа, размера, количества связей (жестких ссылок) и все той же контрольной суммы. Ну а файл install.sh - исполняемый сценарий, ответственный за слияние архивных фрагментов воедино, распаковку образовавшегося файла и запись его компонентов в потребные места файловой системы.

Впрочем, даюе беглого взгляда на тело сценария достаточно для того, чтобы выполнить эту операцию вручную - последовательностью команд

$ cat base.?? > base.tar.gz; $ tar --unlink -xzvf base.tar.gz -C /

Разумеется, применительно случаю смысла в этом нет (все компоненты каталога base тесно связаны друг с другом и абсолютно необходимы. Однако для других каталогов возможность такой ручной операции может быть полезной.

Прочие каталоги, за исключением packages/, ports/ и src/, устроены точно также - в каждом из них содержится нарезанный на фрагменты архив, скрипт для их слияния, распаковки и установки и служебные файлы. Так что просто рассмотрим их назначение.

В каталоге crypto/ содержатся вторые по важности, после base, компоненты сиcтемы - программы обеспечения безопасности, которые относятся к устанавливаемым по умолчанию при стандартной инсталляции, и ряд опциональных служб, типа Kerberos.

В каталогах manpages/, info/, catpages/ и doc/ - документация в разных форматах, в виде стандартных для Unix man-страниц, info-страниц проекта GNU и официальной документации проекта FreeBSD.

В каталоге proflibs/ обнаруживаются т.н. профильные версии библиотек, в dict/ - словари для проверки орфографии, в games - традиционные Unix-игры (весьма древние). Наконец, каталоги compat1x/-compat4x/ содержат копоненты, обеспечивающие бинарную совместимость с предыдущими версиями FreeBSD соответствующих ветвей.

Каталог src/ содержит несколько серий архивов и архивных фрагментов, имена которых маркируются префиксом s (от src). Как нетрудно догадаться, все они включают в себя исходники отдельных компонентов системы, однако прямой корреляции с каталогами бинарных архивов в их группировке не обнаруживается.

Так, архив src/sbase.aa, вопреки своему названию, содержит не полный набор исходников бинарного каталога base/, а лишь файлы корня будущего дерева /usr/src. В файлах sbin.aa, ssbin.aa, subin.aa-subin.ab и susbin.aa-susbin.ac собраны исходники утилит и приложений, которые размещаются в каталогах /bin, /sbin, /usr/bin и /usr/sbin инсталлированной системы, соответственно (то есть соответствуют основной части бинарного каталога base/). В файлах slib.?? и slibexec.aa можно увидеть исходные тексты системных библиотек, в sinclude.aa и setc.aa - заголовочные и конфигурационные файлы, соответственно, в sshare.?? - разделяемые компоненты (в частности, документацию всякого рода). Наконец, файлы ssys.aa-ssys.ak суть фрагменты архива дерева исходников ядра системы.

Серии файлов scontrib.?? и sgnu.aa включают исходники программ, строго говоря, не относящихся к проекту FreeBSD и разроаботанных в рамках проекта GNU и родственных. В частности, именно здесь можно найти исходные тексты такого важного компонента любой открытой Unix-подобной системы, как компилятора gcc.

Каталог packages/ - это прекомпилированные программы, вообще не имеющие отношения к FreeBSD. Они представлены в подкаталоге packages/All в виде пакетов *.tbz, то есть tar-архивов, сжатых утилитой bzip2 (во FreeBSD 4-й ветки использовался формат tgz с компрессией посредством gzip). В отличие от чистых архивов tar.bz2, Free'шные бинарные пакеты содержат также некоторую служебную информацию (описание пакетов, состав файлов и пути к ним в файловой системе, и т.д.). Что, впрочем, не мешает просмотреть состав такого архивного файла с помощью

$ tar tjvf packages/All/*.tbz

Кроме All/, в каталоге packages/ есть еще масса подкаталогов:

All/            editors/        lang/           print/          www/
INDEX           emulators/      linux/          python/         x11/
afterstep/      ftp/            mail/           ruby/           x11-clocks/
archivers/      games/          math/           security/       x11-fm/
astro/          gnome/          misc/           shells/         x11-fonts/
audio/          graphics/       multimedia/     sysutils/       x11-servers/
converters/     ipv6/           net/            tcl83/          x11-toolkits/
databases/      irc/            news/           textproc/       x11-wm/
devel/          kde/            perl5/          windowmaker/

Это так называемые категории пакетов, выделенные по их назначению для удобства ориентации. Содержимое их - символические ссылки на файлы подкаталога packages/All.

Как уже было сказано, packages не являются неотъемлемой составной частью FreeBSD. В качестве связующего звена между ними выступает система портов, которая и образует содержание каталога ports/. В нем можно видеть единственный (кроем служебных) архивный файл - ports.tgz. Который развертывается (посредством инсталляционного скрипта) в дерево портов FreeBSD - универсальной системы управления пакетами, не входящими в состав Distributions. Система портов обеспечивает получение исходных текстов, распаковку архивов, конфигурирование, компиляцию и установку для всех охваченных ею программ. Большинство из которых разработаны в рамках проекта GNU и соплеменных, а также независимыми разработчиками, и являют собой общее достояние всех открытых и свободных Unix-подобных систем (и не только их). Пакеты, о которых шла речь в предыдущем абзаце, также сгенерированы посредством системы портов.

Такова в первом приближении структура дистрибутивного диска FreeBSD 5-й ветки.


выбрать ноутбук