Namísto překonfigurování jádra se tato chyba (module verification failed
) lze vyřešit pouhým přidáním jednoho řádku CONFIG_MODULE_SIG=n
na začátek Makefile
pro samotný modul:
CONFIG_MODULE_SIG=n
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
Zdá se, že dodavatel vašeho systému povolil ověření podpisu modulu jádra na vašem jádře, což znamená, že nenačte žádný modul, který dodavatel nepodepsal. Jinými slovy, váš opravený modul není podepsán (správně) a jádro jej odmítne načíst.
Účelem toho je zabránit malwaru a rootkitů v načítání škodlivých modulů jádra.
Doporučuji vám kontaktovat vašeho prodejce. Někde na vaší platformě může být možnost zakázat kontrolu podpisů. V opačném případě může být váš dodavatel schopen podepsat modul za vás. Můžete dokonce mít klíč a podrobnosti o algoritmu ověření podpisu a můžete jej podepsat sami.
Bez znalosti platformy, na které běžíte, je těžké poskytnout konkrétnější návrhy.
Přejděte do zdrojového adresáře jádra a proveďte (např.):
./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko
u jádra 4.4.* by umístění klíčů mělo být následující:
./scripts/sign-file sha512 ./certs/signing_key.pem ./certs/signing_key.x509 path/to/your/kernel/module.ko
Otevřete .config
a zkontrolujte, jaký algoritmus digest používá vaše jádro a přečtení v CONFIG_MODULE_SIG
konfigurační hodnoty.
CONFIG_MODULE_SIG=y CONFIG_MODULE_SIG_ALL=y CONFIG_MODULE_SIG_SHA512=y CONFIG_MODULE_SIG_HASH="sha512"