gentoo init 脚本中的“provide net”并没有像我想象的那样工作

gentoo init 脚本中的“provide net”并没有像我想象的那样工作

我遇到了一个奇怪的(对我来说)问题。

我正在运行一个带有两个网络接口的gentoo:(enp5s0有线接口)和wlan0(wifi)。当我尝试运行一个程序时,例如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
}

/etc/init.d/net.enp5s0和中/etc/init.d/net.wlan0(实际上是到 的符号链接/etc/init.d/net.lo,Gentoo 处理脚本的名称以了解它应该做什么):

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下;我想我会用enp5s0 而不是用wlan0如果enp5s0是的话):

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

相关内容