updated patch that only using only shell parameter expansion and cat: diff --git a/scripts/functions b/scripts/functions index 77de8f3..e9e94b3 100644 --- a/scripts/functions +++ b/scripts/functions @@ -258,6 +258,42 @@ parse_numeric() { configure_networking() { + + # 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 + if [ -n "${BOOTIF}" ]; then + # strip off the leading "01-", which isn't part of the mac + # address + temp_mac=${BOOTIF#*-} + bootif_mac="" + # given value is the right number of characters, so + # loop through replacing "-" with ":" 6 times... + for x in 1 2 3 4 5 6 ; do + # strip off everything before and including the last "-" + x=${temp_mac##*-} + # strip off everything before and including the + # first occurrance of $x + temp_mac=${temp_mac%%-$x} + if [ -z "$bootif_mac" ]; then + bootif_mac="$x" + else + bootif_mac="$x:$bootif_mac" + fi + done + 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 + # networking already configured thus bail out [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
sure is starting to look ugly. tested that it basically works, though it may have lingering bugs if unexpected values end up in $BOOTIF. live well, vagrant -- To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org