iT邦幫忙

鐵人檔案

2014 iT 邦幫忙鐵人賽
回列表

Linux kernel模組的開發 系列

由於工作上的需求,接觸到Linux系統模組的除錯,進而對Linux系統模組的運作產生興趣。藉此機會,想把自己在Linux kernel module上的心得與各位邦友分享。

鐵人鍊成 | 共 30 篇文章 | 24 人訂閱 訂閱系列文 RSS系列文
DAY 1

何謂 Linux kernel module

由於工作上的需求接觸到 Linux 系統模組的除錯,進而對 Linux 系統模組的運作產生興趣。藉此機會,想把自己在 Linux kernel module 上...

2014-10-01 ‧ 由 chiounan 分享
DAY 2

Kernel module 載入的程序

在 Linux 中想要知道目前在入的 kernel module 有哪些,可以透過 lsmod 命令來取得,或是輸出 /proc/modules 的內容 ( 其...

2014-10-02 ‧ 由 chiounan 分享
DAY 3

Hello World - Linux kernel module.

不免俗的,我們也以 "Hello World" 來作為 kernel module 程式設計的第一個嘗試: /* * hello-1...

2014-10-03 ‧ 由 chiounan 分享
DAY 4

編譯 Linux kernel module

前篇介紹的 hello-1.c 需要進行編譯成 kernel module 之後,才能夠載入執行,而編譯 kernel module 跟編譯一般程式有很大的不同...

2014-10-04 ‧ 由 chiounan 分享
DAY 5

執行 kernel module

編譯完成了 hello-1.ko 之後,接下來我們就要執行他,而在載入之前先透過 modinfo 命令確認一下他的內容: [root@Pomelo-14-61...

2014-10-05 ‧ 由 chiounan 分享
DAY 6

不同的 module init 與 cleanup 做法

在 Hello World 的例子中提到,init_module() 與 cleanup_module() 都是 kernel module 中兩個基本需要的函...

2014-10-06 ‧ 由 chiounan 分享
DAY 7

送參數到 module 中

當然可以在載入 module 的同時帶參數進去,只不過不是用傳統的 argc/argv 的方式。在 Linux kernel 中,必須藉助 module_par...

2014-10-07 ‧ 由 chiounan 分享
DAY 8

kernel module function 與 symbol

從之前的幾個例子,我們已經領略了 kernel module 是如何的去開始與結束,以及傳遞參數,看到他跟 user mode 程式在這部分有很大的差異。其實在...

2014-10-08 ‧ 由 chiounan 分享
DAY 9

function library 與 system call

高階的 function library,是屬於 user mode 的函數,是給程式設計師方便使用的 API。而真正在 kernel 中運行的是低階的 sys...

2014-10-09 ‧ 由 chiounan 分享
DAY 10

User space 與 kernel space

程式不外乎就是要利用系統的資源去完成他的指令動作,因為 Linux 是多功的作業系統,所以多個程式同時去競爭使用有限的 (如記憶體) 或是同一個 (對同一磁碟進...

2014-10-10 ‧ 由 chiounan 分享