システムは初めてサービスを開始し、システムを再起動します。

システムは初めてサービスを開始し、システムを再起動します。

私はDebianプリセットを使って「基本」Linux OSを構築しています。ここでは、デバイス固有の設定、つまりホスト名を指定するために最初に起動したときに実行される "firstboot.service"を作成しました。各デバイスでプロビジョニングを実行するのではなく、clonezillaを介して基本イメージをキオスクにデプロイします。

最初のブートをConditionFirstBoot = trueに強制するために、Clonezilleイメージを作成する前の最後のステップで/ etc / machine-idファイルを削除しました。

カスタマイズが完了したら、最初の起動スクリプトでキオスクを自動的に再起動するにはどうすればよいですか?これを行うと、カスタム(ホスト名など)が再起動されるまでlightdmは自動的にログインしません。

強制再起動しようとしましたが、機能せずエラーが発生します。

最初の起動スクリプトで再起動を実行するには?

Firstboot.service コンテンツ/lib/systemd/system/firstboot.service

[Unit]
Description=FirstBootSetup
ConditionFirstBoot=true

[Service]
Type=idle
RemainAfterExit=yes
ExecStart=/bin/bash /root/firstboot.bash

[Install]
WantedBy=multi-user.target

firstboot.service /root/firstboot.bashによって実行されるスクリプト

systemd-machine-id-setup
hostname "RANDOM"

if [ -f /etc/machine-id ]; then
  systemctl --force --force reboot
endif

systemctl 状態の最初の起動

systemctl status firstboot
firstboot.service - FirstBootSetup
Loaded: loaded (/lib/systemd/system/firstboot.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2019-02-07 11:41:45 AEST; 1h 00min ago
Process: 562 ExecStart=/bin/bash /root/firstboot.bash (code=exited, status=2)
 Main PID: 562 (code=exited, status=2)

ベストアンサー1

シェルスクリプトの構文が正しくなく、シェルがコマンドをまったく実行しないことがわかりました。質問コメントで述べたように、そうする必要がありますが、fi実際にはそうですendif

おすすめ記事