【发布时间】:2015-08-11 16:40:21
【问题描述】:
我需要生成 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 错误?我会很感激。
【问题讨论】:
-
你是如何在这个系统上获得内核 3.13.3 的?你自己编译的吗?
标签: linux-kernel kernel-module