1. 在平时的工作中使用内核的测试版本.

2. 在新内核上运行专用的测试套件,比如LTP.

3. 新内核安装后,做些非常规的事情.

4. 新内核安装后,测试系统的性能.

当然,测试过程它们可以混合运用,所以可以认为它们是测试过程的不同阶段。

阶段一:内核的冒烟测试

内核测试的第一阶段很简单:我们尝试着启动内核,然后把它用在平时的工作中。

• 在以全功能配置启动系统之前,推荐先用init=/bin/bash命令行参数来启动内核。它使得内核只启动一个bash进程。这样,你可以检查在最小配置下是否能正常挂载和卸载文件系统,然后,你可以测试一些更加复杂的内核功能,比如挂起到disk或RAM的缓冲。这种情况下,唯一被挂载了的模块是位于initrd映象中的那些模块。提到 了initrd映象。通常,你可以参考你的boot loader文档来获取更多关于手工向内核传递命令行的信息(我们的观点是,如果使用的是GRUB,会更容易操作些。)

• 接着,建议以runlevel 2来启动系统(通常,是通过把数字2作为命令行参数传递给内核),这时,网络服务器和X服务器还没启动(你的系统有可能为这个用途使用的是另一个runlevel,尽管不大可能,所以你应该查看/etc/inittab文件确认一下)。在这个配置下,你可以检查网络接口是否能工作,你还可以尝试手工启动X服务器来确认它不会崩溃掉。

• 最后,根据需要,你可以把系统启动到runlevel 5(也就是全功能)或者3(也就是除了X,全功能开启)

现在,你已经可以按平时的样子使用系统一段时间了。但是,如果想快点测试内核,你可以执行一些典型的操作,比如下载一些文件,读取邮件,浏览一些站点,抓取一些音轨(我们假设,使用的是合法买来的音频CD),刻录一张CD或DVD等等操作来连续地检查是否有任何一项会出错。出错的话,就意味着内核有问题存在了 。

阶段二(自动测试)

测试的下一阶段是,使用专门设计的程序来检查特定的内核子系统能否正常工作。我们还执行内核的退化以及性能测试。后者对于内核开发员(还有我们)来说,相当地重要,因为它使得我们能识别出损害性能的改变。比如,如果我们把内核从2.6.x-rc1升级到2.6.x-rc2后,有种文件系统的性能却降低了10%,查找导致这种情况发生的补丁无疑是个好主意。

关于内核的自动测试,我们推荐你使用AutoTest 套件()。该套件包含了很多测试应用程序以及统计工具,而且相当简单的用户界面。

为了安装AutoTest你以root帐户可以进入到/usr/local 目录并运行

# svn checkout svn://test.kernel.org/autotest/trunk autotest

虽然通常不推荐以root帐户运行类似命令,但这个命令应该是安全的,除非你不信任你的DNS服务器,因为它只是下载一些文件,并保存到/usr/local下。除此之外,你还得以root帐户运行AutoTest,因为它的一些测试要求超级用户权限才能完成。所以,你不应该在生产系统上使用AutoTest:在极端情况下,保存在进行特权级测试的系统中的数据可能会受到损坏甚至毁坏,我们相信你不喜欢你的产品数据会发生这种情况。

根据设计,AutoTest是非交互式性的,所以一旦启动,你就不需要再关心它了(当然了,如果有坏事真的发生了,你就要不得不恢复系统了,但这是另外一个话题)。要启动测试,你可以到/usr/local/autotest/client目录下 (我们假设AutoTest被安装到了/usr/local下),然后以root身份执行:

# bin/autotest tests/test_name/control

这里,test_name是位于目录/usr/local/autotest/client/tests中的目录名称,该目录中含有你想要进行的测试。控制文件tests/test_name/control包含了为AutoTest准备的指令。最简单的情况下,只需要一个这样的指令,也就是:

job.run_test(’test_name’)

这里,test_name是包含控制文件的目录名称。更加复杂的控制文件的内容可能类似下面:

