2.1. 設(shè)置你的測(cè)試系統(tǒng)

2018-02-24 15:49 更新

2.1.?設(shè)置你的測(cè)試系統(tǒng)

在本章開(kāi)始, 我們提供例子模塊來(lái)演示編程概念. ( 所有的例子都可從 O' Reilly' s 的 FTP 網(wǎng)站上得到, 如第 1 章解釋的那樣 )建立, 加載, 和修改這些例子, 是提高你對(duì)驅(qū)動(dòng)如何工作以及如何與內(nèi)核交互的理解的好方法.

例子模塊應(yīng)該可以在大部分的 2.6.x 內(nèi)核上運(yùn)行, 包括那些由發(fā)布供應(yīng)商提供的. 但是, 我們建議你獲得一個(gè)主流內(nèi)核, 直接從 kernel.org 的鏡像網(wǎng)絡(luò), 并把它安裝到你的系統(tǒng)中. 供應(yīng)商的內(nèi)核可能是主流內(nèi)核被重重地打了補(bǔ)丁并且和主流內(nèi)核有分歧; 偶爾, 供應(yīng)商的補(bǔ)丁可能改變了設(shè)備驅(qū)動(dòng)可見(jiàn)的內(nèi)核 API. 如果你在編寫(xiě)一個(gè)必須在特別的發(fā)布上運(yùn)行的驅(qū)動(dòng), 你當(dāng)然要在相應(yīng)的內(nèi)核上建立和測(cè)試. 但是, 處于學(xué)習(xí)驅(qū)動(dòng)編寫(xiě)的目的, 一個(gè)標(biāo)準(zhǔn)內(nèi)核是最好的.

不管你的內(nèi)核來(lái)源, 建立 2.6.x 的模塊需要你有一個(gè)配置好并建立好的內(nèi)核樹(shù)在你的系統(tǒng)中. 這個(gè)要求是從之前內(nèi)核版本的改變, 之前只要有一套當(dāng)前版本的頭文件就足夠了. 2.6 模塊針對(duì)內(nèi)核源碼樹(shù)里找到的目標(biāo)文件連接; 結(jié)果是一個(gè)更加健壯的模塊加載器, 還要求那些目標(biāo)文件也是可用的. 因此你的第一個(gè)商業(yè)訂單是具備一個(gè)內(nèi)核源碼樹(shù)( 或者從 krenel.org 網(wǎng)絡(luò)或者你的發(fā)布者的內(nèi)核源碼包), 建立一個(gè)新內(nèi)核, 并且安裝到你的系統(tǒng). 因?yàn)槲覀兩院髸?huì)見(jiàn)到的原因, 生活通常是最容易的如果當(dāng)你建立模塊時(shí)真正運(yùn)行目標(biāo)內(nèi)核, 盡管這不是需要的.

你應(yīng)當(dāng)也考慮一下在哪里進(jìn)行你的模塊試驗(yàn), 開(kāi)發(fā)和測(cè)試. 我們已經(jīng)盡力使我們的例子模塊安全和正確, 但是 bug 的可能性是經(jīng)常會(huì)有的. 內(nèi)核代碼中的錯(cuò)誤可能會(huì)引起一個(gè)用戶進(jìn)程的死亡, 或者偶爾, 癱瘓整個(gè)系統(tǒng). 它們正常地不會(huì)導(dǎo)致更嚴(yán)重地后果, 例如磁盤(pán)損傷. 然而, 還是建議你進(jìn)行你的內(nèi)核試驗(yàn)在一個(gè)沒(méi)有包含你負(fù)擔(dān)不起丟失的數(shù)據(jù)的系統(tǒng), 并且沒(méi)有進(jìn)行重要的服務(wù). 內(nèi)核開(kāi)發(fā)者典型地會(huì)保留一臺(tái)"犧牲"系統(tǒng)來(lái)測(cè)試新的代碼.

因此, 如果你還沒(méi)有一個(gè)合適的系統(tǒng), 帶有一個(gè)配置好并建立好的源碼樹(shù)在磁盤(pán)上, 現(xiàn)在是時(shí)候建立了. 我們將等待. 一旦這個(gè)任務(wù)完成, 你就準(zhǔn)備好開(kāi)始擺布內(nèi)核模塊了.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)