Skip to content

Commit 2bfb865

Browse files
committed
dns2!
1 parent 96cc0e8 commit 2bfb865

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

os-image/ubuntu/network.sh

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
2022
for conf_file in /run/net-*.conf; do
2123
[ -f "$conf_file" ] || continue
2224

@@ -52,14 +54,20 @@ EOF
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
6066
done
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

Comments
 (0)