Уровни выполнения

Поговорим немного об уровнях выполнения. Вообще, это некоторая абстракция, упоминаемая в конфигурационном файле для init --- inittab. В inittab редко приходится менять что-либо, за единственным возможным исключением --- в строке с initdefault выставляется уровень выполнения по умолчанию. В inittab задается разделение на уровни выполнения; реально же запускаемые при старте системы службы определяются командой chkconfig.

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

Уровни выполнения, таким образом, можно, хотя и с некоторой натяжкой, воспринимать как профили работы одной и той же системы. Исторически сложилось так, что уровень 0 соответствует полной остановке системы с выключением, а уровень 6 --- перезагрузке (остановка и загрузка заново, на уровень по умолчанию). Что касается остальных уровней, то по традиции уровень 1 --- это однопользовательский режим работы, уровень 2 --- многопользовательский режим без сети, уровень 3 --- многопользовательский режим с сетью. Поведение системы на других уровнях выполнения не специфицируется, однако считается, что уровень 5 --- это многопользовательский режим с сетью и графическим интерфейсом. В дистрибутивах ПСПО уровень 7 соответствует работе инсталлятора.

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

Чтобы понять, почему загрузка системы организована именно так, вспомним некоторые факты из истории. Система init была написана примерно очень давно, еще во времена коммерческого UNIX. Создатели UNIX --- Кен Томпсон и Деннис Ритчи --- работали также над ОС MULTICS по заказу военных ведомств. Разделение доступа в MULTICS проходило по довольно хитрым алгоритмам:

Классическая UNIX-система содержала следы этой запутанной политики:

Разумеется, ни о какой гибкости реализации этих механизмов речи не шло. В идеале, права доступа на третьем уровне могли различаться даже алгоритмами определения: для одной категории --- ACL, для другой --- мандаты и пр. В UNIX это было сведено к некоторым упрощенным представлениям, уже не зависящим от уровня выполнения: есть файловая система, пользователи и группы, причем вычисление прав доступа определяется в соответствии с жестким, заранее заданным алгоритмом. Возможность делать с системой все, что угодно, была привязана не к уровню выполнения, а к доверенному субъекту --- пользователю с идентификатором 0.

Заметим, что такая архитектура позволяла организовать следующую схему. На первом уровне можно было запускать некоторые "системные" службы, на втором --- добавлять к ним службы, различающие пользователей, на третьем --- службы, организующие доступ пользователей из сети. Так устоялась традиция разделения на однопользовательский режим, многопользовательский режим и многопользовательский режим с сетью, которые соответствуют 1-му, 2-му и 3-му уровням выполнения. В настоящее время описанная модель потеряла практический смысл (реализация различных схем определения прав доступа может определяться, к примеру, подсистемой SELinux), а потому соответствующая схема работы (System V init) воспринимается как legacy.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

35

1

1

1

1

ConstantinYershow, DmitryChistikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex