fi
# split args of ethdevice=eth0,eth1 into "eth0 eth1"
- for device in $(echo $ETHDEVICE | sed 's/,/ /g')
+ for device in $(echo "$ETHDEVICE" | sed 's/,/ /g')
do
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.
# simple and primitive approach which seems to work fine
- if ifconfig $dev | grep -q 'inet.*addr:'
+ if ifconfig "$dev" | grep -q -E 'inet.*addr:|inet [0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*'
then
export DEVICE="$dev"
break
done
else
for interface in ${DEVICE}; do
- ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config
+ ipconfig -t "$ETHDEV_TIMEOUT" "${interface}" | tee "/netboot-${interface}.config"
- [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf
+ [ -e "/run/net-${interface}.conf" ] && . "/run/net-${interface}.conf"
if [ "$IPV4ADDR" != "0.0.0.0" ]
then
# source relevant ipconfig output
OLDHOSTNAME=${HOSTNAME}
- [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf
+ [ -e "/run/net-${interface}.conf" ] && . "/run/net-${interface}.conf"
- [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME}
+ [ -z "${HOSTNAME}" ] && HOSTNAME="${OLDHOSTNAME}"
export HOSTNAME
if [ -n "${interface}" ]
then
- HWADDR="$(cat /sys/class/net/${interface}/address)"
+ 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" ]
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
fi
- for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
+ for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1} ${DNSSERVERS}
do
if [ -n "$i" ] && [ "$i" != 0.0.0.0 ]
then