В этом - init

Версия 7 Unix: /так далее листинг, показ в этом и rc
Версия 7 Unix: содержимое / etc / rc Оболочка Борна сценарий

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

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

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

Исследование в стиле Unix / BSD

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

BSD До 4.3BSD init был таким же, как init для Research UNIX;[3][4] в 4.3BSD, добавлена ​​поддержка запуска оконная система Такие как Икс на графических терминалах под управлением / etc / ttys.[5][6] Чтобы удалить требование редактирования / etc / rc, Варианты BSD уже давно поддерживают /etc/rc.local файл, который запускается во вспомогательной оболочке ближе к концу последовательности загрузки.

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

SysV-стиль

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

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

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

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

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

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

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

Уровни выполнения по умолчанию

Операционная системаУровень запуска по умолчанию
AIX2
antiX5
Gentoo Linux3[9]
HP-UX3 (консольный / серверный / многопользовательский) или 4 (графический)
Linux с нуля3
Slackware Linux3
Солярис / иллюзия3[10]
Система UNIX V Релизы 3.x, 4.x2
UnixWare 7.x3

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

В большинстве систем все пользователи могут проверить текущий уровень запуска с помощью уровень выполнения или же ВОЗ команда.[11] В корень пользователь обычно меняет текущий уровень запуска, запустив телинит или же в этом команды. В / etc / inittab устанавливает уровень запуска по умолчанию с : initdefault: Вход.

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

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

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

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

  • BootScripts в GoboLinux
  • busybox-init, подходящий для встроенные операционные системы, нанят OpenWrt прежде чем он был заменен на procd
  • Демоны, путем модификации процесса запуска init на KahelOS, демоны запускаются только при запуске DE (среда рабочего стола)[12][нужна цитата ][уточнить ]
  • eINIT, полная замена init, предназначенная для запуска процессов асинхронно, но с потенциалом сделать это без сценарии оболочки[13]
  • Эпоха, однопоточная система инициализации Linux, ориентированная на простоту и управление услугами[14]
  • Initng, полная замена init, предназначенная для асинхронного запуска процессов
  • запуск, замена init в Дарвин /macOS /iOS /tvOS начиная с Mac OS X v10.4 (запускает SystemStarter для запуска процессов rc.local и SystemStarter в старом стиле)
  • Мудур, замена init, написанная на Python и предназначен для асинхронного запуска процесса при использовании Пардус Дистрибутив Linux[15]
  • procd используется в LEDE / OpenWRT
  • некоторые неназванные доказательства концепции на основе Делать (поскольку make-файлы могут легко выражать зависимости и запускаться параллельно)
  • nosh, набор утилит системного уровня для инициализации и запуска системы BSD или Linux, для управления демонами, терминалами и журналированием[16]
  • OpenRC, средство создания процессов, которое использует предоставленный системой init, обеспечивая изоляцию процесса, параллельный запуск и зависимость службы; использован Alpine Linux, Gentoo и его производные, и доступны в качестве опции в Девуан и Artix Linux
  • запустить его, кроссплатформенная полная замена init с параллельным запуском служб, по умолчанию используется в Void Linux[17]
  • s6, еще одна кроссплатформенная полная замена init, похожая на runit
  • солнце Средство управления услугами (SMF), полная замена / редизайн init с нуля в иллюзия /Солярис начиная с Solaris 10, но запущен как единственный сервис оригинальной системой инициализации в стиле System V
  • Пасти, то GNU диспетчер служб и демонов, обеспечивающий асинхронную инициализацию на основе зависимостей; написано в Схема хитрости и предназначен для интерактивного взлома во время нормальной работы системы.[18]
  • systemd, программный пакет, полная замена init в Linux, который включает в себя демон init с одновременным запуском служб, диспетчер служб и другие функции.
  • SystemStarter, порождение процессов, запущенное инициализацией в стиле BSD в Mac OS X до Mac OS X v10.4
  • Выскочка, полная замена init, предназначенная для асинхронного запуска процессов. По инициативе Ubuntu и использовался ими до 2014 года. Он также использовался в Fedora 9,[19][20] Red Hat Enterprise Linux 6[21] и Google с Chrome OS.[22]

По состоянию на февраль 2019 г., systemd был усыновленный большинством основных дистрибутивов Linux.[23]

Смотрите также

Рекомендации

  1. ^ инициализация (8) – Версия 7 Unix Программиста Руководство
  2. ^ ttys (5) – Версия 7 Unix Программиста Руководство
  3. ^ инициализация (8) – 4.2BSD Системный менеджер Руководство
  4. ^ ttys (5) – 4.2BSD Форматы файлов Руководство
  5. ^ инициализация (8) – 4.3BSD Системный менеджер Руководство
  6. ^ ttys (5) – 4.3BSD Форматы файлов Руководство
  7. ^ Эндрю Смоллшоу (7 декабря 2009 г.). «Сценарии запуска Unix и Linux, Часть 2».
  8. ^ "init (8)". minnie.tuhs.org.
  9. ^ "Initscripts". Документация Gentoo Linux. Gentoo.org. 2014-12-13. Получено 2020-12-08.
  10. ^ «Уровни бега». Администрирование Oracle Solaris: общие задачи. Oracle.
  11. ^ "Страницы руководства UNIX: уровень выполнения (8)". Unixhelp.ed.ac.uk. 1997-05-27. Архивировано из оригинал на 2014-07-14. Получено 2014-07-12.
  12. ^ Мерик Мара. "Почему KahelOS Linux быстрее, чем раньше?". archives.free.net.ph. Получено 2018-06-13.
  13. ^ "каталог модуля XML репозитория eINIT git".
  14. ^ "Домашняя страница системы Epoch Init".
  15. ^ Гюрер Озен, Геркем Четин. «Ускорение Linux: еще один шаг вперед с Pardus Pardus». Pardus.org.tr. Архивировано из оригинал на 2011-07-05. Получено 2011-06-13.
  16. ^ Джонатан де Бойн Поллард. "Нош-пакет". Джонатан де Бойн Поллард. Получено 2018-05-21.
  17. ^ Главная страница Void Linux
  18. ^ "Пастух - проект GNU". Фонд свободного программного обеспечения, Inc.. Получено 2016-01-16.
  19. ^ Принятые функции Fedora 14, 2010-07-13, получено 2010-07-13
  20. ^ "Fedora переносит systemd на F15". Еженедельные новости Linux. 2010-09-14. Получено 2010-09-17.
  21. ^ «Развертывание». Red Hat Enterprise Linux 6: Технические примечания. Красная шляпа. Получено 2013-12-31.
  22. ^ Архитектура программного обеспечения: проектная документация Chromium OS, Google, получено 25 января 2014
  23. ^ Видеть Systemd # Принятие

внешняя ссылка