您能否建议一些测试步骤(手动或代码自动化)来创建内核Panic?
有各种工具可用于尝试崩溃您的计算机:
Crashme 试图执行随机代码;这对测试进程生命周期代码非常有用。
Fsx 是一个工具,用于广泛测试文件系统代码;适用于测试驱动程序、块 I/O 和文件系统代码。
Linux 测试项目 旨在创建大量内核测试用例库;虽然它可能并不是专门设计用于 崩溃 系统,但它可以帮助您和您的团队始终按计划运行。 (请注意,LTP 并非 规定性的 -- 内核社区不认为他们的测试很重要 -- 但 LTP 团队会非常努力地 描述 内核所做和不做的事情。)
如果您的设备连接到网络,可以使用各种扫描选项运行Nmap;-sV --version-all
将尝试查找所有服务的版本(这可能会很紧张),-O --osscan-guess
将尝试通过向机器发送奇怪的网络数据包并根据响应猜测操作系统。
Nessus 扫描工具也可识别正在运行的服务版本;它可能(也可能不)比 Nmap 提供任何改进。
您还可以将设备交给用户使用;他们会发现软件可以做出最疯狂的事情,并且会发现您从未想过要寻找的漏洞。:)
SysRq + c
或者echo c >/proc/sysrq-trigger
Crashme已知能够发现未知的内核崩溃情况,但必须以强有力的方式运行,以创建在进程中处理的各种信号异常和各种进程退出条件。
Crashme生成的消息的主要目的是确定是否发生了足够有趣的事情,以指示可能的效力。例如,如果需要mprotect
调用来允许使用malloc
分配的内存作为指令执行,而且如果您没有在源代码crashme.c中启用mprotect
,则Crashme是无效的。
似乎x64架构上的操作系统倾向于关闭数据段的执行。最近,我已经更新了http://crashme.codeplex.com/上的crashme.c,以在__APPLE__
的情况下使用mprotect
并在运行MAC OS X Lion的MacBook Pro上进行了测试。这是自1994年以来对Crashme的首次重大更新。很快将会看到更新的Centos和Freebsd支持。