Init: различия между версиями
[непроверенная версия] | [отпатрулированная версия] |
м Удaлeнa Категория:UNIX; Дoбaвлeнa Категория:Системные и сервисные менеджеры с помощью HotCat |
Gromolyak (обсуждение | вклад) Метки: с мобильного устройства через мобильное приложение через приложение для Android |
||
(не показаны 43 промежуточные версии 24 участников) | |||
Строка 1: | Строка 1: | ||
{{заголовок со строчной буквы}} |
|||
'''init''' |
'''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]]. |
|||
== Уровни инициализации == |
|||
В процессе загрузки |
В процессе загрузки после инициализации [[Ядро операционной системы|ядра]], как правило, запускается <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> соответствует номеру уровня инициализации. |
|||
В операционных системах Unix/Linux с помощью init можно изменить '''уровень инициализации'''. Уровень инициализации — степень загрузки операционной системы. Вот как происходит инициализация системы: процесс init запускается и анализирует файл <tt>/etc/inittab</tt>. Следует отметить, что приведенная здесь система инициализации работает на системах [[Linux]] и [[Unix System V]] и она несколько отличается от стиля инициализации системы в [[BSD]]-подобных системах. |
|||
⚫ | |||
По умолчанию, в системе использовано 7 уровней инициализации: |
|||
Пример файла <tt>/etc/inittab</tt>: |
|||
<blockquote>0 - остановка системы <br /> |
|||
1 - загрузка в однопользовательском режиме <br /> |
|||
2 - загрузка в многопользовательском режиме без поддержки сети <br /> |
|||
3 - загрузка в многопользовательском режиме с поддержкой сети <br /> |
|||
4 - не используется <br /> |
|||
5 - загрузка в многопользовательском режиме с поддержкой сети и графического входа в систему <br /> |
|||
6 - перезагрузка <br /></blockquote> |
|||
Набрав init ''n'' в терминале (с правами [[Суперпользователь|суперпользователя]]), где ''n'' — номер уровня инициализации, можно переключиться в любой из вышеперечисленных уровней. |
|||
Стартовые скрипты для каждого уровня находятся в каталогах с <tt>/etc/rc0.d</tt> до <tt>/etc/rc6.d</tt>, где цифра после <tt>rc</tt> соответствует номеру уровня инициализации. |
|||
⚫ | |||
Как уже было упомянуто выше, работа процесса init управляется с помощью файла /etc/inittab. Вот пример этого файла (без комментариев): |
|||
<source lang=gettext> |
<source lang=gettext> |
||
id:5:initdefault: |
id:5:initdefault: |
||
Строка 43: | Строка 29: | ||
</source> |
</source> |
||
В первой строке описан терминал и его конфигурация по умолчанию. |
В первой строке описан терминал и его конфигурация по умолчанию. |
||
Сначала в этом файле описываются уровни инициализации. Затем инициируются виртуальные консоли. Запись инициализации консолей состоит из полей, |
Сначала в этом файле описываются уровни инициализации. Затем инициируются виртуальные консоли. Запись инициализации консолей состоит из полей, разделённых двоеточием и выглядит следующим образом: |
||
* 1 — порядковый номер консоли |
* <tt>1</tt> — порядковый номер консоли |
||
* 2345 — номера уровней инициализации, для которых консоль инициализируется |
* <tt>2345</tt> — номера уровней инициализации, для которых консоль инициализируется |
||
* respawn — этот параметр означает, что init должен перезапустить обслуживающий консоль процесс после выхода из сеанса или в случае краха. |
* <tt>respawn</tt> — этот параметр означает, что init должен перезапустить обслуживающий консоль процесс после выхода из сеанса или в случае краха. |
||
* /sbin/mingetty tty6 — программа (с указанием параметров), которая будет обслуживать консоль. |
* <tt>/sbin/mingetty tty6</tt> — программа (с указанием параметров), которая будет обслуживать консоль. |
||
Таким образом, вы легко можете создать свой уровень инициализации (под номером |
Таким образом, вы легко можете создать свой уровень инициализации (под номером 6 или 7, 8…), просто исправив файл <tt>/etc/inittab</tt> и создав необходимые ссылки в каталоге <tt>/etc/rc.d/rc*.d</tt>. |
||
== SysVinit == |
|||
== init в других ОС == |
|||
[[Файл: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». |
|||
В [[Windows NT]] роль init играет [[smss.exe]]. В [[Solaris 10]] вместо init применяется [[Service Management Facility]]. |
|||
/* 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. */ |
|||
В любой момент работающая [[System V|AT&T UNIX System V]] находится в одном из заранее определённых состояний, называемых [[runlevel]]. По крайней мере один уровень выполнения является нормальным рабочим состоянием системы; как правило, другие уровни выполнения представляют однопользовательский режим (используется для восстановления неисправной системы), выключение системы и различные другие состояния. Переключение с одного уровня выполнения на другой вызывает запуск набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают [[Демон (программа)|daemons]], запускают или останавливают [[X Window System]], выключают машину и т. д. |
|||
== Альтернативы init == |
|||
=== Runlevels (уровни выполнения) === |
|||
Сейчас существует множество систем, призванных заменить собой классический init: [[Upstart]], [[Runit]], [[Daemontools]], [[Launchd]], [[Initng]], [[systemd]]. Все они разрабатывались изначально для определенных дистрибутивов [[Linux]] или вообще для других систем. |
|||
{{Details|Runlevel}} |
|||
[[runlevel]] в [[System V|AT&T UNIX System V]] описывают определённые состояния машины, характеризуемые процессами и демонами, работающими в каждом из них. В общем, существует семь уровней выполнения, из которых три уровня выполнения считаются «стандартными», поскольку они необходимы для работы системы: |
|||
: 0. Halt |
|||
: 1. [[Безопасный режим#Unix|Single user mode]] |
|||
: 6. [[Перезагрузка]] |
|||
Помимо этих стандартных, [[Unix]] и Unix-подобные системы трактуют уровни выполнения несколько по-разному.<code>/etc/inittab</code> файл, определяет, что каждый настроенный уровень выполнения делает в данной системе. |
|||
== Примечания == |
|||
{{примечания}} |
|||
== Литература == |
|||
* {{книга | автор = Б. Уорд | заглавие = Внутреннее устройство Linux | место = СПб | издательство = Питер | год = 2016 | страниц = 384 | часть = Глава 6. Как запускается пространство пользователя | страницы = 136—173}} |
|||
== Ссылки == |
== Ссылки == |
||
* [http://users.rsise.anu.edu.au/~okeefe/p2b/power2bash/power2bash.html From Power Up To Bash Prompt]{{ref-en}} |
* [http://users.rsise.anu.edu.au/~okeefe/p2b/power2bash/power2bash.html From Power Up To Bash Prompt]{{ref-en}} |
||
__NOTOC__ |
|||
{{unix-stub}} |
|||
[[Категория:Системные и сервисные менеджеры]] |
[[Категория:Системные и сервисные менеджеры]] |
||
[[Категория:Система инициализации системы]] |
|||
[[cs:Init]] |
|||
[[de:Init]] |
|||
[[en:Init]] |
|||
[[es:Init]] |
|||
[[eu:Init]] |
|||
[[fa:اینیت]] |
|||
[[fi:Init]] |
|||
[[fr:Init]] |
|||
[[it:Init]] |
|||
[[ja:Init]] |
|||
[[pl:Init]] |
|||
[[pt:Init]] |
|||
[[uk:Init]] |
|||
[[zh:Init]] |
Текущая версия от 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 (англ.)