젠투 초기화 스크립트의 "provide net"이 생각한 대로 작동하지 않습니다

젠투 초기화 스크립트의 "provide net"이 생각한 대로 작동하지 않습니다

나는 이상한 문제에 직면했습니다.

enp5s0저는 두 개의 네트워크 인터페이스( 유선 인터페이스)와 wlan0(와이파이) 를 갖춘 젠투를 실행하고 있습니다 . 예를 들어 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

관련 정보