在linux中,內核模塊是linux內核向外部提供的一個插口;內核模塊具有獨立功能的程序,可以被單獨編譯,但不能獨立運行,是一個為內核或者其他內核模塊提供使用功能的代碼塊。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux中什么是內核模塊
內核模塊是Linux內核向外部提供的一個插口,其全稱為動態可加載內核模塊(Loadable?Kernel?Module,LKM),我們簡稱為模塊。Linux內核之所以提供模塊機制,是因為它本身是一個單內核(monolithic?kernel)。單內核的最大優點是效率高,因為所有的內容都集成在一起,但其缺點是可擴展性和可維護性相對較差,模塊機制就是為了彌補這一缺陷。
模塊是具有獨立功能的程序,它可以被單獨編譯,但不能獨立運行。它在運行時被鏈接到內核作為內核的一部分在內核空間運行,這與運行在用戶空間的進程是不同的。模塊通常由一組函數和數據結構組成,用來實現一種文件系統、一個驅動程序或其他內核上層的功能。
總之,模塊是一個為內核(從某種意義上來說,內核也是一個模塊)或其他內核模塊提供使用功能的代碼塊。
Linux系統的內核模塊是可以根據需要加載到內核中或從內核中卸載的代碼塊,因此無需重啟就可以擴展內核的功能。但是除非用戶使用類似?lsmod?這樣的命令來查詢模塊信息,否則用戶不太可能知道內核發生的任何變化。
Linux?系統上有很多可用的模塊,并且如果深入其中可以了解到很多細節。而Linux系統工具lsmod?的主要用途之一,就是在系統不能正常工作時檢查模塊。
1、顯示內核模塊
顯示內核模塊最簡單的方法是使用?lsmod?命令。雖然這個命令包含了很多細節,但輸出卻是非常用戶友好,一般在輸出中:
1)Module?顯示每個模塊的名稱
2)Size?顯示每個模塊的大小,并不是它們占的內存大小
3)Used?by?顯示每個模塊被使用的次數和使用它們的模塊
加載的模塊數量取決于使用的系統和版本以及正在運行的內容要查看系統中可用的模塊數,不止運行當中的,可以使用一下這個操作命令:
1)$?modprobe?-c?|?wc?–l
2)41272
2、與內核模塊相關的其他命令
Linux?系統提供了幾條用于羅列、加載及卸載、測試,以及檢查模塊狀態的命令。
1)depmod?——?生成?modules.dep?和映射文件
2)insmod?——?一個往?Linux?內核插入模塊的程序
3)lsmod?——?顯示?Linux?內核中模塊狀態
4)modinfo?——?顯示?Linux?內核模塊信息
5)modprobe?——?添加或移除?Linux?內核模塊
6)rmmod?——?一個從?Linux?內核移除模塊的程序
3、顯示內置的內核模塊
正如前文小編所說,lsmod?命令是顯示內核模塊最方便的命令。然而,也有其他方式可以顯示它們。modules.builtin?文件中列出了所有構建在內核中的模塊,在?modprobe?命令嘗試添加文件中的模塊時會使用它。
用戶可以使用modinfo?獲得一個模塊的更多細節,雖然沒有對模塊提供的服務的簡單說明,也可以使用?modprobe?命令加載或卸載模塊。使用下面這條命令,可以找到特定模塊關聯的內核對象:
1)$?find?/lib/modules/$(uname?-r)?-name?floppy* 2)/lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko
如果想要加載模塊,可以使用這個命令:$?sudo?modprobe?floppy。
很明顯,內核模塊的加載和卸載非常重要。它使得?Linux?系統比使用通用內核運行時更加靈活和高效。這同樣意味著用戶可以進行重大更改而無需重啟,例如添加硬件。
相關推薦:《Linux視頻教程》