2016-08-18 129 views
0

我使用運行linux內核4.4.0系列的Ubuntu 16.0.4 LTS。 我對i2c-ocores代碼和eeprom驅動程序進行了一些更改,並重新構建了整個內核。然後我安裝了新建的內核。無法加載/插入內核模塊

我用下面的步驟來建立內核:

1. sudo apt-get source linux-image-$(uname -r) 
2. Applied my changes to i2c-ocores and eeprom driver 
3. sudo chmod a+x debian/scripts/* 
4. sudo chmod a+x debian/scripts/misc/* 
5. sudo fakeroot debian/rules clean 
6. sudo fakeroot debian/rules editconfigs 
    a. Checked all the options for i2c driver 
7. sudo fakeroot debian/rules binary-headers binary-generic skipabi=true skipmodule=true 
8. Installed all the .deb packages created by the build. 

安裝新內核後,我重新啓動機器,並插入i2c-ocoreseeprom司機和他們工作得很好。但是在四五次重啓後,我的這些驅動程序插入失敗。我正在使用modprobe來插入模塊。

喜歡I2C-ocores,我得到了以下錯誤:

Aug 18 11:08:14 manik kernel: [ 214.831678] i2c_ocores: disagrees about version of symbol i2c_new_device 
Aug 18 11:08:14 manik kernel: [ 214.831682] i2c_ocores: Unknown symbol i2c_new_device (err -22) 
Aug 18 11:08:14 manik kernel: [ 214.831700] i2c_ocores: disagrees about version of symbol i2c_del_adapter 
Aug 18 11:08:14 manik kernel: [ 214.831701] i2c_ocores: Unknown symbol i2c_del_adapter (err -22) 
Aug 18 11:08:14 manik kernel: [ 214.831708] i2c_ocores: disagrees about version of symbol i2c_add_adapter 
Aug 18 11:08:14 manik kernel: [ 214.831709] i2c_ocores: Unknown symbol i2c_add_adapter (err -22) 

沒有任何人有任何想法,這裏發生了什麼?難道我做錯了什麼 ?

+0

您不需要首先重新編譯整個內核。 – 0andriy

+0

@AndyShevchenko - 我將如何在這個ubuntu安裝程序中單獨構建這些模塊? – Monku

+0

@AndyShevchenko我不認爲這個問題與我構建模塊的方式有關,因爲我自己構建了整個內核。 – Monku

回答

0

問題中確實沒有足夠的信息給出明確的答案,但我相信我可能知道這個問題。

您正在重建Ubuntu內核,但不更改版本號。因此,您實際上覆蓋了系統附帶的內核。在這個過程中的某個地方,你可能會遇到你正在使用的內核和你正在嘗試加載的模塊(即你正在獲得香草核心和你的自定義模塊或反之亦然)之間的不匹配。發生這種情況時,您看到的錯誤可能會出現。

我最好的建議是在構建之前將附加的內核版本更改爲包含您的名稱的內容。至少,這將允許您通過簡單地運行uname -r來查看涉及哪些版本。

一些旁白:

  • 人民給了你打造只模塊。這不會有兩個原因。首先,您正在更換現有的模塊,這意味着您冒着發生我認爲會發生的事情的風險。但更重要的是,你說你改變了內核的配置。當你只從樹中構建模塊時,你無法做到這一點。
  • 您正在運行sudo fakerootsudo是一個使您的命令以root運行的工具。 fakeroot是在真實環境不可用時僞造根環境的命令。運行兩者都沒有意義。據我所知,你最好的選擇是與fakeroot一起建造並安裝sudo