Jak korzystać z systemd-firstboot.service?

11

Robię obraz Debian Jessie. Podczas uruchamiania system nie ma /etc/machine-idpliku. Powoduje to pewne problemy z dziennikiem, który się nie uruchamia.

Znalazłem to w repozytorium systemowym:

#  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

Gdzie należy go umieścić, aby działał?

W systemd 215 ConditionFirstBoot nie jest dostępny. Jak sobie z tym poradzić?

Velkan
źródło

Odpowiedzi:

1

Jestem trochę zaskoczony, że nie zainstalowałeś tego skryptu po prostu instalując systemd, ale (ogólnie) myślę, że odpowiedź powinna brzmieć /etc/systemd/system.

W tej sytuacji (ponieważ robisz to wszystko, aby spróbować i dostać maszynę-ID w celu journald pracy), myślę, że mogę zastąpić ConditionFirstBoot z czekiem na pliku, który obchodzi, /etc/machine-id.

Prawdopodobnie więc ponownie napisałbym sekcję Unit jako:

[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

Biorąc to pod uwagę, jeśli możliwe byłoby dostarczenie nowszego systemu z twoim obrazem (nie jestem dobry w Debianie, więc nie mogłem znaleźć gdziekolwiek sprawdzić, jaka była najnowsza obsługiwana wersja), to może warto sprawdzić - systemd 215 ma kilka problemów, które zostały naprawione ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).

iwaseatenbyagrue
źródło
Tylko uwaga, aby dwukrotnie sprawdzić, czy proponowane rozwiązanie będzie działać. Kiedy kilka lat temu zacząłem obrazować system operacyjny kontrolowany przez system (oparty na Debianie 10, IIRC, gdy był jeszcze Sidem), moim pierwszym impulsem było usunięcie / etc / machine-id tuż przed obrazowaniem, wśród innych zadań usuwania osobowości. Efekt był dość dramatyczny: system stanowczo odmówił rozruchu i przeszedł w tryb odzyskiwania (cegła, jeśli wdrażasz chmurę VM). Poprawka została obcięta, ale zachowaj file ( : > /etc/machine-id). Może to już nie jest prawda, ale od tego czasu nauczyłem się traktować ten plik z wielkim szacunkiem i podziwem.
kkm