diff options
| author | Yann E. MORIN <yann.morin.1998@free.fr> | 2015-10-03 14:31:45 +0100 |
|---|---|---|
| committer | Peter Korsgaard <peter@korsgaard.com> | 2015-10-16 09:16:58 +0200 |
| commit | 49964858f45d2243c513e6d362e992ad89ec7a45 (patch) | |
| tree | f2154d97ddd10bcd8efda82c2a507124984d7802 /package/initscripts | |
| parent | b2c97f7802c812380c1783de5027b90ef52bfd5d (diff) | |
| download | buildroot-49964858f45d2243c513e6d362e992ad89ec7a45.tar.gz buildroot-49964858f45d2243c513e6d362e992ad89ec7a45.zip | |
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>
Diffstat (limited to 'package/initscripts')
| -rwxr-xr-x | package/initscripts/init.d/S40network | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/package/initscripts/init.d/S40network b/package/initscripts/init.d/S40network index 7b11d8b902..a8d7c5df78 100755 --- a/package/initscripts/init.d/S40network +++ b/package/initscripts/init.d/S40network @@ -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 ;; |

