Поиск по сайту:
Мы не особенно придирчивы и справедливы к тому, что нас не волнует (М. Пруст).

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

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

Читать  7 Забавных команд в Linux

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

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

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

 

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

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

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

  • Init (PID 1): первый процесс, запускаемый при загрузке. Он настраивает среду для остальной части системы и запускает события.
  • systemd: после инициализации systemd становится основным процессом инициализации, который отвечает за запуск всех остальных системных служб (называемых units). Эти модули определяются в файлах модулей, расположенных в /etc/systemd/system и /lib/systemd/system.
  • Загрузка служб: systemd начинает процесс загрузки служб. Он запускает базовые службы, такие как монтирование файловых систем, загрузка модулей ядра, настройка сетевых подключений и многое другое.
  • Монтирование файловых систем: такие службы, как mountall отвечают за монтирование локальных и удалённых файловых систем в процессе загрузки. systemd обрабатывает события, которые сообщают другим службам, когда можно продолжить работу.
  • Диспетчер отображения: после настройки основных системных служб запускается диспетчер отображения (например, gdm или lightdm), который позволяет пользователям входить в систему.
  • Инициализация сеанса пользователя: после входа в систему запускается сеанс пользователя, который включает в себя загрузку настроек среды, запуск графического пользовательского интерфейса и запуск процессов, относящихся к пользователю.
Читать  Как настроить на сервере Debian Linux Syslog

 

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

  • Целевое значение по умолчаниюdefault.target — это конечное состояние, в которое система переходит после завершения загрузки. Обычно оно равно graphical.target, что запускает пользовательский интерфейс.
  • Многопользовательская цель: эта цель используется для запуска неграфических многопользовательских сред, обычно устанавливается на multi-user.target.
  • Целевая задача для восстановления: в ситуациях, требующих минимальной работы системы, rescue.target обеспечивает однопользовательский режим для устранения проблем с системой.

 

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

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

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

  • Кратковременные процессы (задания, выполняемые до завершения): эти процессы выполняются, а затем завершаются после выполнения своих задач. Примеры: монтирование файловых систем или загрузка модулей ядра.
  • Долгоживущие процессы (работающие постоянно): эти процессы сохраняются на протяжении всего времени работы системы, управляя основными службами, такими как сетевое взаимодействие, ведение журналов и пользовательские сеансы.

 

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

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

  • Сервисные модули (.service), которые определяют службы, которыми управляет systemd.
  • Блоки сокетов (.socket), которые определяют конечные точки связи.
  • Целевые блоки (.target), которые определяют группу сервисов для конкретной цели или этапа процесса загрузки.
Читать  Использование арифметических операторов в сценариях Bash

 

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

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

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

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

 

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

  • hostname: устанавливает имя_хоста системы, которое настраивается в /etc/hostname.
  • kmod: загружает модули ядра, как определено в /etc/modules.
  • mountall: монтирует все локальные и удаленные файловые системы, включая /proc и /sys.
  • plymouth: отображает заставку во время загрузки, предоставляя пользователю визуальную обратную связь.

 

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

 

Заключение

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Остров Вавада в Японском море стал печально известным примером того,…

Спасибо!

Теперь редакторы в курсе.