歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux 內核的測試和調試(1)

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

日期:2017/3/1 9:40:49   编辑:Linux編程

Linux 內核測試哲學

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

在軟件釋出 release 版之前,不用回歸測試就能保證穩定性,並且盡量避免在軟件發布後被用戶發現 bug。調試被用戶發現的 bug 是一項非常浪費時間和精力的工作。因此測試是一項非常重要的工作。不像閉源和專有的操作系統,Linux 內核的開發過程是完全開放的。這種處理方式即是它的優點,也是它的缺點。多個開發者持續增加新功能、修 bug、不斷集成與測試 —— 當環境有新的硬件或功能時,這種開發方式能夠保證內核能持續工作。在開源項目中,開發者與用戶共享測試的結果,這也是開源項目與閉源項目之間的一個很重要的差別。

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

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

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

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

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

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

配置開發與測試的系統

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

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

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

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

  1. sudo apt-get install build-essential

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

  1. sudo apt-get install binutils-multiarch
  2. sudo apt-get install ncurses-dev
  3. sudo apt-get install alien

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

  1. sudo apt-get install git
  2. sudo apt-get install cscope
  3. sudo apt-get install meld
  4. sudo apt-get install gitk

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

穩定的內核

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

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

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

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

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

怎樣在 Ubuntu 上安裝 Linux 3.11 內核 http://www.linuxidc.com/Linux/2013-09/89674.htm

Ubuntu 13.10 (Saucy Salamander) 內核已升級至 Linux Kernel 3.10 RC5 http://www.linuxidc.com/Linux/2013-06/86110.htm

Linux Kernel 3.4.62 LTS 現已經提供下載 http://www.linuxidc.com/Linux/2013-09/90368.htm

如何在Ubuntu 13.10上安裝Linux內核 3.12 http://www.linuxidc.com/Linux/2013-11/92930.htm

Ubuntu如何安裝和升級Linux Kernel 3.15 http://www.linuxidc.com/Linux/2014-08/105313.htm

Linux Kernel 的詳細介紹:請點這裡
Linux Kernel 的下載地址:請點這裡


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

譯者:bazz2 校對:wxy

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

Copyright © Linux教程網 All Rights Reserved