Init: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Метки: с мобильного устройства через мобильное приложение через приложение для Android
 
(не показано 12 промежуточных версий 10 участников)
Строка 1: Строка 1:
{{заголовок со строчной буквы}}
{{заголовок со строчной буквы}}
'''init''' (сокращение от {{lang-en|initialization}} — инициализация) — подсистема инициализации в [[Unix]] и ряде [[Unix-подобная операционная система|Unix-подобных]] систем, которая запускает все остальные процессы. Работает как [[Демон (программа)|демон]] и обычно имеет [[Идентификатор процесса|PID]] 1. Обычно (согласно [[Filesystem Hierarchy Standard]]) располагается по пути <tt>/sbin/init</tt>. Существуют отличия в организации работы подсистемы в операционных системах, ведущих родословную от [[System V]] и систем в стиле [[BSD]].
'''init''' (сокращение от {{lang-en|initialization}} — инициализация) — подсистема инициализации в [[Unix]] и ряде [[Unix-подобная операционная система|Unix-подобных]] систем, которая запускает все остальные процессы. Работает как [[Демон (программа)|демон]] и обычно имеет [[Идентификатор процесса|PID]] 1. Обычно (согласно [[Filesystem Hierarchy Standard]]) располагается по пути <tt>/sbin/init</tt>. Существуют различия в организации работы подсистемы в операционных системах, ведущих родословную от [[System V]] и систем в стиле [[BSD]].


Длительное время была основной подсистемой инициализации в Linux, пока не была в большинстве дистрибутивов заменена [[systemd]]. В [[Solaris 10]] вместо init применяется [[Service Management Facility]]<ref> 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.</ref>. В ряде Unix-систем применяются альтернативы init: [[Upstart]], [[Runit]], [[Daemontools]], [[Launchd]], [[Initng]], [[OpenRC]].
Длительное время была основной подсистемой инициализации в Linux, пока не была в большинстве дистрибутивов заменена [[systemd]]. В [[Solaris 10]] вместо init применяется [[Service Management Facility]]<ref> 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.</ref>. В ряде Unix-систем применяются альтернативы init: [[Upstart]], [[Runit]], [[Daemontools]], [[Launchd]], [[Initng]], [[OpenRC]].


