ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Понимание архитектуры системы, управляемой событиями Ubuntu

Понимание архитектуры системы, управляемой событиями Ubuntu

Linux, как мы знаем, — это ядро, а не полноценная операционная система, и он поставляется с различными дистрибутивами, такими как DebianFedoraUbuntu и другими.

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

Но как Ubuntu работает внутри? Какие процессы и события управляют её работой и почему они важны? В этой статье подробно рассматривается внутренняя работа Ubuntu, что делает её доступной даже для новичков.

 

Схема системы Ubuntu

В основе работы Ubuntu лежит надёжная система процессов, которые управляют основными функциями, такими как управление питанием, загрузка и обработка сбоев системы. Каждая системная служба в Ubuntu рассматривается как процесс, и у каждого процесса есть файлы конфигурации, расположенные в каталоге /etc/init/.

Эти файлы конфигурации определяют события, которые запускают старт и остановку процессов, превращая Ubuntu в систему, управляемую событиями.

Центральным элементом системы Ubuntu, управляемой событиями, является процесс init (процесс с идентификатором 1). Это первый процесс, который запускается при включении системы и продолжает работать до её выключения.

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

 

Переход от Upstart к systemd

Ubuntu ранее использовала Upstart, систему инициализации на основе событий, которая в последний раз обновлялась до версии 1.13.2 в сентябре 2014 года. Однако Upstart была снята с производства и с тех пор не обновлялась.

Ubuntu отказалась от Upstart с выходом версии 15.04 (Vivid Vervet) в апреле 2014 года, заменив её systemd в качестве системы инициализации по умолчанию.

Systemd — это более продвинутая система инициализации, которая управляет процессами и службами иначе, чем Upstart, обеспечивая большую гибкость, распараллеливание и лучший контроль над службами.

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

 

Понимание процесса загрузки в Ubuntu (Systemd)

При загрузке системы init запускается первым. Затем этот процесс запускает другие процессы в иерархическом порядке. В типичной системе Ubuntu с systemd последовательность загрузки состоит из ряда шагов и событий, которые запускают службы.

Вот разбивка иерархии загрузки:

 

Ключевые цели и события systemd

 

Управление процессами и событиями

В Ubuntu каждая системная служба или процесс связаны с событиями. Например, systemd и другие менеджеры служб используют файлы конфигурации, в которых указываются условия запуска и остановки служб. Эти условия определяют, когда должен запускаться процесс в зависимости от системных событий (например, при запуске системы или при монтировании определённого файла).

В модели, управляемой событиями Ubuntu, есть два типа процессов:

 

Службы или модули запускаются событиями и определяются файлами модулей, в которых указываются события, запускающие и останавливающие службу.

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

 

Иерархия процессов systemd

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

Иерархию можно визуализировать следующим образом:

Systemd (PID 1) -> Essential Services (e.g., mounting, kernel modules) -> Display Manager -> User Session

 

Ключевые службы и события в процессе загрузки

 

При необходимости во время загрузки запускаются другие ключевые процессы, такие как dbus (для межпроцессного взаимодействия), network-manager (для настройки сети) и udev (для управления устройствами).

 

Заключение

Процесс загрузки Ubuntu значительно изменился за прошедшие годы. В то время как более ранние версии использовали Upstart, современные версии Ubuntu (начиная с 15.04) используют systemd в качестве системы инициализации по умолчанию.

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

Разобравшись с ключевыми понятиями systemd, целями и событиями, вы сможете гораздо лучше понять, как Ubuntu работает во время загрузки и после неё.

Exit mobile version