Init: различия между версиями
[непроверенная версия] | [непроверенная версия] |
MBHbot (обсуждение | вклад) м кирлат, replaced: cи → си |
|||
Строка 1: | Строка 1: | ||
{{заголовок со строчной буквы}} |
{{заголовок со строчной буквы}} |
||
'''init''' (сокращение от {{lang-en|initialization}} — инициализация) — [[ |
'''init''' (сокращение от {{lang-en|initialization}} — инициализация) — [[система инициализации]] в [[UNIX]] и [[Unix-подобная операционная система|Unix-подобных]] [[операционная система|системах]], которая запускает все остальные процессы. Работает как [[Демон (программа)|демон]] и обычно имеет [[Идентификатор процесса|PID]] 1. Обычно (согласно [[Filesystem Hierarchy Standard]]) располагается по пути <tt>/sbin/init</tt>. |
||
== Уровни инициализации == |
== Уровни инициализации == |
Версия от 06:44, 29 декабря 2015
init (сокращение от англ. initialization — инициализация) — система инициализации в UNIX и Unix-подобных системах, которая запускает все остальные процессы. Работает как демон и обычно имеет PID 1. Обычно (согласно Filesystem Hierarchy Standard) располагается по пути /sbin/init.
Уровни инициализации
В процессе загрузки, после инициализации ядра, ядро запускает /sbin/init как первый процесс пользовательского режима. init отвечает за дальнейшую загрузку системы. Для этого он запускает так называемые стартовые скрипты, которые выполняют проверку и монтирование файловых систем, запуск необходимых демонов, настройку ядра (в том числе загрузку модулей ядра согласно установленному оборудованию, настройку IP-адресов, таблиц маршрутизации и др.), запуск графической оболочки и другие действия.
В операционных системах Unix/Linux с помощью init можно изменить уровень инициализации. Уровень инициализации — степень загрузки операционной системы. Вот как происходит инициализация системы: процесс init запускается и анализирует файл /etc/inittab. Следует отметить, что приведенная здесь система инициализации работает на системах Linux и Unix System V и она несколько отличается от стиля инициализации системы в BSD-подобных системах.
По умолчанию, в системе использовано 7 уровней инициализации:
- 0 — остановка системы
- 1 — загрузка в однопользовательском режиме
- 2 — загрузка в многопользовательском режиме без поддержки сети
- 3 — загрузка в многопользовательском режиме с поддержкой сети
- 4 — не используется
- 5 — загрузка в многопользовательском режиме с поддержкой сети и графического входа в систему
- 6 — перезагрузка
В большинстве Unix/Linux систем, узнать текущий уровень инициализации можно командами:
$ runlevel
$ who -r
Набрав init n в терминале (с правами суперпользователя), где n — номер уровня инициализации, можно переключиться в любой из вышеперечисленных уровней.
Стартовые скрипты для каждого уровня находятся в каталогах с /etc/rc0.d до /etc/rc6.d, где цифра после rc соответствует номеру уровня инициализации.
Файл /etc/inittab
Как уже было упомянуто выше, работа процесса init управляется с помощью файла /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 — программа (с указанием параметров), которая будет обслуживать консоль.
Таким образом, вы легко можете создать свой уровень инициализации (под номером 4 или 7, 8…), просто исправив файл /etc/inittab и создав необходимые ссылки в каталоге /etc/rc.d/rc*.d
init в других ОС
В 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. */
Альтернативы init
Сейчас существует множество систем, призванных заменить собой классический init: Upstart, Runit, Daemontools, Launchd, Initng, OpenRC, systemd. Все они разрабатывались изначально для определенных дистрибутивов Linux или вообще для других систем.
Ссылки
- From Power Up To Bash Prompt (англ.)
Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её. |