Васильев Андрей Михайлович, 2023
Версии презентации
Существует несколько стандартов для реализации систем загрузки
Задачей загрузчика ОС является поиск ядра ОС с дальнейшей передачей ядру управления. Загрузчик может иметь интерактивный интерфейс для выбора вариантов ОС для загрузки
В GNU/Linux для загрузки ОС применяется связка из
В рамках 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 используются файлы модулей (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. |
Список можно посмотреть в 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 | 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 |