Linux核心模組的插入和刪除

2021-10-04 13:21:32 字數 1931 閱讀 3973

$sudo mkdir qiliguala

$cd qiliguala

$vim helloworld.c

在helloworld.c下輸入以下內容

#include

//模組的初始化的巨集定義 以及一些其他函式的初始化函式

#include

//包含了printk函式

#include

動態的將模組載入到核心中去

static

int __init lkm_init

(void

)static

void __exit lkm_exit

(void

)module_init

(lkm_init)

;module_exit

(lkm_exit)

;module_license

("gpl");

//gpl許可證

include包含就不詳細說了,很重要,必須要有。

module_init(lkm_init);就是對函式進行宣告

module_license(「gpl」);模組驅動宣告

$vim makefile
輸入以下內容

obj-m:

=helloworld.o

current_path:

=$(shell pwd)

linux_kernel:

=$(shell uname -r)

linux_kernel_path:

=/usr/src/linux-headers-$(linux_kernel)

all:

make -c $(linux_kernel_path) m=$(current_path) modules

clean:

make -c $(linux_kernel_path) m=$(current_path) clean

第一行obj-m:=helloworld.o,我認為就是生產.o檔案

current_path指當前位址

linux_kernel指核心版本號

linux_kernel_path核心位址

all:

make -c $(linux_kernel_path) m=$(current_path) modules

clean:

make -c $(linux_kernel_path) m=$(current_path) clean

以上兩句就是在核心中生成的檔案

輸入

$make
進行編譯

輸入ls,發現生成了很多檔案

此時並沒有在終端顯示資訊,因為這裡核心和終端沒有聯絡,核心不將資訊列印到終端上

我們輸入

出現helloworld就說明我們已經將helloworld這個模組插入到核心中去了

再輸入

$dmesg
就可以發現列印了

刪除,輸入

$sudo rmmod helloworld

$lsmod

會發現helloworld模組已經從核心中刪除

再輸入

$dmesg
此時列印出goodbye

動手實踐 Linux核心模組的插入和刪除

建立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...

核心模組的插入和解除安裝

obj m o 名稱可改 以下內容可以不用動 current path shell pwd linux kernel shell uname r linux kernel path usr src linux headers linux kernel all make c linux kernel ...

Linux核心驅動模組的刪除

今天看了 linux裝置驅動開發詳解 的第四章模組和第五章檔案。學長給了乙個的任務 刪除linux核心中的dm9000的驅動模組,重新編譯核心。這篇文章現在寫肯定還不夠完善,我之後我會再補全,所以先打乙個 的標記。首先,我從檔案中找到dm9000驅動模組所在位置,在 drives net下。於是,我...