Noyau personnalisé: échec du chargement du firmware lorsque le module est intégré

9

J'aimerais que tous mes modules soient intégrés, mais cela échoue avec iwlagn:

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

Le fichier de microcode existe /lib/firmwareet tout fonctionne très bien si je compile iwlagnen module. Je n'ai aucune idée où il cherche le fichier ou quel est le problème - des idées?

justdontdoit
la source
Faire une nouvelle réponse à la place d'un commentaire; EXTRA_FIRMWARE_DIR correspond aux emplacements d'objet blob du micrologiciel dans l'environnement de génération; pas la cible. voir ( cateee.net/lkddb/web-lkddb/EXTRA_FIRMWARE_DIR.html )
orpheuswasrebornhere le

Réponses:

10

Jetez un oeil sur les CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWAREet les CONFIG_EXTRA_FIRMWARE_DIRoptions de configuration (à l'adresse des pilotes de périphériques - Options> Pilote générique ).

La première option permettra la construction du firmware dans le noyau, la seconde devrait contenir le nom du fichier du firmware (ou une liste de noms séparés par des espaces), et la troisième où chercher le firmware.

Ainsi, dans votre exemple, vous définiriez ces options sur:

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

Un conseil: compiler tous les modules dans le noyau n'est pas une bonne idée . Je pense que je comprends votre ambition parce qu'à un moment donné, j'étais aussi désespéré de le faire. Le problème avec une telle approche est que vous ne pouvez pas décharger le module une fois qu'il est intégré - et, malheureusement, surtout les pilotes sans fil ont tendance à être bogués, ce qui oblige à recharger leurs modules. De plus, dans certains cas, une version de module d'un pilote récent ne fonctionnera tout simplement pas.

rozcietrzewiacz
la source
Ce n'est plus vrai. Les pilotes Intel sont stables et fonctionnent bien pendant des jours sans aucune intervention manuelle nécessaire.
LtWorf
EXTRA_FIRMWARE ne fonctionne que sur les noyaux 64 bits selon la documentation
arved