사용자 정의 커널: 모듈이 내장되어 있으면 펌웨어를 로드할 수 없습니다.

사용자 정의 커널: 모듈이 내장되어 있으면 펌웨어를 로드할 수 없습니다.

모든 모듈을 빌드하고 싶지만 실패합니다 iwlagn.

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

마이크로코드 파일이 존재하며 모듈로 컴파일하면 /lib/firmware모든 것이 잘 작동합니다. iwlagn파일을 어디에서 찾고 있는지, 무엇이 잘못되었는지 전혀 모르겠습니다. 어떤 아이디어가 있습니까?

답변1

옵션 보기 CONFIG_FIRMWARE_IN_KERNEL및 구성(위치 CONFIG_EXTRA_FIRMWARE:CONFIG_EXTRA_FIRMWARE_DIR장치 드라이버->일반 드라이버 옵션).

첫 번째 옵션은 펌웨어를 커널에 구축할 수 있도록 하고, 두 번째 옵션은 펌웨어 파일 이름(또는 공백으로 구분된 이름 목록)을 포함해야 하며, 세 번째 옵션은 펌웨어 파일 이름을 포함해야 합니다.

따라서 귀하의 예에서는 이러한 옵션을 다음과 같이 설정합니다.

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

조언 한마디:모든 모듈을 커널로 컴파일하는 것은 좋은 생각이 아닙니다.. 나는 당신의 야망을 이해한다고 생각합니다. 왜냐하면 언젠가 나도 이것을 하고 싶었기 때문입니다. 이 접근 방식의 문제점은 모듈이 일단 내장되면 제거할 수 없다는 것입니다. 불행하게도 특히 무선 드라이버에는 모듈을 다시 로드해야 하는 버그가 있는 경향이 있습니다. 또한 최신 드라이버의 모듈 버전이 작동하지 않는 경우도 있습니다.

관련 정보