私はDebianを頻繁にインストールします。これには完全に自動化されたpreseed.cfgがあります。プロビジョニングが完了したら、TFTPサーバーからpostinstall.shスクリプトをダウンロードして実行し、いくつかの追加のカスタマイズを実行します。
GNOMEからLXQTEに切り替えて、GDMの代わりにSDDMを使用しています。しかし、SDDMは私のハードウェアと比較して早すぎる起動を試みます。この問題を解決するために、systemctl edit sddm
以下を追加しました。
[Service]
ExecStartPre=/bin/sleep 5
これは非常にうまく機能するので、postinstall.shスクリプトに追加してこのプロセスを自動化したいと思います。しかし、systemctl edit
bashスクリプトを介してファイルの内容を渡す方法がわかりません。どうすればいいですか?
ベストアンサー1
上書きできます$SYSTEMD_EDITOR
環境変数を実行するときは、エディタ以外のコマンドを使用してくださいsystemctl edit
。
たとえば、このようなものを使用するとうまくSYSTEMD_EDITOR='cp /path/to/source.file'
動作するようです(とても醜いですが、最後のパラメータがsystemdによって追加されると期待しています!)
場合によっては、以下を使用できます。
$ { echo "[Service]";
echo "ExecStartPre=/bin/sleep 5";
} >~/tmp/sddm-override.conf
$ sudo env SYSTEMD_EDITOR="cp $HOME/tmp/sddm-override.conf" systemctl edit sddm
しかし、実際にすべきことは、systemctl edit
ディレクトリの下にオーバーレイファイル(この場合はname override.conf
)を作成し/etc/systemd/system/<service>.service.d/
、存在しない場合はオーバーレイファイルを作成することです。したがって、直接的な方法で行うことも完全に許容されます。 (「挿入」と「上書き」の参照を参照してください。systemd.unitのマニュアルページ詳細については。 )
したがって、あなたの場合、これは適切なソリューションになります。
$ sudo mkdir -p /etc/systemd/system/sddm.service.d/
$ { echo "[Service]";
echo "ExecStartPre=/bin/sleep 5";
} | sudo tee /etc/systemd/system/sddm.service.d/10-startup-delay.conf
$ sudo systemctl daemon-reload
これにより、デバイスの「ドロップ」ディレクトリに期待される内容を含むファイルが配置されます。その場合は、実行する操作に応じて適切に名前を付けることもできます。
修正する:@GracefulRestartが指摘したように、systemctl daemon-reload
プラグインを直接追加した後にこれを行う必要があります。