История «init» и «systemd»: почему «init» нужно было заменить на «systemd» в Linux
Я подписан на несколько списков рассылки, связанных с различными дистрибутивами и приложениями Linux, просто чтобы быть в курсе того, что и где происходит. Какие новые ошибки? Какие патчи выпущены? Что ожидается в следующем выпуске? и многое другое. В наши дни список рассылки густо заполнен словами «Выбери свою сторону в Linux Divide», в основном в списке рассылки Debian и некоторых других.
Что такое «Выбери свою сторону в Linux Divide»?
Демон init будет заменен демоном systemd в некоторых дистрибутивах Linux, хотя многие из них уже реализовали его. Это создает/будет создавать огромный разрыв между традиционной защитой Unix/Linux и новой защитой Linux – программистами и системными администраторами.
В этой статье мы обсудим и решим все вопросы один за другим.
- Что такое инициализация?
- Что такое системд?
- Почему init нужно было заменить?
- Какими функциями будет обладать systemd.
Что такое инициализация?
В Linux init — это сокращение от инициализации. init — это процесс-демон, который запускается при запуске компьютера и продолжает работать до его выключения. Фактически init — это первый процесс, который запускается при загрузке компьютера, что делает его родительским для всех других запущенных процессов прямо или косвенно, и поэтому обычно ему присваивается «pid=1».
Если по какой-то причине демон init не смог запуститься, ни один процесс не запустится, и система достигнет стадии, называемой «Kernel Panic». init чаще всего называют init System V. System V — первая коммерческая операционная система UNIX, разработанная, и использование init в большинстве современных дистрибутивов Linux идентично ОС System V, за некоторыми исключениями, такими как Slackware, использующий BSD-стиль, и Gentoo, использующий собственную инициализацию. .
Необходимость заменить init чем-то более совершенным ощущалась уже давно, и время от времени разрабатывалось несколько альтернатив, некоторые из которых стали родной заменой init в дистрибутиве, вот некоторые из них:
- Upstart — демон замены инициализации, реализованный в Ubuntu GNU/Linux и предназначенный для асинхронного запуска процесса.
- Epoch – демон замены инициализации, созданный с учетом простоты управления службами и предназначенный для однопоточного запуска процесса.
- Mudar – демон замены инициализации, написанный на Python, реализованный в Pardus GNU/Linux и предназначенный для асинхронного запуска процесса.
- systemd — демон замены инициализации, предназначенный для параллельного запуска процессов, реализованный в ряде стандартных дистрибутивов — Fedora, OpenSuSE, Arch, RHEL, CentOS и т. д.
Что такое системд?
systemd — это демон управления системой, названный в соответствии с соглашением UNIX о добавлении «d» в конце демона. Чтобы их можно было легко узнать. Первоначально он был выпущен под лицензией GNU General Public License, но теперь выпуски производятся под лицензией GNU Lesser General Public License. Подобно init, systemd прямо или косвенно является родительским для всех других процессов и является первым процессом, который запускается при загрузке, поэтому обычно ему присваивается «pid=1».
systemd может относиться ко всем пакетам, утилитам и библиотекам демона. Он был разработан, чтобы преодолеть недостатки init. Сам по себе это фоновый процесс, предназначенный для параллельного запуска процессов, что позволяет сократить время загрузки и вычислительные затраты. Он имеет много других функций по сравнению с init.
Почему возникла необходимость заменить init?
Процесс инициализации запускается последовательно, т. е. одна задача запускается только после успешного запуска последней задачи и ее загрузки в память. Это часто приводило к задержке и длительному времени загрузки. Однако systemd был разработан не для скорости, а для аккуратного выполнения задач, что, в свою очередь, позволяет избежать всех необходимых ООН задержек.
Особенности systemd
- Чистый, передовой и эффективный дизайн.
- Упрощенный процесс загрузки.
- Одновременная и параллельная обработка при загрузке.
- Улучшенный API.
- Простой синтаксис модуля.
- Возможность удаления дополнительных компонентов.
- Низкое потребление памяти.
- Улучшенная техника выражения зависимостей.
- Инструкция инициализации записана в файле конфигурации, а не в сценарии оболочки.
- Используйте сокет домена Unix.
- Планирование заданий с использованием таймеров календаря systemd.
- Ведение журнала событий с помощью Journald.
- Выбор регистрации системных событий с помощью systemd, а также syslog.
- Журналы хранятся в двоичном файле.
- Состояние systemd можно сохранить для вызова позже в будущем.
- Отслеживайте процесс, используя контрольную группу ядра, а не PID.
- Вход пользователей управляется systemd-login.
- Улучшенная интеграция с Gnome для обеспечения совместимости.
Узкие места
- Все в одном месте.
- Не стандарт POSIX.
Интеграция Systemd и дистрибутива
- Linux Distribution
Интеграция
- Fedora
Да, первый дистрибутив, поддерживающий systemd
- Arch
Да
- RedHat
Да
- CentOS
Да
- Debian
-
Да, кодовое имя Debian 8 Jessie по умолчанию будет иметь systemd.
- Gentoo
Да, но необходимо загрузить, установить и настроить сторону с помощью пользовательской инициализации.
- OpenSUSE
Да
- Slack
Нет (хотя он до сих пор не был принят в Slackware, Патрик Волкердинг не дал никаких указаний, будет ли он принят или нет)
- Ubuntu
Да, необходимо установить и настроить с помощью Upstream.
Споры
Линус Торвальдс, главный архитектор ядра Linux, считает, что отношение ключевого разработчика systemd к пользователям и отчетам об ошибках не устраивает. Также сообщалось, что философия systemd — странный и чуждый способ управления системными процессами. То же самое время от времени записывалось от Патрика Волкердинга и других известных пользователей и разработчиков Linux, а также на онлайн-форумах.
Systemd против инициализации
Features | init | systemd |
DBus Dependency – Mandatory | No | Yes |
Device based Activation | No | Yes |
Device dependency configuration with udev | No | Yes |
Timer based Activation | Cron/at | Proprietary |
Quota Management | No | Yes |
Automatic Service Dependency Handling | No | Yes |
Kills users Process at logout | No | Yes |
Swap Management | No | Yes |
SELinux integration | No | Yes |
Support for Encrypted HDD | No | Yes |
Static kernle module loading | No | Yes |
GUI | No | Yes |
List all the child processes | No | Yes |
Sysv compatible | Yes | Yes |
Interactive booting | No | Yes |
Portable to non x86 | Yes | No |
Adopted on | Several Distro | Several Distro |
Parallel service startup | No | Yes |
Resource limit per service | No | Yes |
Easy extensible startup script | Yes | No |
Separate Code and Configuration File | Yes | No |
Automatic dependency calculation | No | Yes |
Verbose debug | Yes | No |
Version | N/A | V44+ |
Size | 560 KB | N/A |
Number of Files | 75 files | 900 files + glib + DBus |
Lines of code – LOC | 15000 (Approx) | 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) |
Заключение
Все, что работает с pid=1, не должно ломаться, не должно быть беспорядком и должно эффективно и результативно контролироваться пользователями. Многие пользователи считают, что замена init на systemd — это не что иное, как каждый раз заново изобретать велосипед как побочный эффект Linux. Но в этом заключается разнообразная природа Linux. Это потому, что Linux очень мощный. Изменения – это хорошо, и мы должны ценить их, если для этого есть веская причина.
На данный момент это все. Я снова буду здесь с еще одной интересной статьей, которую вы с удовольствием прочтете. А до тех пор следите за обновлениями и будьте на связи с Tecmint. Не забудьте оставить нам свой ценный отзыв в комментариях ниже.