diff --git a/imagebuild/tinyipa/build_files/dhcp.sh b/imagebuild/tinyipa/build_files/dhcp.sh new file mode 100644 index 000000000..8383f2625 --- /dev/null +++ b/imagebuild/tinyipa/build_files/dhcp.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# The DHCP portion is now separated out, in order to not slow the boot down +# only to wait for slow network cards +. /etc/init.d/tc-functions + +# This waits until all devices have registered +/sbin/udevadm settle --timeout=%UDEV_SETTLE_TIMEOUT% + +NETDEVICES="$(awk -F: '/eth.:|tr.:/{print $1}' /proc/net/dev 2>/dev/null)" +echo "$0: Discovered network devices: $NETDEVICES" +for DEVICE in $NETDEVICES; do + ifconfig $DEVICE | grep -q "inet addr" + if [ "$?" != 0 ]; then + echo -e "\nNetwork device $DEVICE detected, DHCP broadcasting for IP." + trap 2 3 11 + /sbin/udhcpc -b -i $DEVICE -x hostname:$(/bin/hostname) -p /var/run/udhcpc.$DEVICE.pid 2>&1 & + trap "" 2 3 11 + sleep 1 + fi +done + diff --git a/imagebuild/tinyipa/finalise-tinyipa.sh b/imagebuild/tinyipa/finalise-tinyipa.sh index ed24ba4b2..df8e0c0e2 100755 --- a/imagebuild/tinyipa/finalise-tinyipa.sh +++ b/imagebuild/tinyipa/finalise-tinyipa.sh @@ -23,6 +23,7 @@ SSH_PUBLIC_KEY=${SSH_PUBLIC_KEY:-} PYOPTIMIZE_TINYIPA=${PYOPTIMIZE_TINYIPA:-true} TINYIPA_REQUIRE_BIOSDEVNAME=${TINYIPA_REQUIRE_BIOSDEVNAME:-false} TINYIPA_REQUIRE_IPMITOOL=${TINYIPA_REQUIRE_IPMITOOL:-true} +TINYIPA_UDEV_SETTLE_TIMEOUT=${TINYIPA_UDEV_SETTLE_TIMEOUT:-20} echo "Finalising tinyipa:" @@ -147,6 +148,10 @@ sudo cp "$WORKDIR/build_files/bootlocal.sh" "$FINALDIR/opt/." # Copy udhcpc.script to opt sudo cp "$WORKDIR/udhcpc.script" "$FINALDIR/opt/" +# Replace etc/init.d/dhcp.sh +sudo cp "$WORKDIR/build_files/dhcp.sh" "$FINALDIR/etc/init.d/dhcp.sh" +sudo sed -i "s/%UDEV_SETTLE_TIMEOUT%/$TINYIPA_UDEV_SETTLE_TIMEOUT/" "$FINALDIR/etc/init.d/dhcp.sh" + # Disable ZSwap sudo sed -i '/# Main/a NOZSWAP=1' "$FINALDIR/etc/init.d/tc-config" # sudo cp $WORKDIR/build_files/tc-config $FINALDIR/etc/init.d/tc-config