Kernel personalizado: no puede cargar el firmware cuando el módulo está incorporado

9

Me gustaría tener todos mis módulos integrados, pero esto falla con iwlagn:

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

El archivo de microcódigo existe /lib/firmwarey todo funciona bien si lo compilo iwlagncomo módulo. No tengo idea de dónde está buscando el archivo o qué está mal, ¿alguna idea?

justdontdoit
fuente
Hacer una nueva respuesta en lugar de un comentario; EXTRA_FIRMWARE_DIR corresponde a las ubicaciones de blobs de firmware en el entorno de compilación; No es el objetivo. ver ( cateee.net/lkddb/web-lkddb/EXTRA_FIRMWARE_DIR.html )
orpheuswasrebornhere

Respuestas:

10

Echar un vistazo a la CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWAREy CONFIG_EXTRA_FIRMWARE_DIRlas opciones de configuración (que se encuentran en los controladores de dispositivos -> Opciones de controladores genéricos ).

La primera opción permitirá que el firmware esté integrado en el kernel, la segunda debe contener el nombre del archivo del firmware (o una lista de nombres separados por espacios), y la tercera dónde buscar el firmware.

Entonces, en su ejemplo, establecería esas opciones para:

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

Un consejo: compilar todos los módulos en el núcleo no es una buena idea . Creo que entiendo tu ambición porque en algún momento también estaba desesperado por hacerlo. El problema con este enfoque es que no puede descargar el módulo una vez que está incorporado, y, desafortunadamente, especialmente los controladores inalámbricos tienden a tener errores, lo que lleva a la necesidad de volver a cargar sus módulos. Además, en algunos casos, una versión de módulo de un controlador reciente simplemente no funcionará.

rozcietrzewiacz
fuente
Eso ya no es cierto. Los controladores Intel son estables y funcionan bien durante días sin necesidad de intervención manual.
LtWorf
EXTRA_FIRMWARE solo funciona en kernels de 64 bits de acuerdo con la documentación
llegó el