Erstens systemd
ist es kein traditionelles Unix init
. Systemd ist so viel mehr, also ist es ein bisschen unfair, die beiden zu vergleichen.
Um die Frage zu beantworten, scheinen einige Binärdateien und die folgenden Konfigurationsdateien erforderlich zu sein:
/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
Das Ausstellen systemctl enable console-getty.service getty@tty2.service
erzeugt dann diese Symlinks:
/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
HINWEIS : Um die systemd
speziellen Funktionen zum agetty
dynamischen Starten bei Bedarf beim Drücken von Alt+ F3und so weiter zu nutzen, müssen mindestens die folgenden beiden Dateien vorhanden sein:
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
wo autovt@.service
ist ein symlink zu getty@.service
.
Inhalt der Konfigurationsdateien:
Die default.target
, getty.target
, sysinit.target
Dateien können mit Ausnahme der leer sein [Unit]
Tag und (wahrscheinlich) Description=xxx
.
basic.target
enthält auch Abhängigkeitsinformationen:
[Einheit]
Beschreibung = Basissystem
Benötigt = sysinit.target
Wants = sockets.target timers.target paths.target slices.target
After = sysinit.target sockets.target timers.target paths.target slices.target
Ich bin nicht sicher, ob die Verweise auf Ziele, die nicht als Dateien existieren, benötigt werden oder nicht. Sie sind auf der systemd.special(7)
Manpage beschrieben.
console-getty.service
: (Sonderfall für agetty auf der Konsole)
[Einheit]
Beschreibung = Konsole Getty
After = systemd-user-sessions.service plymouth-quit-wait.service
Vorher = getty.target
[Bedienung]
ExecStart = - / sbin / agetty --noclear --keep-baud console 115200,38400,9600 $ TERM
Typ = Leerlauf
Neustart = immer
RestartSec = 0
UtmpIdentifier = cons
TTYPath = / dev / console
TTYReset = ja
TTYVHangup = yes
KillMode = Prozess
IgnoreSIGPIPE = no
SendSIGHUP = yes
[Installieren]
WantedBy = getty.target
getty@.service
: (generische Konfiguration für alle getty-Dienste außer der Konsole)
[Einheit]
Beschreibung = Getty auf% I
After = systemd-user-sessions.service plymouth-quit-wait.service
Vorher = getty.target
IgnoreOnIsolate = yes
ConditionPathExists = / dev / tty0
[Bedienung]
ExecStart = - / sbin / agetty --noclear% I $ TERM
Typ = Leerlauf
Neustart = immer
RestartSec = 0
UtmpIdentifier =% I
TTYPath = / dev /% I
TTYReset = ja
TTYVHangup = yes
TTYVTDisallocate = no
KillMode = Prozess
IgnoreSIGPIPE = no
SendSIGHUP = yes
[Installieren]
WantedBy = getty.target
DefaultInstance = tty1
Schließlich benötigen Sie wahrscheinlich einige dieser speziellen Binärdateien (ich habe nicht versucht, welche entscheidend sind):
/ lib / systemd / systemd (/ sbin / init zeigt normalerweise darauf)
/ lib / systemd / systemd-logind
/ lib / systemd / systemd-cgroups-agent
/ lib / systemd / systemd-Benutzersitzungen
/ 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-Hintergrundbeleuchtung
/ 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-bearbeitet
/ 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 aufgelöst
/ 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
Um den Startvorgang des Systems zusammenzufassen:
- systemd findet
basic.target
(oder alle *.target
Dateien?)
- Abhängigkeiten erfüllt sind , basierend auf
WantedBy=
, Wants=
, Before=
, After=
... Richtlinien im [Install]
Abschnitt der *.service
und *.target
Konfigurationsdateien.
*.service
s, die starten sollen (das sind keine "speziellen" Dienste), haben einen [Service]
Abschnitt mit einer ExecStart=
Direktive, die auf die zu startende ausführbare Datei hinweist.