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.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

В первой строке описан терминал и его конфигурация по умолчанию. Сначала в этом файле описываются уровни инициализации. Затем инициируются виртуальные консоли. Запись инициализации консолей состоит из полей, разделённых двоеточием и выглядит следующим образом:

  • 1 — порядковый номер консоли
  • 2345 — номера уровней инициализации, для которых консоль инициализируется
  • respawn — этот параметр означает, что init должен перезапустить обслуживающий консоль процесс после выхода из сеанса или в случае краха.
  • /sbin/mingetty tty6 — программа (с указанием параметров), которая будет обслуживать консоль.

Таким образом, вы легко можете создать свой уровень инициализации (под номером 6 или 7, 8…), просто исправив файл /etc/inittab и создав необходимые ссылки в каталоге /etc/rc.d/rc*.d.

SysVinit

Sysv-rc-conf, в терминале запущена утилита, которая выбирает, какие сценарии инициализации System V будут запускаться на каждом уровне выполнения

По сравнению со своими предшественниками, 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 файл, определяет, что каждый настроенный уровень выполнения делает в данной системе.

Примечания

  1. 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.
  2. init(8). minnie.tuhs.org. Дата обращения: 11 мая 2022. Архивировано 27 июля 2021 года.

Литература

  • Б. Уорд. Глава 6. Как запускается пространство пользователя // Внутреннее устройство Linux. — СПб.: Питер, 2016. — С. 136—173. — 384 с.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.