Tout d'abord, ce systemd
n'est pas un Unix traditionnel init
. Systemd est tellement plus, il est donc un peu injuste de comparer les deux.
Pour répondre à la question, ce qui semble nécessaire, ce sont quelques binaires et les fichiers de configuration suivants:
/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
l'émission systemctl enable console-getty.service getty@tty2.service
crée ensuite ces liens symboliques:
/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
REMARQUE : Pour utiliser systemd
les fonctionnalités spéciales de pour démarrer agetty
dynamiquement, à la demande en appuyant sur Alt+ F3et ainsi de suite, il semble que vous devez également avoir au moins ces deux fichiers:
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
où autovt@.service
est un lien symbolique vers getty@.service
.
Contenu des fichiers de configuration:
Le default.target
, getty.target
, les sysinit.target
fichiers peuvent être vides , sauf pour l' [Unit]
étiquette et (probablement) Description=xxx
.
basic.target
contient également des informations de dépendance:
[Unité]
Description = Système de base
Requiert = sysinit.target
Veut = sockets.target timers.target paths.target slices.target
After = sysinit.target sockets.target timers.target paths.target slices.target
Je ne sais pas si les références à des cibles qui n'existent pas en tant que fichiers sont nécessaires ou non. Ils sont décrits sur la systemd.special(7)
page de manuel.
console-getty.service
: (Cas particulier pour agetty sur la console)
[Unité]
Description = Console Getty
Après = systemd-user-sessions.service plymouth-quit-wait.service
Avant = getty.target
[Un service]
ExecStart = - / sbin / agetty --noclear --keep-baud console 115200,38400,9600 $ TERM
Type = inactif
Redémarrer = toujours
RestartSec = 0
UtmpIdentifier = contre
TTYPath = / dev / console
TTYReset = oui
TTYVHangup = oui
KillMode = processus
IgnoreSIGPIPE = non
SendSIGHUP = oui
[Installer]
WantedBy = getty.target
getty@.service
: (configuration générique pour tous les services de Getty sauf la console)
[Unité]
Description = Getty sur% I
Après = systemd-user-sessions.service plymouth-quit-wait.service
Avant = getty.target
IgnoreOnIsolate = oui
ConditionPathExists = / dev / tty0
[Un service]
ExecStart = - / sbin / agetty --noclear% I $ TERM
Type = inactif
Redémarrer = toujours
RestartSec = 0
UtmpIdentifier =% I
TTYPath = / dev /% I
TTYReset = oui
TTYVHangup = oui
TTYVTDisallocate = non
KillMode = processus
IgnoreSIGPIPE = non
SendSIGHUP = oui
[Installer]
WantedBy = getty.target
DefaultInstance = tty1
Enfin, vous avez probablement besoin de quelques-uns de ces binaires spéciaux (je n'ai pas essayé ceux qui sont essentiels):
/ lib / systemd / systemd (/ sbin / init pointe généralement vers cela)
/ lib / systemd / systemd-logind
/ lib / systemd / systemd-cgroups-agent
/ lib / systemd / systemd-user-sessions
/ lib / systemd / systemd-vconsole-setup
/ lib / systemd / systemd-update-utmp
/ lib / systemd / systemd-sleep
/ lib / systemd / systemd-sysctl
/ lib / systemd / systemd-initctl
/ lib / systemd / systemd-reply-password
/ lib / systemd / systemd-ac-power
/ lib / systemd / systemd-activate
/ lib / systemd / systemd-backlight
/ lib / systemd / systemd-binfmt
/ lib / systemd / systemd-bootchart
/ lib / systemd / systemd-bus-proxyd
/ lib / systemd / systemd-coredump
/ lib / systemd / systemd-cryptsetup
/ lib / systemd / systemd-fsck
/ lib / systemd / systemd-hostnamed
/ lib / systemd / systemd-journald
/ lib / systemd / systemd-journal-gatewayd
/ lib / systemd / systemd-journal-remote
/ lib / systemd / systemd-localed
/ lib / systemd / systemd-machined
/ lib / systemd / systemd-modules-load
/ lib / systemd / systemd-multi-seat-x
/ lib / systemd / systemd-networkd
/ lib / systemd / systemd-networkd-wait-online
/ lib / systemd / systemd-quotacheck
/ lib / systemd / systemd-random-seed
/ lib / systemd / systemd-readahead
/ lib / systemd / systemd-remount-fs
/ lib / systemd / systemd-resolu
/ lib / systemd / systemd-rfkill
/ lib / systemd / systemd-shutdown
/ lib / systemd / systemd-shutdownd
/ lib / systemd / systemd-socket-proxyd
/ lib / systemd / systemd-timedated
/ lib / systemd / systemd-timesyncd
/ lib / systemd / systemd-udevd
/ lib / systemd / systemd-update-done
Pour résumer le processus de démarrage de systemd, je pense que cela fonctionne comme ceci:
- systemd localise
basic.target
(ou tous les *.target
fichiers?)
- dépendances sont résolues basées sur
WantedBy=
, Wants=
, Before=
, After=
... directives dans la [Install]
section des *.service
et *.target
fichiers de configuration.
*.service
s qui doivent démarrer (qui ne sont pas des services "spéciaux"), ont une [Service]
section avec une ExecStart=
directive, qui indique l'exécutable à démarrer.