♦ семь уровней выполнения, обозначаемых номерами с 0 до 6;
♦ особый уровень S или s — однопользовательский;
♦ уровни по требованию ( ondemand ) А, В и С — фиктивные: при переходе на эти уровни запускаются приписанные к ним процессы, но текущий уровень выполнения не меняется.
Термин «уровень выполнения» унаследован от тех времен, когда система была обязана проходить уровни последовательно, от низшего к высшему при загрузке и обратно при выключении. Сейчас их можно переключать в любом порядке. Для переключения на уровень n нужно от имени суперпользователя ввести команду
# telinit n
Эта команда посылает соответствующий сигнал процессу init( tell init ). Ее исполняемый файл представляет собой символическую ссылку на /sbin/init
, так что вместо нее можно отдавать просто команду init
. При этом не будет запущена копия процесса init: стартующий процесс первым делом проверяет свой PID и, если тот не равен 1, просто передает сообщение настоящему процессу init.
Запустив все процессы, приписанные к текущему уровню выполнения, init засыпает до получения сигнала о завершении дочернего процесса, отключении питания или требовании переключить уровень. Тогда он просыпается, перечитывает свой конфигурационный файл и, если нужно, выполняет записанные в нем инструкции. Чтобы заставить его перечитать измененный вами /etc/inittab
, не дожидаясь трех вышеуказанных событий, введите команду
# telinit q
Важно понять, что уровень выполнения — это программная абстракция, аппаратура ни о каких уровнях не знает. Поэтому в разных реализациях Linux (разных дистрибутивах) одному уровню могут соответствовать разные конфигурации системы. Следующие уровни используются в дистрибутивах, основанных на Red Hat:
♦ 0: Останов системы.
♦ 1: Однопользовательский режим. То же, что уровень S.
♦ 2: Многопользовательский режим без поддержки сети.
♦ 3: Полный многопользовательский режим.
♦ 4: Не используется.
♦ 5: Графический режим с X11.
♦ 6: Перезагрузка.
В однопользовательском режиме никакие службы не стартуют: только грузится ядро, монтируется корневая файловая система и запускается командный интерпретатор. На этом уровне не нужен даже файл /etc/inittab
, повреждение которого означает невозможность загрузиться на любом другом рабочем уровне. Этот уровень обычно использует администратор для аварийно-восстановительных работ.
Неиспользуемые уровни можно занять под свою собственную конфигурацию служб, собранных для конкретной задачи.
Конфигурационный файл /etc/inittab
Первая незакомментированная строка этого файла определяет уровень выполнения по умолчанию, то есть тот, в котором стартует система, если в процессе загрузки ядру не указано иначе. Эта строка выглядит как
id:3:initdefault
Обычно в качестве уровня по умолчанию выбирают 3 (полнофункциональный многопользовательский текстовый режим) или графический 5 (запускается X Window и выдается графическое приглашение для входа в систему). Если оставить поле уровня пустым, то initпереспросит значение в процессе загрузки. Если указать в поле уровня несколько значений, то сработает наибольшее. Уровни 0 (останов) и 6 (перезагрузка) указывать нельзя.
Следующие строки имеют формат:
идентификатор:уровни_выполнения:действие:запускаемый_процесс
♦ Идентификатор— это уникальная последовательность из четырех символов (в старых дистрибутивах — двух).
♦ Уровни_выполнения: перечень уровней выполнения (номера без каких-либо разделителей), для которых будет выполнено указанное действие. Например, значение 2345 требует выполнить действие на уровнях 2, 3, 4 и 5. Здесь можно указывать также уровни по требованию ( ondemand ) А, В и С.
♦ Действие: одно из действий, перечисленных в таблице 9.1.
♦ Запускаемый_процесс: процесс, над которым производится действие. Это может быть исполняемый файл или сценарий.
Действия над процессами, задаваемые а файле /etc/inittab Таблица 9.1
Действие |
Описание |
respawn |
В случае завершения процесс будет перезапущен |
wait |
Процесс будет запущен при переключении на любой из указанных уровней, и initбудет ждать его завершения |
once |
При переключении на любой из указанных уровней процесс будет запущен только однажды |
boot |
Процесс будет запущен во время загрузки системы. Поле «уровни_выполнения» игнорируется |
bootwait |
То же, что и boot, но initждет завершения процесса |
off |
Не выполняет никаких действий |
ondemand |
Процесс выполняется в режиме по требованию, то есть, он будет запущен при переключении на уровни a, b или с |
initdefault |
Определяет уровень выполнения по умолчанию |
sysinit |
Процесс запускается во время загрузки системы до любых процессов, стартующих через boot или bootwait |
powerwait |
Процесс будет запущен, когда исчезнет напряжение в сети. Естественно, для корректной работы этой записи нужен источник бесперебойного питания, от которого система и получит уведомление об исчезновении напряжения; initбудет ждать завершения этого процесса |
powerfail |
То же, что и powerwait, но initне будет ждать завершения процесса |
powerokwait |
Процесс запускается по получении initсигнала о восстановлении питания |
powerfailnow |
Процесс запускается, когда источник бесперебойного питания подает сигнал о том. что его батареи почти разряжены |
ctrlaltdel |
Процесс запускается при получении initсигнала INT. посланного нажатием комбинации клавиш Ctrl+Alt+Del. Обычно это процесс перезагрузки, выключения или перехода в однопользовательский режим. |
kbrequest |
Процесс запускается при получении initсигнала, посланного нажатием «специальной» комбинации клавиш. Назначить клавишам специальное значение можно с помощью утилит из пакета kbd |
Сценарий, помеченный действием sysinit, выполняется во время запуска системы, однократно, вне зависимости от запрошенного уровня. Затем запускаются процессы, помеченные действиями bootи bootwait.
Читать дальше
Конец ознакомительного отрывка
Купить книгу