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: