LINUX.ORG.RU
решено ФорумMobile

Как добавить драйвер в ядро

 , , , ,


1

1

Есть исходники нужного мне ядра, но при вызове

make menuconfig

в списке драйверов я не нахожу нужного мне драйвера. ОК, иду на сайт производителя и скачиваю архивированный пакет (исходники, makefile итд) нужного мне драйвера под Линукс Теперь вопрос — как мне подсунуть этот драйвер в исходники ядра, чтобы я потом мог увидеть его в списке драйверов.(Android)

Берешь исходники, решительно так читаешь к ним документацию, компилишь модуль. Если надо в ядро вкорячить, решительно так пилишь патч и мержишь с исходниками ядра. Главное, решительность.

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

мне бы еще решительно понять как все это сделать…. я же еще новичко во всем этом, только один раз пробовал собирать ядро что то я конечно понимаю но…все же

CrazyBear
() автор топика
Ответ на: комментарий от CrazyBear

мне бы еще решительно понять как все это сделать

я понимаю, что у молодежи не в ходу, но:

решительно так читаешь к ним документацию

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

Anoxemian ★★★★★
()
Последнее исправление: Anoxemian (всего исправлений: 1)

Makefile у тебя скорее всего уже есть. Поэтому тебе нужно (1) найти место в структуре исходников ядра, куда драйвер подходит лучше всего. Не думаю, что это важно, но так будет проще. Дальше тебе нужно (2) написать Kconfig файл для твоего драйвера и (3) подправить Kconfig и Makefile в директории уровнем выше. Этого должно хватить.

На примере iwlwifi, который уже в дереве. Драйвер лежит в drivers/net/wireless/intel/iwlwifi. В drivers/net/wireless/intel/iwlwifi/Kconfig лежит его конфигурация, которая используется скриптами сборки ядра. В drivers/net/wireless/intel/Kconfig упоминается Kconfig от iwlwifi, чтобы kbuild нашёл этот файл. В drivers/net/wireless/intel/Makefile в сборку добавляется iwlwifi.

А в Android, скорее всего, есть свой механизм для добавления драйверов, не включённых в исходники ядра. Посмотри готовые примеры конфигураций для плат и сделай аналогично.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от CrazyBear

iwlwifi тоже из кучи файлов состоит. Ты возьми исходники с kernel.org и глянь сам.

i-rinat ★★★★★
()

Если повезет может out of tree методом соберется:

https://www.kernel.org/doc/Documentation/kbuild/modules.txt === 2. How to Build External Modules

TL;DR

собираешь ядро без своего модуля

cd [где лежит Makefile модуля]

export PATH=$PATH:[где бинарники тулчейна]

KSRC=[путь где собранное ядро]

make ARCH=[aarch64 что ли] CROSS_COMPILE=[префикс бинарей в тулчейне] -C $KSRC M=pwd

anonymous
()
Ответ на: комментарий от anonymous

Поправка, лор сожрал бактики

make ARCH=[aarch64 что ли] CROSS_COMPILE=[префикс бинарей в тулчейне] -C $KSRC M=`pwd`
anonymous
()
14 января 2020 г.
Ответ на: комментарий от CrazyBear

dkms

Значит его скорей всего можно просто dkms собрать. Отдельно от ядра.

gtk3 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.