Поиск по сайту:

История «init» и «systemd»: почему «init» нужно было заменить на «systemd» в Linux


Я подписан на несколько списков рассылки, связанных с различными дистрибутивами и приложениями Linux, просто чтобы быть в курсе того, что и где происходит. Какие новые ошибки? Какие патчи выпущены? Что ожидается в следующем выпуске? и многое другое. В наши дни список рассылки густо заполнен словами «Выбери свою сторону в Linux Divide», в основном в списке рассылки Debian и некоторых других.

Что такое «Выбери свою сторону в Linux Divide»?

Демон init будет заменен демоном systemd в некоторых дистрибутивах Linux, хотя многие из них уже реализовали его. Это создает/будет создавать огромный разрыв между традиционной защитой Unix/Linux и новой защитой Linux – программистами и системными администраторами.

В этой статье мы обсудим и решим все вопросы один за другим.

  1. Что такое инициализация?
  2. Что такое системд?
  3. Почему init нужно было заменить?
  4. Какими функциями будет обладать 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 в дистрибутиве, вот некоторые из них:

  1. Upstart — демон замены инициализации, реализованный в Ubuntu GNU/Linux и предназначенный для асинхронного запуска процесса.
  2. Epoch – демон замены инициализации, созданный с учетом простоты управления службами и предназначенный для однопоточного запуска процесса.
  3. Mudar – демон замены инициализации, написанный на Python, реализованный в Pardus GNU/Linux и предназначенный для асинхронного запуска процесса.
  4. 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
  1. Чистый, передовой и эффективный дизайн.
  2. Упрощенный процесс загрузки.
  3. Одновременная и параллельная обработка при загрузке.
  4. Улучшенный API.
  5. Простой синтаксис модуля.
  6. Возможность удаления дополнительных компонентов.
  7. Низкое потребление памяти.
  8. Улучшенная техника выражения зависимостей.
  9. Инструкция инициализации записана в файле конфигурации, а не в сценарии оболочки.
  10. Используйте сокет домена Unix.
  11. Планирование заданий с использованием таймеров календаря systemd.
  12. Ведение журнала событий с помощью Journald.
  13. Выбор регистрации системных событий с помощью systemd, а также syslog.
  14. Журналы хранятся в двоичном файле.
  15. Состояние systemd можно сохранить для вызова позже в будущем.
  16. Отслеживайте процесс, используя контрольную группу ядра, а не PID.
  17. Вход пользователей управляется systemd-login.
  18. Улучшенная интеграция с Gnome для обеспечения совместимости.
Узкие места
  1. Все в одном месте.
  2. Не стандарт 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. Не забудьте оставить нам свой ценный отзыв в комментариях ниже.