- Загрузка системы #
- Загрузчик ОС #
- Загрузка ОС #
- Задачи системы инициализации #
- Стадии загрузки ОС #
- Варианты реализации стадий #
- Службы #
- Настройка systemd #
- Каталоги конфигурации systemd #
- Управление службами systemd #
- Управление состоянием системы #
- Указание зависимостей #
- Systemd-manager — графический интерфейс для управления системой запуска Linux
- systemd-ui (systemadm)
Загрузка системы #
flowchart TB power(«Подача питания») bios[«Загрузка микрокода материнской платы»] hw_init[«Инициализация ключевых компонентов»] loader_search[«Поиск загрузчика»] loader_init[«Передача управления загрузчику»] os_init[«Загрузка ядра ОС»] power —> bios bios —> hw_init —> loader_search —> loader_init —> os_init
Существует несколько стандартов для реализации систем загрузки
- BIOS, Basic Input Output System
- UEFI, Unified Extensible Firmware Interface
- EFI, Extensible Firmware Interface
- Множество закрытых решений
Загрузчик ОС #
Задачей загрузчика ОС является поиск ядра ОС с дальнейшей передачей ядру управления. Загрузчик может иметь интерактивный интерфейс для выбора вариантов ОС для загрузки
В GNU/Linux для загрузки ОС применяется связка из
- ядра ОС, являющегося бинарным исполняемым файлом
- initrd, Initial RAM Disk, образа временной файловой системы, необходимой ядру для дальнейшей загрузки системы
В рамках initrd поставляются:
- Модули ядра ОС, необходимые для работы с оборудованием на данном компьютере
- Служебные приложения, нужные для загрузки модулей и настройки системы
Загрузка ОС #
В рамках загрузки ядра ОС происходит поиск всего оборудования и его инициализация
После того как всё оборудование готово к работе, ядро запускает процесс-инициализации init
Существует множество систем инициализации:
Сравнение разных систем предоставляет проект Gentoo
Задачи системы инициализации #
Система инициализации может также выполнять действия других системных служб
- Подключение файловых систем (обычно да)
- Настройка сетевых интерфейсов (обычно нет)
- Запуск задач по расписанию (обычно нет)
- Журналирование работы служб (обычно нет)
- Управление входом пользователей в систему (обычно нет)
- Создание виртуальных файлов для устройств (обычно нет)
- Управление временем системы (обычно нет)
Стадии загрузки ОС #
При запуске системы обычно рассматриваются следующие стадии
- Настройка ключевых служб, поддержка работы сессии суперпользователя
- Поддержка работы множества пользователе
- Поддержка работы с графическим пользовательским интерфейсом
Также система инициализации должна выполнять корректное выключение системы, т.е. выключать службы в правильном порядке
Варианты реализации стадий #
SysV Runlevel | systemd Target | Notes |
---|---|---|
0 | poweroff.target, runlevel0.target | Halt the system. |
1, s, single | rescue.target, runlevel1.target | Single user mode. |
2, 4 | multi-user.target, runlevel2.target, runlevel4.target | User-defined/Site-specific runlevels. By default, identical to 3. |
3 | multi-user.target, runlevel3.target | Multi-user, non-graphical. Users can usually login via multiple consoles or via the network. |
5 | graphical.target, runlevel5.target | Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login. |
6 | reboot.target, runlevel6.target | Reboot |
emergency | emergency.target | Emergency shell |
Службы #
Служба обычно представляет собой некоторое приложение, которое постоянно запущено и которое предоставляет полезные услуги пользователю или другим приложениям
- Приложение реагирует на некоторые сигналы и выполняет некоторые действия
- Сигнал от ядра ОС о добавлении нового устройства
- Сигнал по шине взаимодействия, запрос на выполнение операции
- Сигнал по сетевому интерфейсу, выполнение действия
- Файловая система с файлами службы уже доступна на момент запуска службы
- Сетевой интерфейс уже настроен и готов обрабатывать запросы
- Служба базы данных запущена и готова обрабатывать запросы
Службы также могут представлять собой действия, выполняющиеся с некоторой регулярностью
Настройка systemd #
Для описания всех компонентов systemd используются файлы модулей (unit), в которых описывается поведение конкретного компонента. В настоящий момент systemd поддерживает следующие виды модулей:
Тип модуля Описание Target A group of units that defines a synchronization point. The synchronization point is used at boot time to start the system in a particular state. Service A unit of this type starts, stops, restarts or reloads a service daemon such as Apache webserver. Timer A unit of this type activates/deactivates specified service based on a timer or when the set time is elapsed. Socket A unit of this type activates a service when the service receives incoming traffic on a listening socket. Device A unit of this type implements device-based activation such as a device driver. Тип модуля Описание Mount A unit of this type controls the file-system mount point. Automount A unit of this type provides and controls on-demand mounting of file systems. Swap A unit of this type encapsulates/activates/deactivates swap partition. Path A unit of this type monitors files/directories and activates/deactivates a service if the specified file or directory is accessed. Snapshot A unit that creates and saves the current state of all running units. This state can be used to restore the system later. Slice A group of units that manages system resources such as CPU, and memory. Scope A unit that organizes and manages foreign processes. busname A unit that controls DBus system. Каталоги конфигурации systemd #
Список можно посмотреть в man-руководстве systemd.unit
- Пути для поиска модулей системного уровня
- /etc/systemd/system.control/*
- /run/systemd/system.control/*
- /etc/systemd/system/* — Файлы, созданные администратором
- /run/systemd/system/*
- /lib/systemd/system/* — Файлы, установленные вместе с пакетом приложения
- …
- ~/.config/systemd/user.control/*
- ~/.config/systemd/user/*
- $XDG_CONFIG_DIRS/systemd/user/*
- /etc/systemd/user/*
- $XDG_RUNTIME_DIR/systemd/user/*
- /run/systemd/user/*
- …
Управление службами systemd #
Дейтвие Команда Отобразить состояние systemd systemctl status Отобразить список запущенных модулей systemctl или systemctl list-units Отобразить список упавших модулей systemctl —failed Отобразить список конфигурационных файлов модулей systemctl list-unit-files Отобразить статус модуля по PID процесса systemctl status PID Дейтвие Команда Комментарий Отобразить страницу руководства, ассоциированную с данной службой systemctl help UNIT если указана в конфигурации модуля Отобразить статус модуля systemctl status UNIT показывает запущен или остановлен модуль Проверить включён ли модуль systemctl is-enabled UNIT Управление состоянием службы. Все в данном разделе требуют прав суперпользователя
Дейтвие Команда Запустить модуль systemctl start UNIT Остановить работу модуля systemctl stop UNIT Перезапустить модуль systemctl restart UNIT Дать команду службе перечитать конфигурацию systemctl reload UNIT Перечитать конфигурацию systemd systemctl daemon-reload Настроить автоматический запуск модуля при старте системы systemctl enable UNIT Настроить автоматический запуск модуля при старте системы и сразу запустить его systemctl enable —now UNIT Отключить автоматический запуск модуля при старте системы systemctl disable UNIT Отключить и настроить автоматический запуск модуля systemctl reenable UNIT Управление состоянием системы #
Данные действия надо выполнять от имени суперпользователя
Дейтвие Команда Выключить ОС и перезагрузить компьютер systemctl reboot Выключить ОС и обесточить компьютер systemctl poweroff Приостановить работу ОС с сохранением данных в оперативной памяти systemctl suspend Приостановить работу ОС с сохранением данных в разделе подкачки systemctl hibernate Приостановить работу ОС с гибридным сохранением состояния systemctl hybrid-sleep Указание зависимостей #
- В классическом SysVInit необходимо было следить за включением службы в нужный уровень выполнения
- В рамках systemd каждая служба указывает список зависимостей
- Явные зависимости от других служб
- Неявные зависимости через включение в конкретную цель
- Создание сервиса systemd
- Таймеры systemd вместо crond
Systemd-manager — графический интерфейс для управления системой запуска Linux
Не так давно я рассказывал о консольной (терминальной) утилите systemd-analyze.
В этой статье пойдёт речь о приложении Systemd-manager.
Systemd-manager представляет собой приложение для управления службами systemd, написанное на языке программирования Rust с GTK3, в качестве графического интерфейса пользователя к консольной утилите systemd-analyze.В Systemd-manager модули отфильтрованы в три отдельных списка: сервисы, сокеты и таймеры. Когда юнит выбирается на левой панели, правая панель обновляется информацией, относящейся к этому юниту, а правая панель заголовка обновляется, чтобы отражать состояние юнита, где вы можете отключить/включить и запустить/остановить выбранный юнит.
Units (юниты) — это службы, которые активируются во время загрузки системы.
Сокеты — это юниты, которые активируются, когда они необходимы, а таймеры — это юниты, которые активируются через регулярный интервал времени. В дополнение к отображаемым юнитам, Systemd-manager также предоставляет статистику, сгенерированную systemd-analysis, в представлении Systemd Analyze.Установка Systemd-manager в Ubuntu и производные
Выполните в терминале следующие команды:
cd /tmp; wget https://github.com/mmstick/systemd-manager/releases/download/0.4.7/systemd-manager_0.4.7_amd64.deb; sudo dpkg -i systemd-manager_0.4.7_amd64.deb
По окончании установки вы найдёте Systemd-manager в системном меню.
Как пользоваться Systemd-manager?
В левой колонке Systemd Units отображён перечень служб и в каждой строке против службы отображены сервисы. Если сервис отмечен двойным флажком, значит сервис запущен и работает, а если сервис помечен двумя крестиками, значит он отключен и остановлен.
Для отключения/включения того или иного сервиса, активируйте строку с сервисом Systemd Units и в верху правой колонки используйте функции Enabled и Stop, в зависимости от того, что вы хотите: Enabled — отключить; Stop — остановить и наоборот: Enabled — включить; Start — запустить.
Когда вы сделали необходимые изменения в окне Systemd-manager, сохраните свои изменения нажатием на кнопке Сохранить.
Помимо отключения/включения сервисов, Systemd-manager также отображает анализ загрузки системы:
И время каждого запущенного сервиса в колонке Blame:
Systemd-manager — отличное приложение. Но имейте ввиду, что если вы не знаете что конкретно отключаете, то служба не будет работать в системе, либо система может не запуститься.
Поэтому всегда перед редактированием служб systemd делайте бэкап системы с Timeshift, для её возврата в прежнее состояние.Спасибо за внимание и удачи.
P.S. Если у вас появились вопросы или мнения по данной статье, обсудить их можно на нашем форуме:
http://compizomania.54672.x6.nabble.com/Systemd-manager-Linux-td8243.htmlСсылка на источник compizomania
13-02-2019.systemd-ui (systemadm)
systemd-ui (systemadm) — простое Vala / GTK (libgee) графическое приложение для настройки служб SystemD (System and Service Manager), функционал приложения основан на возможностях systemctl (основная команда для мониторинга и управления systemd).
systemd — диспетчер системы и управления службами GNU Linux систем. Основной особенностью является интенсивное распараллеливание запуска служб в процессе загрузки системы, запуск служб по требованию и отслеживание процессов. Поддерживает создание снимков состояния системы и восстановления из них, следит за монтированием файловых систем и точками автоматического монтирования, а также реализует проработанную логику управления службами на основе зависимостей.
systemd-ui выводит в главном окне имеющиеся модули и отображает их статус, список модулей можно сортировать и фильтровать. Для выбранного модуля можно просмотреть существующие зависимости, а их статус выделяется соответствующим цветом. С помощью кнопок «Пуск«, «Стоп«, «Перезапуск» и «Перезагрузить» можно активировать или остановить соответствующие модули.
systemd-ui кнопками в верхнем-правом углу позволяет сделать «Снимок системы«, чтобы сохранить текущее состояние системы, а также «Восстановить конфигурацию«, для того чтобы восстановить предыдущее состояние системы. После «Восстановления» система перезагружает службы, которые были остановлены до «Сохранения«. Настройки ведения журнала или управления сеансами не предусмотрено, для работы с приложением требуются права администратора ( root ), управление ориентировано на использование мыши.
Лицензия: GNU General Public License version 2.0 (GPLv2)