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