日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核模块常见问题

發(fā)布時間:2023/12/9 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核模块常见问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

From: http://debug-sai.blogbus.com/logs/45569599.html



在編譯內(nèi)核模塊時,出現(xiàn)

make[1]: 正在進入目錄 `/usr/src/linux-2.6.28'

? ERROR: Kernel configuration is invalid.
???????? include/linux/autoconf.h or include/config/auto.conf are missing.
???????? Run 'make oldconfig && make prepare' on kernel src to fix it.


? WARNING: Symbol version dump /usr/src/linux-2.6.28/Module.symvers
?????????? is missing; modules will have no dependencies and modversions.

? Building modules, stage 2.
。。。。

的錯誤,回到/usr/src/linux-2.6.28目錄下,如下操作

sudo make oldconfig

sudo make prepare

再此編譯內(nèi)核模塊,再出錯

/bin/sh: scripts/mod/modpost: not found

回到/usr/src/linux-2.6.28目錄下,如下操作

sudo make scripts

OK,可以編譯內(nèi)核模塊了



如果加載模塊時出現(xiàn)下面錯誤

insmod: error inserting 'hellomod.ko': -1 Invalid module format

此時,用dmesg在最后一行應(yīng)該看到類似下面的提示:

Dec 19 13:42:29 localhost kernel: hellomod: version magic '2.6.24.2 SMP mod_unload 686 4KSTACKS ' should be '2.6.27.7-134.fc10.i686SMP mod_unload 686 4KSTACKS '

那99%是內(nèi)核版本號對不上,也就是version magic不上,辦法是:修改源目錄下的Makefile,把Makefile第1-4行的值改為當前內(nèi)核一樣的值

VERSION = 2

PATCHLEVEL = 6

SUBLEVEL = 24

EXTRAVERSION = .2

NAME = Err Metey! A Heury Beelge-a Ret!

也有可能是配置不當,用modinfo hello.ko查看,見

http://hi.baidu.com/52hack/blog/item/1f53b1387df83fcad462254a.html



當編譯完內(nèi)核,安裝后,/usr/src/下的源文件包通常我會清除掉一些編譯內(nèi)核中途產(chǎn)生的文件,比如
sudo make-kpkg clean來清除,之后是本文“一”中描述的錯誤,搞定后。如果編譯時出現(xiàn)

WARNING: Symbol version dump /usr/src/linux-2.6.26/Module.symvers
?????????? is missing; modules will have no dependencies and modversions.

但是依然能編譯模塊,然后加載時出現(xiàn)

insmod: error inserting 'hello.ko': -1 Invalid module format

再用dmesg查看顯示

no symbol version for struct_module

具體原因見

http://blog.chinaunix.net/u/12592/showart_1671442.html

解決方案我找遍google也沒見到實際點的操作,唯一的提示來源于

http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Embedded_System&ID=4183&page=1&pos=-1&listType=0

看錯誤提示也知道我們要獲得Module.symvers,/lib/modules/你的linux版本號/下倒是有個Module.symvers,我把那個拷貝過來仍然不對,后來想即然我們不需要內(nèi)核源代碼也可以編譯加載模塊(具體見http://forum.ubuntu.org.cn/viewtopic.php?f=97&t=208453),那么這個東西系統(tǒng)應(yīng)該早就有了,只可能在頭文件下,也就是在未編譯內(nèi)核前/usr/src/下本來就有個linux-XXX的文件夾里的,本來事情到這就結(jié)束了,然而不幸的是那個文件夾被我手賤,在裝完內(nèi)核刪了。。。。還好,我們編譯完內(nèi)核后有兩個deb,一個image的,一個headers的,我們dpkg -i 那個header的deb,就會在/usr/src/下產(chǎn)生一個頭文件文件夾,現(xiàn)在把里面的Module.symvers拷貝到/usr/src/linux-XXX/下吧,問題就搞定了~

?

另外,如果在編譯過程中出現(xiàn)進不了XX目錄這類的問題,看看/lib/modules/你的linux版本號/這個目錄下的build和source的軟鏈接是不是鏈接到/usr/src/linux-XXX/下了。



最后一個問題,不是問題的問題----編譯好后,成功加載,終端中無顯示

《linux設(shè)備驅(qū)動edition3》有如下解釋:

依據(jù)你的系統(tǒng)用來遞交消息行的機制, 你的輸出可能不同. 特別地, 前面的屏幕輸出是來自一個字符控制臺; 如果你從一個終端模擬器或者在窗口系統(tǒng)中運行 insmod 和 rmmod, 你不會在你的屏幕上看到任何東西. 消息進入了其中一個系統(tǒng)日志文件中, 例如 /var/log/messages (實際文件名子隨 Linux 發(fā)布而變化)具體見

http://blog.chinaunix.net/u3/99423/showart_1983683.html

可以用cat /var/log/syslog 或 dmesg 查看

總結(jié)

以上是生活随笔為你收集整理的linux内核模块常见问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。