Як користуватися systemd-firstboot.service?


11

Я роблю зображення Дебіана Джессі. Під час завантаження система не має /etc/machine-idфайлу. Це спричиняє деякі проблеми з журналом, який не запускається.

Я виявив, що в системному репо:

#  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

Де його слід розмістити, щоб він запустився?

У systemd 215 ConditionFirstBoot недоступний. Як з цим боротися?

Відповіді:


1

Я трохи здивований, що у вас не було цього сценарію, щоб просто встановити systemd, але (загалом) я думаю, що відповідь полягає в тому, що вам слід його вкласти /etc/systemd/system.

У цій ситуації (так як ви робите все це , щоб спробувати отримати машинно-ідентифікатор для того, щоб зробити journald роботи), я припускаю , що я міг би замінити ConditionFirstBoot з чеком для файлу , який ви дбаєте про, /etc/machine-id.

Тому я, мабуть, переписав розділ «Одиниця» як:

[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

Коли це було сказано, якби можна було передати новішу систему з вашим зображенням (я не добре в Debian, тому я не міг ніде знайти, щоб перевірити, яка остання підтримувана версія), це, можливо, варто вивчити - systemd 215 має декілька проблем, які з тих пір були виправлені ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).


Просто примітка, щоб двічі перевірити, чи запропоноване рішення спрацює. Коли я пару років тому почав зображувати ОС під керуванням системою (на основі Debian 10, IIRC, коли він ще був Sid), моїм першим імпульсом було видалити / etc / machine-id безпосередньо перед зображенням, серед інших завдань щодо стирання особистості. Ефект був досить драматичним: система навідріз відмовилася завантажуватися та перейшла у режим відновлення (цегла, якщо ви розгортаєте хмарний vm). Виправлення було скорочено, але збережіть файл ( : > /etc/machine-id). Можливо, це вже навіть не вірно, але я навчився ставитися до цього файлу з великою повагою та побоюванням з тих пір.
ккм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.