Systemd и SysVinit: сравнение систем инициализации Linux | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Автор:

Научный руководитель:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №4 (503) январь 2024 г.

Дата публикации: 29.01.2024

Статья просмотрена: 30 раз

Библиографическое описание:

Николаев, А. М. Systemd и SysVinit: сравнение систем инициализации Linux / А. М. Николаев. — Текст : непосредственный // Молодой ученый. — 2024. — № 4 (503). — С. 25-30. — URL: https://moluch.ru/archive/503/110797/ (дата обращения: 02.05.2024).



В данной статье рассматривается сравнение систем инициализации Linux: SysVinit и systemd. Освещаются основные аспекты и роли этих систем, история появления и функциональность. Приводится анализ различий в модульности, управлении зависимостями и влиянии на современные дистрибутивы Linux.

Ключевые слова : гипервизоры, компьютерная безопасность, система инициализации, linux, systemd, sysvnit, unix.

Система инициализации является критически важным компонентом, который определяет, как операционная система (ОС) запускается и загружается. Эта система служит первым уровнем, который вступает в действие сразу после запуска ядра Linux [1], выполняя роль связующего звена между ядром ОС и высокоуровневыми приложениями.

О системах инициализации

Система инициализации выполняет несколько ключевых задач:

— Запуск процессов: она инициирует и управляет различными процессами, необходимыми для работы системы и пользовательских приложений: управление сетевыми соединениями, системными логами, планировщиком задач и другими критически важными сервисами.

— Управление зависимостями: система инициализации управляет порядком и условиями запуска служб, обеспечивая правильное разрешение всех необходимых зависимостей и запуск сервисов в нужном порядке.

— Контроль за процессами: после начальной загрузки система инициализации продолжает контролировать работающие процессы, перезапуская службы в случае их сбоя или остановки для обеспечения стабильности и надёжности системы.

Система инициализации играет важную роль в процессе выключения и перезагрузки системы, корректно останавливая службы и процессы для безопасного завершения работы системы. Процесс загрузки ОС на базе ядра Linux представлен на рисунке 1.

Процесс загрузки дистрибутива на базе ядра Linux

Рис. 1. Процесс загрузки дистрибутива на базе ядра Linux

В данной статье основное внимание уделяется двум важным и широко используемым системам инициализации в дистрибутивах на базе ядра Linux : SysVinit и Systemd [2–3]. Стоит отметить, что Unix -подобные ОС, использующие рассматриваемые системы инициализации, широко применяются системными администраторами, сетевыми администраторами и специалистами информационной безопасности.

Система инициализации SysVinit

SysVinit — система, лежащая в основе разработки Unix -подобных систем, долгие годы оставалась стандартом для многих дистрибутивов Linux . Её простота и предсказуемость сделали данную систему популярным выбором на протяжении многих лет. Однако, со временем, SysVinit был заменён новой системой инициализации — Systemd . Эта система была разработана Леннартом Поттерингом и Каем Зиверсом, а с середины 2010-х годов проект развивается силами Поттеринга и других сотрудников Red Hat. Systemd предложила расширенные возможности и иное управление системными процессами в Linux .

SysVinit , сокращение от « System V Init» , является традиционной системой инициализации для Unix -подобных ОС. История SysVinit берёт начало в ранних версиях Unix , где она стал стандартом для запуска и остановки системных служб и процессов. SysVinit работает последовательно, выполняя shell -скрипты инициализации, расположенные, как правило, в директории /etc/init.d , в соответствии с порядковыми номерами. Данная модель предлагает простую и понятную структуру, где каждый скрипт отвечает за определённый сервис или задачу.

Основные особенности SysVinit :

 последовательное выполнение скриптов, что обеспечивает лёгкость в понимании и отладке;

 простота управления сервисами через символические ссылки и скрипты;

 минимальные зависимости от стороннего программного обеспечения, что делает её правильным выбором систем с ограниченными ресурсами.

SysVinit долгое время служила надёжным фундаментом для многих дистрибутивов Linux , однако, с развитием технологий и растущими требованиями к эффективности управления системными процессами при использовании SysVinit проявляются некоторые ограничения.

Система инициализации Systemd

Система инициализации Systemd , появившаяся в 2010 году, была разработаны как более современная альтернатива SysVinit . Данная система предлагает загрузку системы за счёт параллельного запуска сервисов и активного управления зависимостями между ними. Systemd содержит ряд компонентов для управления системой и службами ( systemctl , Systemd - analyze ), что делает её более просто системой инициализации.

Специалисты отмечают ряд ключевых особенности Systemd :

 параллельный запуск сервисов, значительно ускоряющий процесс загрузки;

 сложная система управления зависимостями сервисов (когда исполнение одного сервиса зависит от другого), позволяющая более гибко настраивать службы;

 встроенные инструменты для журналирования и управления системными ресурсами.

