現(xiàn)代Linux內(nèi)核正在隨著時(shí)間變化而迅速增長(zhǎng),以支持大量的硬件、文件系統(tǒng)和網(wǎng)絡(luò)功能。在此期間,“可加載模塊(loadable kernel modules,[LKM])”的引入防止內(nèi)核變得越來越臃腫,以及在不同的環(huán)境中靈活地?cái)U(kuò)展功能及硬件支持,而不必重新構(gòu)建內(nèi)核。
最新的Linux發(fā)行版的內(nèi)核只帶了相對(duì)較小的“內(nèi)置模塊(built-in modules)”,其余的特定硬件驅(qū)動(dòng)或者自定義功能作為“可加載模塊”來讓你選擇地加載或卸載。
內(nèi)置模塊被靜態(tài)地編譯進(jìn)了內(nèi)核。不像可加載內(nèi)核模塊可以動(dòng)態(tài)地使用modprobe、insmod、rmmod、modinfo或者lsmod等命令地加載、卸載、查詢模塊,內(nèi)置的模塊總是在啟動(dòng)時(shí)就加載進(jìn)了內(nèi)核,不會(huì)被這些命令管理。
找出內(nèi)置模塊列表
要得到內(nèi)置模塊列表,運(yùn)行下面的命令。
$ cat /lib/modules/$(uname -r)/modules.builtin
你也可以用下面的命令來查看有哪些內(nèi)置模塊:
![](/d/20211018/638fbbc4594828e2e91b9aee24ff09f5.gif)
找出內(nèi)置模塊參數(shù)
每個(gè)內(nèi)核模塊無論是內(nèi)置的還是可加載的都有一系列的參數(shù)。對(duì)于可加載模塊,modinfo命令可以顯示它們的參數(shù)信息。然而這個(gè)命令對(duì)內(nèi)置模塊沒有用。你會(huì)得到下面的錯(cuò)誤。
modinfo: ERROR: Module XXXXXX not found.
如果你想要查看內(nèi)置模塊的參數(shù),以及它們的值,你可以在 /sys/module 下檢查它們的內(nèi)容。
在 /sys/module目錄下,你可以找到內(nèi)核模塊(包含內(nèi)置和可加載的)命名的子目錄。進(jìn)入每個(gè)模塊目錄,這里有個(gè)“parameters”目錄,列出了這個(gè)模塊所有的參數(shù)。
比如你要找出tcp_cubic(內(nèi)核默認(rèn)的TCP實(shí)現(xiàn))模塊的參數(shù)。你可以這么做:
$ ls /sys/module/tcp_cubic/parameters
接著閱讀這個(gè)文件查看每個(gè)參數(shù)的值。
$ cat /sys/module/tcp_cubic/parameters/tcp_friendliness
![](/d/20211018/87a56910bcd3fd2b89069654ca804dbd.gif)