bnx2 missing from stock Debian 2.6.24 etchnhalf kernel
For the first time in the history of debian stable releases, a new kernel was included in the stable branch in what was called “Etch and a half” project. This happened from the desire to support hardware that requires updated drivers. This allows an ‘official’ way to upgrade your 2.6.18 debian etch kernel to a more recent one 2.6.24 without doing a manual compile or some use some backported packages. Still if you are not very careful this upgrade can cause problems and this post will show how you can loose your network connectivity if your system is using a bnx2 based driver.
Installing the etchnhalf kernel is a simple as running:
aptitude install linux-image-2.6.24-etchnhalf.1-amd64
- choose your system architecture (linux-image-2.6.24-etchnhalf.1-686 or linux-image-2.6.24-etchnhalf.1-amd64, etc)
There is no real dependency on any special package even if etch-r4 introduced several updated packages like initramfs and sysvinit that are tagged as etchnhalf. As with any kernel upgrade there can be various problems, but this post will deal with people using bnx2 network drivers (quite common on servers like Dell PE1950 or PE2950). This is not related to etchnhalf, but starting with version 2.6.24 of the debian kernel the bnx2 kernel module was removed from the packaged kernel image due to license restrictions placed on the firmware: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=471377
If you are using a bnx2 network driver, then you will have to install a separate package called firmware-bnx2 if you still want to use networking after the kernel upgrade ;-) . This is especially important for existing systems upgrading, as new ones will be dealt by the debian installer.
aptitude install firmware-bnx2
This will install the firmware and run update-initramfs and regenerate your default kernel initrd to include the firmware at boot time.
Unpacking firmware-bnx2 (from .../firmware-bnx2_0.4+etchnhalf.1_all.deb) ...
Setting up firmware-bnx2 (0.4+etchnhalf.1) ...
update-initramfs: Generating /boot/initrd.img-2.6.24-etchnhalf.1-amd64
Hopefully this post help other people in this situation and maybe save you a trip to the datacenter or rack where you have your server. Myself I have learned this the hard way while upgrading 2.6.24 on lenny a while ago…
Note: to be able to install firmware-bnx2 you will need to have enabled the non-free repository of your debian apt mirror, like this:
deb http://ftp.us.debian.org/debian/ etch main contrib **non-free**
This is also properly documented in the release notes:
“Broadcom NetXtreme II network controllers
The bnx2 driver for Broadcom NetXtreme II network controllers has been modified to load firmware files from the filesystem. These firmware files are provided in the firmware-bnx2 package in the non-free section of the archive. Systems that require the bnx2 driver must have the firmware-bnx2 package installed to function with the 2.6.24 “etch-and-a-half” kernel. These devices will not be available at installtime when using a Debian “lenny”-based installer.”