【问题标题】:How to compile linux kernel module?如何编译linux内核模块?
【发布时间】: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


【解决方案1】:

我可以检查这个answer 应该可以帮助您解决您的制作问题

查看 sysrq 以生成 oops。通常用于在系统似乎处于活锁状态时使系统崩溃,但无论如何都会使其崩溃。我不确定它是否适用于 Qemu。

【讨论】:

    猜你喜欢
    • 2012-02-22
    • 2011-05-03
    • 2011-06-06
    • 2014-01-25
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多