不论是开源仍是闭源,全部软件的开发流程中,测试是一个重要的、不可或缺的环节,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
来源: 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
欢迎转载,敬请在正文中标注并保留原文/译文连接和做者/译者等信息