Für SysV init
, ich brauche /etc/inittab
respawning getty Einträge, die /sbin/init
binäre, die Binärdateien und gemeinsam genutzte Bibliotheken für die Schale, login
die getty
die PAM / Sicherheit / shadow Sachen und ein paar Gerätedateien.
Denn upstart
ich brauche so ziemlich die gleichen Anforderungen, aber stattdessen habe /etc/inittab
ich ein paar *.conf
Dateien unter /etc/init
: eine * .conf, mit start on startup
der ein Runlevel gesetzt wird telinit
, und eine * .conf für jedes Tty, das getty
auf diesem Tty auf den entsprechenden Runlevels startet / respawnt .
Für welche Konfiguration und Binärdateien benötige ich systemd
init
?
Die Dokumentation, die ich finde, scheint sich auf die Verwendung eines bereits installierten Systems zum Starten und Beenden von Diensten zu konzentrieren.
Eine minimale Liste der zu kopierenden Dateien (mit Ausnahme des Kernels / initrd) aus einer laufenden Arch- oder Fedora- Installation reicht aus, aber ich kann anscheinend keine derartigen Informationen finden systemd
.
Was ich wissen möchte, ist, für systemd
welche Dateien erforderlich sind und was sie enthalten müssen, um eine Anmeldeshell zu starten, nachdem ein initramfs seinen switch_root
Aufruf an das ausführt systemd
/sbin/init
.
Beispiel für upstart
die Binärdateien und zwei *.conf
Dateien:
Datei /etc/init/whatever.conf
:
Beim Start starten gibt Runlevel aus Aufgabe Skript telinit 2 Skript beenden
Datei /etc/init/tty1.conf
:
starte auf Runlevel [12345] respawn exec / sbin / agetty -8 --noclear 38400 tty1 Linux
Beispiel für sysvinit
die Binärdateien und 1 conf-Datei mit dem Namen /etc/inittab
:
id: 2: initdefault: c1: 12345: respawn: / sbin / agetty 38400 tty1 linux
Jetzt bin ich hinter dem systemd
Äquivalent her.
Ich gehe davon aus *.service
, dass irgendwo mindestens 1 Datei mit einem [Service]
Eintrag mit ExecStart=-/sbin/agetty --noclear %I linux
und benötigt wird Restart=always
, aber was wird sonst noch benötigt?
Antworten:
Erstens
systemd
ist es kein traditionelles Unixinit
. 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:
Das Ausstellen
systemctl enable console-getty.service [email protected]
erzeugt dann diese Symlinks:HINWEIS : Um die
systemd
speziellen Funktionen zumagetty
dynamischen Starten bei Bedarf beim Drücken von Alt+ F3und so weiter zu nutzen, müssen mindestens die folgenden beiden Dateien vorhanden sein:wo
[email protected]
ist ein symlink zu[email protected]
.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: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)[email protected]
: (generische Konfiguration für alle getty-Dienste außer der Konsole)Schließlich benötigen Sie wahrscheinlich einige dieser speziellen Binärdateien (ich habe nicht versucht, welche entscheidend sind):
Um den Startvorgang des Systems zusammenzufassen:
basic.target
(oder alle*.target
Dateien?)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 einerExecStart=
Direktive, die auf die zu startende ausführbare Datei hinweist.quelle
[Install]
Abschnitt wird nicht von der Startsequenz verwendet, sondern nur vonsystemctl enable
. Was der Boot betrachtet, sind die Symlinks in/etc/systemd/system/basic.target.wants/
, die von erstellt werdensystemctl enable
.systemd
Erstellt automatisch ein getty, wenn Sie zu den Terminals wechseln, bis zu einer bestimmten maximalen Anzahl. Der Standardwert ist 6 (sodass Sie automatisch ein getty für Alt + F1 bis Alt + F6 erhalten). Wenn Sie diesen Parameter ändern möchten, können Sie ihn bearbeiten/etc/systemd/logind.conf
, um ihnNAutoVTs
in eine andere Zahl zu ändern (max. 12).Wenn ein getty auch dann erscheinen soll, wenn Sie nicht manuell wechseln, können Sie
/usr/lib/systemd/system/[email protected]
dem/etc/systemd/system/getty.target.wants/
Verzeichnis einen Symlink hinzufügen :Dies führt dazu,
getty.target
dass ein weiterergetty@
Service erforderlich ist . Ein Ziel ist eine Sammlung von Diensten, die erzeugt werden müssen, wobei Runlevel ersetzt werden, die Abhängigkeiten unterstützen. Das Standardziel ist abhängig vongetty.target
Siehe unter systemd FAQ in ArchWiki
edit: Ich habe ein bisschen mehr in der Dokumentation recherchiert .
Beim Booten
systemd
lädt der Daemon alle Systeme imdefault
Ziel und deren Abhängigkeiten. Ein Ziel wird durch die Dateien definiertEin Ziel verfügt über eine Liste der angehängten Dienste, die durch Symlinks in den Verzeichnissen angegeben werden
Die
/etc
Version überschreibt die Distributionsvorgaben in/usr/lib
. Es ist nur eine der.target
Dateien erforderlich, während keines der Verzeichnisse erforderlich istgetty
ist nur einer der Dienste, die unter anderem von Init-Skripten ausgeführt werden können. In der von mir überprüften Distribution (fedora, arch)getty
wird auf zwei verschiedene Arten ausgeführt:/usr/lib/systemd/system/[email protected]
Datei, in der der Name des Tty durchsystemd
den Dateinamen des Links ersetzt wird )logind
wenn der Benutzer auf ein virtuelles Terminal wechselt (ähnlich wie bei ältereninetd
Diensten nur, wenn eine Anforderung eingeht).logind
ist ein anderer Daemon, der mit verteiltsystemd
wird und dessen Konfiguration aus der/etc/systemd/logind.conf
Datei liest .Hoffe das ist befriedigend.
quelle
systemd
. Ich recherchiere ein bisschen darüber und es sieht ziemlich einfach aus, wenn man erst einmal versteht, wie das Zeug funktioniertsystemd
feindselig ist, wie bei einer feindseligen Übernahme der Art und Weise, wie ein offenes System startet. Es wendet GNU / Linux von Unix ab. Nicht zu sagen, dass das eine schlechte Sache ist, aber es ist ganz anders als es traditionell war. Und ein bisschen googeln bedeutet, dass ich nicht alleine bin.