From 4c8b0ac3778c7fd5d176d9e75b3ab068ad57dbcc Mon Sep 17 00:00:00 2001 From: Andreas Teuchert Date: Sun, 14 Mar 2010 22:52:32 +0100 Subject: [PATCH] Calling udevadm settle in scripts/init-premount/select_eth_device (Closes: #570100). --- scripts/init-premount/select_eth_device | 73 +++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/scripts/init-premount/select_eth_device b/scripts/init-premount/select_eth_device index 6ab8bfe..4323880 100755 --- a/scripts/init-premount/select_eth_device +++ b/scripts/init-premount/select_eth_device @@ -3,8 +3,6 @@ # Original script by Andreas Teuchert # Modified by Frédéric Boiteux - - PREREQ="blacklist udev" prereqs() @@ -25,16 +23,28 @@ bootconf=$(egrep '^BOOT=' /conf/initramfs.conf | tail -1) # can be superseded by command line (used by Debian-Live's netboot for example) for ARGUMENT in $(cat /proc/cmdline); do - case "${ARGUMENT}" in - netboot=*) - NETBOOT="${ARGUMENT#netboot=}" - ;; - esac + case "${ARGUMENT}" in + netboot=*) + NETBOOT="${ARGUMENT#netboot=}" + ;; + esac done if [ "$bootconf" != "BOOT=nfs" ] && [ "$NETBOOT" = "" ]; then - # Not a net boot : nothing to do - exit 0 + # Not a net boot : nothing to do + exit 0 +fi + +# be sure this has been run (*should* be done by scripts/init-premount/udev) +if [ -x /sbin/udevadm ] +then + # lenny + udevadm trigger + udevadm settle +else + # etch + udevtrigger + udevsettle fi # we want to do some basic IP @@ -44,34 +54,35 @@ modprobe -q af_packet l_interfaces=$(cd /sys/class/net/ && ls -d eth* 2>/dev/null) if [ $(echo $l_interfaces | wc -w) -lt 2 ]; then - # only one interface : no choice - echo "DEVICE=$l_interfaces" >> /conf/param.conf - exit 0 + # only one interface : no choice + echo "DEVICE=$l_interfaces" >> /conf/param.conf + exit 0 fi while true; do - echo -n "Looking for a connected Ethernet interface ..." + echo -n "Looking for a connected Ethernet interface ..." for interface in $l_interfaces; do # ATTR{carrier} is not set if this is not done - echo -n " $interface ?" + echo -n " $interface ?" ipconfig -c none -d $interface -t 1 >/dev/null 2>&1 - done - echo '' + done + + echo '' - for step in 1 2 3 4 5; do - for interface in $l_interfaces; do - carrier=$(cat /sys/class/net/$interface/carrier \ - 2>/dev/null) - # link detected - if [ "$carrier" = 1 ]; then - echo " found $interface." - # inform initrd's init script : - echo "DEVICE=$interface" >> /conf/param.conf - exit 0 - fi - done - # wait a bit - sleep 1 - done + for step in 1 2 3 4 5; do + for interface in $l_interfaces; do + carrier=$(cat /sys/class/net/$interface/carrier \ + 2>/dev/null) + # link detected + if [ "$carrier" = 1 ]; then + echo " found $interface." + # inform initrd's init script : + echo "DEVICE=$interface" >> /conf/param.conf + exit 0 + fi + done + # wait a bit + sleep 1 + done done -- 2.1.4