我需要生成oops linux内核错误。我正在使用linux-3.13.3并在qemu上启动它。我发现以下代码会导致oops错误:
#include <linux/module.h>
#include <linux/kernel.h>
static int crash_module_init(void)
{
printk(KERN_INFO "crash module starting\n");
int *p = 0;
printk("%d\n", *p);
return 0;
}
static void crash_module_exit(void)
{
printk(KERN_INFO "crash module exiting\n");
}
module_init(crash_module_init);
module_exit(crash_module_exit);
我使用了以下Makefile:
obj-m = hello.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
不幸的是,在qemu上没有/lib/modules/3.13.3/build这样的目录。只有/lib/modules/3.2.0-4-686-pae并且在某些目录中(但没有构建)。即使我试图将其中一个现有目录放在那里:“没有规则来制作目标modules
”。
有人可以告诉我如何编译这个模块吗?或者也许有人有另一个想法如何生成oops错误?我会很感激。