《Linux內(nèi)核驅(qū)動(dòng)模塊編程指南》最初是由 Ori Pomerantz為22版本的內(nèi)核編寫的,后來,ori將文檔維護(hù)的任務(wù)交給了 Peter Jay Salzman,Peter完成了24內(nèi)核版本文檔的編寫,畢竟Lnux內(nèi)核驅(qū)動(dòng)模塊是一個(gè)更新很快的內(nèi)容?,F(xiàn)在,Peter也無法騰出足夠的時(shí)間來完成2.6內(nèi)核版本文檔的編寫,目前該2.6內(nèi)核版本的文檔由合作者 Michael Burian完成版本和注意Linux內(nèi)核模塊是一塊不斷更新進(jìn)步的內(nèi)容,在 LKMPG上總有關(guān)于是否保留還是歷史版本的爭論。Michae和我最終是決定為每個(gè)新的穩(wěn)定版本內(nèi)核建立一個(gè)新的文檔分支。也就是說LKMPG24x專注于24的內(nèi)核,而 LKMPG2.6X將專注于26的內(nèi)核。我們不會(huì)在一篇文檔中提供對舊版本內(nèi)核的支持,對此感興趣的讀者應(yīng)該尋找相關(guān)版本的文檔分支在文檔中的絕大部分源代碼和討論都應(yīng)該適用于其它平臺(tái),但我無法提供任何保證。其中的一個(gè)例外就是 Chapter12,中斷處理該章的源代碼和討論就只適用于x86平臺(tái)。什么是內(nèi)核模塊?內(nèi)核模塊是如何被調(diào)入內(nèi)核工作的?什么是內(nèi)核模塊?現(xiàn)在,你是不是想編寫內(nèi)核模塊。你應(yīng)該懂得C語言,寫過一些用戶程序,那么現(xiàn)在你將要見識(shí)一些真實(shí)的東西。在這里,你會(huì)看到一個(gè)野蠻的指針是如何毀掉你的文件系統(tǒng)的次內(nèi)核崩潰意味著重啟動(dòng)。什么是內(nèi)核模塊?內(nèi)核模塊是一些可以讓操作系統(tǒng)內(nèi)核在需要時(shí)載入和執(zhí)行的代碼,這同樣意味著它可以在不需要時(shí)有操作系統(tǒng)卸載。它們擴(kuò)展了操作系統(tǒng)內(nèi)核的功能卻不需要重新啟動(dòng)系統(tǒng)。舉例子來說,其中一種內(nèi)核模塊時(shí)設(shè)備驅(qū)動(dòng)程序模塊,它們用來讓操作系統(tǒng)正確識(shí)別,使用安裝在系統(tǒng)上的硬件設(shè)備。如果沒有內(nèi)核模塊,我們不得不一次又一次重新編譯生成單內(nèi)核操作系統(tǒng)的內(nèi)核鏡像來加入新的功能。這還意味著一個(gè)臃腫的內(nèi)核。內(nèi)核模塊是如何被調(diào)入內(nèi)核工作的?你可以通過執(zhí)行 Ismo命令來査看內(nèi)核已經(jīng)加載了哪些內(nèi)核模塊,該命令通過讀取/proc/modules文件的內(nèi)容來獲得所需信息這些內(nèi)核模塊是如何被調(diào)入內(nèi)核的?當(dāng)操作系統(tǒng)內(nèi)核需要的擴(kuò)展功能不存在時(shí),內(nèi)核模塊管理守護(hù)進(jìn)程kmod1]執(zhí)行 modprobe去加載內(nèi)核模塊。兩種類型的參數(shù)被傳遞給 modprobe