Назад | Перейти на главную страницу

Как использовать systemd-firstboot.service?

Я создаю образ Debian Jessie. При загрузке в системе нет /etc/machine-id файл. Это вызывает некоторые проблемы с журналом, который не запускается.

Я обнаружил, что в репозитории 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

Где его разместить, чтобы он работал?

В systemd 215 ConditionFirstBoot недоступен. Как с этим бороться?

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

В этой ситуации (поскольку вы делаете все это, чтобы попытаться получить идентификатор машины, чтобы заставить журнал работать), я думаю, я мог бы заменить ConditionFirstBoot проверкой файла, который вам нужен,/etc/machine-id.

Поэтому я бы, вероятно, переписал раздел Unit как:

[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

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