1 什麼是內核模塊?
內核模塊是一種沒有經過鏈接,不能獨立運行的目標文件,是在內核空間中運行的程序。
經過鏈接裝載到內核裏面成爲內核的一部分,可以訪問內核的公用符號(函數和變量)。內
核模塊可以讓操作系統內核在需要時載入和執行,在不需要時由操作系統卸載。它們擴展
了操作系統內核的功能卻不需要重新啓動系統。如果沒有內核模塊,我們不得不一次又一
次重新編譯生成單內核操作系統的內核鏡像來加入新的功能。這還意味着一個臃腫的內
核。
2 內核模塊是如何被調入內核工作的?
當操作系統內核需要的擴展功能不存在時,內核模塊管理守護進程kmod執行modprobe
去加載內核模塊。modprobe遍歷文件/lib/modules/version/modules.dep來判斷是否有其它內核模塊需要在
該模塊加載前被加載。最後modprobe調用insmod先加載被依賴的模塊,然後加載該被內核要求的模塊。
3 模塊機制的優點:
減小內核映像尺寸,增加系統靈活性;
節省開發時間;修改內核,不必重新編譯整個內核。
模塊的目標代碼一旦被鏈入內核,作用和靜態鏈接的內核目標代碼完全等價。
4 模塊機制的缺點:
對系統性能有一定損失;
使用不當時會導致系統崩潰