Use PERSISTENCE_PATH with a trailing "/".
[debian-live-boot.git] / components / 9990-select-eth-device.sh
blob7d1aa163282e002b68ebb7b9956a3b34fce2e3ec
1 #!/bin/sh
3 Select_eth_device ()
5 # Boot type in initramfs's config
6 bootconf=$(egrep '^BOOT=' /conf/initramfs.conf | tail -1)
8 # can be superseded by command line (used by Debian-Live's netboot for example)
9 for ARGUMENT in ${LIVE_BOOT_CMDLINE}
11 case "${ARGUMENT}" in
12 netboot=*)
13 NETBOOT="${ARGUMENT#netboot=}"
15 esac
16 done
18 if [ "$bootconf" != "BOOT=nfs" ] && [ -z "$NETBOOT" ] && [ -z "$FETCH" ] && [ -z "$FTPFS" ] && [ -z "$HTTPFS" ]
19 then
20 # Not a net boot : nothing to do
21 return
24 # we want to do some basic IP
25 modprobe -q af_packet
27 # Available Ethernet interfaces ?
28 l_interfaces=""
30 # See if we can derive the boot device
31 Device_from_bootif
33 if [ -z "$DEVICE" ]
34 then
35 echo "Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel `uname -r`?"
36 while [ -z "$l_interfaces" ]
38 l_interfaces="$(cd /sys/class/net/ && ls -d eth* 2>/dev/null)"
39 done
41 if [ $(echo $l_interfaces | wc -w) -lt 2 ]
42 then
43 # only one interface : no choice
44 echo "DEVICE=$l_interfaces" >> /conf/param.conf
45 return
48 # If user force to use specific device, write it
49 for ARGUMENT in ${LIVE_BOOT_CMDLINE}
51 case "${ARGUMENT}" in
52 live-netdev=*)
53 NETDEV="${ARGUMENT#live-netdev=}"
54 echo "DEVICE=$NETDEV" >> /conf/param.conf
55 echo "Found live-netdev parameter, forcing to to use network device $NETDEV."
56 return
58 esac
59 done
60 else
61 l_interfaces="$DEVICE"
64 found_eth_dev=""
65 while true
67 echo -n "Looking for a connected Ethernet interface ..."
69 for interface in $l_interfaces
71 # ATTR{carrier} is not set if this is not done
72 echo -n " $interface ?"
73 ipconfig -c none -d $interface -t 1 >/dev/null 2>&1
74 done
76 echo ''
78 for step in 1 2 3 4 5
80 for interface in $l_interfaces
82 carrier=$(cat /sys/class/net/$interface/carrier \
83 2>/dev/null)
84 # link detected
86 case "${carrier}" in
88 echo "Connected $interface found"
89 # inform initrd's init script :
90 found_eth_dev="$found_eth_dev $interface"
92 esac
93 done
94 if [ -n "$found_eth_dev" ]
95 then
96 echo "DEVICE='$found_eth_dev'" >> /conf/param.conf
97 return
98 else
99 # wait a bit
100 sleep 1
102 done
103 done