Gentoo初期化スクリプトの「provide net」が思ったように動作しません

Gentoo初期化スクリプトの「provide net」が思ったように動作しません

私は奇妙な問題に直面しました。

enp5s0私は2つのネットワークインターフェイス(有線インターフェイス)とwlan0(Wi-Fi)を備えたGentooを実行しています。たとえば、openvpnスクリプト内でプログラムを実行しようとすると、次のような/etc/init.d結果が出力されます。

* WARNING: openvpn is scheduled to start when net.enp5s0 has started

インターフェイスがenp5s0動作していない場合、他のインターフェイスが動作していても、そのインターフェイスは動作しません。

には/etc/init.d/openvpn次の行があります。

depend() {
        need localmount net
        use dns
        after bootmisc
}

そして(実際には、Gentooが何をすべきかを理解するために処理するスクリプトの名前/etc/init.d/net.enp5s0への/etc/init.d/net.wlan0シンボリックリンク):/etc/init.d/net.lo

depend()
{
        [...]

        case "${IFACE}" in
                lo|lo0) ;;
                *)
                        after net.lo net.lo0 dbus
                        provide net
                        ;;
        esac

        [...]
}

したがって、私が理解しているように、私のインターフェースのどれもnet「能力」を提供し(正しい/正規の言葉はありません)、openvpn特定のインターフェースではなくその機能にのみ依存する必要があります。依存関係があるすべてのプログラムで同じ問題が発生しますneed net

私がここで何を見逃しているのでしょうか?

uname -a役に立つ場合は、私のコメントに従ってください。

Linux yavin 3.7.10-gentoo-r1 #2 SMP Sat Apr 20 16:27:52 CEST 2013 x86_64 Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz GenuineIntel GNU/Linux

答え1

いいですね。設定ファイルのコメントを読むことが時々動作することがあります。

私の仮定は正確でした。net複数のサービスが実際にこれを提供できるという点で、「仮想依存関係」として機能します。これは実際にマニュアルに文書化されています。http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=4。ただし、実際にはこれは設定可能であり、この動作はデフォルトではありません(少なくとも一度変更したことはありません)。

このファイルを使用して、初期化スクリプトの仕組みを/etc/rc.conf カスタマイズできます。initそこに興味深いオプションがあります。

# Do we allow any started service in the runlevel to satisfy the dependency
# or do we want all of them regardless of state? For example, if net.eth0
# and net.eth1 are in the default runlevel then with rc_depend_strict="NO"
# both will be started, but services that depend on 'net' will work if either
# one comes up. With rc_depend_strict="YES" we would require them both to
# come up.
#rc_depend_strict="YES"

ご覧のように、これは私が必要なものであり(私の観点から見ると)、誤った値にデフォルト値が設定されているだけです。このオプションを「いいえ」に設定すると問題が解決しました。

今後:

yavin ~ # /etc/init.d/openvpn ineed
 * Caching service dependencies ...             [ ok ]
fsck dmcrypt localmount sysfs net.wlan0 net.enp5s0

その後(この場合;そうであれば代わりにwlan0使用したようです): enp5s0wlan0enp5s0

yavin ~ # /etc/init.d/openvpn ineed
 * Caching service dependencies ...             [ ok ]
fsck dmcrypt localmount sysfs net.wlan0

関連情報