В процессе загрузки после инициализации [[Ядро операционной системы|ядра]] как правило запускается <tt>/sbin/init</tt> как первый процесс [[Пространство пользователя|пользовательского режима]], и init отвечает за дальнейшую загрузку системы. Для этого запускаются стартовые сценарии, которые выполняют проверку и монтирование файловых систем, запуск необходимых демонов, настройку ядра (в том числе загрузку модулей ядра согласно установленному оборудованию, настройку IP-адресов, таблиц маршрутизации и другие задачи), запуск графической оболочки. Основная информация для загрузки как правило размещается в <tt>/etc/inittab</tt>{{переход|#inittab}}.
В процессе загрузки после инициализации [[Ядро операционной системы|ядра]], как правило, запускается <tt>/sbin/init</tt> как первый процесс [[Пространство пользователя|пользовательского режима]], и init отвечает за дальнейшую загрузку системы. Для этого запускаются стартовые сценарии, которые выполняют проверку и монтирование файловых систем, запуск необходимых демонов, настройку ядра (в том числе загрузку модулей ядра согласно установленному оборудованию, настройку IP-адресов, таблиц маршрутизации и другие задачи), запуск графической оболочки. Основная информация для загрузки, как правило, размещается в <tt>/etc/inittab</tt>{{переход|#inittab}}.


В реализации init в стиле System V используется понятие [[уровень выполнения|уровня выполнения]] — степени загрузки операционной системы; в этом случае стартовые сценарии для каждого уровня разложены по каталогам от <tt>/etc/rc0.d</tt> до <tt>/etc/rc6.d</tt>, где цифра после <tt>rc</tt> соответствует номеру уровня инициализации.
В реализации init в стиле System V используется понятие [[уровень выполнения|уровня выполнения]] — степени загрузки операционной системы; в этом случае стартовые сценарии для каждого уровня разложены по каталогам от <tt>/etc/rc0.d</tt> до <tt>/etc/rc6.d</tt>, где цифра после <tt>rc</tt> соответствует номеру уровня инициализации.
Строка 29: Строка 29:
</source>
</source>
В первой строке описан терминал и его конфигурация по умолчанию.
В первой строке описан терминал и его конфигурация по умолчанию.
Сначала в этом файле описываются уровни инициализации. Затем инициируются виртуальные консоли. Запись инициализации консолей состоит из полей, разделенных двоеточием и выглядит следующим образом:
Сначала в этом файле описываются уровни инициализации. Затем инициируются виртуальные консоли. Запись инициализации консолей состоит из полей, разделённых двоеточием и выглядит следующим образом:


* <tt>1</tt> — порядковый номер консоли
* <tt>1</tt> — порядковый номер консоли
Строка 36: Строка 36:
* <tt>/sbin/mingetty tty6</tt> — программа (с указанием параметров), которая будет обслуживать консоль.
* <tt>/sbin/mingetty tty6</tt> — программа (с указанием параметров), которая будет обслуживать консоль.


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


== SysVinit ==
== SysVinit ==
[[Файл:Sysv-rc-conf.png|thumb|{{Mono|Sysv-rc-conf}}, в [[Текстовый интерфейс пользователя|ТПИ]] утилита, которая выбирает, какие сценарии инициализации в стиле SysV будут запускаться на каждом уровне выполнения]]
[[Файл:Sysv-rc-conf.png|thumb|{{Mono|Sysv-rc-conf}}, в [[эмулятор терминала|терминале]] запущена утилита, которая выбирает, какие сценарии инициализации System V будут запускаться на каждом уровне выполнения]]


По сравнению с его предшественниками, [[UNIX System III|AT&T UNIX System III]] представил новый стиль конфигурации запуска системы<ref>{{cite web|url=http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man8/init.8|title=init(8)|work=minnie.tuhs.org}}</ref>, который сохранился (с изменениями) в [[UNIX System V]] и поэтому называется «[[Init|SysVinit]]».
По сравнению со своими предшественниками, [[System III|AT&T UNIX System III]] представил новый стиль конфигурации запуска системы<ref>{{cite web|url=http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man8/init.8|title=init(8)|work=minnie.tuhs.org|access-date=2022-05-11|archive-date=2021-07-27|archive-url=https://web.archive.org/web/20210727193510/https://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII%2Fusr%2Fsrc%2Fman%2Fman8%2Finit.8|deadlink=no}}</ref>, который сохранился (с изменениями) в [[System V|UNIX System V]] и поэтому называется «SysVinit».


В любой момент работающая [[UNIX System V|AT&T UNIX System V]] находится в одном из заранее определенных состояний, называемых [[runlevel]]. По крайней мере один уровень выполнения является нормальным рабочим состоянием системы; как правило, другие уровни выполнения представляют однопользовательский режим (используется для восстановления неисправной системы), выключение системы и различные другие состояния. Переключение с одного уровня выполнения на другой вызывает запуск набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают [[Демон (программа)|daemons]], начать или остановить [[X Window System]], выключение машины и т. д.
В любой момент работающая [[System V|AT&T UNIX System V]] находится в одном из заранее определённых состояний, называемых [[runlevel]]. По крайней мере один уровень выполнения является нормальным рабочим состоянием системы; как правило, другие уровни выполнения представляют однопользовательский режим (используется для восстановления неисправной системы), выключение системы и различные другие состояния. Переключение с одного уровня выполнения на другой вызывает запуск набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают [[Демон (программа)|daemons]], запускают или останавливают [[X Window System]], выключают машину и т. д.


=== Runlevels (уровни выполнения) ===
=== Runlevels (уровни выполнения) ===
{{Details|Runlevel}}
{{Details|Runlevel}}


[[runlevel]] в [[UNIX System V|AT&T UNIX System V]] описывают определенные состояния машины, характеризуемые процессами и демонами, работающими в каждом из них. В общем, существует семь уровней выполнения, из которых три уровня выполнения считаются «стандартными», поскольку они необходимы для работы системы:
[[runlevel]] в [[System V|AT&T UNIX System V]] описывают определённые состояния машины, характеризуемые процессами и демонами, работающими в каждом из них. В общем, существует семь уровней выполнения, из которых три уровня выполнения считаются «стандартными», поскольку они необходимы для работы системы:
: 0. Halt
: 0. Halt
: 1. [[Безопасный режим#Unix|Single user mode]]
: 1. [[Безопасный режим#Unix|Single user mode]]

Текущая версия от 20:45, 27 июня 2024

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 соответствует номеру уровня инициализации.

Пример файла /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.

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 с.