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