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