Bug#492205: installation-reports: firmware load testing
On Thu, Jul 24, 2008 at 05:26:19PM -0400, Joey Hess wrote:
> dann frazier wrote:
> > The bnx2 module requests 2 pieces of firmware - maybe that has
> > something to do with it?
>
> Hm, don't think so..
>
> If you want to test, I've checked fixes for all the issues I understand
> (except for the code page problem) into hw-detect in svn.
>
> Test image: http://kitenet.net/~joey/tmp/mini.so
> sha1sum: 31716cc357ac0db4a315523dd69daade3453ef00
I couldn't get this image to work; it seems to load bnx2 on startup
automatically and, after a 'modprobe -r bnx2', it doesn't seem to ever
bring up the fw prompt.
> If it still tries to install all the firmware .debs, I'd probably need
> to see a sh -x check-missing-firmware to figure out why. Though I did
> add a little bit of logging, that may help pinpoint it.
I collected this (after commenting out debconf stuff, and manually
modprobing bnx2 to create the /tmp/missing-firmware file). See [1].
The problem appears to be that the grepfor file contains an empty
trailing line:
~ # cat /tmp/grepfor
bnx2-06-4.0.5.fw
bnx2-06-4.0.5.fw
~ #
And this is because "$files" has a trailing space:
~ # cat /tmp/files2.dannf | sed 's/$/,/'
bnx2-06-4.0.5.fw bnx2-06-4.0.5.fw ,
Filtering out the trailing space[2] fixed this for me.
[1]
BusyBox v1.10.2 (2008-06-06 18:28:20 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.
~ # modprobe -r bnx2
~ # ls
bin dev init lib mnt root sys usr
cdrom etc initrd media proc sbin tmp var
~ # ls /media/
~ # ls /tmp
x
~ # modprobe bnx2
~ # cat /tmp/missing-firmware
bnx2 bnx2-06-4.0.5.fw
bnx2 bnx2-06-4.0.5.fw
~ # /bin/check-missing-firmware
+ set -e
+ LOG=/tmp/missing-firmware
+ NL=
+ first=1
+ read_log
+ modules=
+ files=
+ [ -s /tmp/missing-firmware ]
+ mv /tmp/missing-firmware /tmp/missing-firmware.old
+ OLDIFS=
+ IFS=
+ cat /tmp/missing-firmware.old
+ module=bnx2
+ [ -n bnx2 ]
+ modules=bnx2
+ file=bnx2-06-4.0.5.fw
+ [ -n bnx2-06-4.0.5.fw ]
+ files=bnx2-06-4.0.5.fw
+ module=bnx2
+ [ -n bnx2 ]
+ modules=bnx2 bnx2
+ file=bnx2-06-4.0.5.fw
+ [ -n bnx2-06-4.0.5.fw ]
+ files=bnx2-06-4.0.5.fw bnx2-06-4.0.5.fw
+ IFS=
+ rm -f /tmp/missing-firmware.old
+ [ -n bnx2 bnx2 ]
+ return 0
+ ask_load_firmware
+ return 0
+ mountmedia
mount: option requires an argument -- o
BusyBox v1.10.2 (2008-06-06 18:28:20 UTC) multi-call binary
Usage: mount [flags] DEVICE NODE [-o options,more-options]
umount: cannot umount /media: Invalid argument
mount: mounting /dev/cciss/c0d0 on /media failed: Invalid argument
+ [ -e /media/bnx2-06-4.0.5.fw ]
+ [ -e /media/bnx2-06-4.0.5.fw ]
+ umount /media
umount: cannot umount /media: Invalid argument
+ true
+ mountmedia driver
mount: option requires an argument -- o
BusyBox v1.10.2 (2008-06-06 18:28:20 UTC) multi-call binary
Usage: mount [flags] DEVICE NODE [-o options,more-options]
umount: cannot umount /media: Invalid argument
mount: mounting /dev/cciss/c0d0 on /media failed: Invalid argument
mount: option requires an argument -- o
BusyBox v1.10.2 (2008-06-06 18:28:20 UTC) multi-call binary
Usage: mount [flags] DEVICE NODE [-o options,more-options]
umount: cannot umount /media: Invalid argument
mount: mounting /dev/cciss/c0d1 on /media failed: Invalid argument
mount: option requires an argument -- o
BusyBox v1.10.2 (2008-06-06 18:28:20 UTC) multi-call binary
Usage: mount [flags] DEVICE NODE [-o options,more-options]
umount: cannot umount /media: Invalid argument
mount: mounting /dev/cciss/c0d2 on /media failed: Invalid argument
mount: option requires an argument -- o
BusyBox v1.10.2 (2008-06-06 18:28:20 UTC) multi-call binary
Usage: mount [flags] DEVICE NODE [-o options,more-options]
umount: cannot umount /media: Invalid argument
+ echo bnx2-06-4.0.5.fw bnx2-06-4.0.5.fw
+ sed -e s/ /\n/g
+ [ -f /media/atmel-firmware_1.3-3_all.deb ]
+ list_deb_firmware /media/atmel-firmware_1.3-3_all.deb
+ ar p /media/atmel-firmware_1.3-3_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/atmel-firmware_1.3-3_all.deb
+ echo /media/atmel-firmware_1.3-3_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/atmel-firmware_1.3-3_all.deb /var/cache/firmware/
+ basename /media/atmel-firmware_1.3-3_all.deb
+ udpkg --unpack /var/cache/firmware/atmel-firmware_1.3-3_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/firmware-bnx2_0.12_all.deb ]
+ list_deb_firmware /media/firmware-bnx2_0.12_all.deb
+ ar p /media/firmware-bnx2_0.12_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/firmware-bnx2_0.12_all.deb
+ echo /media/firmware-bnx2_0.12_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/firmware-bnx2_0.12_all.deb /var/cache/firmware/
+ basename /media/firmware-bnx2_0.12_all.deb
+ udpkg --unpack /var/cache/firmware/firmware-bnx2_0.12_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/firmware-iwlwifi_0.12_all.deb ]
+ list_deb_firmware /media/firmware-iwlwifi_0.12_all.deb
+ ar p /media/firmware-iwlwifi_0.12_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/firmware-iwlwifi_0.12_all.deb
+ echo /media/firmware-iwlwifi_0.12_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/firmware-iwlwifi_0.12_all.deb /var/cache/firmware/
+ basename /media/firmware-iwlwifi_0.12_all.deb
+ udpkg --unpack /var/cache/firmware/firmware-iwlwifi_0.12_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/firmware-qlogic_0.12_all.deb ]
+ list_deb_firmware /media/firmware-qlogic_0.12_all.deb
+ ar p /media/firmware-qlogic_0.12_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/firmware-qlogic_0.12_all.deb
+ echo /media/firmware-qlogic_0.12_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/firmware-qlogic_0.12_all.deb /var/cache/firmware/
+ basename /media/firmware-qlogic_0.12_all.deb
+ udpkg --unpack /var/cache/firmware/firmware-qlogic_0.12_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/firmware-ralink_0.12_all.deb ]
+ list_deb_firmware /media/firmware-ralink_0.12_all.deb
+ ar p /media/firmware-ralink_0.12_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/firmware-ralink_0.12_all.deb
+ echo /media/firmware-ralink_0.12_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/firmware-ralink_0.12_all.deb /var/cache/firmware/
+ basename /media/firmware-ralink_0.12_all.deb
+ udpkg --unpack /var/cache/firmware/firmware-ralink_0.12_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/ixp4xx-microcode_2.4-2_armel.deb ]
+ list_deb_firmware /media/ixp4xx-microcode_2.4-2_armel.deb
+ ar p /media/ixp4xx-microcode_2.4-2_armel.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/ixp4xx-microcode_2.4-2_armel.deb
+ echo /media/ixp4xx-microcode_2.4-2_armel.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/ixp4xx-microcode_2.4-2_armel.deb /var/cache/firmware/
+ basename /media/ixp4xx-microcode_2.4-2_armel.deb
+ udpkg --unpack /var/cache/firmware/ixp4xx-microcode_2.4-2_armel.deb
(Reading database...)
(Updating database...)
+ [ -f /media/libertas-firmware_5.110.22.p14-1_all.deb ]
+ list_deb_firmware /media/libertas-firmware_5.110.22.p14-1_all.deb
+ ar p /media/libertas-firmware_5.110.22.p14-1_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/libertas-firmware_5.110.22.p14-1_all.deb
+ echo /media/libertas-firmware_5.110.22.p14-1_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/libertas-firmware_5.110.22.p14-1_all.deb /var/cache/firmware/
+ basename /media/libertas-firmware_5.110.22.p14-1_all.deb
+ udpkg --unpack /var/cache/firmware/libertas-firmware_5.110.22.p14-1_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/zd1211-firmware_2.16.0.0-0.1_all.deb ]
+ list_deb_firmware /media/zd1211-firmware_2.16.0.0-0.1_all.deb
+ ar p /media/zd1211-firmware_2.16.0.0-0.1_all.deb data.tar.gz
+ grep -qf /tmp/grepfor
+ tar zt
+ grep ^\./lib/firmware/
+ sed -e s!^\./lib/firmware/!!
+ install_firmware_pkg /media/zd1211-firmware_2.16.0.0-0.1_all.deb
+ echo /media/zd1211-firmware_2.16.0.0-0.1_all.deb
+ grep -q \.deb$
+ mkdir -p /var/cache/firmware/
+ cp -a /media/zd1211-firmware_2.16.0.0-0.1_all.deb /var/cache/firmware/
+ basename /media/zd1211-firmware_2.16.0.0-0.1_all.deb
+ udpkg --unpack /var/cache/firmware/zd1211-firmware_2.16.0.0-0.1_all.deb
(Reading database...)
(Updating database...)
+ [ -f /media/*.udeb ]
+ [ -f /media/*.ude ]
+ rm -f /tmp/grepfor
+ umount /media
+ modprobe -r bnx2
+ modprobe bnx2
+ modprobe -r bnx2
+ modprobe bnx2
+ read_log
+ modules=
+ files=
+ [ -s /tmp/missing-firmware ]
+ [ -n ]
+ return 1
[2]
--- check-missing-firmware.sh (revision 54571)
+++ check-missing-firmware.sh (working copy)
@@ -98,7 +98,7 @@
# This does not use anna because debs can have arbitrary
# dependencies, which anna might try to install.
if mountmedia driver; then
- echo "$files" | sed -e 's/ /\n/g' >/tmp/grepfor
+ echo "$files" | sed 's/\ $//' | sed -e 's/ /\n/g' >/tmp/grepfor
for filename in /media/*.deb /media/*.udeb /media/*.ude /media/firmware/*.deb /media/firmware/*.udeb /media/firmware/*.ude; do
if [ -f "$filename" ]; then
if check_deb_arch "$filename" && list_deb_firmware "$filename" | grep -qf /tmp/grepfor; then
Reply to: