В этом - init
В 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-стиль
По сравнению с предшественниками AT&T Система UNIX III представил новый стиль стартовой конфигурации системы,[8] которые сохранились (с модификациями) в Система UNIX V и поэтому называется "инициализацией в стиле SysV".
В любой момент работающая Система V находится в одном из заранее заданного числа состояний, называемых уровни выполнения. По крайней мере, один уровень выполнения - это нормальное рабочее состояние системы; обычно другие уровни выполнения представляют однопользовательский режим (используемый для восстановления неисправной системы), завершение работы системы и различные другие состояния. Переключение с одного уровня запуска на другой приводит к запуску набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают демоны, запустить или остановить X Window System, выключите машину и т. д.
Уровни выполнения
В уровни выполнения в System V описывают определенные состояния машины, характеризующиеся процессами и демонами, запущенными в каждом из них. В общем, существует семь уровней выполнения, из которых три уровня выполнения считаются «стандартными», поскольку они необходимы для работы системы:
- 0. Остановка
- 1. Однопользовательский режим (также известный как S или же s)
- 6. Перезагрузить
Помимо этих стандартных, Unix и Unix-подобные системы несколько по-разному относятся к уровням выполнения. Общий знаменатель, / etc / inittab
файл, определяет, что каждый настроенный уровень запуска делает в данной системе.
Уровни выполнения по умолчанию
Операционная система | Уровень запуска по умолчанию |
---|---|
AIX | 2 |
antiX | 5 |
Gentoo Linux | 3[9] |
HP-UX | 3 (консольный / серверный / многопользовательский) или 4 (графический) |
Linux с нуля | 3 |
Slackware Linux | 3 |
Солярис / иллюзия | 3[10] |
Система UNIX V Релизы 3.x, 4.x | 2 |
UnixWare 7.x | 3 |
В дистрибутивах 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]
Смотрите также
- Управление службами операционной системы
- Подсистема диспетчера сеансов - аналог в Windows NT
Рекомендации
- ^ Версия 7 Unix Программиста Руководство –
- ^ Версия 7 Unix Программиста Руководство –
- ^ 4.2BSD Системный менеджер Руководство –
- ^ 4.2BSD Форматы файлов Руководство –
- ^ 4.3BSD Системный менеджер Руководство –
- ^ 4.3BSD Форматы файлов Руководство –
- ^ Эндрю Смоллшоу (7 декабря 2009 г.). «Сценарии запуска Unix и Linux, Часть 2».
- ^ "init (8)". minnie.tuhs.org.
- ^ "Initscripts". Документация Gentoo Linux. Gentoo.org. 2014-12-13. Получено 2020-12-08.
- ^ «Уровни бега». Администрирование Oracle Solaris: общие задачи. Oracle.
- ^ "Страницы руководства UNIX: уровень выполнения (8)". Unixhelp.ed.ac.uk. 1997-05-27. Архивировано из оригинал на 2014-07-14. Получено 2014-07-12.
- ^ Мерик Мара. "Почему KahelOS Linux быстрее, чем раньше?". archives.free.net.ph. Получено 2018-06-13.
- ^ "каталог модуля XML репозитория eINIT git".
- ^ "Домашняя страница системы Epoch Init".
- ^ Гюрер Озен, Геркем Четин. «Ускорение Linux: еще один шаг вперед с Pardus Pardus». Pardus.org.tr. Архивировано из оригинал на 2011-07-05. Получено 2011-06-13.
- ^ Джонатан де Бойн Поллард. "Нош-пакет". Джонатан де Бойн Поллард. Получено 2018-05-21.
- ^ Главная страница Void Linux
- ^ "Пастух - проект GNU". Фонд свободного программного обеспечения, Inc.. Получено 2016-01-16.
- ^ Принятые функции Fedora 14, 2010-07-13, получено 2010-07-13
- ^ "Fedora переносит systemd на F15". Еженедельные новости Linux. 2010-09-14. Получено 2010-09-17.
- ^ «Развертывание». Red Hat Enterprise Linux 6: Технические примечания. Красная шляпа. Получено 2013-12-31.
- ^ Архитектура программного обеспечения: проектная документация Chromium OS, Google, получено 25 января 2014
- ^ Видеть Systemd # Принятие