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

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

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

Но как это работает в случае встроенного модуля драйвера, где 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/Использование_и_механизм_функции_ядра_%22запрос_прошивки()%22#Загрузка_прошивки_из_образа_ядра

Связанный контент