linux自動載入模塊
⑴ Linux怎麼在系統啟動時自動載入內核模塊
寫入/etc/rc.local
⑵ Linux下編寫和載入 .ko 文件(驅動模塊文件
一、.ko 文件介紹
.ko文件是kernel object文件(內核模塊),該文件的意義就是把內核的一些功能移動到內核外邊, 需要的時候插入內核,不需要時卸載。
二、優點
(1)這樣可以縮小內核體積;
(2)使用方便。
三、.ko文件一般的用處
(1)作為一個功能模塊,需要使用時,直接插入運行就行。如在imx6上連接模擬攝像頭,先運行模擬攝像頭對應的驅動模塊 camera.ko文件,然後對應的工程執行文件運行就行。
四、使用.ko 文件
1、載入驅動模塊test.ko
(1)方法一
進入test.ko驅動模塊文件所在的目錄,然後直接 insmod test.ko
(2)方法二
將test.ko文件拷貝到/lib/mole/#uname-r#/目錄下,這里,#uname -r#意思是,在終端中輸入
uname -r後顯示的內核版本及名稱,例如mini2440中#uname-r#就是2.6.32.2-FriendlyARM。
然後 depmod(會在/lib/moles/#uname -r#/目錄下生成moles.dep和moles.dep.bb文件,表明模塊的依賴關系)
最後 modprobe test(注意這里無需輸入.ko後綴) 即可
註:兩種方法的區別
modprobe和insmod類似,都是用來動態載入驅動模塊的,區別在於modprobe可以解決load mole時的依賴關系,它是通過/lib/moles/#uname -r/moles.dep(.bb)文件來查找依賴關系的;而insmod不能解決依賴問題。也就是說,如果你確定你要載入的驅動模塊不依賴其他驅動模塊的話,既可以insmod也可以modprobe,當然insmod可以在任何目錄下執行,更方便一些。而如果你要載入的驅動模塊還依賴其他ko驅動模塊的話,就只能將模塊拷貝到上述的特定目錄,depmod後再modprobe。
⑶ Linux 添加 net 模塊
Linux 添加 net 模塊的方法是:
1、創建c文件和makefile文件:在任意位置創建一個文件夾(我創建的名稱為/drive)mkdir drive後,輸入cd drive進入文件夾。輸入vim hello.c新建hello.c文件,輸入以下代碼。
操作使用工具:Linux。
使用工具版本:CentOS-7.0-x86_64-DVD-1503-01.iso。
Linux編譯內核模塊Makefile中指令的作用是:
obj-m:指定構建為可載入內核模塊的目標文件。 構建外部模塊的命令是:make -C<path_to_kernel_src>M=$PWD。
-C $(KERNEL_DIR):內核源所在的目錄。 「make」實際上會在執行時更改為指定的目錄,並在完成時更改回來。
KERNEL_DIR:指內核源目錄的路徑。
M = $ PWD:通知make正在構建外部模塊。 賦予「M」的值是外部模塊所在目錄的絕對路徑。
⑷ 如何查看Linux載入內置模塊的信息
一、找出內置模塊列表
要得到內置模塊列表,運行下面的命令。
$
cat
/lib/moles/$(uname
-r)/moles.builtin
你也可以用下面的命令來查看有哪些內置模塊:
二、找出內置模塊參數
每個內核模塊無論是內置的還是可載入的都有一系列的參數。對於可載入模塊,modinfo命令可以顯示它們的參數信息。然而這個命令對內置模塊沒有用。你會得到下面的錯誤。
modinfo:
ERROR:
Mole
XXXXXX
not
found.
如果你想要查看內置模塊的參數,以及它們的值,你可以在
/sys/mole
下檢查它們的內容。
在
/sys/mole目錄下,你可以找到內核模塊(包含內置和可載入的)命名的子目錄。進入每個模塊目錄,這里有個「parameters」目錄,列出了這個模塊所有的參數。
比如你要找出tcp_cubic(內核默認的TCP實現)模塊的參數。你可以這么做:
$
ls
/sys/mole/tcp_cubic/parameters
接著閱讀這個文件查看每個參數的值。
$
cat
/sys/mole/tcp_cubic/parameters/tcp_friendliness
以上就是Linux查看內置模塊的信息的方法了,這樣我們就可以知道Linux安裝了哪些內置模塊,還可以把沒用的模塊刪除掉,減輕系統的負擔。
⑸ Linux如何在系統啟動時自動載入模塊
rc.sysinit中有這樣的一段代碼:
# Load other user-defined moles
for file in /etc/sysconfig/moles/*.moles ; do
[ -x $file ] && $file
done
# Load moles (for backward compatibility with VARs)
if [ -f /etc/rc.moles ]; then
/etc/rc.moles
fi
可見只需要配置兩個地方的任何一個就可以了(以載入fuse內核模塊為例)
(1) 在/etc/sysconfig/moles/下面創建*.moles文件,參考已經有的*.moles文件,例如我寫創建文件my.moles,內容為modprobe fuse
記得最後chmod 755 my.moles
(2) 或者在/etc/rc.moles裡面加上modprobe fuse,沒有的話創建該文件。
然後reboot,lsmod | grep fuse驗證一下就OK了。