[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#575766: initramfs-tools: configure_networking function fails if no DEVICE is specified



Package: initramfs-tools
Severity: normal
Tags: patch

the configure_networking function relies on DEVICE being set, and
conf/initramfs.conf hard-codes this to eth0. though some scripts may call this
from /scripts/local-top, and DEVICE may not be set. even when it is set, it
hard-coding it to eth0 may be the wrong network interface.

the following patch should partially address this by checking for DEVICE when
not defined, and using the first interface with an active link.

diff --git a/conf/initramfs.conf b/conf/initramfs.conf
index 23dd249..471dfea 100644
--- a/conf/initramfs.conf
+++ b/conf/initramfs.conf
@@ -55,7 +55,7 @@ BOOT=local
 # Specify the network interface, like eth0
 #
 
-DEVICE=eth0
+#DEVICE=eth0
 
 #
 # NFSROOT: [ auto | HOST:MOUNT ]
diff --git a/scripts/functions b/scripts/functions
index 0ecb1d6..5444c11 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -294,6 +294,24 @@ configure_networking()
 		done
 	fi
 
+	if [ -z "${DEVICE}" ]; then
+		# attempt to detect the first device with an established link.
+		for net_device_path in /sys/class/net/* ; do
+			net_device=${net_device_path##*/}
+			case $net_device in
+				lo) ;;
+				*)
+					if read carrier < "$net_device_path/carrier" ; then
+						if [ "$carrier" = "1" ]; then
+							DEVICE="$net_device"
+							break
+						fi
+					fi
+					;;
+			esac
+		done
+	fi
+
 	# networking already configured thus bail out
 	[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
 

live well,
  vagrant



Reply to: