[SCM] live-boot branch, debian-next, updated. debian/3.0_a1-1-2-g9662fa8

Daniel Baumann daniel at debian.org
Wed Aug 18 12:27:29 UTC 2010


The following commit has been merged in the debian-next branch:
commit 9662fa8d8af9b41a7a73b67536d63c001cf35d75
Author: Daniel Baumann <daniel at debian.org>
Date:   Wed Aug 18 14:24:29 2010 +0200

    Adding reformated patch from Stephan Hermann <sh at sourcecode.de> based on the work of Holger Fischer <hoo.mb at web.de> to add support for BOOTIF in cases where pxelinux is being used with IPAPPEND (Closes: #593284).

diff --git a/scripts/live b/scripts/live
index a17eb42..2976dae 100755
--- a/scripts/live
+++ b/scripts/live
@@ -68,6 +68,10 @@ Arguments ()
 				export DEFCONSOLE
 				;;
 
+			BOOTIF=*)
+				BOOTIF="${x#BOOTIF=}"
+				;;
+
 			debug)
 				DEBUG="Yes"
 				export DEBUG
@@ -581,6 +585,54 @@ do_netsetup ()
 	   [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ]
 	then
 
+
+	# support for Syslinux IPAPPEND parameter
+	# it sets the BOOTIF variable on the kernel parameter
+
+	if [ -n "${BOOTIF}" ]
+	then
+		# pxelinux sets BOOTIF to a value based on the mac address of the
+		# network card used to PXE boot, so use this value for DEVICE rather
+		# than a hard-coded device name from initramfs.conf. this facilitates
+		# network booting when machines may have multiple network cards.
+		# pxelinux sets BOOTIF to 01-$mac_address
+
+		# strip off the leading "01-", which isn't part of the mac
+		# address
+		temp_mac=${BOOTIF#*-}
+
+		# convert to typical mac address format by replacing "-" with ":"
+		bootif_mac=""
+		IFS='-'
+		for x in $temp_mac
+		do
+			if [ -z "$bootif_mac" ]
+			then
+				bootif_mac="$x"
+			else
+				bootif_mac="$bootif_mac:$x"
+			fi
+		done
+		unset IFS
+
+		# look for devices with matching mac address, and set DEVICE to
+		# appropriate value if match is found.
+
+		for device in /sys/class/net/*
+		do
+			if [ -f "$device/address" ]
+			then
+				current_mac=$(cat "$device/address")
+
+				if [ "$bootif_mac" = "$current_mac" ]
+				then
+					DEVICE=${device##*/}
+					break
+				fi
+			fi
+		done
+	fi
+
 	# if ethdevice was not specified on the kernel command line
 	# make sure we try to get a working network configuration
 	# for *every* present network device (except for loopback of course)

-- 
live-boot



More information about the debian-live-changes mailing list