W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在本章開始, 我們提供例子模塊來演示編程概念. ( 所有的例子都可從 O' Reilly' s 的 FTP 網(wǎng)站上得到, 如第 1 章解釋的那樣 )建立, 加載, 和修改這些例子, 是提高你對驅(qū)動如何工作以及如何與內(nèi)核交互的理解的好方法.
例子模塊應(yīng)該可以在大部分的 2.6.x 內(nèi)核上運(yùn)行, 包括那些由發(fā)布供應(yīng)商提供的. 但是, 我們建議你獲得一個主流內(nèi)核, 直接從 kernel.org 的鏡像網(wǎng)絡(luò), 并把它安裝到你的系統(tǒng)中. 供應(yīng)商的內(nèi)核可能是主流內(nèi)核被重重地打了補(bǔ)丁并且和主流內(nèi)核有分歧; 偶爾, 供應(yīng)商的補(bǔ)丁可能改變了設(shè)備驅(qū)動可見的內(nèi)核 API. 如果你在編寫一個必須在特別的發(fā)布上運(yùn)行的驅(qū)動, 你當(dāng)然要在相應(yīng)的內(nèi)核上建立和測試. 但是, 處于學(xué)習(xí)驅(qū)動編寫的目的, 一個標(biāo)準(zhǔn)內(nèi)核是最好的.
不管你的內(nèi)核來源, 建立 2.6.x 的模塊需要你有一個配置好并建立好的內(nèi)核樹在你的系統(tǒng)中. 這個要求是從之前內(nèi)核版本的改變, 之前只要有一套當(dāng)前版本的頭文件就足夠了. 2.6 模塊針對內(nèi)核源碼樹里找到的目標(biāo)文件連接; 結(jié)果是一個更加健壯的模塊加載器, 還要求那些目標(biāo)文件也是可用的. 因此你的第一個商業(yè)訂單是具備一個內(nèi)核源碼樹( 或者從 krenel.org 網(wǎng)絡(luò)或者你的發(fā)布者的內(nèi)核源碼包), 建立一個新內(nèi)核, 并且安裝到你的系統(tǒng). 因為我們稍后會見到的原因, 生活通常是最容易的如果當(dāng)你建立模塊時真正運(yùn)行目標(biāo)內(nèi)核, 盡管這不是需要的.
你應(yīng)當(dāng)也考慮一下在哪里進(jìn)行你的模塊試驗, 開發(fā)和測試. 我們已經(jīng)盡力使我們的例子模塊安全和正確, 但是 bug 的可能性是經(jīng)常會有的. 內(nèi)核代碼中的錯誤可能會引起一個用戶進(jìn)程的死亡, 或者偶爾, 癱瘓整個系統(tǒng). 它們正常地不會導(dǎo)致更嚴(yán)重地后果, 例如磁盤損傷. 然而, 還是建議你進(jìn)行你的內(nèi)核試驗在一個沒有包含你負(fù)擔(dān)不起丟失的數(shù)據(jù)的系統(tǒng), 并且沒有進(jìn)行重要的服務(wù). 內(nèi)核開發(fā)者典型地會保留一臺"犧牲"系統(tǒng)來測試新的代碼.
因此, 如果你還沒有一個合適的系統(tǒng), 帶有一個配置好并建立好的源碼樹在磁盤上, 現(xiàn)在是時候建立了. 我們將等待. 一旦這個任務(wù)完成, 你就準(zhǔn)備好開始擺布內(nèi)核模塊了.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: