Fix resolving FQDN given by DHCP
[live-boot-grml.git] / components / 9990-networking.sh
index dd1d0f0..2927107 100755 (executable)
@@ -89,20 +89,10 @@ do_netsetup ()
                        devlist="$devlist $device"
                done
 
-               # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into
-               # an endless loop; if execution fails give it two further tries, that's
-               # why we use '$devlist $devlist $devlist' for the other for loop
-               for dev in $devlist $devlist $devlist
+               for dev in $devlist
                do
                        echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev"
-                       ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config &
-                       jobid=$!
-                       sleep "$ETHDEV_TIMEOUT" ; sleep 1
-                       if [ -r /proc/"$jobid"/status ]
-                       then
-                               echo "Killing job $jobid for device $dev as ipconfig ran into recursion..."
-                               kill -9 $jobid
-                       fi
+                       ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config
 
                        # if configuration of device worked we should have an assigned
                        # IP address, if so let's use the device as $DEVICE for later usage.
@@ -141,6 +131,22 @@ do_netsetup ()
                        HWADDR="$(cat /sys/class/net/${interface}/address)"
                fi
 
+               # Only create /etc/hosts if FQDN is known (to let 'hostname -f' query
+               # this file). Otherwise DNS will be queried to determine the FQDN.
+               if [ ! -e "/etc/hosts" ] && [ -n "${DNSDOMAIN}" ]
+               then
+                       echo "Creating /etc/hosts"
+                       cat > /etc/hosts <<EOF
+127.0.0.1      localhost
+127.0.1.1      ${HOSTNAME}.${DNSDOMAIN}        ${HOSTNAME}
+
+# The following lines are desirable for IPv6 capable hosts
+::1     localhost ip6-localhost ip6-loopback
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+EOF
+               fi
+
                if [ ! -e "/etc/resolv.conf" ]
                then
                        echo "Creating /etc/resolv.conf"