펌웨어 하위 시스템이 udevd를 사용하여 생성된 sysfs "데이터" 항목에 펌웨어를 복사한다는 것을 알게 되었습니다.
하지만 udevd가 아직 내장 드라이버 모듈을 시작하지 않은 경우 어떻게 작동합니까?
저는 3.14 커널을 사용하고 있습니다.
티아!
답변1
나는 커널 소스 코드, 특히 를 읽고 drivers/base/firmware_class.c
발견했습니다.
CONFIG_FW_LOADER_USER_HELPER
udev
펌웨어 로딩 변형을 활성화합니다 (분명히 udev 런타임의 로드 가능한 모듈에만 해당). 하지만 위에서 언급했듯이랑카 멜레이것은 시대에 뒤떨어진 접근 방식인 것 같습니다.
또한, 정확하게 말하면 내장 모듈에 필요한 펌웨어 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