STP vs. DHCP during Debian pxeboot installs
When performing unattended Debian installations across a network, some
switch protocols/configurations thwart required DHCP negotiation by
simply blocking traffic for a time, and DHCP gives up after its default
For instance, in installing some Dell M610 blades (Broadcom NetXtreme II
adapters - bnx2 linux driver module) within Cisco switch fabric running
STP (Spanning Tree Protocol), interface traffic is blocked until STP can
determine that the port coming on-line does not introduce any switching
loops. The DHCP requests being sent during that time just fall on the
floor, and DHCP gives up before it's ever really given a chance.
http://www.debian.org/releases/stable/example-preseed.txt suggests that
"d-i netcfg/dhcp_timeout string 60" can help, but the preseed file itself
may be fetched over the network (eg; via a pxelinux.cfg/<file> append
directive "url=http://host/path/to/preseed.cfg"), so DHCP already needs
to have completed its task.
Additionally, depending on your hardware/firmware/driver confluence and if/
how network adapters reset during system boot and/or driver initialization,
DHCP negotiaions may re-occur during different phases - PXE boot, after
booting the installer image, and again later during the install.
For DHCP to succeed during the network install, an additional pxelinux
append directive similar to "netcfg/dhcp_timeout=60" may be required to
allow a freshly-bounced NIC link to finish STP before giving up on DHCP.
Here's what a sample pxelinux.cfg/preseed for network installs might look like:
append initrd=lenny-amd64/initrd.gz auto priority=critical url=http://netinstall/preseed.txt interface=eth0 base-installer/kernel/image=linux-image-2.6-amd64 netcfg/dhcp_timeout=60
I'd suggest patching http://www.debian.org/releases/stable/example-preseed.txt
with something like the following:
--- example-preseed.txt 2009/09/18 17:15:30 1.1
+++ example-preseed.txt 2009/09/18 17:29:34
@@ -17,8 +17,9 @@
# To pick a particular interface instead:
#d-i netcfg/choose_interface select eth1
-# If you have a slow dhcp server and the installer times out waiting for
-# it, this might be useful.
+# If you have a slow dhcp server (or STP) and the installer times out waiting
+# for it, this might be useful. If this preseed file is loaded via network,
+# pre-preseed this eg; "netcfg/dhcp_timeout=60" in a pxelinux file instead
#d-i netcfg/dhcp_timeout string 60
# If you prefer to configure the network manually, uncomment this line and