Alih-alih mengkonfigurasi ulang kernel, kesalahan ini (module verification failed
) dapat diselesaikan dengan hanya menambahkan satu baris CONFIG_MODULE_SIG=n
ke bagian atas Makefile
untuk modul itu sendiri:
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
Sepertinya vendor sistem Anda telah mengaktifkan verifikasi tanda tangan modul kernel pada kernel Anda yang berarti tidak akan memuat modul apa pun yang belum ditandatangani oleh vendor. Dengan kata lain, modul Anda yang ditambal tidak ditandatangani (dengan benar) dan kernel akan menolak untuk memuatnya.
Intinya adalah mencegah malware dan rootkit memuat modul kernel berbahaya.
Saya sarankan Anda menghubungi vendor Anda. Mungkin ada opsi di suatu tempat di platform Anda untuk menonaktifkan pemeriksaan tanda tangan. Jika tidak, vendor Anda mungkin dapat menandatangani modul untuk Anda. Anda bahkan mungkin memiliki kunci dan detail algoritme verifikasi tanda tangan dan dapat menandatanganinya sendiri.
Tanpa mengetahui platform apa yang Anda gunakan, sulit untuk memberikan saran yang lebih spesifik.
Buka direktori sumber kernel dan lakukan (misalnya):
./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko
untuk kernel 4.4.*, lokasi kunci harus sebagai berikut:
./scripts/sign-file sha512 ./certs/signing_key.pem ./certs/signing_key.x509 path/to/your/kernel/module.ko
Periksa apa algoritma intisari yang digunakan kernel Anda dengan membuka .config
dan membacanya di CONFIG_MODULE_SIG
nilai konfigurasi.
CONFIG_MODULE_SIG=y CONFIG_MODULE_SIG_ALL=y CONFIG_MODULE_SIG_SHA512=y CONFIG_MODULE_SIG_HASH="sha512"