Wie verwende ich systemd-firstboot.service?

11

Ich mache ein Bild von Debian Jessie. Beim Booten hat das System keine /etc/machine-idDatei. Dies verursacht einige Probleme mit dem Journald, der nicht startet.

Ich habe das im systemd repo gefunden:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=First Boot Wizard
Documentation=man:systemd-firstboot(1)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-remount-fs.service
Before=systemd-sysusers.service sysinit.target shutdown.target
ConditionPathIsReadWrite=/etc
ConditionFirstBoot=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=@rootbindir@/systemd-firstboot --prompt-locale --prompt-timezone --prompt-root-password
StandardOutput=tty
StandardInput=tty
StandardError=tty

Wo sollte es platziert werden, damit es läuft?

In systemd 215 ist der ConditionFirstBoot nicht verfügbar. Wie gehe ich damit um?

Velkan
quelle

Antworten:

1

Ich bin ein bisschen überrascht, dass Sie dieses Skript nicht installiert haben, weil Sie systemd einfach installiert haben, aber (im Allgemeinen) denke ich, dass die Antwort darin besteht, dass Sie es einfügen sollten /etc/systemd/system.

In dieser Situation (da Sie dies alles tun, um eine Maschinen-ID zu erhalten, damit Journald funktioniert), kann ich den ConditionFirstBoot möglicherweise durch eine Überprüfung der Datei ersetzen, die Sie interessiert /etc/machine-id.

Also würde ich den Unit-Abschnitt wahrscheinlich neu schreiben als:

[Unit]
Description=First Boot Wizard
Documentation=man:systemd-firstboot(1)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-remount-fs.service
Before=systemd-sysusers.service sysinit.target shutdown.target
ConditionPathIsReadWrite=/etc
ConditionPathExists=!/etc/machine-id

Abgesehen davon, wenn es möglich wäre, ein neueres Systemd mit Ihrem Image zu versenden (ich bin nicht gut in Debian, daher konnte ich nirgendwo nach der neuesten unterstützten Version suchen), könnte es sich lohnen, einen Blick darauf zu werfen - systemd 215 hat einige Probleme, die seitdem behoben wurden ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).

Ich wurde von der Wahrheit gegessen
quelle
Nur ein Hinweis, um zweimal zu überprüfen, ob die vorgeschlagene Lösung funktioniert. Als ich vor ein paar Jahren mit der Bildgebung von systemd-gesteuerten Betriebssystemen begann (basierend auf Debian 10, IIRC, als er noch Sid war), war mein erster Impuls, die / etc / machine-ID direkt vor der Bildgebung zu löschen, unter anderem Aufgaben zum Löschen der Persönlichkeit. Der Effekt war ziemlich dramatisch: Das System weigerte sich rundweg, zu booten, und ging in den Wiederherstellungsmodus (ein Baustein, wenn Sie eine Cloud-VM bereitstellen). Das Update wurde abgeschnitten, aber behalten Sie die Datei ( : > /etc/machine-id). Vielleicht stimmt das gar nicht mehr, aber ich habe gelernt, diese Datei seitdem mit großem Respekt und Ehrfurcht zu behandeln.
km