我正在制作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).