Ubuntu: Boot fails with message “Can’t load firmware file bnx2/bnx2-mips-06.6.2.1.fw”

Googlefood article; just documenting the solution I eventually found.

Problem: Newly installed Ubuntu Server 11.10 fails to boot with message about missing firmware for bnx2 ethernet.

Hardware: Dell 2950

The issue is Bug 842560 in the Ubuntu bug database at launchpad.net; this post is basically just a summary of that thread.

===================================================

Solution:

  1. Boot with your install media
  2. Select Rescue a broken system
  3. Answer all the questions — it feels like you’re doing a reinstall, but you’re not.
  4. Eventually, you get to the rescue menu. Select the partition with your rootfs “/”
  5. This gives you a shell with the rootfs mounted and chroot’ed to
  6. If you use a /boot partition, unmount it (to clear the fake mount) and then remount it
  7. Depending on how you partition your systems, you may have to re-mount /usr and /var as well
  8. Edit /usr/share/initramfs-tools/scripts/init-bottom as shown below
  9. Rebuild your initramfs with update-initramfs -u
  10. Exit the rescue shell
  11. Reboot

===================================================

The changes you make to /usr/share/initramfs-tools/scripts/init-bottom are adding these two lines:


. /scripts/functions
wait_for_udev

So, after editing, the file looks like this:


#!/bin/sh -e
# initramfs init-bottom script for udev

PREREQ=""

# Output pre-requisites
prereqs()
{
echo "$PREREQ"
}

case "$1" in
prereqs)
prereqs
exit 0
;;
esac

#### vvvv ## These are the lines you add
. /scripts/functions
wait_for_udev
#### ^^^^ ## These are the lines you add.

# Stop udevd, we'll miss a few events while we run init, but we catch up
udevadm control --timeout=121 --exit || \
echo "udev exit failed -- rc=$?"

# Move /dev to the real filesystem
mount -n -o move /dev ${rootmnt}/dev

===================================================

Thanks to everyone who contributed to the launchpad thread, and special thanks to user “matteot” for posting a solution.

Leave a Reply