@@ -17,6 +17,8 @@ case "$1" in prereqs) prereqs; exit 0 ;; esac
1717# $rootmnt is set by initramfs — points to the mounted root filesystem.
1818[ -z " $rootmnt " ] && exit 0
1919
20+ _dns_servers=" "
21+
2022for conf_file in /run/net-* .conf; do
2123 [ -f " $conf_file " ] || continue
2224
5254 [ -z " $IPV4DNS0 " ] || [ " $IPV4DNS0 " = " 0.0.0.0" ] && printf " DNS=8.8.8.8\nDNS=8.8.4.4\n"
5355 } > " ${rootmnt} /etc/systemd/network/10-${DEVICE} .network"
5456
57+ # Collect DNS servers for resolv.conf.
58+ [ -n " $IPV4DNS0 " ] && [ " $IPV4DNS0 " != " 0.0.0.0" ] && _dns_servers=" ${_dns_servers} ${IPV4DNS0} "
59+ [ -n " $IPV4DNS1 " ] && [ " $IPV4DNS1 " != " 0.0.0.0" ] && _dns_servers=" ${_dns_servers} ${IPV4DNS1} "
60+
5561 # Set hostname from the first interface that has one.
5662 if [ -n " $HOSTNAME " ] && [ ! -f " ${rootmnt} /etc/cocoon-hostname-set" ]; then
5763 echo " $HOSTNAME " > " ${rootmnt} /etc/hostname"
5864 : > " ${rootmnt} /etc/cocoon-hostname-set"
5965 fi
6066done
6167
62- # Point resolv.conf at /proc/net/pnp — the kernel writes DNS servers
63- # from the ip= cmdline parameter there in resolv.conf format.
64- # No ip= means /proc/net/pnp won't exist, which is fine (same as empty).
65- ln -sf /proc/net/pnp " ${rootmnt} /etc/resolv.conf"
68+ # Write /etc/resolv.conf from DNS servers collected above.
69+ [ -z " $_dns_servers " ] && _dns_servers=" 8.8.8.8 8.8.4.4"
70+ : > " ${rootmnt} /etc/resolv.conf"
71+ for _ns in $_dns_servers ; do
72+ printf " nameserver %s\n" " $_ns " >> " ${rootmnt} /etc/resolv.conf"
73+ done
0 commit comments