Linux系統如何正確使用和安裝核心模組__Linux

來源:互聯網
上載者:User

模組是Linux核心支援的一種動態載入的組件,大多數的模組是驅動程式。而且Linux的模組設計成可以堆疊式的----就是一個模組運行在另一個模組之上,這個模組也可能再為它上面的模組提供支援,當然所有的模組又都運行在核心之上。這樣一來一個模組就可能依賴於另一個模組提供的服務,或者核心提供的服務。在安裝這個模組時,安裝程式就需要知道這些依賴關係並先於模組本身,安裝其他依賴的模組。下面的程式和檔案完成整個模組安裝和維護過程

modules.dep          模組依賴資訊,位於/lib/modules/<kernel version>/
modprobe               安裝模組程式,他自動讀取目前的版本核心的核心模組modules.dep並,安裝模組和依賴的模組。
insmod                   極簡單的安裝模組程式,他只是安裝模組並不做任何依賴性處理,實用性不大,modprobe更聰明一些
depmod                   模組依賴資訊維護程式 ,他根據當前/lib/modules/<kernel version>/ 的模組資訊產生或更新modules.dep,正常情況下,當編譯完核心時,make modules_install的結尾部份將執行depmod.
System.map           核心匯出符號表,詳細內容下面介紹。

如果想要安裝一個已編譯好的核心模組,典型過程如下:
將這個編譯好的模組cp到/lib/modules/`uname -r`/kernel/driver/mymod/ 目錄中,然後
運行depmod產生模組依賴,最後運行 modprobe
可以執行如下命令實現:
root# mkdir -p /lib/modules/`uname -r`/kernel/driver/mymod  #注意不是單引號,是反引號。
root# cp <my_module.ko> /lib/modules/`uname -r`/kernel/driver/mymod/
root# depmod -eF /boot/System.map-`uname -r` -A   #注意是否存在/boot/System.map-<verion number>,沒有的話需要從核心編譯後的映像所在目錄copy過來。實在沒有的話用depmod -A代替。但結果可能不準確。
root# modprobe -v my_module       #注意觀察輸出的資訊,看載入模組是否成功,另外modprobe比insmod更聰明,insmod太簡單沒有什麼實用價值

如果仍然出現段錯誤,基本上可以證明該模組不能工作於目前的核心。
為了避免出現段錯誤,最安全的做法,重新編譯核心並開啟下面兩個選項
[*]   Module versioning support                                     
[*]   Source checksum for all modules
確保核心拒絕不相容的模組
然後重複前面的步驟,這時modprobe將拒絕安裝不相容的模組,也就是說,這時如果成功安裝,那麼就決不會出現段錯誤。否則,modprobe或insmod會失敗。 

System.map是在編譯核心時產生的,記錄核心的匯出符號.
depmod -A可以以追加方式產生模組依賴modules.dep.但是它只能產生模組之間的依賴,對於模組中出現的其他模組也沒有提供的未解決符號,depmod不再進行解析,認為這個符號由核心提供,事實上,這個未解決符號核心可能也沒有提供,這時運行時就可能出現段錯誤。

如果用-eF System.map選項後,depmod除了會在模組間解析符號外,還會對照核心匯出符號表System.map來更精確的確定哪些符號是真正無法解決的符號。並在標準輸出上給出這些未解決符號的資訊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.