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

Bug#535008: configure_networking: support BOOTIF variable set by pxelinux



On Sun, 2009-06-28 at 14:50 -0700, Vagrant Cascadian wrote:
> Package: initramfs-tools
> Version: 0.93.3
> Severity: wishlist
> Tags: patch
> 
> when booting thin clients with multiple network cards, initramfs-tools/ipconfig
> have a hard time figuring out which interface to use. attached is a patch which
> sets DEVICE to the interface matching the mac address that pxelinux passes when
> using the IPAPPEND 2 or 3 options.

This sounds reasonable, but your patch makes unnecessary use of several
commands.

> diff --git a/scripts/functions b/scripts/functions
> index 77de8f3..ec0ffd2 100644
> --- a/scripts/functions
> +++ b/scripts/functions
> @@ -258,6 +258,19 @@ 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.
> +	if [ -n "${BOOTIF}" ]; then
> +		normal_mac=$(echo $BOOTIF | sed -e 's,^01-,,g' -e 's,-,:,g' | tr [a-z] [A-Z])

You can use sed's y/// command instead of piping to tr.

> +		new_device=$(ifconfig -a | awk "/$normal_mac/"'{print $1}')
[...]

You can use the files /sys/class/net/*/address instead of ifconfig.

Ben.

-- 
Ben Hutchings
When you say `I wrote a program that crashed Windows', people just stare ...
and say `Hey, I got those with the system, *for free*'. - Linus Torvalds

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: