自己寫了個usb test driver,Makefile相關(guān)行如下
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
運行$make??生成對應(yīng)的.ko文件,然后加載該模塊:
sudo insmod usb_test_drv.ko
[sudo] password for minipc:
insmod: ERROR: could not insert module usb_test_drv.ko: Invalid module format
在網(wǎng)上搜解決方案,說是編譯環(huán)境的核的版本號必須和現(xiàn)在運行的核的版本號一致。但是我確實是按照這樣去make這個.ko文件。運行命令查找該模塊信息,$modinfo usb_test_drv.ko
modinfo usb_test_drv.ko
filename: /home/minipc/linux_usb_driver/usb_test_drv.ko
description: USB test Driver
author: Jason Lee
license: GPL
srcversion: 3A7EC96DAAD77A9F0717507
alias: usb:v10D6p1101d*dc*dsc*dp*ic*isc*ip*in*
depends:
retpoline: Y
name: usb_test_drv
vermagic: 5.19.0-rc3+ SMP preempt mod_unload modversions
注意最后一行vermagic: 5.19.0-rc3+?是內(nèi)核版本號,與當(dāng)前運行的內(nèi)核版本號一致,我再用同樣命令查看已有module的信息,發(fā)現(xiàn)vermagic一模一樣。
查看dmesg
dmesg | tail
[ 15.398577] wlp2s0: capabilities/regulatory prevented using AP HT/VHT configuration, downgraded
[ 15.402385] wlp2s0: send auth to b8:3a:08:95:e6:11 (try 1/3)
[ 15.404712] wlp2s0: authenticated
[ 15.405197] wlp2s0: waiting for beacon from b8:3a:08:95:e6:11
[ 15.489074] wlp2s0: associate with b8:3a:08:95:e6:11 (try 1/3)
[ 15.510601] wlp2s0: RX AssocResp from b8:3a:08:95:e6:11 (capab=0x411 status=0 aid=4)
[ 15.523525] wlp2s0: associated
[ 16.637403] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready
[ 16.715343] rfkill: input handler disabled
[ 2208.432216] usb_test_drv: disagrees about version of symbol module_layout
最后一行:usb_test_drv: disagrees about version of symbol module_layout
看來還是版本不一致。又在網(wǎng)上查了一些方案,發(fā)現(xiàn)不僅要內(nèi)核版本號一致,config也要保持一致。我記起來以前改過config,通過$make menuconfig,但是沒有重新編譯內(nèi)核。但是這次make的這個usb_test_drv是用新的config編譯出來的,這可能是導(dǎo)致問題的原因。
于是cd到內(nèi)核source code的根目錄,依次運行:
$make
$make modules_install
$make install
然后重啟機(jī)器,再運行$sudo insmod usb_test_drv.ko, 沒有報錯?。再查看
$ lsmod | grep usb
usb_test_drv 16384 0
usbhid 57344 0
usb_storage 73728 0
hid 143360 2 usbhid,hid_generic
第一行就是該驅(qū)動。順利安裝成功。?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-514420.html文章來源:http://www.zghlxwxcb.cn/news/detail-514420.html
?
到了這里,關(guān)于insmod error could not insert module ... invalid module format [已解決]的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!