インストールされた(起動していない)システムでシステムサービスを生成する「正しい方法」とは何ですか?

インストールされた(起動していない)システムでシステムサービスを生成する「正しい方法」とは何ですか?

そこに多くの指示があります基本システムサービスファイルの生成しかし、彼らは(そうする必要があります)とsystemctl daemon-reloadダイヤルするように指示するようですsystemctl enable。マウントされたが起動していないドライブにサービスを追加する必要がある場合(システムオーケストレーションを考えてみてください)、ファイルシステム(ファイル、ディレクトリ、シンボリックリンク)に書き込むだけでこれをどのように実行できますか?

私は「あなたのXがどこに住んでいるかによって異なります」ということがあると確信して大丈夫です。移植性が制限されていない場合もあります。私は計画がうまくいくかどうかを確認したいだけです。

計画は次のとおりです。

  1. サービスファイルの書き込み/usr/lib/systemd/system/
  2. これへのシンボリックリンクは以下から来ています。/etc/systemd/system/multi-user.target.wants/

答え1

デフォルトでは、提案された内容がどのようにsystemctl enable機能するかは、[Install]サービスファイルのセクションを見て、マークされた適切な.target.wantsディレクトリにシンボリックリンクを追加しますWantedBy=。 ~によるとマニュアルsystemd.unitページsystemctl、実行方法を複製するには、他のガイドラインも確認することをお勧めします。

  • Alias=デバイスと同じディレクトリにシンボリックリンクを作成します。
  • RequiredBy=.target.requires適切なディレクトリにシンボリックリンクを作成します。
  • Also=関連デバイスのインストール(各リンクがどのデバイスをインストールしているかを確認)
  • DefaultInstance=インスタンスユニットのデフォルト名( -> など)を使用してシンボリックリンクを追加します。multi-user.target.wants/[email protected][email protected]

ただし、まったく異なるアーキテクチャ用のファイルシステムをインストールしない限り、これらのファイルシステムを手動で作成する必要はありません。systemctlユニットファイルは現在実行中でなくても問題なくインストール/削除される可能性があるため、systemd(正しいディレクトリルートで実行している場合)の使用に問題はありません。もちろんデーモンがないので実行する必要はありません!私はGentooインストールの終わりにブートデバイス(友達など)を追加するためにこの方法を使用しましたが、問題なく動作しました。systemctl enabledisablechrootdaemon-reloadsystemd-networkd

答え2

systemctl enableロゴと共に使用されます--root。このフラグは、デバイスがファイルを検索するルートディレクトリを設定するだけでなく、systemctlシステムデーモンと通信せずにファイルシステムが直接動作するように指示します。

関連情報