當我們在make menuconfig把一些原始碼檔案以作為編譯控制項時,表示不編譯核心,而是以模組(.ko)存在.此時,要生成.ko模組檔案,需要借助下面的命令:
bash> cd /usr/src/linux-x.y.z
bash> make modules
上述命令幫助我們生成目標核心的.ko模組檔案.如果需要安裝.ko檔案,則需要借助下面的命令:
bash>make modules_install
當然,上述一般在pc上才如此智慧型,如果是在嵌入式平台,一般需要手動載入.
通常與模組(.ko)相關的工具有:insmod、rmmod、lsmod、modprobe、modinfo和depmod.
1.insmod:
常用的模組載入工具.
2.rmmod:
常用的模組解除安裝工具.
3.lsmod:
羅列當前系統所裝載的模組.
4.modprobe:
modprobe是乙個比insmod更智慧型的版本,它先分析/lib/modules/x.y.z/modules.dep檔案再載入它所依賴的模組.例如要掛載乙個usb筆式驅動器上的vfat(virtual file allocation table,虛擬檔案根本表)分割槽,可以使用modprobe載入vfat檔案系統驅動程式:
bash>modprobe vfat
bash>lsmod
modle size used by
vfat 14208 0
fat 49052 1 vfat
nls_base 9728 2 vfat, fat
lsmod一下,發現modprobe載入的是三個而不是乙個模組.modprobe首先發現它不得不載入/lib/modules/x.y.z/kernel/fs/vfat/vfat.ko,當檢視/lib/modules/x.y.z/modules.dep模組依賴檔案的時候,它發現了如下**並由此意識到自己必須首先載入另外2個模組:
/lib/modules/x.y.z/kernel/fs/vfat.ko
/lib/modules/x.y.z/kernel/fs/fat/fat.ko
/lib/modules/x.y.z/kernel/fs/nls/nls_base.ko
於是它先載入了fat.ko和nls_base.ko這2個模組,之後載入vfat.ko,這樣,所有掛載vfat分割槽時所需要的模組都被自動載入了.
5.modinfo:
提取剛載入的模組的資訊:
bash>modinfo vfat
filename: /lib/modules/x.y.z/kernel/fs/vfat/vfat.ko
license:gpl
description:vfat filesystem support
...depends: fat,nls_base
6.depmod
建立模組依賴關係的列表.常用選項如下:
# depmod -a 注:為所有列在/etc/modprobe.conf 或/etc/modules.conf 中的所有模組建立依賴關係,並且寫入到modules.dep檔案;
# depmod -e 注:列出已掛載但不可用的模組;
# depmod -n 注:列出所有模組的依賴關係,但僅僅是輸出出來 (write the dependency file on stdout only)
linux核心可載入模組的makefile
在開發linux核心驅動時,免不了要接觸到makefile的編寫和修改,儘管網上的makefile模板一大堆,做一些簡單的修改就能用到自己的專案上,但是,對於這些基礎的東西,更應該做到知其然並知其所以然。本篇文章中只討論linux核心模組編譯的makefile,linux核心makefile總覽可以...
Linux下Breakpad的幾個主要工具
對傳進來的函式引數最好在開始進行檢查,尤其是指標等。幾個工具 產生minidump檔案 在程式入口處例項化exceptionhandler 產生symbol檔案 程式執行除錯時須帶除錯資訊 g 呼叫工具 dump syms,產生symbol檔案 minidump檔案和symbol檔案的上傳到伺服器 ...
linux 下開機自動載入驅動模組
呼呼,好久不見 前一段時間開發了乙個linux下的pci資料採集板卡的驅動,在驅動除錯時,一直使用insmod 動態的載入驅動模組 ko檔案 現在驅動基本開發結束,要提交給客戶,使用insmod載入時,對客戶來說不太好,比較麻煩,所以不能採用這種方法。由於 剛開始做驅動,還不知道如何在linux啟動...