Netctl은 아치 리눅스에서 매우 느립니다.

Netctl은 아치 리눅스에서 매우 느립니다.

저는 리눅스를 처음 접했습니다. 저는 시작 시간을 단축하기 위한 프로젝트를 진행 중입니다. 저는 Raspberry Pi B+에서 Arch Linux를 사용하고 있습니다. 저는 특히 netctl 서비스를 조사하고 있습니다. 기능 시간을 추적하기 위해 /usr/lib/network에서 일부 스크립트를 편집했습니다. 알아요, 하드웨어(?)가 느리고 /etc/resolv.conf를 찾을 수 없기 때문에 resolv.conf에 갇혀 있습니다.

[   17.174115] alarmpi network[195]: Starting network profile 'ethernet-static'...
[   17.190230] alarmpi network[195]: start connection up {network}
[   17.208285] alarmpi network[195]: inside ethernet up
[   17.208285] alarmpi network[195]: test for bring interface up
[   17.443234] alarmpi network[195]: inside bring interface up{network}
[   17.455252] alarmpi network[195]: connection slow or cable is not connectedP{ethernet connection}
[   19.038800] alarmpi network[195]: wait over for carrier whose connection is low or cable not connected {ethernet connection}
[   19.056395] alarmpi network[195]: set ip in IP lib
[   19.056395] alarmpi network[195]: inside ip set {ip}
[   19.112173] alarmpi network[195]: adding static IP routs {set_ip}
[   19.122707] alarmpi network[195]: adding custome gateway {set_ip}
[   19.174517] alarmpi network[195]: start resolvconf
[   21.425880] alarmpi network[195]: /usr/lib/resolvconf/libc: line 230: /etc/resolv.conf: No such file or directory
[   21.901427] alarmpi network[195]: end resolvconf
[   21.913711] alarmpi network[195]: end of IP set
[   21.913711] alarmpi network[195]: set ip function finish P{ethernet connection}
[   21.941763] alarmpi network[195]: Started network profile 'ethernet-static'

느린 하드웨어(?)에 대한 코드 조각은 다음과 같습니다.

if is_yes "${SkipNoCarrier:-no}"; then
    SkipDAD=yes
else
    # Some cards are plain slow to come up. Don't fail immediately.
    if ! timeout_wait "${TimeoutCarrier:-5}" '(( $(< "/sys/class/net/$Interface/carrier") ))'; then
        report_error "No connection found on interface '$Interface' (timeout)"
        bring_interface_down "$Interface"
        return 1
    fi
fi

이것은 내 이더넷 구성 파일입니다

Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('10.152.187.5/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='0.0.0.0'
DNS=('10.152.187.5')
#ForceConnect=yes
NETCTL_DEBUG=no
TimeoutCarrier=2

## For IPv6 autoconfiguration
#IP6=stateless

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'

저는 고정 연결을 사용하고 있으며 DHCP 서비스를 비활성화했습니다. 지금까지는 IPv6에 관심이 없습니다.

부팅 시간을 단축하는 솔루션은 무엇입니까? systemd-networkd 서비스로 전환해야 합니까?

답변1

libc는 /etc/nsswitch.conf를 사용하여 이름 확인을 구성합니다. nsswitch.conf 참조

어느 시점에서 DNS를 사용하여 호스트 항목이 확인되면 하위 시스템은 /etc/resolv.conf를 읽어 매개변수를 찾습니다.

DNS 속도를 높이려면 로컬 DNS 캐시만 사용하는 것이 좋습니다. dnsmasq가 너무 많다고 생각되면 이름 확인을 위해 정적 /etc/hosts 파일을 직접 사용할 수 있습니다.

캐리어 링크 설정 속도를 높이려면 PI의 이 인터페이스에 대한 스위치 링크에서 스패닝 트리 portfast를 사용하는 것을 고려해야 합니다.

관련 정보