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

Bug#593284: live-initramfs: add functionlity for using BOOTIF param



Dear Colleagues,

I took Holgers patch and added it to the latest sid packages of live-boot.

Please find attached the needed debdiff.

(thx Mikap for reminding me ;))

Regards,

\sh
diff -u live-boot-2.0.0/debian/changelog live-boot-2.0.0/debian/changelog
--- live-boot-2.0.0/debian/changelog
+++ live-boot-2.0.0/debian/changelog
@@ -1,3 +1,12 @@
+live-boot (2.0.0-2) unstable; urgency=low
+
+  * scripts/live:
+    + added Syslinux BOOTIF support, when pxelinux is being used with IPAPPEND
+      (Closes: #593284)
+      Thx to Holger Fischer <hoo.mb@web.de> for reporting and providing a patch
+
+ -- Stephan Hermann <sh@sourcecode.de>  Tue, 17 Aug 2010 13:47:58 +0000
+
 live-boot (2.0.0-1) unstable; urgency=low
 
   * Updating debian-installer languagelist.
only in patch2:
unchanged:
--- live-boot-2.0.0.orig/scripts/live
+++ live-boot-2.0.0/scripts/live
@@ -68,6 +68,10 @@
 				export DEFCONSOLE
 				;;
 
+			BOOTIF=*)
+				BOOTIF="${x#BOOTIF=}"
+				;;
+
 			debug)
 				DEBUG="Yes"
 				export DEBUG
@@ -581,6 +585,49 @@
 	   [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ]
 	then
 
+	
+	# support for Syslinux IPAPPEND parameter
+	# it sets the BOOTIF variable on the kernel parameter
+	# Taken from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593284
+	# by Holger Fischer <hoo.mb@web.de>
+
+ 	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)

Attachment: signature.asc
Description: Digital signature


Reply to: