init - init

редактировать
Версия 7 Unix : список / etc, показывающий init и rc Версия 7 Unix: содержимое / etc / rc Bourne shell script

В Unix -based компьютерах операционных системах, init (сокращение от инициализации) - это первый процесс, запущенный во время загрузки компьютерной системы. Init - это процесс демона, который продолжает работать, пока система не будет выключена. Он является прямым или косвенным предком всех других процессов и автоматически принимает все потерянные процессы. Init запускается ядром во время процесса загрузки ; Если ядро ​​не сможет запустить его, произойдет паника ядра. Init обычно присваивается идентификатор процесса 1.

В системах Unix, таких как System III и System V, конструкция init отличается от функциональности, предоставляемой init в Research Unix и его BSD производные. До недавнего времени в большинстве дистрибутивов Linux использовался традиционный init, который в некоторой степени совместим с System V, в то время как некоторые дистрибутивы, такие как Slackware, используют сценарии запуска в стиле BSD, а другие, такие как Gentoo имеет свои собственные версии.

С тех пор было создано несколько дополнительных реализаций инициализации, пытающихся устранить ограничения дизайна в традиционных версиях. К ним относятся launchd, Service Management Facility, systemd, Runit и OpenRC.

Содержание
  • 1 Исследование Стиль Unix / стиль BSD
  • 2 Стиль SysV
    • 2.1 Уровни выполнения
    • 2.2 Уровни выполнения по умолчанию
  • 3 Другие реализации
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Research Unix-style / BSD-style

Research Unix init запустил инициализационный сценарий оболочки, расположенный в / etc / rc, затем запустил getty на терминалах под управлением / etc / ttys. Нет уровней запуска; файл / etc / rcопределяет, какие программы запускаются init. Преимущество этой системы в том, что ее легко редактировать вручную. Однако новое программное обеспечение, добавленное в систему, может потребовать изменений в существующих файлах, что может привести к невозможности загрузки системы.

BSD init был до 4.3BSD таким же, как init для Research UNIX; в 4.3BSD добавлена ​​поддержка запуска оконной системы, такой как X, на графических терминалах под управлением / etc / ttys. Чтобы удалить требование редактировать / etc / rc, варианты BSD уже давно поддерживают файл /etc/rc.localдля конкретного сайта, который запускается во вспомогательной оболочке ближе к концу последовательности загрузки.

Полностью модульная система была представлена ​​с NetBSD 1.5 и портирована на FreeBSD 5.0 и последующие версии. Эта система выполняет сценарии в каталоге /etc/rc.d. В отличие от порядка скриптов в System V, который определяется именем файла каждого скрипта, эта система использует явные теги зависимости, размещенные внутри каждого скрипта. Порядок, в котором выполняются сценарии, определяется сценарием rcorder на основе требований, указанных в этих тегах.

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

По сравнению со своими предшественниками, UNIX System III от ATT представила новый стиль конфигурации запуска системы, который сохранился (с модификациями) в UNIX System V и поэтому называется "инициализацией в стиле SysV".

В любой момент работающая Система V находится в одном из заранее определенного количества состояний, называемых уровнями выполнения. По крайней мере, один уровень выполнения - это нормальное рабочее состояние системы; обычно другие уровни выполнения представляют однопользовательский режим (используемый для восстановления неисправной системы), завершение работы системы и различные другие состояния. При переключении с одного уровня запуска на другой запускается набор сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают демоны, запускают или останавливают X Window System, завершают работу машина и т. д.

Уровни выполнения

Уровни выполнения в System V описывают определенные состояния машины, характеризующиеся процессами и демонами, запущенными в каждом из них. В общем, существует семь уровней выполнения, из которых три уровня выполнения считаются «стандартными», поскольку они важны для работы системы:

0. Остановить
1. Однопользовательский режим (также известный как S или s)
6. Перезагрузка

Помимо этих стандартных, Unix и Unix-подобные системы несколько по-разному относятся к уровням запуска. Общий знаменатель, файл / etc / inittab, определяет, что каждый настроенный уровень запуска делает в данной системе.

Уровни запуска по умолчанию

Операционная системаУровень запуска по умолчанию
AIX 2
antiX 5
Gentoo Linux 3
HP-UX 3 (консоль / сервер / многопользовательский) или 4 (графическое)
Linux с нуля 3
Slackware Linux 3
Solaris / illumos 3
UNIX System V Releases 3.x, 4.x2
UnixWare 7.x3

