使用 systemd-networkd 在 nfsroot 上沒有 dns 伺服器

使用 systemd-networkd 在 nfsroot 上沒有 dns 伺服器

我使用 Yocto 創建了自己的 Sysroot,並透過 NFS 將其安裝在 ARM 板上。它使用 systemd-networkd 和 systemd-resolved 進行網路連線。我這樣啟動董事會:

U-Boot Bootloader透過tftp載入核心和devicetree並通過

root=/dev/nfs nfsroot=192.168.xx:/Path/To/Sysroot,vers=3,tcp rootwait ro ip=dhcp

到內核。核心啟動並從本地 DHCP 伺服器接收 IP 和 DNS:

IP-Config: Complete:
 device=eth0, hwaddr=XX:XX:XX:XX:XX:XX, ipaddr=192.168.X.X, mask=255.255.255.0, gw=192.168.X.X
 host=192.168.XX.XX, domain=XXX.XX, nis-domain=(none)
 bootserver=0.0.0.0, rootserver=192.168.XX.XX, rootpath=
 nameserver0=192.168.XX.XX, nameserver1=192.168.XX.XX

之後核心掛載 NFS-Sysroot 並啟動 SystemD。此時,systemd-networkd 服務將接管並向 DHCP 請求 IP。即使它接收到與核心之前接收到的相同的 IP,這也會破壞 nfs-mount。我透過將 systemd-networkd 設定檔更改為以下內容來避免這種情況:

[Match]
Name=eth0
KernelCommandLine=!nfsroot

[Network]
DHCP=ipv4

因此,僅當我不使用 nfsroot 時才套用設定檔。

但現在dns不能用了。我可以透過以下方式查看先前偵測到的 DNS 伺服器:

cat /proc/net/pnp 
#PROTO: DHCP
domain XXX.XX
nameserver 192.168.XX.XX
nameserver 192.168.XX.XX
bootserver 0.0.0.0

但係統似乎沒有使用它們。我如何使用這些 DNS 伺服器?

相關內容