kumquat-buildroot/package/initscripts/init.d/S40network
Yann E. MORIN 49964858f4 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: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-10-16 09:16:58 +02:00

58 lines
974 B
Bash
Executable File

#!/bin/sh
#
# Start the network....
#
# 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
;;
stop)
printf "Stopping network..."
/sbin/ifdown -a
;;
restart|reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?