нагревать
В базе Unix компьютерных операционных системах на init (сокращение от инициализации ) — это первый процесс , запускаемый во время загрузки операционной системы. Init — это процесс- демон , который продолжает работать до тех пор, пока система не выключится. Он является прямым или косвенным предком всех других процессов и автоматически принимает все потерянные процессы . Init запускается ядром во время процесса загрузки ; причине . произойдет паника ядра, если ядро не сможет его запустить или оно должно умереть по какой-либо Init обычно присваивается идентификатор процесса 1.
В системах Unix, таких как System III и System V , конструкция init отличается от функциональности, предоставляемой init в Research Unix и ее производных BSD . Вплоть до начала 2010-х гг. [1] [ не удалось пройти проверку ] в большинстве дистрибутивов Linux используется традиционная инициализация, которая в некоторой степени совместима с System V, в то время как некоторые дистрибутивы, такие как Slackware, используют сценарии запуска в стиле BSD, а другие, такие как Gentoo, имеют свои собственные версии.
С тех пор было создано несколько дополнительных реализаций инициализации, пытающихся устранить ограничения дизайна в традиционных версиях. К ним относятся launchd , Service Management Facility , systemd , Runit и OpenRC .
Исследования в стиле Unix/BSD
[ редактировать ]Research Unix инициализации, init запускает сценарий оболочки расположенный по адресу /etc/rc
, [2] затем запускает getty на терминалах под управлением /etc/ttys
. [3] Уровней запуска нет; тот /etc/rc
file определяет, какие программы запускаются init. Преимущество этой системы в том, что ее легко и просто редактировать вручную. Однако новое программное обеспечение, добавленное в систему, может потребовать внесения изменений в существующие файлы, что может привести к невозможности загрузки системы.
До версии 4.3BSD инициализация BSD была такой же, как и инициализация Research UNIX; [4] [5] в 4.3BSD добавлена поддержка запуска оконной системы , такой как X, на графических терминалах под управлением /etc/ttys
. [6] [7] Чтобы удалить требование редактирования /etc/rc
, варианты BSD уже давно поддерживают /etc/rc.local
файл, который запускается во внутренней оболочке ближе к концу последовательности загрузки.
Полностью модульная система была представлена в NetBSD 1.5 и перенесена на FreeBSD 5.0 и последующие версии. Эта система выполняет сценарии в /etc/rc.d
каталог. В отличие от порядка сценариев в System V, который определяется именем файла каждого сценария, эта система использует явные теги зависимостей, размещаемые внутри каждого сценария. [8] Порядок выполнения скриптов определяется утилитой rcorder на основе требований, изложенных в этих тегах.
SysV-стиль
[ редактировать ]По сравнению со своими предшественниками, UNIX System III от AT&T представила новый стиль конфигурации запуска системы. [9] который сохранился (с изменениями) в UNIX System V и поэтому называется «инициализацией в стиле SysV».
В любой момент работающая System V находится в одном из заранее определенного количества состояний, называемых уровнями запуска . По крайней мере один уровень выполнения представляет собой нормальное рабочее состояние системы; обычно другие уровни запуска представляют однопользовательский режим (используемый для восстановления неисправной системы), завершение работы системы и различные другие состояния. Переключение с одного уровня запуска на другой приводит к запуску набора сценариев для каждого уровня запуска, которые обычно монтируют файловые системы, запускают или останавливают демоны , запускают или останавливают систему X Window , выключают компьютер и т. д.
Уровни запуска
[ редактировать ]Уровни запуска в System V описывают определенные состояния машины, характеризующиеся процессами и демонами, работающими в каждом из них. В общем, существует семь уровней запуска, из которых три считаются «стандартными», поскольку они необходимы для работы системы:
- Выключать
- Однопользовательский режим (также известный как S или s )
- Перезагрузить
Помимо этих стандартных, Unix и Unix-подобные системы обрабатывают уровни выполнения несколько по-разному. Общий знаменатель, т. /etc/inittab
файл, определяет, что делает каждый настроенный уровень запуска в данной системе.
Уровни запуска по умолчанию
[ редактировать ]Операционная система | Уровень запуска по умолчанию |
---|---|
ЭКС | 2 |
антиХ | 5 |
Генту Линукс | 3 [10] |
HP-UX | 3 (консоль/сервер/многопользовательский) или 4 (графический) |
Линукс с нуля | 3 |
Слакваре Linux | 3 |
Солярис / иллюмос | 3 [11] |
UNIX System V версий 3.x, 4.x | 2 |
UnixWare 7.x | 3 |
В дистрибутивах Linux по умолчанию используется уровень запуска 5 в таблице справа. Уровень запуска 5 вызывает многопользовательскую графическую среду, работающую под управлением X Window System , обычно с менеджером отображения, таким как GDM или KDM . Однако операционные системы Solaris и Illumos обычно резервируют уровень запуска 5 для завершения работы и автоматического выключения компьютера.
В большинстве систем все пользователи могут проверить текущий уровень выполнения либо с помощью runlevel
или who -r
команда. [12] Пользователь root обычно меняет текущий уровень выполнения, запуская команду telinit
или init
команды. /etc/inittab
файл устанавливает уровень запуска по умолчанию с помощью :initdefault:
вход.
В системах Unix изменение уровня запуска достигается путем запуска только недостающих служб (поскольку каждый уровень определяет только те, которые запущены/остановлены). [ нужна ссылка ] Например, изменение системы с уровня запуска 3 на 4 может запустить только локальный X-сервер. Возвращаясь к уровню выполнения 3, он снова будет остановлен.
Другие реализации
[ редактировать ]Традиционно одним из основных недостатков init является то, что он запускает задачи последовательно, ожидая завершения загрузки каждой из них, прежде чем перейти к следующей. Когда процессы запуска блокируются, ввод/вывод (I/O) может привести к длительным задержкам во время загрузки. Ускорение ввода-вывода, например, с помощью твердотельных накопителей, может сократить задержки, но не устраняет основную причину.
Были предприняты различные попытки заменить традиционные демоны инициализации для решения этой и других проблем проектирования, в том числе:
- Загрузочные сценарии в GoboLinux
- busybox-init , подходит для встроенных операционных систем , используется Alpine Linux , SliTaz 5(Rolling), Tiny Core Linux и VMware ESXi , а также используется OpenWrt до того, как он был заменен на procd.
- Dinit, менеджер сервисов и система инициализации. [13]
- Epoch — однопоточная система инициализации Linux, ориентированная на простоту и управление сервисами. [14]
- Initng — полная замена init, предназначенная для асинхронного запуска процессов.
- launchd , замена init в Darwin / macOS / iOS / tvOS, начиная с Mac OS X v10.4 (он запускает SystemStarter для запуска процессов rc.local и SystemStarter старого стиля)
- OpenRC , генератор процессов, который использует предоставляемую системой инициализацию, обеспечивая при этом изоляцию процессов, параллельный запуск и зависимость от служб; используется Alpine Linux , Gentoo и его производными и доступен в качестве опции в Devuan и Artix Linux.
- runit — кроссплатформенная полная замена init с параллельным запуском служб, используемая по умолчанию в Void Linux. [15]
- Sun Service Management Facility (SMF), полная замена / перепроектирование init с нуля в Illumos / Solaris, начиная с Solaris 10, но запущенная как единственная служба оригинальной инициализации в стиле System V.
- Shepherd — менеджер служб и демонов GNU , обеспечивающий асинхронную инициализацию на основе зависимостей; написан на Guile Scheme и предназначен для интерактивного взлома во время нормальной работы системы. [16]
- s6 — пакет программного обеспечения, включающий систему инициализации. [17] [18]
- systemd — пакет программного обеспечения, полная замена init в Linux, включающая демон инициализации, с одновременным запуском служб, диспетчером служб и другими функциями.
- SystemStarter , генератор процессов, запускаемый с помощью инициализации в стиле BSD в Mac OS X до Mac OS X v10.4.
- Upstart — полноценная замена init, предназначенная для асинхронного запуска процессов. Инициирован Ubuntu и использовался ими до 2014 года. Он также использовался в Fedora 9, [19] [20] Red Hat Enterprise Linux 6. [21] и Google от ChromeOS . [22]
По состоянию на февраль 2019 г. [update], systemd используется в большинстве основных дистрибутивов Linux. [23]
См. также
[ редактировать ]- Управление службами операционной системы
- Подсистема диспетчера сеансов — аналог в Windows NT.
Ссылки
[ редактировать ]- ^ «Леннарт Поеттеринг о бурном господстве systemd» . Новый стек . 08.11.2018. Архивировано из оригинала 08.11.2018 . Проверено 30 января 2024 г.
- ^ Unix версии 7. программиста Руководство –
- ^ Unix версии 7. программиста Руководство –
- ^ 4.2BSD системного администратора Руководство –
- ^ 4.2BSD по форматам файлов Руководство –
- ^ 4.3BSD системного администратора Руководство –
- ^ 4.3BSD по форматам файлов Руководство –
- ^ Эндрю Смоллшоу (7 декабря 2009 г.). «Скрипты запуска Unix и Linux, часть 2» . Архивировано из оригинала 18 декабря 2009 года . Проверено 6 июня 2011 г.
- ^ «инит(8)» . minnie.tuhs.org . Архивировано из оригинала 27 июля 2021 г. Проверено 12 сентября 2015 г.
- ^ «Инитскрипты» . Документация Gentoo Linux . Gentoo.org. 13 декабря 2014 г. Архивировано из оригинала 03 декабря 2020 г. Проверено 8 декабря 2020 г.
- ^ «Пробег уровней» . Администрирование Oracle Solaris: общие задачи . Оракул . Архивировано из оригинала 10 апреля 2016 г. Проверено 14 ноября 2017 г.
- ^ «Страницы руководства UNIX: уровень запуска (8)» . Unixhelp.ed.ac.uk. 27 мая 1997 г. Архивировано из оригинала 14 июля 2014 г. Проверено 12 июля 2014 г.
- ^ «GitHub — davmac314/dinit: Мониторинг служб/система инициализации» . Гитхаб . Архивировано из оригинала 12 декабря 2021 г. Проверено 12 декабря 2021 г.
- ^ «Домашняя страница системы инициализации эпохи» . Архивировано из оригинала 02 августа 2014 г. Проверено 31 июля 2014 г.
- ^ «Главная страница Void Linux» . Архивировано из оригинала 29 августа 2020 г. Проверено 31 августа 2020 г.
- ^ «Пастух — Проект GNU» . Free Software Foundation, Inc. Архивировано из оригинала 12 февраля 2016 г. Проверено 16 января 2016 г.
- ^ «s6: зачем еще один набор для наблюдения» . Архивировано из оригинала 13 сентября 2021 г. Проверено 13 сентября 2021 г.
- ^ «Система инициализации s6» . Архивировано из оригинала 13 сентября 2021 г.
- ^ Принятые функции Fedora 14 , 13 июля 2010 г., заархивировано из оригинала 27 марта 2022 г. , получено 13 июля 2010 г.
- ^ «Fedora откладывает systemd до F15» . Еженедельные новости Linux. 14 сентября 2010 г. Архивировано из оригинала 19 сентября 2010 г. Проверено 17 сентября 2010 г.
- ^ «Развертывание» . Red Hat Enterprise Linux 6: Технические примечания . Красная шляпа . Архивировано из оригинала 29 августа 2018 г. Проверено 31 декабря 2013 г.
- ^ Архитектура программного обеспечения: проектная документация Chromium OS , заархивировано из оригинала 9 апреля 2022 г. , получено 25 января 2014 г.
- ^ См . Systemd#Adoption.
Внешние ссылки
[ редактировать ]- Страница руководства по инициализации FreeBSD
- Статья, обобщающая схемы инициализации Unix (2007 г.)
- Solaris Service Management Facility - Краткое руководство на Wayback Machine (архивировано 31 декабря 2005 г.)
- История современных систем инициализации (1992–2015 гг.). Архивировано 11 октября 2015 г. в Wayback Machine.