linux – 如何使用systemd-firstboot.service?

前端之家收集整理的这篇文章主要介绍了linux – 如何使用systemd-firstboot.service?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作Debian Jessie的形象.在启动时,系统没有/ etc / machine-id文件.这会导致一些无法启动的日志问题.

我在systemd repo中发现了:

#  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中.

在这种情况下(因为你正在做所有这些尝试并获得一个机器ID,以使日志工作),我想我可能会更换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).

猜你在找的Linux相关文章