more: Jollen 的 Embedded Linux 教育訓練

« Embedded Linux 的系統管理,#4: 網路設定 | Home | Linux 驅動程式觀念解析, #1: 驅動程式的大架構 »

Kernel 2.6 核心與模組編譯

jollen 發表於 May 2, 2006 11:08 AM

Jollen 的 Linux 驅動程式課程是以 kernel 2.4 做為實習環境,但 kernel 2.6 與 kernel 2.4 的核心與模組編譯步驟不同;本文說明如何在 kernel 2.6 環境下編譯核心與模組,供同學參考。

作者/陳俊宏
www.jollen.org

Kernel 2.4 & 2.6 編譯

底下用一個表格來比較編譯 kernel 2.4 與 kernel 2.6 的步驟差異。

Kernel 2.4Kernel 2.6
1.編譯設定:
# make menuconfig
2.編譯核心:
# make dep 
# make bzImage
3.編譯模組並安裝:
# make modules 
# make modules_install 
1.編譯設定:
# make menuconfig
2.編譯核心與模組:
# make
3.安裝:
# make modules_install install

Kernel 2.6 模組編譯

kernel 2.6 的模組「模組化」程度相當高,因此在 kernel 2.6 環境下編譯模組時,是以 sub-module 的觀念來實施,與 kernel 2.4 的獨立編譯觀念不同。首先,舉我們的 debug card 範例來說明編譯 kernel 2.6 模組的方式;接著再說明安裝 kernel 2.6 模組的方法。

1. 先撰寫編譯模組的 Makefile 如下:
obj-m := card.o

KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

2. 編譯:

# make

編譯後可以得到 card.ko,這才是真正的 kernel 2.6 模組;kernel 2.6 模組的副檔名為 "*.ko"。

3. 將 card.ko 複制到模組目錄下:

# cp card.ko /lib/modules/`uname -r`/kernel/drivers/

4. 重新產生模組的 "dependency descriptions":

# depmod -a

5. 安裝模組:

# insmod ./card.ko

或是:

# modprobe card

同樣是利用 insmod 或 modprobe 指令將 card.ko 安裝至系統即可。

--jollen

引用通告

如果您想引用這篇文章到您的Blog,
請複製下面的鏈接,並放置到您發表文章的相應界面中。

http://blog.jollen.org/mt-tb.cgi/16

以下是前來引用的 URL:

» 在Linux底下安裝Driver (來自: RD Life)
從Jollen老師的Blog所轉載過來的!Kernel 2.6 核心與模組編譯jollen 發表於 May 2, 2006 11:08 AM Jollen 的 Linux 驅動程式課程是以 kernel 2.4 做為實習環境,但 kernel 2.6 與 kernel 2.4 的核心與模組編譯步驟不同... [more]

發表一個評論

(您發表的意見將被立即接受,但需要一點時間與後端伺服器做同步,您的留言才會顯示在網站上。為避免 spam 攻撃,按「發表」後請輸入帳號密碼。使用者帳號:「nospam」、密碼:「nospam」。)

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org