2009年10月6日 星期二

Kernel 2.4 & 2.6 編譯差異

Kernel 2.4       

1.編譯設定:

# make menuconfig

2.編譯核心:

# make dep

# make bzImage

3.編譯模組並安裝:

# make modules

# make modules_install




kernel 2.6


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 安裝至系統即可。

沒有留言:

張貼留言