自己動手寫hello world核心模組

2021-09-24 18:36:27 字數 1457 閱讀 6994

hello world模組雖小卻是五臟俱全,該有的部分都有了。話不多說,直接上手。

1.編譯linux中執行的核心模組,需要指定到當前系統對應的核心中。一般來說,linux系統的核心模組都會安裝到/lib/modules目錄下,通過「uname -r」命令可以找到對應的核心版本(我的是/lib/modules/4.13.0-36-generic)。

2.找到核心版本後,進入到核心版本資料夾中,建立hello world資料夾,在該資料夾中編寫.c檔案和makefile檔案。

.c檔案:

#include

#include

#include

static int __init my_test_init(void)

printk("my first kernel module init\n");

return 0;

static void __exit my_test_exit(void)

printk("goodbye\n");
module_init(my_test_init);

module_exit(my_test_exit);

module_license(「gpl」);

module_author(「ymy」);

module_description(「my test kernel module」);

module_alias(「mytest」);

makefile檔案:

ifneq ($(kernelrelease),)

obj-m :=mytest.o

else

kdir :=/lib/modules/$(shell uname -r)/build

all:

make -c $(kdir) m=$(pwd) modules
clean:

rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
endif

編寫完畢之後,儲存退出。注意makefile中首字母大寫,否則make找不到該檔案。.c檔案的名字和編譯目標檔案的名字要對應,否則會報*** no rule to make target問題。

3.編譯並檢查是否成功

make

file mytest.ko

即編譯成功。

另外,也可以這樣檢查:

4.驗證模組

sudo insmod mytest.ko

dmesg

大功告成!!

另外,還可以利用lsmod命令檢視模組之間的依賴關係:

今天就到這裡了,有問題大家一起來交流哈。

自己動手寫bootloader

原始出處 作者資訊和本宣告。否則將追究法律責任。為了寫乙個bootloader讓板子跑起來,首先我們要知道bootloader是個什麼東東才行。簡單的說,bootloader就是乙個引導核心啟動的一段小 也就是說當啟動完核心之後,它的使命就已經結束。bootloader生命週期 初始化硬體 設定啟動...

自己動手寫CMS

簡易的cms外掛程式,可供借鑑或者擴充套件 流程 定義內容 分類與組織內容 儲存內容 操作控制內容 定義內容 制定目標 確定需要的內容型別 目標使用者定位 確定目標使用者需要何種技術 分類與組織內容 按內容所屬的邏輯層級關係來劃分 按內容的種類來劃分,比如video text audio等等 儲存內...

自己動手寫SpringMVC 四

本文將主要實現dispatcherservlet!之前已經分析過dispatcherservlet主要的任務,分為五個任務,我們從任務一開始開始實現!任務1 把專案中所有的bean掃瞄,進行維護 實現 如下 private void scanpackage string basepackage el...