Come usare systemd-firstboot.service?


11

Sto facendo un'immagine di Debian Jessie. All'avvio il sistema non ha /etc/machine-idfile. Ciò causa alcuni problemi con il journal che non si avvia.

L'ho trovato nel repository systemd:

#  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

Dove dovrebbe essere posizionato in modo che possa funzionare?

In systemd 215 ConditionFirstBoot non è disponibile. Come gestirlo?

Risposte:


1

Sono un po 'sorpreso che tu non abbia installato questo script semplicemente installando systemd, ma (in generale) penso che la risposta sia che dovresti inserirlo /etc/systemd/system.

In questa situazione (dal momento che si sta facendo tutto questo per cercare di ottenere una macchina-id, al fine di rendere il lavoro journald), credo che potrei sostituire il ConditionFirstBoot con un assegno per il file che ti interessano, /etc/machine-id.

Quindi probabilmente riscriverei la sezione Unità come:

[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

Detto questo, se fosse possibile spedire un systemd più recente con la tua immagine (non sono bravo su Debian, quindi non sono riuscito a trovare da nessuna parte dove controllare quale fosse l'ultima versione supportata), potrebbe valere la pena esaminare - systemd 215 ha alcuni problemi che sono stati risolti da allora ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).


Solo una nota per verificare due volte che la soluzione proposta funzionerebbe. Quando ho iniziato un sistema operativo di imaging controllato dal sistema operativo (basato su Debian 10, IIRC, quando era ancora Sid) un paio di anni fa, il mio primo impulso è stato quello di eliminare / etc / machine-id prima dell'imaging, tra le altre attività di cancellazione della personalità. L'effetto è stato piuttosto drammatico: il sistema ha rifiutato categoricamente di avviarsi ed è entrato in modalità di ripristino (un mattone se si sta distribuendo un cloud vm). La correzione è stata troncata ma conserva il file ( : > /etc/machine-id). Forse questo non è più vero, ma ho imparato a trattare questo file con grande rispetto e timore da allora.
kkm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.