Прежде всего, systemd
это не традиционный юникс init
. Systemd намного больше, поэтому сравнивать их немного несправедливо.
Чтобы ответить на этот вопрос, необходимы некоторые двоичные файлы и следующие файлы конфигурации:
/usr/lib/systemd/system/default.target
/usr/lib/systemd/system/basic.target
/usr/lib/systemd/system/sysinit.target
/usr/lib/systemd/system/getty.target
/usr/lib/systemd/system/getty@.service
/usr/lib/systemd/system/console-getty.service
выдача systemctl enable console-getty.service getty@tty2.service
затем создает эти символические ссылки:
/etc/systemd/system/default.target.wants/getty@tty2.service -> / lib / systemd / system / getty @ service
/etc/systemd/system/getty.target.wants/console-getty.service -> /lib/systemd/system/console-getty.service
ПРИМЕЧАНИЕ . Чтобы использовать systemd
специальные функции для agetty
динамического запуска , по требованию при нажатии Alt+ F3и т. Д., По-видимому, у вас также должны быть как минимум следующие два файла:
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
где autovt@.service
символическая ссылка на getty@.service
.
Содержимое конфигурационных файлов:
default.target
, getty.target
, sysinit.target
Файлы могут быть пустыми для кроме [Unit]
тега и (возможно) Description=xxx
.
basic.target
также содержит информацию о зависимости:
[Ед. изм]
Описание = Базовая система
Требуется = sysinit.target
Wants = sockets.target timers.target paths.target slices.target
After = sysinit.target sockets.target timers.target paths.target slices.target
Я не уверен, нужны ли ссылки на цели, которые не существуют как файлы, или нет. Они описаны на systemd.special(7)
странице руководства .
console-getty.service
: (Особый случай для agetty на консоли)
[Ед. изм]
Описание = Консоль Getty
After = systemd-user-sessions.service plymouth-quit-wait.service
Перед = getty.target
[Обслуживание]
ExecStart = - / sbin / agetty --noclear --keep-baud console 115200,38400,9600 $ TERM
Тип = простаивает
Restart = всегда
RestartSec = 0
UtmpIdentifier = минусы
TTYPath = / DEV / консоли
TTYReset = да
TTYVHangup = да
KillMode = процесс
IgnoreSIGPIPE = нет
SendSIGHUP = да
[Установить]
WantedBy = getty.target
getty@.service
: (универсальный конфиг для всех сервисов getty, кроме консоли)
[Ед. изм]
Описание = Getty на% I
After = systemd-user-sessions.service plymouth-quit-wait.service
Перед = getty.target
IgnoreOnIsolate = да
ConditionPathExists = / DEV / tty0
[Обслуживание]
ExecStart = - / sbin / agetty --noclear% I $ TERM
Тип = простаивает
Restart = всегда
RestartSec = 0
UtmpIdentifier =% I
TTYPath = / DEV /% Я
TTYReset = да
TTYVHangup = да
TTYVTDisallocate = нет
KillMode = процесс
IgnoreSIGPIPE = нет
SendSIGHUP = да
[Установить]
WantedBy = getty.target
DefaultInstance = tty1
Наконец, вам, вероятно, понадобятся некоторые из этих специальных двоичных файлов (я не пробовал, какие из них являются критическими)
/ lib / systemd / systemd (обычно это указывает на / sbin / init)
/ Библиотека / Systemd / Systemd-logind
/ Библиотека / Systemd / Systemd-контрольные группы агентов
/ Lib / Systemd / Systemd-пользовательские сеансы
/ Библиотека / Systemd / Systemd-vconsole-установка
/ Библиотека / Systemd / Systemd-обновление-utmp
/ Библиотека / Systemd / Systemd-сон
/ Библиотека / Systemd / Systemd-Sysctl
/ Библиотека / Systemd / Systemd-initctl
/ Библиотека / Systemd / Systemd-ответ-пароль
/ Библиотека / Systemd / Systemd-ас-мощность
/ Библиотека / Systemd / Systemd реактивировать
/ Библиотека / Systemd / Systemd-подсветка
/ Библиотека / Systemd / Systemd-binfmt
/ Библиотека / Systemd / Systemd-Bootchart
/ Библиотека / Systemd / Systemd-шины proxyd
/ Библиотека / Systemd / Systemd-CoreDump
/ Библиотека / Systemd / Systemd-Cryptsetup
/ Библиотека / Systemd / Systemd-Fsck
/ Библиотека / Systemd / Systemd-hostnamed
/ Библиотека / Systemd / Systemd-journald
/ Библиотека / Systemd / Systemd-журнально-gatewayd
/ Библиотека / Systemd / Systemd-журнально-пульт
/ Библиотека / Systemd / Systemd-localed
/ Библиотека / Systemd / Systemd-механическая обработка
/ Библиотека / Systemd / Systemd-модули нагрузки
/ Библиотека / Systemd / Systemd-многоместный-х
/ Библиотека / Systemd / Systemd-networkd
/ Библиотека / Systemd / Systemd-networkd-выжидательную онлайн
/ Библиотека / Systemd / Systemd-Quotacheck
/ Библиотека / Systemd / Systemd-случайные семена
/ Библиотека / Systemd / Systemd-Readahead
/ Библиотека / Systemd / Systemd-перемонтируйте-фс
/ Библиотека / Systemd / Systemd-разрешенная
/ Библиотека / Systemd / Systemd-rfkill
/ Библиотека / Systemd / Systemd-выключение
/ Библиотека / Systemd / Systemd-shutdownd
/ Библиотека / Systemd / Systemd-сокет-proxyd
/ Библиотека / Systemd / Systemd-timedated
/ Библиотека / Systemd / Systemd-timesyncd
/ Библиотека / Systemd / Systemd-udevd
/ Библиотека / Systemd / Systemd-обновление сделано
Подводя итог процессу запуска systemd, я думаю, что он работает примерно так:
- systemd находит
basic.target
(или все *.target
файлы?)
- зависимости разрешаются на основе
WantedBy=
, Wants=
, Before=
, After=
... директивы в [Install]
разделе о *.service
и *.target
конфигурационных файлов.
*.service
s, которые должны запускаться (которые не являются «специальными» службами), имеют [Service]
раздел с ExecStart=
директивой, указывающей исполняемый файл для запуска.