
나는 펌웨어 하위 시스템이 udevd를 사용하여 생성된 sysfs 'data' 항목에 펌웨어를 복사한다는 것을 배웠습니다.
하지만 udevd가 아직 시작되지 않은 내장 드라이버 모듈의 경우 이것이 어떻게 작동합니까?
저는 3.14 커널을 사용하고 있습니다.
티아!
답변1
나는 커널 소스, 특히 를 읽어보고 drivers/base/firmware_class.c
다음을 발견했습니다.
CONFIG_FW_LOADER_USER_HELPER
펌웨어 로딩 변형을 활성화합니다 udev
(분명히 udev가 실행 중일 때 로드 가능한 모듈에만 사용할 수 있음). 하지만 위에서 언급했듯이LKML이것은 쓸모없는 방법인 것 같습니다.
또한 내장 모듈에 필요한 펌웨어는 를 통해 initramfs
로드 됩니다 .fw_get_filesystem_firmware()
kernel_read()
답변2
CONFIG_FIRMWARE_IN_KERNEL
, CONFIG_EXTRA_FIRMWARE_DIR
및 커널 구성 옵션을 사용하여 커널 자체에 펌웨어 이미지를 구축할 수 있습니다 CONFIG_EXTRA_FIRMWARE
. 이는 런타임에 사용자 공간에서 펌웨어를 제공할 수 없거나 제공하고 싶지 않은 경우에 유용할 수 있습니다(예: 부팅 장치에 액세스하는 데 문제의 펌웨어가 필요하고 initrd를 사용하고 싶지 않은 경우). ).
다음은 펌웨어 로딩에 사용할 수 있는 옵션에 대한 자세한 설명입니다.https://wiki.tizen.org/wiki/Usage_and_Mechanism_of_kernel_function_%22request_firmware()%22#Load_firmware_from_kernel_image