ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Понимание архитектуры системы, управляемой событиями 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