起動中のシステム依存関係の変更

起動中のシステム依存関係の変更

システム起動時にサービスの依存関係を再計算するようにsystemdに指示する方法を探しています。具体的には、別のサービスを有効にして後で同じ開始順序で2番目のサービスを開始するには、1つのサービスが必要です。これは自動化された展開プロセスの一部です。起動プロセスの最初にシステムが最初に起動すると、自動的に設定されます。取ることができるステップの1つは、追加のサービスを有効にすることです。残念ながら、その手順の変更は、次の再起動まで適用されないようです。初期展開後にコンピュータを再起動することはオプションではありません。

私が達成したいものの一般的なアイデアは次のとおりです。

/etc/systemd/system/firstboot.service:

[Unit]
Description=Enable MyService
DefaultDependencies=no
After=sysinit.target
Before=basic.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl enable myservice.service
ExecStartPost=/bin/systemctl disable firstboot.service

[Install]
RequiredBy=basic.target

/etc/systemd/system/myservice.service:

[Unit]
Description=MyService

[Service]
Type=simple
ExecStart=/usr/local/bin/myservice

[Install]
WantedBy=multi-user.target

残念ながら、期待どおりに動作しません。サービスが有効になっていますが、以前は開始されませんでしたmulti-user.target

$ systemctl status myservice
myservice.service - MyService
   Loaded: loaded (/etc/systemd/system/myservice.service; enabled)
   Active: inactive (dead)

systemctl isolate multi-user.targetマシンを再起動して強制的に起動できます。

systemctl daemon-reload追加および/またはsystemctl daemon-reexec/ExecStartExecStartPost試しましたが、firstboot.service何も機能しないようです。

起動パスを再計算し、起動時に変更を含めるようにsystemdに指示する方法はありますか?それとも、サービスを強制的に開始するには、起動プロセスの後半に何かをする必要がありますか?

関連情報