自定义内核:模块内置时无法加载固件


9

我想内置所有模块,但是失败了iwlagn

iwlagn 0000:03:00.0: request for firmware file 'iwlwifi-6000-4.ucode' failed.
iwlagn 0000:03:00.0: no suitable firmware found!

微代码文件存在于其中/lib/firmware,如果我将其编译iwlagn为模块,则整个程序就可以正常工作。我不知道它在哪里寻找文件或出了什么问题-有什么想法吗?


做出新的回答而不是评论;EXTRA_FIRMWARE_DIR对应于构建环境中的固件blob位置;不是目标。见(cateee.net/lkddb/web-lkddb/EXTRA_FIRMWARE_DIR.html
orpheuswasrebornhere

Answers:


10

有一个看看CONFIG_FIRMWARE_IN_KERNELCONFIG_EXTRA_FIRMWARECONFIG_EXTRA_FIRMWARE_DIR配置选项(在发现设备驱动程序- >通用驱动程序选项)。

第一个选项将使固件内置在内核中,第二个选项应包含固件文件名(或用空格分隔的名称列表),第三个选项应在哪里查找固件。

因此,在您的示例中,您可以将这些选项设置为:

CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE='iwlwifi-6000-4.ucode'
CONFIG_EXTRA_FIRMWARE_DIR='/lib/firmware'

忠告:将所有模块编译到内核中不是一个好主意。我想我了解您的雄心壮志,因为在某个时候我也很想这样做。这种方法的问题在于,一旦内置模块,就无法卸载该模块-不幸的是,尤其是无线驱动程序容易出现故障,这导致必须重新加载其模块。同样,在某些情况下,最新驱动程序的模块版本将无法正常工作。


这不再是真的。英特尔驱动程序稳定并且可以在几天内正常运行,无需任何手动干预。
LtWorf

EXTRA_FIRMWARE只根据文档的工作在64位内核
arved
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.