job.run_test(’pktgen’, ’eth0’, 50000, 0, tag=’clone_skb_off’)

job.run_test(’pktgen’, ’eth0’, 50000, 1, tag=’clone_skb_on’)

这里,测试名称后面的字符串表示的是应当要传递到测试程序的参数。你可以修改这些参数,但是首先要阅读测试程序的文档以及脚本tests/test_name/test_name.py(比如tests/pktgen/pktgen.py)。实际上AutoTest就是使用该脚本来启动测试的(可能你已经注意到,

AutoTest脚本是用Python语言写的)。脚本sts/test_name/test_name.py的执行结果保存在目录results/default/test_name/中,该目录中的status文件包含着标识测试是否已经成功完成的信息。想取消正在进行的测试,按Ctrl+C即可。

如果你想连续运行一串测试,最好的做法是准备单独一个文件,该文件中包含着多个AutoTest的指令。这个文件中的指令和上面提到的控制文件中的指令类似。比如,文件samples/all_tests包含有运行所有可以测试指令,其中前五行如下

job.run_test(’aiostress’)

job.run_test(’bonnie’)

job.run_test(’dbench’)

job.run_test(’fio’)

job.run_test(’fsx’)

要运行这个文件中的指令所请求的全部测试,你可以做使用命令bin/autotest samples/all_tests。但是要记得这要花很长的时间才能完成。类似地,要运行定制的一串测试,得把为AutoTest准备的指令们放到一个文件里面,然后给这个文件起个名称,这个名称将作为命令行的一个参数传递给autotest.要并行地运行几个测试,你得准备一个特殊的控制文件,这个控制文件包含的指令如下:

def kernbench():

job.run_test(’kernbench’, 2, 5)

def dbench():

job.run_test(’dbench’)

job.parallel([kernbench], [dbench])

在测试执行的过程序中,在任何时间里,你都可以通过按Ctrl+C来停止它们。

为了造福那些不喜欢命令行和配置文件的朋友,ATCC (AutoTest Control Center )已经被发明出来了。如果你运行它,比如通过命令ui/menu,将会得到一个用菜单驱动的简单界面,你可以通过界面选择测试和profiling工具,浏览测试结果,还可以通过它来限制范围,配置它们。

如果你厌烦了AutoTest套件中包含的一系列工具,可以访问站点 。该站点有可以用于linux内核测试的全面的工具清单。

阶段三 容错性测试

你的新内核已经通过了测试的前两个阶段了吗?现在,可以开始实验了。那就是,做一些任何一个正常人在普通工作中都不会做的蠢事,因为没人会知道那些蠢事会导致内核崩溃。那到底需要做些什么事呢?好的,如果存在一个“标准的”程序的话,那它当然早就被包含在一些测试套件中了。

例如,第三阶段可以从拔掉和重插USB设备开始。从理论上讲,重插一个USB设置不应该会产生任何事情,至少从用户的角度看来。如果USB子系统存在bug,连续进行很多次这样的测试就可能会导致内核崩溃(这个测试如果出现问题,说明了之前未曾有人在类似系统配置下尝试这个测试)。

接下来,你可以编写一个脚本,连续读取/proc目录中文件的内容,等等。一句话,在这阶段,你应该做些普通用户永远不会做的事(或者极常少做:为什么有人会不断重复地挂载和卸载某个文件系统呢?)

