Networking

gentoo init 腳本中的“provide net”不像我想的那樣工作

  • May 9, 2013

我遇到了一個奇怪的(對我來說)問題。

我正在執行一個帶有兩個網路介面的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.enp5s0and中/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

好的,所以閱讀配置文件中的註釋有時確實有效……

我正確地假設它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"

如您所見,這正是我所需要的,它只是預設為錯誤的值(從我的角度來看)。將此選項設置為 NO 解決了我的問題。

前:

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

引用自:https://unix.stackexchange.com/questions/75247