Linux 內核的測試和調試(1)

Linux 內核測試哲學

不論是開源仍是閉源,全部軟件的開發流程中,測試是一個重要的、不可或缺的環節,Linux 內核也不例外。開發人員自測、系統測試、迴歸測試、壓力測試,都有各自不一樣的目的,可是從更高一個層次上看,這些測試的最終目的又是同樣的:保證軟件能一 直運行下去,當有新功能加進去時,要保證新功能能夠正常工做。php

在軟件釋出 release 版以前,不用迴歸測試就能保證穩定性,而且儘可能避免在軟件發佈後被用戶發現 bug。調試被用戶發現的 bug 是一項很是浪費時間和精力的工做。所以測試是一項很是重要的工做。不像閉源和專有的操做系統,Linux 內核的開發過程是徹底開放的。這種處理方式便是它的優勢,也是它的缺點。多個開發者持續增長新功能、修 bug、不斷集成與測試 —— 當環境有新的硬件或功能時,這種開發方式可以保證內核能持續工做。在開源項目中,開發者與用戶共享測試的結果,這也是開源項目與閉源項目之間的一個很重要 的差異。html

幾乎全部 Linux 內核開發者都是活躍的 Linux 用戶。內核測試人員不必定非得是內核開發者,相反,用戶和開發者若是對新增的代碼不是很熟悉,他們的測試效果會比代碼開發人員本身測試的效果要好不少。也 就是說,開發者的單元自測能驗證軟件的功能,但並不能保證在其餘代碼、其餘功能、其餘軟件、硬件環境下面運行時會出現什麼問題。開發者沒法預料、也沒有機 會和資源來測試全部環境。所以,用戶在 Linux 內核開發過程當中起到很是重要的角色。linux

如今咱們已經瞭解了持續集成測試的重要性,接下來咱們會詳細介紹測試的知識。但在此以前,我仍是向你介紹一下開發的過程,以便讓你們瞭解它是怎麼工做的,以及如何把補丁打進內核主線。git

全世界共有3000多個內核開發者爲 Linux 內核貢獻代碼,天天都有新代碼添加到內核,結果是大概2個月就能產生一個release ,包括幾個穩定版和擴展穩定版。新功能的開發與已發佈的穩定版集成測試流程在同時進行。github

關於開發流程的詳細描述,請參考Greg Kroah-Hartman 的 Linux 內核開發的介紹ubuntu

這份教程適合與初學者以及有經驗的內核開發者,若是你想加入到內核開發者行列,那麼它也適合你。有經驗的開發人員能夠跳過那些介紹基礎測試和調試的章節。架構

這份教程介紹如何測試和調試 Linux 內核、工具、腳本以及在迴歸測試和集成測試中使用的調試機制。另外,本文還會介紹如何使用 git 把針對一個 bug 的補丁分離出來,再介紹把你的補丁提交到內核的郵件列表以前須要作些什麼。我將會使用 Linux PM 做爲測試它調試的對象。儘管本文討論的是 Linux 內核,可是介紹的方法也適用於任何其餘軟件開發項目。工具

配置開發與測試的系統

第一步,找一個知足你需求的開發環境,x86-64 是一個比較理想的選擇,除非你必須用特別的架構。測試

第二步,安裝 Linux 發行版,我推薦 Ubuntu,因此本教程會介紹基於 Ubuntu 的配置過程。你能夠參考如何使用 Ubuntu 來安裝一個 Ubuntu 系統。ui

在開發和測試環境,最好要保證你的 boot 分區有足夠的空間來存放內核文件。你能夠爲 boot 分區留下 3GB 空間,或把 boot 分區直接放到根目錄下,這樣 boot 分區可使用整個磁盤的空間。

安裝好操做系統後,確保 root 用戶可用,確保你的用戶身份可使用 sudo 命令。你的系統也許已經安裝了 build-essential,它是編譯內核必備的軟件包,若是沒安裝,運行下面的命令:

sudo apt-get install build-essential

而後運行下面的命令,保證你的系統可以交叉編譯內核。下面的 ncurses-dev 安裝包是運行 make menuconfig 命令必須用到的。

sudo apt-get install binutils-multiarchsudo apt-get install ncurses-devsudo apt-get install alien

而後安裝一些每一個內核開發者都會用到的工具包:

sudo apt-get install gitsudo apt-get install cscopesudo apt-get install meldsudo apt-get install gitk

若是你喜歡把內核經過交叉編譯以支持非 x86_64 架構的環境,請參考在 x86_64 上交叉編譯 Linux 內核

穩定的內核

使用 git 克隆一個穩定的內核,而後編譯安裝。你能夠參考Linux 內核結構來找到最新的穩定版和開發主線。

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

上面的步驟將會建立一個新的目錄,名爲 linux-stable,並把源碼下載到裏面。

你也能夠直接下載壓縮包並解壓出源碼,無需使用 git:

tar xvf linux-3.x.y.tar.xz

via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,0

譯者:bazz2 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

 

來源: linuxjournal

    原文: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,0         做者: Shuah Khan

        譯者: bazz2

               

本文是原創投遞或翻譯投遞,Linux中國首發地址:http://linux.cn/article-3593-1.html

歡迎轉載,敬請在正文中標註並保留原文/譯文連接和做者/譯者等信息

相關文章
相關標籤/搜索