11-10-2021, 10:39 PM
我正在定制一个 Arch 的安装盘,做法是把里面的 squashfs 解压之后,用 systemd-nspawn 进入这个 rootfs,然后用 pacman 装软件。在我现在使用的系统下是可以工作的,但是换个机子就不行了,pacman 说解析不了服务器的地址。对比了两个系统的设置,发现我现在的系统用了 dnsmasq,而另一个系统没有。启用了 dnsmasq 就解决了问题,用 dnsmasq -q 记录 DNS 查询,也能看到 systemd-nspawn 里的程序用主机作为 DNS 来做域名查询。
使用 systemd-nspawn 进入 archiso 之后,可以发现里面的 /etc/resolv.conf 指向一个不存在的本来应该由 systemd-resolved 产生的文件,所以里面的程序应该不是查 resolv.conf 来找 DNS 服务器的。我觉得程序有可能会在这种情况下会尝试用网关来做 DNS 服务器。
使用 systemd-nspawn 进入 archiso 之后,可以发现里面的 /etc/resolv.conf 指向一个不存在的本来应该由 systemd-resolved 产生的文件,所以里面的程序应该不是查 resolv.conf 来找 DNS 服务器的。我觉得程序有可能会在这种情况下会尝试用网关来做 DNS 服务器。