测试linux内核工具,多种测试linux内核的方法相关推荐

  1. linux 渗透工具_适用于Linux的十大最佳渗透测试工具

    linux 渗透工具 This article covers some of the best penetration testing tools for Linux Cybersecurity is ...

  2. linux 串口工具_Zynq下linux系统搭建

    引言 Zynq器件将arm和FPGA结合,利用了两者各自的优势,arm可以实现灵活的控制,而FPGA部分可以实现算法加速,这大大扩展了zynq的应用.比如深度学习加速,图像处理等等.PL侧表示FPGA ...

  3. linux 网络安全工具,常用的Linux网络安全工具简介

    常用的Linux网络安全工具简介 互联网   发布时间:2008-10-08 22:12:04   作者:佚名   我要评论 常用的Linux网络安全工具简介 尽管各种版本的Linux distrib ...

  4. 远程管理linux系统工具,远程管理Linux系统工具的设计与实现Linux013

    一种远程管理Linux系统工具的设计与实现 摘  要 现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务.为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linu ...

  5. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试

    一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...

  6. window linux传输工具,window与linux文件传输工具,linux文件传输

    window与linux文件传输工具,linux文件传输 window与linux文件传输工具 [一般用于SecureCRT ssh中使用] 法一:直接用yum安装lrzsz(推荐) yum inst ...

  7. linux rz工具怎么用,Linux和Windows间文件传输工具rz/sz(lrz/lsz) 介绍

    Linux下和Windows之间的文件传输工具rz/sz(lrz/lsz) 介绍 [什么是rz/sz (lsz/lrz)] 简单说就是,可以很方便地用这两个sz/rz工具,实现Linux下和Windo ...

  8. linux sed工具,玩转Linux - 神级工具 sed awk

    简介 本文主要介绍 Linux 系统的两个神级工具:sed 和 awk ,他们是Linux高手们必备的技能,很值得我们去研究的东西. 这里是我在网上书上收集的相关资料,因为这两个工具很有名也很重要,所 ...

  9. 测试 必用 工具(测试工具知多少)

    1. 功能 需求 工具 描述/详细链接 json对比 json格式化 在线工具http://tlrobinson.net/projects/javascript-fun/jsondiff/ 在线工具或 ...

  10. linux css 工具,7个Linux和Ubuntu下的免费CSS编辑器

    一个好的编辑器是世界上所有 1)jEdit jEdit是一款成熟的文本编辑器,其背后凝聚了许许多多人多年的开发汗水.下载,安装,然后设置,就可以快速轻松地进入jEdit启动页面. 官方网站:http: ...

最新文章

  1. lua游戏脚本实例源码_Lua与其他宿主语言交互原理剖析
  2. [JAVAWEB实战篇]---Hibernate实现级联删除
  3. Ubuntu16安装CUDA9.0+Anaconda+Tensorflow1.8GPU(2018.08.20最新)
  4. CSDN-markdown编辑器使用方法
  5. 友盟 点完登陆后无反应_高考缴费艺术生到底该交多少钱?密码找不到了怎么办?等级考缴费吗?点进来查看!...
  6. 仅此一文让你明白事务隔离级别、脏读、不可重复读、幻读
  7. 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux
  8. AI表情迁移、电影字幕自动翻译等,原来是这么玩的!
  9. 在main中调用srand是否影响子函数中的rand()的返回值?
  10. .NET学习知识和技术总结
  11. 初识SQL(新手入门)
  12. oracle查看已经创建的同义词,创建同义词synonym
  13. 双头巨人 (twin)
  14. 32岁的程序员被裁,java宿舍管理系统源码jsp
  15. 2920集五福_2019支付宝集五福字新玩法,高概率出敬业福攻略。
  16. Android亮屏和熄屏控制
  17. 【mmdetection3d】——3D 目标检测 NuScenes 数据集
  18. 近期iOS开发者问题全面答疑(3)
  19. 打开oracle数据库oe,database - Oracle数据库11g:OE.ORDERS表不存在 - SO中文参考 - www.soinside.com...
  20. 《痞子衡嵌入式半月刊》 第 41 期

热门文章

  1. 【14年浙江省赛 ZOJ 3780】Paint the Grid Again【图转换】
  2. PHP自动加载(下)——PSR4
  3. EHIGH恒高:大话UWB技术之蓝牙定位的烦恼
  4. npm i 报错 'match' of undefined 错误以及删除node_modules失败
  5. YAML_06 playbook从上往下顺序执行,若报错,不提示,继续往下执行
  6. docker-简单操作
  7. Linux用户环境变量及操作
  8. ML~线性代数~python
  9. 第一百零六节,JavaScript变量作用域及内存
  10. Linux命令——创建删除文件