Kernel personalizado: falha ao carregar o firmware quando o módulo interno

9

Eu gostaria de ter todos os meus módulos embutidos, mas isso falha com iwlagn:

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

O arquivo de microcódigo existe /lib/firmwaree tudo funciona muito bem se eu compilar iwlagncomo módulo. Não faço ideia de onde ele está procurando o arquivo ou o que há de errado - alguma idéia?

justdontdoit
fonte
Fazendo uma nova resposta em vez de um comentário; EXTRA_FIRMWARE_DIR corresponde aos locais dos blobs do firmware no ambiente de construção; não é o alvo. consulte ( cateee.net/lkddb/web-lkddb/EXTRA_FIRMWARE_DIR.html )
orpheuswasrebornhere

Respostas:

10

Ter um olhar para os CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWAREe CONFIG_EXTRA_FIRMWARE_DIRopções de configuração (encontrado em Device Drivers -> Driver Generic Opções ).

A primeira opção permitirá que o firmware seja incorporado ao kernel, a segunda deve conter o nome do arquivo do firmware (ou uma lista de nomes separados por espaço) e a terceira onde procurar o firmware.

Portanto, no seu exemplo, você definiria essas opções para:

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

Um conselho: compilar todos os módulos no kernel não é uma boa ideia . Acho que entendo sua ambição, porque em algum momento eu também estava desesperada para fazê-lo. O problema dessa abordagem é que você não pode descarregar o módulo depois que ele estiver embutido - e, infelizmente, especialmente os drivers sem fio tendem a ser de buggy, o que leva à necessidade de recarregar seus módulos. Além disso, em alguns casos, uma versão do módulo de um driver recente simplesmente não funciona.

rozcietrzewiacz
fonte
Isso não é mais verdade. Os drivers da Intel são estáveis ​​e funcionam bem por dias sem necessidade de intervenção manual.
LtWorf
EXTRA_FIRMWARE só funciona em kernels de 64 bits, de acordo com a documentação
arquivada em