[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#521370: mkinitramfs doesn't find firmware files



hello,

On Thu, 26 Mar 2009, Rogério Brito wrote:

> 
> I am just experimenting with initramfs-based kernels and I tried to use
> mkinitramfs, with the following command taken from the manpage:
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> (...)
> Adding module /lib/modules/2.6.29-rc6-2/kernel/drivers/net/b44.ko
> Adding module /lib/modules/2.6.29-rc6-2/kernel/drivers/net/e100.ko
> W: Possible missing firmware /lib/firmware/e100/d102e_ucode.bin for module e100
> W: Possible missing firmware /lib/firmware/e100/d101s_ucode.bin for module e100
> W: Possible missing firmware /lib/firmware/e100/d101m_ucode.bin for module e100
> Adding module /lib/modules/2.6.29-rc6-2/kernel/drivers/net/r8169.ko
> Adding module /lib/modules/2.6.29-rc6-2/kernel/drivers/net/slhc.ko
> Copying module directory kernel/drivers/scsi
> (...)

right thanks for report.

> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> 
> Please notice that it tries to find the firmware in a directory that is
> "version agnostic", but it is not always present. It should also seek
> directories that have the version of the kernel in its name, like:
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> rbrito@chagas:~$ tree /lib/firmware/2.6.29-rc6-2/
> /lib/firmware/2.6.29-rc6-2/
> `-- e100
>     |-- d101m_ucode.bin
>     |-- d101s_ucode.bin
>     `-- d102e_ucode.bin
> 
> 1 directory, 3 files
> rbrito@chagas:~$ 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> 
> It would, then, find the files without any problems.
> 
> 
> Thanks for the package, Rogério Brito.

you can try belows patch,
you will need to apply it to /usr/share/initramfs-tools/hook-functions

commit dabf87a52411c729536051e78b2ad587f767be54
Author: maximilian attems <maks@debian.org>
Date:   Fri Mar 27 10:35:20 2009 +0100

    hook-functions: Add firmware from versioned directories too.
    
    First see if there is a $(uname -a) versioned firmware around
    and if there is add it first.


diff --git a/hook-functions b/hook-functions
index 2368b8d..e549c81 100644
--- a/hook-functions
+++ b/hook-functions
@@ -62,14 +62,16 @@ manual_add_modules()
 			continue
 		fi
 		for firmware in $firmwares; do
-			if [ -e "${DESTDIR}/lib/firmware/${firmware}" ]; then
+			if [ -e "${DESTDIR}/lib/firmware/${firmware}" ] \
+			|| [ -e "${DESTDIR}/lib/firmware/${version}/${firmware}" ]; then
 				continue
 			fi
 
 			# Only print warning for missing fw of loaded module
 			# or forced loaded module
-			if [ ! -e "/lib/firmware/${firmware}" ]; then
-				if grep -q "^$(basename "${mam_x}" .ko)" \
+			if [ ! -e "/lib/firmware/${firmware}" ] \
+			&& [ ! -e "/lib/firmware/${version}/${firmware}" ]; then
+				if grep -q "^$(basename "${mam_x}" .ko)[[:space:]]" \
 				/proc/modules \
 				|| grep -q "^$(basename "${mam_x}" .ko)" \
 				"${CONFDIR}/modules"; then
@@ -83,7 +85,11 @@ manual_add_modules()
 				copy_exec /lib/udev/firmware.agent
 			fi
 
-			copy_exec "/lib/firmware/${firmware}"
+			if [ -e "/lib/firmware/${version}/${firmware}" ]; then
+				copy_exec "/lib/firmware/${version}/${firmware}"
+			else
+				copy_exec "/lib/firmware/${firmware}"
+			fi
 			if [ "${verbose}" = "y" ]; then
 				echo "Adding firmware ${firmware}"
 			fi



Reply to: