- •Ответы на экзаменационные вопросы по соСиА
- •Классификация операционных систем
- •Обобщенная структура операционных систем
- •Сравнение моделей osi и tcp/ip
- •Сравнение моделей atm и tcp/ip
- •Модель клиент-сервер на базе микроядра
- •Сетевое по: иерархия протоколов, разработка уровней
- •Настройка сети
- •Службы, примитивы и протоколы
- •Распределенные системы: доступ, прозрачность
- •Прозрачность в распределенных системах.
- •Доступ в распределенных системах
- •Методы управления доступом
- •Распределенные системы: масштабируемость, открытость
- •Открытость
- •Масштабируемость
- •Концепции аппаратных решений
- •Гомогенные и гетерогенные сети
- •Концепции программных решений, сравнение систем
- •Мультипроцессорные ос
- •Мультикомпьютерные ос
- •Системы с распределенной разделяемой памятью
- •Программное обеспечение промежуточного уровня
- •Разделение приложений по уровням
- •Архитектура клиент-сервер: многозвенные архитектуры
- •Структура файловой системы: принципы и особенности
- •Структура файловой системы: стандарт fhs
- •Структура файловой системы: принципы организации данных на диске
- •Структура файловой системы: монтирование и размонтирование
- •Структура файловой системы: журналирование
- •Структура файловой системы: принципы создания стартового виртуального диска
- •Досистемная загрузка: первичный и вторичный загрузчик
- •Досистемная загрузка: загрузчики lilo и grub
- •Загрузка системы: первый процесс init
- •Загрузка системы: стартовый виртуальный диск и модули ядра
- •Загрузка системы: демоны системных служб
- •Загрузка системы: схема «.D»
- •Загрузка системы: уровни выполнения
- •Работа с внешними устройствами: файлы-дырки, драйверы
- •Разметка диска и наименование устройств
- •Область подкачки
- •Проектирование свойств системы
- •Профиль системы
- •Управление пакетами
- •Установщики пакетов
- •Сетевые и серверные возможности
Загрузка системы: уровни выполнения
В Linux схема начальной загрузки слегка сложнее, чем обычная " .d ". Связано это с тем, что одну и ту же систему в разных случаях бывает необходимо загружать с разным набором служб. Если, скажем, использование сети нежелательно, удобнее сказать что-то вроде "Система! Загружайся без сети!", чем вручную удалять стартовые сценарии всех предположительно сетевых служб из " .d "-каталога. Необходимость выбора также возникает, если компьютер используется в качестве рабочей станции с запуском графической среды и всего с нею связанного или в качестве стоечного сервера, управлять которым лучше с системной консоли.
Поэтому в Linux предусмотрено несколько вариантов начальной загрузки, называемых уровнями выполнения (run levels). Уровни выполнения нумеруются с 0 до 9:
Уровень 1 соответствует однопользовательскому режиму загрузки системы. При загрузке на уровень 1 не запускается никаких служб, и даже системная консоль, как правило, бывает доступна только одна, так что в системе может работать не более одного пользователя. В однопользовательском режиме изредка работает администратор - исправляет неполадки системы, изменяет ключевые настройки, обслуживает файловые системы.
Уровень 2 соответствует многопользовательскому режиму загрузки системы с отключенной сетью. В этом режиме не запускаются никакие сетевые службы, что, с одной стороны, соответствует строгим требованиям безопасности, а с другой стороны, позволяет запускать службы и настраивать сеть вручную.
Уровень 3 соответствует многопользовательскому сетевому режиму загрузки системы. Сеть при загрузке на этот уровень настроена, и все необходимые сетевые службы запущены. На этом уровне обычно работают компьютеры-серверы.
Уровень 5 соответствует многопользовательскому графическому режиму загрузки системы. На этом уровне обычно функционируют рабочие станции, предоставляя пользователям возможность работать с графической подсистемой X11. Сеть на этом уровне настроена, а вот список запущенных сетевых служб может быть меньше, так как рабочая станция не всегда выполняет серверные функции (хотя, безусловно, может).
Уровни 0 и 6 - специальные. Они соответствуют остановке и перезагрузке системы. В сущности, это удобные упрощения для действий, обратных загрузке на уровень: все службы останавливаются, диски размонтируются. В случае остановки даже электропитание можно отключать программно, если аппаратура позволяет, а в случае перезагрузки система идет на повторную загрузку.
Остальные уровни никак специально в Linux не описаны, однако администратор может использовать и их, определяя особый профиль работы системы. Переход с уровня на уровень выполняется очень просто: по команде init номер_уровня. На какой уровень загружаться при старте системы, написано в inittab (в поле действия должно быть написано " initdefault ", а в поле уровни - только одна цифра). Узнать текущий уровень выполнения можно с помощью команды runlevel.
Уровень выполнения. Сохраненный профиль загрузки системы. В Linux реализован выполнением всех сценариев остановки и запуска служб из подкаталога rc.d каталога /etc или /etc/rc.d
Схема " .d " легко учитывает уровни выполнения. В каталоге /etc/rc.d 10 заводится несколько " .d "-подкаталогов, соответствующих каждому уровню выполнения: /etc/rc.d/rcуровень.d. Именно оттуда их запускает стартовый сценарий /etc/rc.d/rc.
Переход с уровня на уровень должен сопровождаться не только запуском, но и остановкой служб. Это касается не только уровней 0 и 6, но и любых других. Например, при переходе с уровня 3 на уровень 2 необходимо остановить все сетевые службы. Поэтому схема " .d " была расширена: сначала с параметром " stop " запускаются сценарии, имена которых начинаются на " K " ( K ill), а затем, с параметром " start " - те, имена которых начинаются на " S " ( S tart). В приведенном примере при переходе на уровень 2 останавливается несколько служб, в том числе сетевой метадемон ( K50xinetd ) и монтирование по сети удаленных файловых систем ( K75netfs ). Если при переходе с уровня на уровень некой службе не требуется менять своего состояния, сценарий не запускается вовсе. Так, при переходе с уровня 3 на уровень 2 сетевые настройки остаются активными, поэтому соответствующий сценарий ( S10network ), скорее всего, запущен не будет.
Долгое время считалось, что определение порядка загрузки - дело системного администратора, поэтому расставлять символьные ссылки в каталогах rc*.d приходилось вручную. Однако одно из другого не следует: можно предусмотреть и более простой способ наполнения этих каталогов ссылками. Один из способов такой: поставить в стартовый сценарий комментарий особого вида, в котором описать, на каких уровнях служба должна быть активизирована, и какой по порядку должна быть запущена и остановлена.
Здесь Мефодий использовал утилиту chkconfig, которая ищет в стартовом сценарии комментарий вида chkconfig: уровни вкл выкл, и самостоятельно проставляет ссылки в соответствии с этими полями: во всех каталогах, упомянутых в уровнях соответствующий netfs сценарий имеет вид Sвклnetfs, а во всех остальных - Kвыклnetfs. Эта же утилита позволяет добавлять и удалять службу на каждом уровне в отдельности или запрещать ее вовсе.
