- Системы инициализации Linux
- Системы инициализации Linux
- 1. System V Init
- 2. OpenRC
- 3. Systemd
- 4. Runinit
- 5. Upstart
- Выводы
- init on Linux Mint 20.3 «Una»
- 2. Uninstall / Remove init package
- 3. Details of init package
- 4. References on Linux Mint 20.3 «Una»
- 5. The same packages on other Linux Distributions
- init on Linux Mint 21 «Vanessa»
- 2. Uninstall / Remove init package
- 3. Details of init package
- 4. References on Linux Mint 21 «Vanessa»
- 5. The same packages on other Linux Distributions
Системы инициализации Linux
В операционной системе Linux и других системах семейства Unix после завершения загрузки ядра начинается инициализация Linux системы, сервисов и других компонентов. За это отвечает процесс инициализации, он запускается ядром сразу после завершения загрузки, имеет PID 1, и будет выполняться пока будет работать система.
Процесс инициализации запускает все другие процессы, которые должны быть запущены, это родительский процесс для всего, что выполняется в системе. Другие процессы могут тоже создавать дочерние процессы, но если родительский процесс завершается, для его дочерних процессов родительским становится процесс инициализации.
Системы инициализации Linux
За время развития операционных систем были созданы различные системы инициализации Linux. В разных дистрибутивах использовались разные системы. В этой статье мы рассмотрим лучшие системы инициализации, которые вы можете сейчас использовать. Мы начнем с более старых систем с меньшим функционалом, чтобы понять с чего все начиналось, затем подойдем к более новым, созданным в последнее время.
1. System V Init
System V или SysV — это довольно старая, но до сих пор ещё популярная система инициализации Linux и Unix подобных операционных систем. Она была основой для создания многих других систем инициализации, а также первой коммерческой системой инициализации разработанной для Unix в AT&T. Она была разработана еще в 1983 году.
Почти все дистрибутивы Linux изначально использовали SysV. Исключением была только Gentoo, в которой использовалась собственная система инициализации и Slackware, с инициализацией в стиле BSD.
Основные возможности SysV:
- Написание файлов запуска служб на bash;
- Последовательный запуск служб;
- Сортировка порядка запуска с помощью номеров в именах файлов;
- Команды для запуска, остановки и проверки состояния служб.
Никакой параллельной загрузки, системы зависимостей, запуска по требованию и автоматического запуска здесь не было и в помине.
С момента ее разработки прошло много лет и из-за некоторых недостатков были разработаны другие системы для ее замены, они хоть и имели новые функции и были более эффективны, но они были по-прежнему совместимы с SysV.
2. OpenRC
OpenRC — это система инициализации Linux и Unix подобных операционных систем совместимая с Sys V Init и поддерживающая систему зависимостей во время запуска. Она приносит некоторые улучшения в SysV, и как и другие системы инициализации Linux, совместима с ней, но вы должны иметь в виду, что OpenRC не заменяет полностью файл /sbin/init. Эта система инициализации используется в Gentoo и дистрибутивах BSD.
Кроме стандартных возможностей SysV, здесь поддерживается также:
- Поддержка зависимостей служб;
- Поддержка параллельного запуска служб;
- Поддерживает настройку в одном отдельном файле;
- Работает как демон;
По сравнению с SysV тут появилось много новых возможностей, но все еще не все те, что нужны для оптимальной работы системы.
3. Systemd
Systemd — это новая система инициализации Linux. Она была введена по умолчанию в Fedora 15, а сейчас используется почти во всех популярных Linux дистрибутивах. Это не только инициализирующий процесс, поддерживающий огромное количество возможностей, но и набор инструментов для управления службами и этими возможностями из системы. Основная цель — иметь полный контроль над всеми процессами во время их запуска и на протяжении всего выполнения.
Systemd очень сильно отличается от всех существующих систем инициализации, тем как она работает с сервисами, и даже конфигурационными файлами сервисов. Совместимости со скриптами SysV нет, их нужно преобразовать в linux systemd unit файлы.
Вот ее основные особенности:
- Понятный, простой и эффективный дизайн;
- Параллельная загрузка служб на основе зависимостей;
- Поддерживается завершение дополнительных процессов;
- Поддерживается собственный журнал с помощью journald;
- Поддерживается планирование заданий с помощью таймеров Systemd;
- Поддерживается управление сетью с помощью networkd;
- Для управления DNS используется systemd-resolved;
- Хранение журналов в бинарных файлах;
- Сохранение состояния сервисов linux systemd для возможного восстановления;
- Улучшенная интеграция с Gnome;
- Запуск сервисов по требованию;
4. Runinit
Runinit — это кроссплатформенная система инициализации, которая может работать в GNU Linux, Solaris, BSD и MacOS. Это отличная альтернатива для SysV с поддержкой мониторинга состояния служб.
Здесь есть некоторые интересные особенности, которых нет в других системах инициализации:
- Полный контроль сервисов, каждый сервис привязывается к своему каталогу;
- Надежное средство журналирования и ротации логов;
- Быстрая система загрузки и выключения;
- Портативность;
- Легкое создание файлов конфигурации служб;
- Небольшое количество кода системы инициализации.
5. Upstart
Upstart — это система инициализации на основе событий, разработанная в Canonical и призванная заменять SysV. Она может запускать системные службы, выполнять над ними различные задачи, инспектировать их во время выполнения, а также выполнять нужные действия в ответ на события в системе.
Это гибридная система инициализации, она использует как SysV скрипты запуска, так и файлы служб Systemd. Вот ее самые заметные особенности:
- Изначально разработанная для Ubuntu, но может использоваться и в других дистрибутивах;
- Запуск и остановка служб на основе событий;
- Генерация событий во время запуска и остановки служб;
- События могут быть отправлены обычными процессами;
- Связь с процессом инициализации через DBus;
- Пользователи могут запускать и останавливать свои процессы;
- Перезапуск служб, которые неожиданно завершились;
- Параллельная загрузка сервисов;
- Автоматический перезапуск служб;
Большинство ее возможностей работают благодаря интеграции с системой инициализации Systemd. В последнее время всё меньше используются скрипты SysV init и всё больше применяются юнит файлы Systemd. Рано или поздно Systemd вытеснит и полностью заменит Upstart в Ubuntu.
Выводы
Как я уже говорил, система инициализации запускает и управляет всеми другими процессами в системе Linux. SysV до недавнего времени была основной системой инициализации в большинстве дистрибутивов Linux, но из-за некоторых своих недостатков для нее было разработано несколько замен, в том числе Systemd.
Какие системы инициализации Linux используются в вашем дистрибутиве? В списке обозначены не все существующие системы, какую из них нужно добавить в список? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
init on Linux Mint 20.3 «Una»
In this section, we are going to explain the necessary steps to install init package:
2. Uninstall / Remove init package
This tutorial shows how to uninstall init package:
3. Details of init package
Package: init
Architecture: amd64
Version: 1.57
Multi-Arch: foreign
Priority: important
Section: metapackages
Source: init-system-helpers
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Debian systemd Maintainers
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 21
Pre-Depends: systemd-sysv
Depends: init-system-helpers (>= 1.25)
Filename: pool/main/i/init-system-helpers/init_1.57_amd64.deb
Size: 6088
MD5sum: 459fb4e8b020aee5306cfff0ffef3f53
SHA1: a1c707f0479c05ccf22b1292a5f0ae243b1f2675
SHA256: bc810e47293dab9bfd64b0db7fc714107994de12d4b3e6d621cea7a00223e067
Description: metapackage ensuring an init system is installed
Description-md5: 12a082503782e774ffe62fa80de49eb6
Task: minimal, ubuntu-core
Important: yes
4. References on Linux Mint 20.3 «Una»
5. The same packages on other Linux Distributions
init (1.56+nmu1~ubuntu18.04.1) Ubuntu 18.04 LTS (Bionic Beaver)
init (1.29ubuntu4) Ubuntu 16.04 LTS (Xenial Xerus)
init (1.60) Ubuntu 21.04 (Hirsute Hippo)
init (1.58) Ubuntu 20.10 (Groovy Gorilla)
init (1.60build1) Ubuntu 21.10 (Impish Indri)
init (1.62) Ubuntu 22.04 LTS (Jammy Jellyfish)
init (1.56+nmu1) Debian 10 (Buster)
init on Linux Mint 21 «Vanessa»
This guide covers the steps necessary to install init package:
2. Uninstall / Remove init package
In this section, we are going to explain the necessary steps to uninstall init package:
3. Details of init package
Package: init
Architecture: amd64
Version: 1.62
Multi-Arch: foreign
Priority: important
Section: metapackages
Source: init-system-helpers
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Debian systemd Maintainers
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 22
Pre-Depends: systemd-sysv
Depends: init-system-helpers (>= 1.25)
Filename: pool/main/i/init-system-helpers/init_1.62_amd64.deb
Size: 5412
MD5sum: 41833e266b3dd6ff1225eeb8f72535ba
SHA1: 024fcfd1f6142cf30845e9a9f2240821be55be9f
SHA256: f5bb86fc35a352e087955f7674c852dedca764b7a2ceaceec8129e54a76b6347
SHA512: ad3118b95adb2906375d122ae277469ee135c63c489bdc8a7366065e5f86d007540a6b824748552dae4dd3cfa459139360566fae00e05634381990e0b251b27c
Description: metapackage ensuring an init system is installed
Description-md5: 12a082503782e774ffe62fa80de49eb6
Task: minimal
Important: yes
4. References on Linux Mint 21 «Vanessa»
5. The same packages on other Linux Distributions
init (1.56+nmu1~ubuntu18.04.1) Ubuntu 18.04 LTS (Bionic Beaver)
init (1.29ubuntu4) Ubuntu 16.04 LTS (Xenial Xerus)
init (1.60) Ubuntu 21.04 (Hirsute Hippo)
init (1.58) Ubuntu 20.10 (Groovy Gorilla)
init (1.60build1) Ubuntu 21.10 (Impish Indri)
init (1.62) Ubuntu 22.04 LTS (Jammy Jellyfish)
init (1.56+nmu1) Debian 10 (Buster)