建立helloworld.c檔案
#include
#include
#include
static
int __init lkm_init
(void
)static
void __exit lkm_exit
(void
)module_init
(lkm_init)
;module_exit
(lkm_exit)
;module_license
("gpl"
);
建立makefile檔案
obj-m:=helloworld.o
current_paht:=
$(shell pwd
)linux_kernel:=
$(shell uname -r)
linux_kernel_path:=/usr/src/linux-headers-$(linux_kernel)
all:
make -c $(linux_kernel_path)
m=$(current_paht)
modules
clean:
make -c $(linux_kernel_path)
m=$(current_paht)
clean
執行make命令生成helloworld.ko檔案
並將其插入到核心模組當中
sudo insmod helloworld.ko #插入模組
lsmod #顯示當前系統中的模組
dmesg
#列印日誌資訊
sudo rmmod helloword #刪除模組
自己動手寫hello world核心模組
hello world模組雖小卻是五臟俱全,該有的部分都有了。話不多說,直接上手。1.編譯linux中執行的核心模組,需要指定到當前系統對應的核心中。一般來說,linux系統的核心模組都會安裝到 lib modules目錄下,通過 uname r 命令可以找到對應的核心版本 我的是 lib modu...
Linux核心模組
核心模組 在整個啟動的過程中,是否能成功的驅動我們主句的硬體裝置,是核心完成的工作,而核心一般都是壓縮文件,在使用之前核心之前必須要將核心減壓到的記憶體中。為了應對日新月異的硬體,目前核心都具有可讀取模組化驅動程式的功能,也就是所謂的 modules模組化 所謂模組化。核心與核心模組放在 核心 bo...
Linux核心模組
1 核心模組註冊登出 塊載入函式有返回值,模組解除安裝函式無返回值。兩者都是無參函式,載入函式用 init修飾,解除安裝函式用 exit修飾。define init attribute section init.text define exit atrribute section exit,text...