在編譯 Android Linux Kernel 2.6.29 Driver,常常遇到該把 Driver 用 built-in 或者是編譯成 module 呢?這其實看人習慣,就跟問你編輯器是用 Vim 或者是 emacs 是同樣意思,這兩者是有很大的差異,built-in 用在開機自動讀取載入,所以直接編譯成 uImage 檔案給嵌入式系統,像是 SCSI 或者是 SATA Driver 都建議編譯成 built-in 的方式,反而是一些音效驅動程式,可以編譯成 module,NTFS 就是可以編譯成 module,等您需要的時候在動態載入就可以,這樣可以減少 Kernel Image 的使用空間。 如果不想用 built-in 編譯,開機又需要驅動程式,那就需要透過 initrd 方式來啟動。底下整理兩者差異:
built-in:
開機自動載入,不可移除 Linux Kernel Image 大 需要重新 Compile
module:
可動態載入 Linux Kernel Image 小 不需要重新 Compile reference: [gentoo-user] kernel: built-in vs. module
See also
- [Linux Kernel] 讀取 /proc 底下資料最佳方法: seq_file interface
- [Linux] 釋放虛擬記憶體 (cache)
- [網站] 好站連結 (七) Android, javascript, Css, PHP, Perl, FreeBSD, Linux
- [Kernel Driver] 撰寫簡易 Timer 機制
- [Linux Kernel] 簡單 hello world: License and Module 介紹(part 3)
- [Linux Kernel] 撰寫 Hello, World module: The __init and __exit Macros (part 2).
- [Linux Kernel] 撰寫簡單 Hello, World module (part 1).