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