X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Fboot%2Fselect-eth-device.sh;h=ed1da6fcae439b4c18eca688eda656419fd63e90;hb=refs%2Ftags%2Fupstream%2F3.0_a34;hp=924b8bc50e41b5b1a9773b98588cd1d0fb29f014;hpb=5a6fb1a5946c4945416d932d86e8f59671c80228;p=live-boot-grml.git diff --git a/scripts/boot/select-eth-device.sh b/scripts/boot/select-eth-device.sh index 924b8bc..ed1da6f 100755 --- a/scripts/boot/select-eth-device.sh +++ b/scripts/boot/select-eth-device.sh @@ -6,7 +6,8 @@ Select_eth_device () 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 + for ARGUMENT in $(cat /proc/cmdline) + do case "${ARGUMENT}" in netboot=*) NETBOOT="${ARGUMENT#netboot=}" @@ -14,14 +15,10 @@ Select_eth_device () esac done - if [ "$bootconf" != "BOOT=nfs" ] && - [ "$NETBOOT" = "" ] && - [ "$FETCH" = "" ] && - [ "$FTPFS" = "" ] && - [ "$HTTPFS" = "" ] + if [ "$bootconf" != "BOOT=nfs" ] && [ -z "$NETBOOT" ] && [ -z "$FETCH" ] && [ -z "$FTPFS" ] && [ -z "$HTTPFS" ] then - # Not a net boot : nothing to do - return + # Not a net boot : nothing to do + return fi # we want to do some basic IP @@ -30,33 +27,38 @@ Select_eth_device () # Available Ethernet interfaces ? l_interfaces="" echo "Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel `uname -r`?" - while [ -z "$l_interfaces" ]; do - l_interfaces="$(cd /sys/class/net/ && ls -d eth* 2>/dev/null)" + while [ -z "$l_interfaces" ] + do + l_interfaces="$(cd /sys/class/net/ && ls -d eth* 2>/dev/null)" done - if [ $(echo $l_interfaces | wc -w) -lt 2 ]; then + if [ $(echo $l_interfaces | wc -w) -lt 2 ] + then # only one interface : no choice echo "DEVICE=$l_interfaces" >> /conf/param.conf return fi # If user force to use specific device, write it - for ARGUMENT in $(cat /proc/cmdline); do - case "${ARGUMENT}" in - live-netdev=*) - NETDEV="${ARGUMENT#live-netdev=}" - echo "DEVICE=$NETDEV" >> /conf/param.conf - echo "Found live-netdev parameter in /proc/cmdline. Force to use network device $NETDEV." - return - ;; - esac + for ARGUMENT in $(cat /proc/cmdline) + do + case "${ARGUMENT}" in + live-netdev=*) + NETDEV="${ARGUMENT#live-netdev=}" + echo "DEVICE=$NETDEV" >> /conf/param.conf + echo "Found live-netdev parameter in /proc/cmdline. Force to use network device $NETDEV." + return + ;; + esac done found_eth_dev="" - while true; do + while true + do echo -n "Looking for a connected Ethernet interface ..." - for interface in $l_interfaces; do + for interface in $l_interfaces + do # ATTR{carrier} is not set if this is not done echo -n " $interface ?" ipconfig -c none -d $interface -t 1 >/dev/null 2>&1 @@ -64,18 +66,24 @@ Select_eth_device () echo '' - for step in 1 2 3 4 5; do - for interface in $l_interfaces; do + 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 "Connected $interface found" - # inform initrd's init script : - found_eth_dev="$found_eth_dev $interface" - fi + + case "${carrier}" in + 1) + echo "Connected $interface found" + # inform initrd's init script : + found_eth_dev="$found_eth_dev $interface" + ;; + esac done - if [ -n "$found_eth_dev" ]; then + if [ -n "$found_eth_dev" ] + then echo "DEVICE='$found_eth_dev'" >> /conf/param.conf return else