
Начиная с образа ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz (https://wiki.ubuntu.com/ARM/RaspberryPi) Я пытаюсь добавить драйвер ad525x_dpot I2C, который не был включен во время сборки ядра.
Я взял ad525x_dpot.c
, ad525x_dpot.h
, ad525x_dpot-i2c.c
из соответствующего исходного кода Linux, чтобы создать пакет DKMS.
dkms.conf:
PACKAGE_NAME="ad525x_dpot"
PACKAGE_VERSION="0.10"
MAKE[0]="make all KVERSION=$kernelver"
CLEAN="make clean"
BUILT_MODULE_NAME[0]="ad525x_dpot"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"
Makefile:
obj-m := ad525x_dpot.o ad525x_dpot-i2c.o
KVERSION := $(shell uname -r)
all:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
Модуль ad525x_dpot
может быть загружен modprobe
и он отображается в , lsmod
но не в /sys/bus/i2c/drivers
. В системном журнале есть некоторые предупреждения.
ad525x_dpot: loading out-of-tree module taints kernel.
ad525x_dpot: module verification failed: signature and/or required key missing - tainting kernel
Почему его не видно /sys/bus/i2c/drivers
?
Я попытался загрузить аналогичный модуль ядра ad799x
, который идет с ядром. Он появляется в /sys/bus/i2c/drivers/ad799x
(устройства не определены для использования ad799x
, поэтому он не связан с деревом устройств или конфигурацией платы).
решение1
Пришлось разделить ad525x_dpot.o
DKMS ad525x_dpot-i2c.o
на два пакета, чтобы получить два отдельных модуля ядра.