Netctl 在 arch linux 中很慢

Netctl 在 arch linux 中很慢

我是 Linux 新手。我正在研究一个加速启动时间的项目。我在树莓派 B+ 上使用 Arch Linux。我特别研究 netctl 服务。为了追踪函数时间,我编辑了 /usr/lib/network 中的一些脚本。我知道,它的硬件速度很慢(?)并且还卡在 resolv.conf 中,因为它找不到 /etc/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 来配置名称解析。请参阅 man nsswitch.conf

如果您的主机条目在某个时刻使用 dns 进行解析,该子系统将读取 /etc/resolv.conf 来查找参数。

考虑仅使用本地 dns 缓存来加速 DNS。如果认为 dnsmasq 太多,您可以直接使用静态 /etc/hosts 文件进行名称解析。

为了加速运营商链路的建立,您应该考虑在通往 PI 上该接口的交换机链路上使用生成树 portfast。

相关内容