В дистрибутивах Linux, для которых по умолчанию используется уровень запуска 5 в таблице справа, уровень запуска 5 вызывает многопользовательскую графическую среду, в которой работает X Window System, обычно с менеджером отображения как GDM или KDM. Однако операционные системы Solaris и illumos обычно резервируют уровень выполнения 5 для завершения работы и автоматического выключения машины.

В большинстве систем все пользователи могут проверить текущий уровень выполнения с помощью команды runlevelили who -r. Пользователь root обычно изменяет текущий уровень выполнения, выполняя команды telinitили init. Файл / etc / inittabустанавливает уровень выполнения по умолчанию с записью : initdefault:.

В системах Unix изменение уровня выполнения достигается запуском только отсутствующих служб (поскольку каждый уровень определяет только те, которые были запущены / остановлены). Например, изменение системы с уровня запуска 3 на 4 может запустить только локальный X-сервер. Возвращаясь к уровню выполнения 3, он снова будет остановлен.

Другие реализации

Традиционно одним из основных недостатков init является то, что он запускает задачи последовательно, ожидая завершения загрузки каждой перед переходом к следующей. Когда процессы запуска заканчиваются блокировкой ввода / вывода (I / O), это может привести к длительным задержкам во время загрузки. Ускорение ввода-вывода, например использование SSD может сократить задержки, но не устраняет основную причину.

Были предприняты различные попытки заменить традиционные демоны инициализации для решения этой и других проблем проектирования, в том числе:

  • BootScripts в GoboLinux
  • busybox-init, подходящие в встроенные операционные системы, используемые OpenWrt до того, как он был заменен на procd
  • Daemons, путем модификации процесса запуска init на, запускаются демоны только когда DE (среда рабочего стола) запускает
  • eINIT, полная замена init, предназначенная для запуска процессов асинхронно, но с возможностью делать это без сценариев оболочки
  • , однопоточная система инициализации Linux, ориентированная на простоту и управление службами
  • Initng, полная замена init, предназначенная для асинхронного запуска процессов
  • launchd, замена init в Darwin / macOS / iOS / tvOS, начиная с Mac OS X v10.4 (запускает SystemStarter для работы в старом стиле rc.local 'и SystemStarter)
  • Mudur, замена init элемент, написанный на Python и предназначенный для асинхронного запуска процесса при использовании Pardus дистрибутивом Linux
  • procd используется в LEDE / OpenWRT
  • в некоторых неназванных доказательствах концепция на основе Make (поскольку make-файлы могут легко выражать зависимости и запускаться параллельно)
  • nosh, набор утилит системного уровня для инициализации и запуска системы BSD или Linux, для управления демонами, терминалами и журналированием
  • OpenRC, порождение процессов, которое использует предоставляемый системой init, обеспечивая изоляцию процессов, параллельный запуск и зависимость служб; используется Alpine Linux, Gentoo и его производными и доступен как опция в Devuan и Artix Linux
  • runit, кроссплатформенная полная замена init с параллельным запуском служб, используется по умолчанию в Void Linux
  • s6, другой кроссплатформенной полной замене init, аналогичной runit
  • Sun Service Management Facility (SMF), полная замена / переработка init с нуля в illumos / Solaris, начиная с Solaris 10, но запущенная как единственная служба в исходной системе V-style init
  • Shepherd, служба GNU и менеджер демонов, обеспечивающий асинхронную инициализацию на основе зависимостей; написан на Guile Scheme и предназначен для интерактивного взлома во время нормальной работы системы.
  • systemd, программный пакет, полная замена init в Linux, который включает в себя демон init, с одновременным запуском служб, диспетчер служб и другие функции.
  • SystemStarter, средство создания процессов, запускаемое с помощью инициализации в стиле BSD в Mac OS X до Mac OS X v10.4
  • Upstart, полная замена init, предназначенная для асинхронного запуска процессов. Инициирован Ubuntu и использовался ими до 2014 года. Он также использовался в Fedora 9, Red Hat Enterprise Linux 6 и Google Chrome OS.

По состоянию на февраль 2019, systemd принят в большинстве основных дистрибутивов Linux.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-24 03:00:44
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте