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

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

我想内置所有模块,但这失败了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我不知道它在哪里寻找文件或出了什么问题 - 有什么想法吗?

答案1

查看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'

一句忠告:将所有模块编译到内核中并不是一个好主意。我想我理解你的雄心,因为在某些时候我也渴望做到这一点。这种方法的问题是,一旦内置模块,您就无法卸载它 - 而且不幸的是,尤其是无线驱动程序往往存在错误,这导致需要重新加载其模块。此外,在某些情况下,最新驱动程序的模块版本将无法工作。

相关内容