Linux 常用指令-Kernel Module相關
Linux 常用指令-Kernel Module相關
完成於2005/4/27
一般我們都是用Module(模組)來簡稱Kernel Module,Module是可以按需要載入(insmod)或卸載(rmmod)的。
這樣做可以保持Kernel大小的彈性,也可以將事先未放到Kernel的模組,動態的加到Kernel中,而不用整個Kernel重新編譯。
例:發現Kernel目前沒有支援 bc4400網卡,那我們就可以用insmod加入bc4400的網卡Driver。
與modules有關的命令有:
lsmod:列出已經被kernel載入的module
insmod:將某個module載入到kernel中
rmmod:移除module,後接Module name,但不需要副檔名.ko
depmod:生成依賴(dependency)文件,讓下一指令modprobe可參考/lib/modules/[kernel版本]/modules.dep檔案
modprobe:載入modules.dep中記載的依賴文件
Kerneld:負責自動的將模組載入kernel和把module從內核中remod。
註:Module幾乎不是單獨的存在(就像HelloWord會用到外部printf function一樣),它會用到Kernel中的其它Symbol,而Symbol不存在時,會出現類似以下的訊息
/lib/modules/2.4.xx/net/qcom.o: unresolved symbol m_q_com_symbol_3bc36b01
這時你要找到m_q_com_symbol_3bc36b01這個symbol所存在的module,先載入才行,所以才會有modprobe指令的存在,避免輸入多個insmod指令
完成於2005/4/27
一般我們都是用Module(模組)來簡稱Kernel Module,Module是可以按需要載入(insmod)或卸載(rmmod)的。
這樣做可以保持Kernel大小的彈性,也可以將事先未放到Kernel的模組,動態的加到Kernel中,而不用整個Kernel重新編譯。
例:發現Kernel目前沒有支援 bc4400網卡,那我們就可以用insmod加入bc4400的網卡Driver。
與modules有關的命令有:
lsmod:列出已經被kernel載入的module
insmod:將某個module載入到kernel中
rmmod:移除module,後接Module name,但不需要副檔名.ko
depmod:生成依賴(dependency)文件,讓下一指令modprobe可參考/lib/modules/[kernel版本]/modules.dep檔案
modprobe:載入modules.dep中記載的依賴文件
Kerneld:負責自動的將模組載入kernel和把module從內核中remod。
註:Module幾乎不是單獨的存在(就像HelloWord會用到外部printf function一樣),它會用到Kernel中的其它Symbol,而Symbol不存在時,會出現類似以下的訊息
/lib/modules/2.4.xx/net/qcom.o: unresolved symbol m_q_com_symbol_3bc36b01
這時你要找到m_q_com_symbol_3bc36b01這個symbol所存在的module,先載入才行,所以才會有modprobe指令的存在,避免輸入多個insmod指令