Niestandardowe jądro: nie można załadować oprogramowania wewnętrznego, gdy moduł jest wbudowany

9

Chciałbym mieć wszystkie moje moduły wbudowane, ale to się nie udaje w przypadku iwlagn:

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

Plik mikrokodu istnieje /lib/firmwarei wszystko działa dobrze, jeśli skompiluję iwlagnjako moduł. Nie mam pojęcia, gdzie szuka pliku ani co jest nie tak - jakieś pomysły?

justdontdoit
źródło
Dokonanie nowej odpowiedzi zamiast komentarza; EXTRA_FIRMWARE_DIR odpowiada lokalizacjom obiektów blob oprogramowania układowego w środowisku kompilacji; nie cel. patrz ( cateee.net/lkddb/web-lkddb/EXTRA_FIRMWARE_DIR.html )
orpheuswasrebornhere 24.01.19

Odpowiedzi:

10

Wystarczy popatrzeć na tych CONFIG_FIRMWARE_IN_KERNEL, CONFIG_EXTRA_FIRMWAREi CONFIG_EXTRA_FIRMWARE_DIRopcji konfiguracyjnych (znaleziono w Device Drivers -> Generic sterownika Opcje ).

Pierwsza opcja umożliwi wbudowanie oprogramowania wbudowanego w jądro, druga powinna zawierać nazwę pliku oprogramowania (lub listę nazw oddzieloną spacjami), a trzecia gdzie szukać oprogramowania.

W twoim przykładzie ustawiłbyś te opcje na:

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

Porada: Kompilowanie wszystkich modułów w jądrze nie jest dobrym pomysłem . Myślę, że rozumiem twoje ambicje, ponieważ w pewnym momencie również desperacko to zrobiłem. Problem z takim podejściem polega na tym, że nie można rozładować modułu po jego wbudowaniu - i, niestety, szczególnie sterowniki bezprzewodowe mają tendencję do błędów, co prowadzi do konieczności ponownego ładowania modułów. Ponadto w niektórych przypadkach wersja modułu najnowszego sterownika po prostu nie będzie działać.

rozcietrzewiacz
źródło
To już nie jest prawda. Sterowniki Intel są stabilne i działają dobrze przez wiele dni bez konieczności ręcznej interwencji.
LtWorf,
EXTRA_FIRMWARE działa tylko na 64bit Jądra zgodnie z dokumentacją
Arved