LINUX.ORG.RU

Порядок загрузки драйверов

 , ,


0

2

Не знаю даже как назвать эту тему. Есть маленькая эмбеддед система, в которую воткнут wifi модем. В процессе производства какой-то момент поменялся чипсет этого модема, и теперь запускается драйвер (carl9170), который хочет загрузить в модем свое firmware. Проблема в том, что на момент запуска драйвера файловая система не успевает смонтироваться, это происходит на одну секунду позже, и драйвер сообщает, что firmware загрузить не вышло. Драйвер вкомпилен в ядро, соответственно, для его запуска фс не нужна, предыдущий модем fw не требовал, и все работало.

Вопрос, что вообще определяет порядок запуска драйверов в ядре и как ему намекнуть, что надо бы подождать пару сек?

Очевидное решение - пересобрать с драйвером, вынесенным в виде модуля, но не оч хочется вообще пересобирать данное ядро, потому система, как я сказал уже, встроенная, и в данном случае это тянет пересборку еще драйвера взаимодействия с DSP и т.д.

Еще одно очевидное решение - перетыкать usb устройство после загрузки (программно, например), но оно тоже выглядит так себе.

rootwait в параметерах ядра, как я понимаю, тут не при делах, т.к. это значит подождать, пока смонтируется фс, а не падать сразу с ошибкой. В любом случае, rootwait и так задан в параметрах.

откуда запускается ??
если драйвер в инитрамфс, то засунуть в инитрамфс и фирмваре.

pfg ★★★★★
()

Очевидное решение - пересобрать с драйвером, вынесенным в виде модуля

AlexVR ★★★★★
()

и в данном случае это тянет пересборку еще драйвера взаимодействия с DSP и т.д.

Так это просит автоматизации. Вы что, вручную это делаете?

AlexVR ★★★★★
()

Модифицируй драйвер: если фирмварь прочитать не удалось, то return -EPROBE_DEFER, тогда система отложит инициализацию устройства и позже попробует ещё раз.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от pfg

У него же embedded. На фиг ему инитрамфс?

AlexVR ★★★★★
()

Помести файл прошивки в initramfs или исключи модуль из initramfs, если он вкомпилен монолитно в ядро - пересобери ядро.

kostik87 ★★★★★
()

Можно попробовать сделать unbind и bind драйверу (через procfs) после того как rootfs смонтировался.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.