Init: различия между версиями
[непроверенная версия] | [отпатрулированная версия] |
Нет описания правки |
Gromolyak (обсуждение | вклад) Метки: с мобильного устройства через мобильное приложение через приложение для Android |
||
(не показано 12 промежуточных версий 10 участников) | |||
Строка 1: | Строка 1: | ||
{{заголовок со строчной буквы}} |
{{заголовок со строчной буквы}} |
||
'''init''' (сокращение от {{lang-en|initialization}} — инициализация) — подсистема инициализации в [[Unix]] и ряде [[Unix-подобная операционная система|Unix-подобных]] систем, которая запускает все остальные процессы. Работает как [[Демон (программа)|демон]] и обычно имеет [[Идентификатор процесса|PID]] 1. Обычно (согласно [[Filesystem Hierarchy Standard]]) располагается по пути <tt>/sbin/init</tt>. Существуют |
'''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> — программа (с указанием параметров), которая будет обслуживать консоль. |
||
Таким образом, вы легко можете создать свой уровень инициализации (под номером |
Таким образом, вы легко можете создать свой уровень инициализации (под номером 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-rc-conf.png|thumb|{{Mono|Sysv-rc-conf}}, в [[эмулятор терминала|терминале]] запущена утилита, которая выбирает, какие сценарии инициализации System V будут запускаться на каждом уровне выполнения]] |
||
По сравнению |
По сравнению со своими предшественниками, [[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». |
||
В любой момент работающая [[ |
В любой момент работающая [[System V|AT&T UNIX System V]] находится в одном из заранее определённых состояний, называемых [[runlevel]]. По крайней мере один уровень выполнения является нормальным рабочим состоянием системы; как правило, другие уровни выполнения представляют однопользовательский режим (используется для восстановления неисправной системы), выключение системы и различные другие состояния. Переключение с одного уровня выполнения на другой вызывает запуск набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают [[Демон (программа)|daemons]], запускают или останавливают [[X Window System]], выключают машину и т. д. |
||
=== Runlevels (уровни выполнения) === |
=== Runlevels (уровни выполнения) === |
||
{{Details|Runlevel}} |
{{Details|Runlevel}} |
||
[[runlevel]] в [[ |
[[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 соответствует номеру уровня инициализации.
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
[править | править код]По сравнению со своими предшественниками, 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 (англ.)