Я использую ubuntu, но вопрос для Linux в целом.Как создать и развернуть драйвер Linux?
Я установил модуль/драйвер, скомпилировав мое ядро Linux и установив новое скомпилированное ядро. Он работает нормально.
Для того, чтобы сделать эту работу водителя в другой машине без установки нового ядра, я копирую .ko
файл на новую машину под /lib/modules/<version>/...
, а затем запустить sudo depmod -a
. Затем запустите sudo modprobe <drivername>
. Модуль может быть загружен без проблем. но устройство не работает с этим модулем .ko
.
Эти две машины не идентичны аппаратным средствам, но они идентичны версии ядра и версии выпуска Ubuntu. Обычно копирование файла .ko
должно работать для той же версии Linux и того же ядра.
Дополнительная информация о драйвере. это спрятанный планшетный драйвер. Все файлы патч:
- один .c файл в
drivers/hid/
- добавить одну строку в
drivers/hid/Makefile
- добавить несколько строк в
drivers/hid/usbhid/Kconfig
- добавить несколько строк в
drivers/hid/hid-ids.h
- добавить несколько строк
drivers/hid/usbhid/hid-quirks.c
's hid_blacklist struct before {0, 0}
Это все.
Я даже пытался скопировать весь каталог drivers/hid/
, включая все файлы .ko
с первой машины на вторую. но не повезло. Планшет для планшета можно распознать на второй машине, я могу сделать клик левой кнопкой мыши с помощью пера, но перо не может перемещать курсор.
Надеюсь, я предоставил достаточно подробностей. Моя цель - установить модуль только в идентичную версию Linux (ядро) без переустановки ядра. Я не уверен, как это сделать или если это возможно.
Большое спасибо.
PS:
- dmesg выход в 1-е машины, которая работает: http://paste.ubuntu.com/6419301/
- dmesg выход во 2-е машины: http://paste.ubuntu.com/6419302/
В 1-е машины, перед подключением планшета, lsmod не отображает модуль. после подключения модуль может быть загружен автоматически. Я вижу, что lsmod показывает модуль.
Во 2-м маччине модуль не может быть загружен автоматически, подключив устройство. Я должен сделать sudo modprobe <module>
вручную.
Поскольку мне нужно будет установить модуль на многие машины в моей компании, проще установить модуль, не переустанавливая ядро. Я попытался установить пакеты ядра .deb, которые были построены на 1-й машине на второй машине, отлично работает на 2-й машине. но мне нехорошо переустанавливать ядро на многие машины. Благодарю.
Вы загружали модули 'usbcore' и' usbhid' на 2-й машине до загрузки соответствующего модуля? – alk
Hi alk, 'usbhid.ko' находится под' kernel/drivers/hid/usbhid/'. Как я упоминал выше, я копирую все «драйверы/спрятанные» с 1-го компьютера на второй. По умолчанию загружается 'usbhid'. но я не нахожу 'usbcore' модуль на обеих машинах. Я новичок в материалах ядра. Я не уверен, какой модуль 'usbcore' действительно есть. 'wusbcore'? это единственный, который я могу найти. Благодарю. – user2309998
Что 'lsmod' сообщает вам обе машины до и после загрузки вашего модуля? – alk