1. 程式人生 > >Linux 核心模組程式設計 Hello World 模組

Linux 核心模組程式設計 Hello World 模組

         Linux 核心的整體結構非常龐大,其包含的元件也非常多。怎麼樣把需要的部分包含在核心中呢?

        一種是將所需要的功能都編譯到Linux 核心。但會導致兩個問題,一是生成的核心會很大,二是如要在現有的核心中新增或刪除功能,將不得不重新編譯。因此Linux 提供了一種被成為模組(Module)的機制,可以實現以上效果。

模組具有以下特點:

  • 模組本身不被編譯入核心映像,從而控制了核心的大小。
  • 模組一旦被載入,它就和核心的其他部分完全一樣。

以下是最簡單的核心模組“Hello World”         

Step1.編寫 Hello.c

 


Step2.編寫Makefile 在Hello.c 在同一路徑 ,並且M要大寫 只需修改KENRNELDIR 之後的路徑為自己kernel所在路徑即 /home/summer/micro2440/kernel/linux-2.6.32.2

Step3.編譯 

使用命令:make 之後在hello.c所在路徑就會生成hello.ko 目標檔案

Step4.載入核心

使用insmod ./ hello.ko 載入 

[root@FriendlyARM /root]# insmod ./hello.ko 

Hello world!

*insmod 或者modprobe命令載入核心模組時,模組的載入函式會自動被核心執行,完成本模組的相關初始化工作。

使用lsmod 命令可以獲得系統中載入了的模組及模組間的依賴關係,如下

lsmod[root@FriendlyARM /root]# lsmod

hello 620 0 - Live 0xbf00c000

*lsmod 命令實際上讀取並分析/proc/modules檔案

解除安裝模組 rmmod hello

[root@FriendlyARM /root]# rmmod hello

Good Bye!

*rmmod解除安裝某模組時,模組的解除安裝函式會自動被核心執行,完成與模組載入函式相反的功能