So who's doing it?
For example, kernel -generic stores its kernel modules in: /lib/modules/-generic and its firmware in: /lib/firmware/-generic When I compile the -generic Ubuntu kernel according the ". Alternate Build Method: The Old-Fashioned Debian Way " I get the appropriate modules directory and all my devices work except.
This firmware is non-GPL, provided by Intel and packed by Ubuntu. I don't believe it has any actual tie to a particular kernel version. cmp shows that the versions in the various directories are identical.
Update2 Some more research turned up some more answers. Up until version 92 of udev, the program firmware_helper was the way firmware got loaded. Starting with udev 93 this program was replaced with a script named providing identical functionality as far as I can tell.
Both of these hardcode the firmware path to /lib/firmware. Ubuntu still seems to be using the /lib/udev/firmware_helper binary. The name of the firmware file is passed to firmware_helper in the environment variable FIRMWARE which is concatenated to the path /lib/firmware and used to load the.
Fw request_firmware failed: Reason -2 errno-base. h defines this as: #define ENOENT 2 / No such file or directory / (The function returning ENOENT puts a minus in front of it.) I tried creating a symlink in /lib/firmware where my kernel's name pointed to the.
The actual request to load the firmware is made by the driver (ipw2200 in my case) via the system call: request_firmware(., "ipw2200-bss. fw. Now somewhere in between the driver calling request_firmware and firmware_helper looking at the FIRMWARE environment variable, the kernel package name is getting.
I'm compiling a custom kernel under Ubuntu and I'm running into the problem that my kernel doesn't seem to know where to look for firmware. Under Ubuntu 8.04, firmware is tied to kernel version the same way driver modules are.
So how does the kernel know where to look for firmware? Update I found this solution to the exact problem I'm having, however it no longer works as Ubuntu has eliminated /etc/hotplug. d and no longer stores its firmware in /usr/lib/hotplug/firmware.