Systemd быстро стала стандартом для большинства основных дистрибутивов Linux . С 2011 года Fedora стал первым крупным дистрибутивом, использующим systemd по-умолчанию. В том же году дистрибутив OpenSUSE также стал использовать systemd по-умолчанию. А с 2015 года такие дистрибутивы, как Ubuntu и Debian , перешли на данную систему инициализации, как стандартную.

Сравнительный анализ Systemd и SysVinit

При сравнении Systemd и SysVinit обнаруживаются ключевые различия, оказывающие влияние на функциональность, производительность и управление системой. Основные отличия представлены в таблице 1.

Таблица 1

Сравнение систем инициализации

Тип

SysVinit

Systemd

Архитектура и функциональность

Использует традиционный линейный подход к инициализации системы, что обеспечивает простоту. Может замедлять загрузку в сложных системах, но подходит для систем с меньшим количеством зависимостей сервисов друг от друга

Использует параллельный запуск сервисов, что ускоряет время загрузки в системах с множеством взаимосвязанных сервисов

Производительность и управление

В некоторых случаях может обеспечивать более быструю загрузку (на 29 % быстрее в проведенных измерениях, показанных далее в работе).

Требует меньше системных ресурсов из-за своей простоты, что важно для систем с ограниченными ресурсами

Обычно предполагается, что обеспечивает более быструю загрузку за счёт параллельного запуска сервисов, в некоторых случаях может быть менее эффективным по сравнению с SysVinit. Превосходит SysVinit в управлении службами и ресурсами, предлагая продвинутые инструменты для мониторинга и управления

В таблице 2 приведены различия в управлении процессами и сервисами.

Таблица 2

Различия управления процессами и сервисами

Тип

SysVinit

Systemd

Инструмент управления

shell -скрипты инициализации

unit -файлы

Управление процессами

Основано на shell -скриптах, запускаемых вручную

Используются unit-файлы для управления процессами, поддерживает зависимости между службами (одна служба может зависеть от другой)

Управление фоновыми процессами

Управляются shell -скриптами

Управление происходит с помощью unit -файлов

Логирование

Требуется внешняя фоновая служба

Используется внутренняя фоновая служба journald

Перезапуск служб

Нет встроенного механизма для автоматического перезапуска служб

Поддерживается автоматический перезапуск служб при сбоях

Сравнение по времени загрузки и потреблении оперативной памяти

Сравнения, демонстрирующие различия систем инициализации во времени загрузки и потреблении оперативной памяти, проводилось между дистрибутивами Debian 12.4 «Bookworm» (с Systemd ) [4] и DevuanDaedalus 5.0 (с SysVinit ) [5]. Данный выбор был сделан потому, что Devuan является ответвлением от Debian , основной особенностью которого является возможность выбора системы инициализации. Сравнение производилось в гипервизоре 2-го типа VMWareWorkstation 17 [6–7]. В качестве настроек были выбраны 4 потока и 4 гигабайта оперативной памяти. Пример работы SysVinit приведен на рисунке 2.

Пример работы SysVinit

Рис. 2. Пример работы SysVinit

Пример работы Systemd приведен на рисунке 3.

Пример работы Systemd

Рис. 3. Пример работы Systemd

В таблице 3 представлены измерения времени загрузки рассматриваемых систем инициализации.

Таблица 3

Время загрузки системы (дистрибутива) с различными системами инициализации

Сист.инициализации \Итерация

1

2

3

4

5

6

Среднее время, с

SysVinit

14.30

12.70

12.55

12.40

12.61

13.06

12.93

Systemd

19.63

18.06

17.88

17.51

18.10

18.33

18.25

Информация, представленная в таблице 3, позволяет сделать вывод, что дистрибутив с системой инициализации SysVinit в среднем загружается на 29 % быстрее, чем система с system при указанных настройка.

В таблице 4 представлены измерения количества потребляемой оперативной памяти рассматриваемых систем инициализации.

Таблица 4

Количество потребляемой оперативной памяти

Сист.инициализации \Итерация

1

2

3

4

5

6

Среднее количество, кБ

SysVinit

2000

1904

1960

1944

1996

1968

1962

Systemd

12336

12340

12152

12212

12292

12156

12248

Из таблицы можно сделать вывод, что система инициализации SysVinit в среднем потребляет на 84 % меньше оперативной памяти, чем Systemd .

Проблемы Systemd

Система инициализации Systemd , предлагая ряд улучшений в управлении системными процессами, столкнулась с критикой и рядом значимых проблем, включая ошибки и вопросы безопасности [8].

В таблице 5 приведены основные проблемы, связанные с вышеупомянутой системой инициализации.

Таблица 5

