Опубликован: 14.12.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Компания ALT Linux
Лекция 13:

Системная начальная загрузка

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >
Аннотация: Системная начальная загрузка. Понятие файловой системы. Две схемы системной загрузки - USG и BSD. Достоинства и недостатки обеих схем. Понятие ".d"-схемы стартовых сценариев.

Начальную работу ядра если и приходится как-то планировать, то однократно, при установке или настройке системы. С точки зрения работающей системы ядро загружается, определяет устройства и запускает init единым махом. Оттого трудно судить, насколько старт ядра относится еще к досистемной или уже к системной части процедуры загрузки (вообще-то деление чисто условное).

Процесс init - обычный процесс (даром что с PID=1), но именно он, по сути дела, определяет профиль будущей системы. Утилита init была написана в те времена, когда разработчики различных ветвей UNIX еще и не думали договариваться о совместимости. Поэтому поведение init в системах семейства USG сильно отличается от поведения init в системах семейства BSD (о семействах UNIX рассказано в лекции 5). В современных UNIX встречаются и обе схемы в чистом виде, и особые гибриды, так что рассмотрим каждую подробнее.

Файловые системы

Но прежде поясним один термин, который нам пришлось уже использовать ранее. Речь идет о монтировании файловых систем. В лекции 7 уже было рассказано про древовидную структуру каталогов в UNIX. С точки зрения пользователя, все выглядит очень просто: один общий корневой каталог и вложенные в него подкаталоги, в которых лежат файлы. Как в эту стройную схему уложить возможность использования двух и более жестких дисков, равно как и двух или более разделов одного диска? Если, как это сделано в AIX, ввести промежуточный уровень, представляющий содержимое всех доступных разделов всех дисков в виде единого пространства, задача решается сама собой. Однако этот способ имеет свои недостатки и для большинства других веток UNIX нестандартен.

Чаще всего каждый раздел диска содержит свою файловую систему. Чтобы удобно представлять данные в виде дерева, недостаточно хранить содержимое файлов, их имена и структуру этого дерева. Нужно решить массу технических задач, связанных с быстродействием, надежностью, распределением свободного места и т. д. Создание каждой файловой системы - многолетний труд ученых и программистов, поэтому на сегодня известно не так уж много видов файловых систем. Здесь нам придется ограничиться перечислением их названий, более подробные сведения можно почерпнуть из [ 6 ] , [ 41 ] , [ 17 ] и статей авторов этих файловых систем. В системах гнезда BSD чаще всего используются наследники Berkeley fast file system - UFS, UFS2 и модификации самой FFS. В Linux - Ext2FS и Ext3FS (вариант Ext2FS с журнализацией), а также ReiserFS. В Linux добавлена поддержка и некоторых других файловых систем, используемых в UNIX гнезда USG: XFS и JFS.

Видимое пользователю дерево каталогов образуется так. Одну из доступных файловых систем ядро считает корневой. Эта файловая система монтируется на корневой каталог, в результате чего ее содержимое становится доступно в виде дерева каталогов, растущего непосредственно из /. Любой из каталогов текущего дерева может служить точкой монтирования другой файловой системы. После выполнения команды вида mount файл-дырка каталог (например, mount /dev/hda5 /usr ) содержимое файловой системы, лежащей на разделе, которому соответствует файл-дырка, становится доступно в виде дерева, растущего из каталога. Если до монтирования, скажем, в /usr были какие-то файлы и подкаталоги, принадлежащие корневой файловой системе, они становятся недоступны до выполнения соответствующей команды umount.

Список всех файловых систем, которые монтируются по ходу начальной загрузки, обычно лежит в файле /etc/fstab. Помимо дисковых файловых систем там можно встретить упоминание файловых систем в памяти (временных, разумеется, но какова скорость!) или procfs - остроумное изобретение, позволяющее в виде дерева каталогов представлять структуру процессов UNIX. Некоторые устройства (например, CD-ROM) помечены noauto в знак того, что при старте их монтировать не надо. Запись в fstab служит только напоминанием, какое именно устройство какой точке монтирования соответствует.

Правила прививки ветвей

