1、查看內核模塊信息
相關命令:modprobe、insmod、rmmod、modinfo、lsmodlinux
1.查看內核全部內置模塊
# cat /lib/modules/$(uname -r)/modules.builtinubuntu
kernel/arch/arm64/crypto/sha1-ce.ko kernel/arch/arm64/crypto/sha2-ce.ko kernel/arch/arm64/crypto/ghash-ce.ko kernel/arch/arm64/crypto/aes-ce-cipher.ko ......
2.查看有哪些內置模塊
# grep "=y" /boot/config-$(uname -r) | more函數
3.查看內核模塊參數和值
# ls /sys/module/sd8xxx/parameters
在/sys/module目錄下,能夠找到內核模塊(包含內置和可加載的)命名的子目錄。進入每一個模塊目錄,這裏有個「parameters」目錄,列出了這個模塊全部的參數。
上面示例是要找出sd8xxx模塊的參數。
# cat /sys/module/sd8xxx/parameters/mfg_mode 查看參數mfg_mode的值。ui
4.顯示模塊參數信息
# modinfo -p sd8xxx 只顯示參數spa
5.顯示模塊所有信息
# modinfo sd8xxx.net
filename: /lib/modules/4.14.35/extra/sd8xxx.ko 模塊存放的位置 license: GPL version: C546 模塊版本 author: Marvell International Ltd. description: M-WLAN Driver srcversion: 5F78B0AEFAD2117163CB186 alias: sdio:c*v02DFd9135* depends: cfg80211,mlan 模塊依賴 name: sd8xxx vermagic: 4.14.35 SMP preempt mod_unload aarch64 匹配內核版本信息 parm: cfg80211_drcs:1: Enable DRCS support; 0: Disable DRCS support (int) parm: reg_alpha2:Regulatory alpha2 (charp) 模塊參數 ...
2、模塊聲明信息code
MODULE_LICENSE ("GPL"); 許可證申明(最好有)
MODULE_DESCRIPTION("Hello world Module"); 模塊描述(可選)
MODULE_VERSION("V1.0");模塊版本(可選)
MODULE_ALIAS("a simple module");模塊別名(可選)
Module_param(name,type,perm)Name是模塊參數的名稱,type是這個參數的類型,Perm是模塊參數的訪問權限
type常見值: Bool,int,charp:字符串型
perm常見值:S_IRUGO:任何用戶都對/sys/module中出現的該參數具備讀權限, S_IWUSR:容許root用戶修改/sys/module中出現的該參數blog
EXPORT_SYMBOL(符號名)
EXPORT_SYMBOL_GPL(符號名)導出只能用於包含GPL許可證的模塊
/proc/kallsyms記錄了內核中全部導出的符號的名字與地址(記錄輸出到系統當中能夠給其餘模塊使用的函數的名字)ip
3、內核模塊的動態加載ci
request_module("sound-slot-%i", unit>>4);表示讓linux系統的用戶空間調用/sbin/modprobe函數加載名爲sound-slot-0.ko模塊
TODO:https://blog.csdn.net/liukun321/article/details/7057442
4、Makefile單獨編譯模塊
KERN_DIR = /media/ubuntu/works/tiny4412/linux-3.0.86 obj-m += virtual_jack.o all: make -C $(KERN_DIR) M=`pwd` modules clean: make -C $(KERN_DIR) M=`pwd` modules clean rm -rf modules.order