stringtranslate.com

в этом

Версия 7 Unix : список /etc , показывающий init и rc
Unix версии 7: содержимое сценария оболочки /etc/rc Bourne.

В компьютерных операционных системах на базе 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определяет, какие программы запускает 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-стиль

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

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

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

Уровни запуска

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. ^ «Леннарт Поеттеринг о бурном господстве systemd - Новый стек» . веб.архив.орг . 08.11.2018 . Проверено 30 января 2024 г.
  2. ^ init(8)  -  Руководство программиста Unix версии 7.
  3. ^ ttys(5)  -  Руководство программиста Unix версии 7.
  4. ^ init(8)  -  Руководство системного администратора 4.2BSD.
  5. ^ ttys(5)  -  Руководство по форматам файлов 4.2BSD .
  6. ^ init(8)  -  Руководство системного администратора 4.3BSD.
  7. ^ ttys(5)  -  Руководство по форматам файлов 4.3BSD.
  8. Эндрю Смоллшоу (7 декабря 2009 г.). «Сценарии запуска Unix и Linux, часть 2». Архивировано из оригинала 18 декабря 2009 года . Проверено 6 июня 2011 г.
  9. ^ "инит(8)". minnie.tuhs.org . Архивировано из оригинала 27 июля 2021 г. Проверено 12 сентября 2015 г.
  10. ^ "Инитскрипты". Документация Gentoo Linux . Gentoo.org. 13 декабря 2014 г. Архивировано из оригинала 03 декабря 2020 г. Проверено 8 декабря 2020 г.
  11. ^ «Уровни запуска». Администрирование Oracle Solaris: общие задачи . Оракул . Архивировано из оригинала 10 апреля 2016 г. Проверено 14 ноября 2017 г.
  12. ^ «Справочные страницы UNIX: уровень запуска (8)» . Unixhelp.ed.ac.uk. 27 мая 1997 г. Архивировано из оригинала 14 июля 2014 г. Проверено 12 июля 2014 г.
  13. ^ «GitHub — davmac314/dinit: Мониторинг служб / система инициализации» . Гитхаб . Архивировано из оригинала 12 декабря 2021 г. Проверено 12 декабря 2021 г.
  14. ^ "Домашняя страница системы инициализации Epoch" . Архивировано из оригинала 02 августа 2014 г. Проверено 31 июля 2014 г.
  15. ^ "Главная страница Void Linux" . Архивировано из оригинала 29 августа 2020 г. Проверено 31 августа 2020 г.
  16. ^ "Пастух - Проект GNU" . Free Software Foundation, Inc. Архивировано из оригинала 12 февраля 2016 г. Проверено 16 января 2016 г.
  17. ^ «s6: зачем еще один набор для наблюдения» . Архивировано из оригинала 13 сентября 2021 г. Проверено 13 сентября 2021 г.
  18. ^ "Система инициализации s6" . Архивировано из оригинала 13 сентября 2021 г.
  19. ^ Принятые функции Fedora 14, 13 июля 2010 г., заархивировано из оригинала 27 марта 2022 г. , получено 13 июля 2010 г.
  20. ^ «Fedora откладывает systemd до F15» . Еженедельные новости Linux. 14 сентября 2010 г. Архивировано из оригинала 19 сентября 2010 г. Проверено 17 сентября 2010 г.
  21. ^ «Развертывание». Red Hat Enterprise Linux 6: Технические примечания . Красная Шапка . Архивировано из оригинала 29 августа 2018 г. Проверено 31 декабря 2013 г.
  22. ^ Архитектура программного обеспечения: проектная документация Chromium OS, заархивировано из оригинала 9 апреля 2022 г. , получено 25 января 2014 г.
  23. ^ См. Systemd#Adoption.

Внешние ссылки