web-dev-qa-db-ja.com

systemd-firstboot.serviceの使用方法

Debian Jessieのイメージを作成しています。起動時にシステムには/etc/machine-idファイル。これにより、journaldで起動しない問題が発生します。

私はそれを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は使用できません。それに対処するには?

11
Velkan

単にsystemdをインストールしただけではこのスクリプトが用意されていなかったことに少し驚いていますが、(一般的に)/etc/systemd/system

この状況では(journaldを機能させるためにmachine-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 )。

1