Commit 49964858 authored by Yann E. MORIN's avatar Yann E. MORIN Committed by Peter Korsgaard
Browse files

package/initscripts: S40network: wait for network interfaces to appear



On some machines, the network interface is slow to appear. For example,
on the Raspberry Pi, the network interface eth0 is an ethernet-over-USB,
and our standard boot process is too fast, so our network startup script
is called before the USB bus is compeltely enumerated, thus it can't
configure eth0.

Closes #8116.

[Peter: move to S40network, handle multiple interfaces]
Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: default avatarPeter Korsgaard <peter@korsgaard.com>
parent b2c97f78
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -6,8 +6,37 @@
# Debian ifupdown needs the /run/network lock directory
mkdir -p /run/network

# In case we have a slow-to-appear interface (e.g. eth-over-USB),
# and we need to configure it, wait until it appears, but not too
# long either. WAIT_DELAY is in seconds.
WAIT_DELAY=15

wait_for_interfaces() {
	IFACES=$(awk '/^auto/ { print $2 }' /etc/network/interfaces)
	[ -n "$IFACES" ] || return

	printf "Waiting for network interfaces to appear"

	for i in $(seq $WAIT_DELAY); do
	    for IFACE in $IFACES; do
		if [ ! -e "/sys/class/net/$IFACE" ]; then
		    printf "."
		    sleep 1
		    continue 2
		fi
	    done

	    printf " ok\n"; return
	done

	printf " timeout\n"
	exit 1
}

case "$1" in
  start)
	wait_for_interfaces

 	echo "Starting network..."
	/sbin/ifup -a
	;;