亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3118 | 回復(fù): 7
打印 上一主題 下一主題

如何編譯一個(gè)跨版本運(yùn)行的內(nèi)核模塊? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-08-30 12:04 |只看該作者 |倒序?yàn)g覽
進(jìn)行過內(nèi)核模塊編程的朋友一定知道insmod時(shí)會(huì)檢查版本號(hào),如果版本號(hào)不符就會(huì)報(bào)一個(gè)格式不符的錯(cuò)誤。
那么,有沒有一個(gè)辦法可以讓一個(gè)內(nèi)核模塊跨各內(nèi)核版本運(yùn)行而不需要重新編譯呢?
比如我在我的內(nèi)核上2.6.15-26-386編譯一個(gè)內(nèi)核模塊hello.ko,copy到其它主機(jī)上不管內(nèi)核版本是多少,能直接insmod? 有這樣的解決辦法嗎?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2006-08-30 13:16 |只看該作者
原帖由 zhoulifa 于 2006-8-30 12:04 發(fā)表
進(jìn)行過內(nèi)核模塊編程的朋友一定知道insmod時(shí)會(huì)檢查版本號(hào),如果版本號(hào)不符就會(huì)報(bào)一個(gè)格式不符的錯(cuò)誤。
那么,有沒有一個(gè)辦法可以讓一個(gè)內(nèi)核模塊跨各內(nèi)核版本運(yùn)行而不需要重新編譯呢?
比如我在我的內(nèi)核上2.6.15- ...


這樣該 kernel module 運(yùn)作不起來吧 ?

不同版本的 kernel symbolic table 都不一樣, 就算是你編譯核心時(shí)加上不補(bǔ)上 kernel version checking 功能, 這樣的 kernel module 也無法在其他 kernel 版本上運(yùn)作使用.

當(dāng)然啦, 單純的 hello world 的 kernel module 可能沒差, 但是要 hook/bonding 相關(guān) kernel 函數(shù)的 kernel module 就掛了.

==

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2006-08-30 13:46 |只看該作者
應(yīng)該是沒有。 特別是gcc的版本也很重要, 如果你的hello,ko是為2.6.0(gcc 3.2編譯 )寫的,那么拿到gcc 4.0編的2.6.0上也不行。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2006-08-30 14:42 |只看該作者
我試了一些也確實(shí)是不行
但這樣的狀況對(duì)于Linux推廣就是個(gè)障礙了,比如某廠家寫了一個(gè)程序,可能需要作為內(nèi)核模塊去運(yùn)行,但他又不想把代碼公布,那就沒辦法做成一個(gè)Linux下都能用的模塊了,遺憾

看來可能比較多想賺錢的廠家一時(shí)半會(huì)兒都不會(huì)加入Linux的行列來做軟件產(chǎn)品

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2006-08-30 14:54 |只看該作者
這是linux kernel 的 設(shè)計(jì)上的硬傷,
linux更新太快,模組劃分不合理,為了讓驅(qū)動(dòng)穩(wěn)定,只能使用這個(gè)限制。
不過, 有時(shí)只要你的 kernel 配置差別不大, 版本差別不大, 強(qiáng)制 加載也可以運(yùn)行, 我在 arm-linux 上試過, 2.4.x 上也試過, 2.6.x 就不知道了。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2006-08-30 15:06 |只看該作者
原帖由 connet 于 2006-8-30 14:54 發(fā)表
這是linux kernel 的 設(shè)計(jì)上的硬傷,
linux更新太快,模組劃分不合理,為了讓驅(qū)動(dòng)穩(wěn)定,只能使用這個(gè)限制。
不過, 有時(shí)只要你的 kernel 配置差別不大, 版本差別不大, 強(qiáng)制 加載也可以運(yùn)行, 我在 arm-linux  ...


kernel 本身底層的 api 與 kernel structure 沒變化太多的話,也許可以強(qiáng)制掛入,不過離太多版本可能很難。

另外其實(shí)一般廠商愿意給 source 的話,通常就可以當(dāng)場(chǎng)編譯安裝使用。不過另外有些廠商則是只有提供 LINUX 企業(yè)版本的 binary kernel module,所以一般可以看到許多廠商放出來的 binary driver 都是給 RHEL 與 SLES 這類企業(yè)版本居多。

也許 linux kernel 的一些 ABI 項(xiàng)目需要固定,這樣廠商發(fā)展撰寫 driver 才可以更單純。

題外話最近使用 fuse,可以擴(kuò)展很多 linux 能夠存取使用的 filesystem。如果相關(guān)硬體設(shè)備裝置的驅(qū)動(dòng)也有這類機(jī)制就更好了。

==

[ 本帖最后由 kenduest 于 2006-8-30 15:08 編輯 ]

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2006-08-30 15:26 |只看該作者
原帖由 zhoulifa 于 2006-8-30 14:42 發(fā)表
我試了一些也確實(shí)是不行
但這樣的狀況對(duì)于Linux推廣就是個(gè)障礙了,比如某廠家寫了一個(gè)程序,可能需要作為內(nèi)核模塊去運(yùn)行,但他又不想把代碼公布,那就沒辦法做成一個(gè)Linux下都能用的模塊了,遺憾

看來可能比較 ...



第一,盡可能不選擇這樣的廠家和產(chǎn)品

第二,對(duì)于流行的發(fā)行版,要求廠家提供定制版本,或跟蹤RH AS、Fedora的核心updates, 及時(shí)在網(wǎng)站上發(fā)布對(duì)應(yīng)的版本

第三:廠家如果既要當(dāng)婊子還要立牌坊,可以把一些見不得人的不直接調(diào)用核心功能的部分獨(dú)立出來做成.o或者.a 文件,把與核心接口的那些部分用源代碼提供,編譯連接在一起。一些軟Modem就是這樣干的。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2006-08-31 10:42 |只看該作者
安裝時(shí)編譯。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP