[SCM] live-initramfs branch, master, updated. debian/1.173.5-1-6-gf9e8970

Daniel Baumann daniel at debian.org
Tue Mar 16 18:08:06 UTC 2010


The following commit has been merged in the master branch:
commit e6b6984dea0d0168b0448f870828561dd489007b
Author: Steven Shiau <steven at nchc.org.tw>
Date:   Tue Mar 16 18:56:01 2010 +0100

    Making select_eth_device work with 2nd NIC linked only and FETCH assigned.
    
    The differences:
    
      1. If user uses "FETCH", "HTTPFS", or "FTPFS", select_eth_device
         should not exit since network is also required to get the
         filesystem.squashfs.
    
      2. Files in "/sys/class/net/" maybe not be up so quick, so it's
         better to use a while loop to wait for that.
    
      3. Another case is, for example, if eth0 and eth1 are linked, but
         only eth1 is able to get filesystem.squashfs, the original
         select_eth_device will try eth0 only. It's better to provide an
         alternative way to allow user to specify the device in boot
         parameter. Here in the patch live-netdev=eth1, for example, can
         be used to make it.

diff --git a/scripts/init-premount/select_eth_device b/scripts/init-premount/select_eth_device
index 4803314..4258fba 100755
--- a/scripts/init-premount/select_eth_device
+++ b/scripts/init-premount/select_eth_device
@@ -30,9 +30,14 @@ for ARGUMENT in $(cat /proc/cmdline); do
 	esac
 done
 
-if [ "$bootconf" != "BOOT=nfs" ] && [ "$NETBOOT" = "" ]; then
-	# Not a net boot : nothing to do
-	exit 0
+if [ "$bootconf" != "BOOT=nfs" ] &&
+   [ "$NETBOOT" = "" ] &&
+   [ "$FETCH" = "" ] &&
+   [ "$FTPFS" = "" ] &&
+   [ "$HTTPFS" = "" ]
+then
+    # Not a net boot : nothing to do
+    exit 0
 fi
 
 # be sure this has been run (*should* be done by scripts/init-premount/udev)
@@ -43,7 +48,11 @@ udevadm settle
 modprobe -q af_packet
 
 # Available Ethernet interfaces ?
-l_interfaces=$(cd /sys/class/net/ && ls -d eth* 2>/dev/null)
+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)"
+done
 
 if [ $(echo $l_interfaces | wc -w) -lt 2 ]; then
 	# only one interface : no choice
@@ -51,6 +60,18 @@ if [ $(echo $l_interfaces | wc -w) -lt 2 ]; then
 	exit 0
 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."
+        exit 0
+        ;;
+    esac
+done
+
 while true; do
 	echo -n "Looking for a connected Ethernet interface ..."
 

-- 
live-initramfs



More information about the debian-live-changes mailing list