Benutzerdefinierter Kernel: Firmware kann nicht geladen werden, wenn das Modul integriert ist

9

Ich möchte alle meine Module eingebaut haben, aber dies schlägt fehl mit iwlagn:

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

Die Mikrocode-Datei existiert in /lib/firmwareund das Ganze funktioniert einwandfrei, wenn ich iwlagnals Modul kompiliere . Ich habe keine Ahnung, wo nach der Datei gesucht wird oder was falsch ist - irgendwelche Ideen?

einfach nicht tun
quelle
Eine neue Antwort statt eines Kommentars geben; EXTRA_FIRMWARE_DIR entspricht den Firmware-Blob-Positionen in der Build-Umgebung. nicht das Ziel. siehe ( cateee.net/lkddb/web-lkddb/EXTRA_FIRMWARE_DIR.html )
orpheuswasrebornhere

Antworten:

10

Werfen Sie einen Blick auf die CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWAREund CONFIG_EXTRA_FIRMWARE_DIRKonfigurationsoptionen (bei gefunden Device Drivers -> Generic Driver Optionen ).

Die erste Option ermöglicht die Integration der Firmware in den Kernel, die zweite sollte den Firmware-Dateinamen (oder eine durch Leerzeichen getrennte Liste von Namen) enthalten und die dritte, wo nach der Firmware gesucht werden soll.

In Ihrem Beispiel würden Sie diese Optionen auf Folgendes setzen:

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

Ein Tipp: Das Kompilieren aller Module in den Kernel ist keine gute Idee . Ich glaube, ich verstehe Ihren Ehrgeiz, weil ich es irgendwann auch unbedingt tun wollte. Das Problem bei einem solchen Ansatz ist, dass Sie das Modul nicht mehr entladen können, sobald es eingebaut ist - und leider neigen insbesondere die drahtlosen Treiber dazu, fehlerhaft zu sein, was dazu führt, dass ihre Module neu geladen werden müssen. In einigen Fällen funktioniert eine Modulversion eines aktuellen Treibers einfach nicht.

rozcietrzewiacz
quelle
Das stimmt nicht mehr. Intel-Treiber sind stabil und funktionieren tagelang ohne manuelle Eingriffe.
LtWorf
EXTRA_FIRMWARE funktioniert nur auf 64-Bit-Kerneln gemäß der Dokumentation
am