начального состояния, возникающего после загрузки ядра, в стандартное состояние обработки запросов многих пользователей. Init выполняет еще массу различных операций, необходимых для дальнейшей работы системы: проверку и монтирование файловых систем, запуск различных служб (демонов), запуск процедур логирования, оболочек пользователей на различных терминалах и т. д.

Точный список этих операций зависит от так называемого уровня выполнения (run level). Уровень выполнения определяет перечень действий, выполняемых процессом init, и состояние системы после загрузки, т. е. конфигурацию запущенных процессов. Уровень выполнения идентифицируется одним символом. В ОС Linux существует 8 основных уровней выполнения:

• 0 — остановка системы;

• 1 — однопользовательский режим (для специальных случаев администрирования);

• 2 — многопользовательский режим без NFS (то же, что и 3, если компьютер не работает с сетью);

• 3 — полный многопользовательский режим;

• 4 — использование не регламентировано;

• 5 — обычно используется для запуска системы в графическом режиме;

• 6 — перезагрузка системы;

• S (или s) — примерно то же, что и однопользовательский режим, но S и s используются в основном в скриптах.

Как видите, уровни 0, 1 и 6 зарезервированы для особых случаев. Относительно того, как использовать уровни со 2 по 5, единого мнения не существует. Некоторые системные администраторы используют разные уровни для того, чтобы задать разные варианты работы, например, на одном уровне запускается графический режим, на другом работают в сети и т. д. Вы можете сами решить, как использовать разные уровни для создания разных вариантов загрузки. Но для начала проще всего воспользоваться тем способом определения разных уровней, который был задан при установке.

Первым делом после старта процесс init считывает свой конфигурационный файл /etc/inittab. Этот файл состоит из отдельных строк. Если строка начинается со знака # или пуста, то она игнорируется. Все остальные строки состоят из 4 полей, разделенных двоеточиями:

id:runlevels:action:process

где:

• id — идентификатор строки. Это произвольная комбинация, содержащая от 1 до 4 символов. В файле inittab не может быть двух строк с одинаковыми идентификаторами;

• runlevels — уровни выполнения, на которых эта строка будет задействована. Уровни задаются цифрами или буквами без разделителей, например, 345;

• process — процесс, который должен запускаться на указанных уровнях. Другими словами в этом поле указывается имя программы, вызываемой при переходе на указанные уровни выполнения;

• action — действие.

В поле action стоит ключевое слово, которое определяет дополнительные условия выполнения команды, заданной полем process. Допустимые значения поля action:

• respawn — перезапустить процесс в случае завершения его работы;

• once — выполнить процесс только один раз при переходе на указанный уровень;

• wait — процесс будет запущен один раз при переходе на указанный уровень и init будет ожидать завершения работы этого процесса, прежде, чем продолжать работу;

• sysinit — это ключевое слово обозначает действия, выполняемые в процессе загрузки системы независимо от уровня выполнения (поле runlevels игнорируется). Процессы, помеченные этим словом, запускаются до процессов, помеченных словами boot и bootwait;

• boot — процесс будет запущен на этапе загрузки системы независимо от уровня выполнения;

• bootwait — процесс будет запущен на этапе загрузки системы независимо от уровня выполнения, и init будет дожидаться его завершения;

• initdefault — строка, в которой это слово стоит в поле action, определяет уровень выполнения, на который система переходит по умолчанию. Поле process в этой строке игнорируется. Если уровень выполнения, используемый по умолчанию, не задан, то процесс init будет ждать, пока пользователь, запускающий систему, не введет его с консоли;

• off — игнорировать данный элемент;

• powerwait — позволяет процессу init остановить систему, когда пропало питание. Использование этого слова предполагает, что имеется источник бесперебойного питания (UPS) и программное обеспечение, которое отслеживает состояние UPS и информирует init о том, что питание отключилось;

• ctrlaltdel — разрешает init перезагрузить систему, когда пользователь нажимает комбинацию клавиш ‹Ctrl›+‹Alt›+‹Del› на клавиатуре. Обратите внимание на то, что системный администратор может определить действия по комбинации клавиш ‹Ctrl›+‹Alt›+‹Del›, например игнорировать нажатие этой комбинации (что вполне разумно в системе, где много пользователей).