首页 文章

如何测试内核的内核恐慌?

提问于
浏览
8

我正在嵌入式设备上测试Linux内核,并希望找到Linux内核会发出恐慌的情况/场景 .

你能建议一些测试步骤(手动或代码自动化)来创建内核恐慌吗?

3 回答

  • 9

    您可以使用各种工具来尝试使计算机崩溃:

    crashme尝试执行随机代码;这对测试流程生命周期代码很有用 .

    fsx是一个尝试广泛使用文件系统代码的工具;它适用于测试驱动程序,阻止io和文件系统代码 .

    Linux Test Project旨在创建一个大型内核测试用例存储库;它可能不是特别设计有崩溃系统,但它可以帮助您和您的团队保持一切按计划工作 . (请注意,LTP不是禁止使用的 - 内核社区并不认为他们的测试是重要的 - 但是LTP团队非常努力地描述内核做什么和不做什么 . )

    如果您的设备是网络连接的,您可以使用各种扫描选项对它运行nmap-sV --version-all 将尝试查找所有正在运行的服务的版本(这可能会有压力), -O --osscan-guess 会尝试通过抛出怪来确定操作系统机器上的网络数据包,并通过响应猜测输出是什么 .

    nessus扫描工具还可以对正在运行的服务进行版本识别;但它可能会或可能不会对nmap提供任何改进 .

    您也可以将设备交给用户;他们找出了与软件最疯狂的事情,他们会发现你从未想过要找的错误 . :)

  • 11

    您可以尝试以下组合键

    SysRq c

    要么

    echo c> / proc / sysrq-trigger

  • 1

    众所周知,Crashme会发现未知的内核恐慌情况,但必须以强有力的方式运行,以创建在进程内处理的各种信号异常以及各种进程退出条件 .

    Crashme生成的消息的主要目的是确定是否发生了足够有趣的事情以指示可能的效力 . 例如,如果需要 mprotect 调用以允许将 malloc 分配的内存作为指令执行,并且如果您的平台的源代码crashme.c中没有启用 mprotect ,则Crashme无能为力 .

    似乎x64体系结构上的操作系统倾向于关闭数据段的执行 . 最近我更新了http://crashme.codeplex.com/上的crashme.c以便在 __APPLE__ 的情况下使用 mprotect 并在运行MAC OS X Lion的MacBook Pro上进行了测试 . 这是Crashme自1994年以来的第一次重大更新 . 期待很快看到更新的Centos和Freebsd支持 .

相关问题