init
init (сокращение отангл. initialization — инициализация) — подсистема инициализации вUnix и рядеUnix-подобных систем, которая запускает все остальные процессы. Работает какдемон и обычно имеетPID 1. Обычно (согласноFilesystem Hierarchy Standard) располагается по пути/sbin/init. Существуют различия в организации работы подсистемы в операционных системах, ведущих родословную отSystem V и систем в стилеBSD.
Длительное время была основной подсистемой инициализации в Linux, пока не была в большинстве дистрибутивов замененаsystemd. ВSolaris 10 вместо init применяетсяService Management Facility[1]. В ряде Unix-систем применяются альтернативы init:Upstart,Runit,Daemontools,Launchd,Initng,OpenRC.
В процессе загрузки после инициализацииядра, как правило, запускается/sbin/init как первый процесспользовательского режима, и init отвечает за дальнейшую загрузку системы. Для этого запускаются стартовые сценарии, которые выполняют проверку и монтирование файловых систем, запуск необходимых демонов, настройку ядра (в том числе загрузку модулей ядра согласно установленному оборудованию, настройку IP-адресов, таблиц маршрутизации и другие задачи), запуск графической оболочки. Основная информация для загрузки, как правило, размещается в/etc/inittab➤.
В реализации init в стиле System V используется понятиеуровня выполнения — степени загрузки операционной системы; в этом случае стартовые сценарии для каждого уровня разложены по каталогам от/etc/rc0.d до/etc/rc6.d, где цифра послеrc соответствует номеру уровня инициализации.
inittab
[править |править код]Пример файла/etc/inittab:
id:5:initdefault:si::sysinit:/etc/rc.d/rc.sysinitl0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 61:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6x:5:respawn:/etc/X11/prefdm -nodaemon
В первой строке описан терминал и его конфигурация по умолчанию.Сначала в этом файле описываются уровни инициализации. Затем инициируются виртуальные консоли. Запись инициализации консолей состоит из полей, разделённых двоеточием и выглядит следующим образом:
- 1 — порядковый номер консоли
- 2345 — номера уровней инициализации, для которых консоль инициализируется
- respawn — этот параметр означает, что init должен перезапустить обслуживающий консоль процесс после выхода из сеанса или в случае краха.
- /sbin/mingetty tty6 — программа (с указанием параметров), которая будет обслуживать консоль.
Таким образом, вы легко можете создать свой уровень инициализации (под номером 6 или 7, 8…), просто исправив файл/etc/inittab и создав необходимые ссылки в каталоге/etc/rc.d/rc*.d.
SysVinit
[править |править код]
По сравнению со своими предшественниками,AT&T UNIX System III представил новый стиль конфигурации запуска системы[2], который сохранился (с изменениями) вUNIX System V и поэтому называется «SysVinit».
В любой момент работающаяAT&T UNIX System V находится в одном из заранее определённых состояний, называемыхrunlevel. По крайней мере один уровень выполнения является нормальным рабочим состоянием системы; как правило, другие уровни выполнения представляют однопользовательский режим (используется для восстановления неисправной системы), выключение системы и различные другие состояния. Переключение с одного уровня выполнения на другой вызывает запуск набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливаютdaemons, запускают или останавливаютX Window System, выключают машину и т. д.
Runlevels (уровни выполнения)
[править |править код]runlevel вAT&T UNIX System V описывают определённые состояния машины, характеризуемые процессами и демонами, работающими в каждом из них. В общем, существует семь уровней выполнения, из которых три уровня выполнения считаются «стандартными», поскольку они необходимы для работы системы:
- 0. Halt
- 1.Single user mode
- 6.Перезагрузка
Помимо этих стандартных,Unix и Unix-подобные системы трактуют уровни выполнения несколько по-разному./etc/inittab файл, определяет, что каждый настроенный уровень выполнения делает в данной системе.
Примечания
[править |править код]- ↑init в Solaris 10 запускает и, в случае необходимости, перезапускает SMF (init initiates the core components of the service management facility, svc.configd(1M) and svc.startd(1M), and restarts these components if they fail). Таким образом можно сказать, что в Solaris 10 большая часть функций init выполняется с помощью SMF.
- ↑init(8) . minnie.tuhs.org. Дата обращения: 11 мая 2022. Архивировано 27 июля 2021 года.
Литература
[править |править код]- Б. Уорд. Глава 6. Как запускается пространство пользователя // Внутреннее устройство Linux. —СПб.: Питер, 2016. — С. 136—173. — 384 с.
Ссылки
[править |править код]- From Power Up To Bash Prompt (англ.)