저는 리눅스를 처음 접했습니다. 저는 시작 시간을 단축하기 위한 프로젝트를 진행 중입니다. 저는 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를 사용하는 것을 고려해야 합니다.