В UNIX существует довольно строгая договоренность относительно того, как должны называться стандартные каталоги системы и для чего их следует использовать. Регулярно выпускается документ, именуемый FHS (Filesystem Hierarchy Standard), авторы которого сводят воедино пожелания и рекомендации мировой общественности на этот счет (см. http://www.pathname.com/fhs/). Документ этот довольно велик, а приводимые в нем доводы чаще всего весьма разумны. Так что полностью соответствовать FHS как стандарту довольно сложно, хотя современные системы стараются по возможности не противоречить ему. Во многих системах есть отдельная страница руководства hier, подробно описывающая основные каталоги и их назначение.

Если кратко пересказывать man hier, картина получается такая. Содержимого каталогов корневой файловой системы должно быть достаточно для аварийной загрузки и "лечения" UNIX. В /bin и /sbin должны лежать только самые необходимые пользовательские и системные утилиты, а в /lib - все, что необходимо для работы этих утилит; в /dev UNIX хранит всевозможные файл-дырки, в /boot - все, что необходимо для досистемной загрузки. В специальном каталоге /tmp кто угодно и когда угодно может - временно - хранить свои файлы. Очень важен каталог /etc, содержащий все настройки системы (включая файлы паролей и настройки программных продуктов). Содержимое этих каталогов занимает, как правило, не очень много места; его удобно копировать на какой-нибудь резервный носитель (на совсем уж черный день).

Каталог /var предназначен для файлов, размер (и количество) которых все время меняется: для системных журналов ( /var/log ), почты ( /var/mail ), очередей (на печать, на выполнение и т. п. - /var/spool ) и многого другого. Каталог /mnt содержит временные точки монтирования, то есть пустые подкаталоги, на которые при помощи mount можно временно отобразить содержимое какой-нибудь файловой системы (например, того же CD-ROM), не опасаясь, что какие-то файлы при этом не будут видны. Каталог /home принято отводить под домашние каталоги пользователей.

Наконец, каталог /usr содержит все то, чего не было в /, и что необходимо для штатной работы системы. Многие каталоги называются так же, как и подкаталоги корневого: /usr/bin, /usr/sbin, /usr/lib и другие; их назначение повторяет назначение их тезок. Содержимое /usr/include используется в процессе разработки, а /usr/share содержит файлы, одинаково пригодные на компьютерах любой архитектуры: подкаталог man содержит страницы помощи, info - info-систему, doc - прочую документацию, locale и nls задают язык диалога с пользователем (например, русский) и прочие особенности национальной формы представления данных (даты, времени, денежных единиц и т. д.).

Выносить каталоги UNIX в отдельные файловые системы приходится не только под давлением обстоятельств (не хватило места или нужно использовать несколько жестких дисков), но и по другим соображениям. Поразмыслив над тем, как именно используются файлы и каталоги, стандартные для UNIX, мы можем прийти к выводу, что режимы работы с ними зачастую резко различаются. Учитывая, во-первых, частоту операций записи в каталог, во-вторых, требования к быстродействию и надежности хранения содержимого и, в-третьих, то, обязано ли в каталоге быть свободное место, мы можем составить схему разбиения дерева каталогов по разным файловым системам с различными свойствами.

Типичное решение. Корневая файловая система: запись (как правило, в /etc ) происходит, но редко; надежность - самая высокая, в ущерб быстродействию; переполнения происходить не должно. Файловая система в /usr: записи может вообще не быть; надежность - высокая, с учетом быстродействия по чтению. Файловая система в /var: запись происходит постоянно; надежность - не в ущерб скорости записи и чтения; переполнение - штатная ситуация (разбух журнал), система должна продолжать работать. Похожими свойствами обладает и /home, но, поскольку /var заполняет система, а /home - пользователи, смешивать не рекомендуется. Отличие /tmp от /var - в еще более низкой надежности ( неиспользуемые файлы могут исчезать из /tmp ) и в еще более значительном преимуществе от быстродействия. Поэтому /tmp иногда размещают в памяти.

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >
Max Akt
Max Akt

Я прохожу курс "Операционная система Unix" и после тестов, вижу в отчете, что этот тест сдало еще 25 человек. Почему так мало, это ведь реально хороший и полезный урок. Здесь естьи теория и практичесские материалы. Сам курс написан хорошо, живым языком. И здесь я получил ответы на вопросы по Linux, которые боялся спросить. Наверное это из-за того, что в названии курса написано не Linux, а Unix и это многих отпугивает.

Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started

Светлана Мишланова
Светлана Мишланова
Россия, Волгоград
Илдар Аллаяров
Илдар Аллаяров
Россия