Как linux загружает прошивку для встроенных модулей драйверов

Я узнал, что подсистема прошивки использует udevd для копирования прошивки в запись созданных данных sysfs.

Но как это работает в случае встроенного модуля драйвера, где udevd еще не запущен?

Я использую ядро ​​3.14.

ТИА!

Я прочитал источники ядра, особенно drivers/base/firmware_class.c , и обнаружил, что

 CONFIG_FW_LOADER_USER_HELPER 

активирует вариант загрузки прошивки udev (очевидно, только для загружаемых модулей, когда udev работает). Но, как упоминалось в LKML, это, кажется, устаревший метод.

Кроме того, прошивка, требуемая встроенными модулями, загружается из initramfs помощью fw_get_filesystem_firmware() через kernel_read() , если быть точным.

Можно создавать изображения встроенного программного обеспечения в самом ядре, используя параметры конфигурации ядра 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