linux核心模組的編寫

2021-08-08 21:53:33 字數 1391 閱讀 1893

之前學了核心模組的編寫,但是沒有動手實驗,這次試驗才發現還是有好動東西需要學習!

我的環境是虛擬機器跑centos 7 

1.首先編寫模組:

#include

#include

module_license("dual bsd/gpl");

static int hello_init(void)

static void hello_exit(void)

module_init(hello_init);

module_alias("a ******st module");

module_description("a ****** hello world module");

這裡就不做解釋了,**具體可以看我 關於裝置驅動的學習:

2.編寫makefile 檔案,因為我還沒有學,所以網路上copy 別人的,目前只是看得懂。

ifneq ($(kernelrelease),)

#kbuild syntax. dependency relationshsip of files and target modules are listed here.

mymodule-objs := hello.o

obj-m := hello.o

else

pwd  := $(shell pwd)

$(make) -c $(kdir) m=$(pwd) 

kver ?= $(shell uname -r)

kdir := /lib/modules/$(kver)/build

all:

clean:

endif

rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions

這裡要注意的是兩點,否則可能報錯【makefile missing separator. stop】

a.  ifneq 後面要有乙個空格

b.  all,clean 後一行的指令前面要加tab

3.儲存後make一下

這是缺少核心標頭檔案:安裝一下,sudo yum install kernel-headers

其他安裝教程在:

然後就ok了

4.執行模組

sudo insmod hello.ko

檢視系統

dmesg

或者使用lsmod 

(檢視所有模組)

我用的是 lsmod | grep 『hello』

移除模組

sudo rmmod hello

好噠,大功告成,開薰,中間好幾次報錯,主要makefile不會寫,接下來要學好makefile

參考:

1.

核心模組的編寫1

include includemodule license dual bsd gpl 是用來告知核心,該模組帶有乙個自由的許可證 沒有這樣的說明,在模組載入時核心會抱怨.static int hello init void static void hello exit void module ini...

編寫核心模組hello world

1 準備環境 mkdir src lkm example cd src lkm example 2 建立檔案 lkm example.c include include include module license gpl module author robert w.oliver ii modul...

核心驅動模組編寫規範

書寫格式範例 include include 模組入口函式規範 static int init func init void static void exit func exit void 關閉init中占用的資源 printk byebye s n module module init func ...