When resolvconf is used in the squashfs, /etc/resolv.conf is a symlink
to the generated version. Depending on the size of the squashfs and
other factors, sometimes we try to write to /etc/resolv.conf while it
still points to nirvana, as resolvconf did not generate it yet.
Instead of being racy and writing to a file which will be regenerated
anyways, let's detect resolvconf and write to its base file instead.
Initial detection idea by Mika Prokop <mika@grml.org>
- if [ -f /etc/resolv.conf ] && [ ! -s ${rootmnt}/etc/resolv.conf ]
+ if [ -L /root/etc/resolv.conf ] ; then
+ # assume we have resolvconf
+ DNSFILE="${rootmnt}/etc/resolvconf/resolv.conf.d/base"
+ else
+ DNSFILE="${rootmnt}/etc/resolv.conf"
+ fi
+ if [ -f /etc/resolv.conf ] && [ ! -s ${DNSFILE} ]
- log_begin_msg "Copying /etc/resolv.conf to ${rootmnt}/etc/resolv.conf"
- cp -v /etc/resolv.conf ${rootmnt}/etc/resolv.conf
+ log_begin_msg "Copying /etc/resolv.conf to ${DNSFILE}"
+ cp -v /etc/resolv.conf ${DNSFILE}
log_begin_msg "Preconfiguring networking"
IFFILE="/root/etc/network/interfaces"
log_begin_msg "Preconfiguring networking"
IFFILE="/root/etc/network/interfaces"
- DNSFILE="/root/etc/resolv.conf"
+ if [ -L /root/etc/resolv.conf ] ; then
+ # assume we have resolvconf
+ DNSFILE="/root/etc/resolvconf/resolv.conf.d/base"
+ else
+ DNSFILE="/root/etc/resolv.conf"
+ fi
if [ "${STATICIP}" = "frommedia" ] && [ -e "${IFFILE}" ]
then
if [ "${STATICIP}" = "frommedia" ] && [ -e "${IFFILE}" ]
then
- if [ ! -f /root/etc/resolv.conf ] || [ -z "$(cat /root/etc/resolv.conf)" ]
+ if [ ! -f "${DNSFILE}" ] || [ -z "$(cat ${DNSFILE})" ]
then
if [ -f /netboot.config ]
then
then
if [ -f /netboot.config ]
then
rc_search=$(cat netboot.config | awk '/domain/ { print $3 }')
rc_server0="$(cat netboot.config | awk '/dns0/ { print $5 }')"
rc_search=$(cat netboot.config | awk '/domain/ { print $3 }')
rc_server0="$(cat netboot.config | awk '/dns0/ { print $5 }')"
-cat > /root/etc/resolv.conf << EOF
search ${rc_search}
domain ${rc_search}
nameserver ${rc_server0}
search ${rc_search}
domain ${rc_search}
nameserver ${rc_server0}
if [ "${rc_server1}" != "0.0.0.0" ]
then
if [ "${rc_server1}" != "0.0.0.0" ]
then
- echo "nameserver ${rc_server1}" >> /root/etc/resolv.conf
+ echo "nameserver ${rc_server1}" >> $DNSFILE
- cat /root/etc/resolv.conf >> /root/var/log/netboot.config
+ cat $DNSFILE >> /root/var/log/netboot.config