修正する

修正する

ネットワーク設定を保存するいくつかのマウントを設定する必要がある新しいサービス(Debian Jessieの下)を設定しようとしています。したがって、サービスは次のようになります。十分Networking.serviceが起動する前。

私は以下を試しました:

[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
#Before=network-pre.target
Before=networking.service

[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes

[Install]
RequiredBy=networking.service

以下を使用すると、systemd-analyze plotサービスが開始されますが、networking.service約3秒早く開始されることがわかります。

ここに画像の説明を入力してください。

明らかに私の設定は間違っていますが、問題を見つけるのに苦労しています。どんな助けにも感謝します。

修正する

local-fs.target現在、次の代わりに以前に開始されるようにサービス構成を変更して、networking.serviceこの問題を解決してください。

[Unit]
DefaultDependencies=no
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
Before=local-fs.target

[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes

[Install]
RequiredBy=local-fs.target

しかし、なぜ最初の設定が期待どおりに機能しないのか知りたいのですが…?

答え1

network-pre.targetは、ネットワークインターフェイスが設定される前にサービスを注文するために使用できるターゲットです。主な目的は、ネットワークインターフェイスが起動する前にファイアウォールを設定したいファイアウォールサービスで使用することです。これは受動的なデバイスです。直接起動できず、ネットワーク管理サービスではなく、以前に実行したいサービスを介して取得します。

network-pre.targetネットワークが起動する前にいくつかの設定を実行するには、以下を使用する必要があります。

ネットワークが構成される前に実行するサービスは、Before = network-pre.targetと入力し、Wants = network-pre.targetを設定してインポートする必要があります。

[Unit]これを次のセクションに入れる必要があります。

Before=network-pre.target
Wants=network-pre.target

引用する

答え2

Debian Jessieと同様に、netfilter-perciousパッケージ(ネットワーク起動前にiptablesルールをロードできるようにする)には、次のものがあります。ネットフィルター - 持続的。サービス次のようになります。

# https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
# based on the netfilter-persistent package
[Unit]
Description=netfilter persistent configuration
DefaultDependencies=no

Before=network-pre.target
Wants=network-pre.target

Wants=systemd-modules-load.service local-fs.target
After=systemd-modules-load.service local-fs.target

Conflicts=shutdown.target
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/netfilter-persistent start
ExecStop=/usr/sbin/netfilter-persistent stop

[Install]
WantedBy=multi-user.target

答え3

間違いは簡単で、私が頻繁に混同する主なものの1つはBeforeaと混合することRequiredByです。そうではありません。他の人は目標について正しいです。

答え4

[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=basic.target

[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=basic.target

これらの行に基づいてタスクを実行すると、デバイスはネットワークの前に実行されますが、他のほとんどの重要な設定が発生した後に実行されます。

関連情報