Проблемы Systemd

Тип

Проблема

Описание

Сбои в работе

Отключение Datadog

Обновление привело к отключению службы Datadog , повлекший убытки на сумму 5 миллионов долларов США [9]

Сбой в работе Azure

Выпуск версии Systemd 237–3ubuntu10.54 привел к нарушениям в DNS -запросах и сетевом подключении [10]

Уязвимости

Уязвимость в system-networkd

CVE -2018–15688 [11]

Уязвимость в system- journald

CVE -2018–16864, CVE -2018–16865, CVE -2018–16866 [12]

Технические недочеты

Хранение логов в бинарном формате

Компонент journald хранит логи в бинарном виде

Зависимость программного обеспечения от Systemd

Ограничение на изменение системных компонентов

Некоторые приложения и службы разрабатываются c зависимостью от Systemd , что приводит к невозможности замены отдельных компонентов системы. Например: графическое окружение Gnome зависит от компонента systemd - logind , использующийся для управления сеансами

Также одним из ключевых моментов дискуссии вокруг Systemd является её соответствие классическим принципам разработки программного обеспечения, присущим Unix [13], которые выделяют важность модульности, простоты и концепцию «одна программа — одна задача». С появлением данной системы инициализации возникли вопросы относительно важности данных принципов. Systemd представляет более комплексное решение, идущее в противоречии с традиционным подходом к разработке. Подобное объединение множества функций в один инструментарий приводит к увеличению сложности программного обеспечения.

Заключение

Проведя исследование, можно сделать вывод, что использование дистрибутивов с SysVinit подойдет для встраиваемых систем, когда важно использовать легковесную систему с компонентами, не потребляющими большого количества ресурсов.

Systemd благодаря утилите управления systemctl , входящей в стандартный пакет установки, подойдет для начинающих специалистов и энтузиастов, который хотят освоить системное администрирование, из-за простого и централизованного управления процессами и службами.

Литература:

  1. The Linux Kernel Archives. [Электронный ресурс]. — Режим доступа: https://www.kernel.org/ (Дата обращения: 19.01.2024).
  2. SysVinit Project. [Электронный ресурс]. — Режим доступа: https://savannah.nongnu.org/projects/sysvinit/ (Дата обращения: 19.01.2024).
  3. System and Service Manager (systemd). [Электронный ресурс]. — Режим доступа: https://systemd.io/ (Дата обращения: 19.01.2024).
  4. Debian News. [Электронный ресурс]. — Режим доступа: https://www.debian.org/News/2023/20231210 (Дата обращения: 20.01.2024).
  5. Devuan GNU+Linux. [Электронный ресурс]. — Режим доступа: https://www.devuan.org/os/announce/daedalus-release-announce-2023–08–14 (Дата обращения: 20.01.2024).
  6. Николаев А. М., Савицкий Д. Д. Анализ и сравнение популярных гипервизоров // Молодой ученый. 2023. № 24 (471). С. 23–26. ISSN: 2072–0297; eISSN: 2077–8295.
  7. VMWare. Understanding Virtualization. [Электронный ресурс]. — Режим доступа: https://www.vmware.com/topics/glossary/content/virtualization (Дата обращения: 20.01.2024).
  8. No Systemd. [Электронный ресурс]. — Режим доступа: https://nosystemd.org/ (Дата обращения: 21.01.2024).
  9. Inside Datadog’s $5M Outage (Real-World Engineering Challenges #9). The Pragmatic Engineer. [Электронный ресурс]. — Режим доступа: https://newsletter.pragmaticengineer.com/p/inside-the-datadog-outage (Дата обращения: 21.01.2024).
  10. systemd-udevd: Run net_setup_link on 'change' uevents to prevent DNS outages on Azure. Ubuntu. [Электронный ресурс]. — Режим доступа: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1988119 (Дата обращения: 21.01.2024).
  11. CVE-2018–15688. [Электронный ресурс]. — Режим доступа: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018–15688 (Дата обращения: 21.01.2024).
  12. System Down: A systemd-journald exploit. [Электронный ресурс]. — Режим доступа: https://www.openwall.com/lists/oss-security/2019/01/09/3 (Дата обращения: 21.01.2024).
  13. Керниган Б., Пайк Р. UNIX. Программное окружение: Пер. с англ. — Санкт-Петербург: Символ-Плюс, 2003. — 416 с., ил. ISBN 5–93286–029–4.
Основные термины (генерируются автоматически): система инициализации, CVE, оперативная память, параллельный запуск сервисов, процесс, система, таблица, баз ядра, время загрузки, программное обеспечение.


Ключевые слова

компьютерная безопасность, UNIX, Linux, гипервизоры, система инициализации, systemd, sysvnit

Похожие статьи

Задать вопрос