Lsmod通過讀取/proc/modules文件的內容來查看內核已經加載了哪些內核模塊。操作系統內核需要的擴展功能不存在時,內核模塊管理守護進程kmod執行modprobe去加載內核模塊。當傳遞給modprobe是通用識別符時,modprobe首先在文件 /etc/modules.conf查找該字符串。
然後,modprobe遍歷文件/lib/modules/version/modules.dep 來判斷是否有其它內核模塊需要在該模塊加載前被加載。該文件是由命令depmod -a 建立,保存著內核模塊的依賴關系。最終,modprobe調用insmod先加載被依賴的模塊,然後加載該被內核要求的模塊。modprobe將insmod向 /lib/modules/version/[1]目錄,該目錄為默認標准存放內核模塊的目錄。所以,當你想要載入一個內核模塊時,你可以執行:
insmod /lib/modules/2.5.1/kernel/fs/fat/fat.o
insmod /lib/modules/2.5.1/kernel/fs/msdos/msdos.o
或只是執行"modprobe -a msdos"。
Linux提供modprobe, insmod and depmod在一個名為modutils 或 mod-utils的工具包內。
為某個版本編譯的模塊將不能被另一個版本的內核加載如果內核中打開了CONFIG_MODVERSIONS選項。目前絕大多數的發行版是將該選項打開的。
如果你在修改內核,為避免覆蓋你現在工作的模塊,你應該試試使用內核Makefile中的變量EXTRAVERSION去建立一個獨 立的模塊目錄。