Weiterführende Literatur

Weiterführende Literatur

Ich konvertiere eine SysV-Init-Style-Datei in eine Systemd-Unit-Datei und ihr Init-Abschnittsblock sieht folgendermaßen aus:

### BEGIN INIT INFO
# Provides:          ifcheck 
# Required-Start:    $local_fs 
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     S
# Default-Stop:      
# Short-Description: Network interfaces check & replace
# Description:       Checks if the interfaces were corrupted or if the special section is missing. If so, a default version will be copied over.
### END INIT INFO

Ich weiß, dass die Runlevel 0-6 verschiedenen Systemd-Zielen entsprechen:

╔══════════════════════╦═══════════════════╗
║ Run Level (SysVinit) ║  Systemd Target   ║
╠══════════════════════╬═══════════════════╣
│ Run level 0          │ poweroff.target   │
├──────────────────────┼───────────────────┤
│ Run level 1          │ rescue.target     │
├──────────────────────┼───────────────────┤
│ Run level 2          │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 3          │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 4          │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 5          │ graphical.target  │
├──────────────────────┼───────────────────┤
│ Run level 6          │ reboot.target     │
├──────────────────────┼───────────────────┤
│ Emergency            │ emergency.target  │
└──────────────────────┴───────────────────┘
(According to https://www.tecmint.com/change-runlevels-targets-in-systemd/ )

Aber ich habe noch nie Szuvor einen Runlevel gesehen. Ich habe geseheneinige Definitionen, die besagen, dass es für Einzelbenutzer istwährendEs gibt andere, die es als Synonym für andere Runlevel definierenund weiterhinandere haben keine schlüssige Definition.

Ich weiß, dass die Version, mit der ich arbeite, höchstwahrscheinlich dieLinux Standard Base-Spezifikationdenn unmittelbar nach dem Init-Info-Block folgt die Beschaffung derlsb-Init-Funktionen(Quelle: . /lib/lsb/init-functions). Außerdem läuft auf dem System Debian 8 Jessie.

Welches Ziel sollte ich in die entsprechende Systemd-Unit-Datei für den Runlevel einfügen S?

Antwort1

Shat keine direkte Entsprechung in systemd. Das systemd-sysv-generatorProgramm verarbeitet solche van Smoorenburg rc-Skripte nicht.

Debianverwendeteine gepatchte Version dieses Programms, die ein rcSkript umschloss, das Sinnerhalb einer Service-Einheit ohne Standardabhängigkeiten verwendet wurde und das von wanted-by war sysinit.target. Das war nicht perfekt, aber dannalleder Funktionsweise systemd-sysv-generatorist unvollkommen, da es keine allgemeingültige mechanistische Methode zum Übersetzen von van Smoorenburg rc-Skripten gibt.

Die Debian-Systemd-Leute haben den Patch bereits im Juli 2016 abgeschafft, als sie glaubten, dass alle rcin Debian verwendeten Van-Smoorenburg-Skripte Sdurch richtige Service-Units ersetzt worden seien. Ihr Skript scheint selbst entwickelt zu sein.

In diesem Fall ist es besser, wenn Sie den SRunlevel komplett vergessen. Meine fundierte Vermutung, die nur auf der Beschreibung basiert, ist, dass Sie eigentlich eine Service-Unit erstellen sollten, die:

DefaultDependencies=nein
Nach=local-fs.target
Vorher=Netzwerk-Vorher.Ziel
Will=Netzwerk-Vorgabe.Ziel
und das ist Wanted-Byevtl. auch was passendes basic.target.

Je nachdem, was Ihr Dienst tatsächlich tut, kann diese Reihenfolge local-fs.targetauch übertrieben sein. Aber das können nur Sie selbst entscheiden.

Weiterführende Literatur

verwandte Informationen