我正在嵌入式设备上测试Linux内核,并希望找到Linux内核会发出恐慌的情况/场景。
您能否建议一些测试步骤(手动或代码自动化)来创建内核恐慌?
答案 0 :(得分:11)
您可以使用各种工具来尝试使计算机崩溃:
crashme尝试执行随机代码;这对于测试流程生命周期代码很有用。
fsx是一个尝试广泛使用文件系统代码的工具;它适用于测试驱动程序,阻止io和文件系统代码。
Linux Test Project旨在创建一个大型内核测试用例存储库;它可能不会特别针对崩溃系统设计,但它可能会帮助您和您的团队按计划保持一切正常运行。 (请注意,LTP不是 proscriptive - 内核社区不会将他们的测试视为重要事项 - 但是LTP团队非常努力地将描述性内核做什么和不做什么。)
如果您的设备是网络连接的,则可以使用各种扫描选项对其进行nmap运行:-sV --version-all
将尝试查找所有正在运行的服务的版本(这可能会有压力), -O --osscan-guess
将尝试通过在机器上抛出奇怪的网络数据包并通过响应猜测输出是什么来确定操作系统。
nessus扫描工具还会对正在运行的服务进行版本识别;但是,它可能会也可能不会对nmap提供任何改进。
您也可以将设备交给用户;他们找出了与软件最疯狂的事情,他们会发现你从未想过要找的错误。 :)
答案 1 :(得分:9)
您可以尝试以下组合键
SysRq + c
或
echo c> / proc / sysrq-trigger
答案 2 :(得分:1)
众所周知,Crashme会发现未知的内核恐慌情况,但必须以强有力的方式运行,以创建在进程内处理的各种信号异常以及各种进程退出条件。
Crashme生成的消息的主要目的是确定是否发生了足够有趣的事情以指示可能的效力。例如,如果需要mprotect
调用以允许将malloc
分配的内存作为指令执行,并且在源代码中没有启用mprotect
crashme.c对于你的平台,那么Crashme是无能为力的。
似乎x64架构上的操作系统倾向于关闭数据段的执行。最近我更新了http://crashme.codeplex.com/上的crashme.c,以便mprotect
使用__APPLE__
并在运行MAC OS X Lion的MacBook Pro上进行测试。这是Crashme自1994年以来的第一次重大更新。期待很快看到更新的Centos和Freebsd支持。