insmod:错误:无法插入模块HelloWorld.ko:不允许的操作

时间:2019-10-24 17:09:08

标签: linux ubuntu linux-kernel linux-device-driver

我正在尝试学习linux和内核开发。

我能够构建该模块,但无法加载它。

HelloWorld.c

/*  
 *  hello-1.c - The simplest kernel module.
 */
#include <linux/module.h>   /* Needed by all modules */
#include <linux/kernel.h>   /* Needed for KERN_INFO */

int init_module(void)
{
    printk(KERN_INFO "Hello world 1.\n");

    /* 
     * A non 0 return means init_module failed; module can't be loaded. 
     */
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "Goodbye world 1.\n");
}

这是我的制作文件:

KERNEL_SOURCE := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

obj-m += HelloWorld.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

在执行insmod加载模块权限时被拒绝。我什至尝试用root以及modprobe来做,但是没有用。

我也尝试过Link,但问题还是一样。

希望我能得到一些帮助。我正在使用ubuntu 18.04LTS。

2 个答案:

答案 0 :(得分:0)

首先,请确保在makefile中毕竟有一个制表符:并且干净:没有空格 然后保存并运行命令make 之后,通过以下命令插入内核。 $ sudo insmod file_name.ko 最后,显示。 $ dmesg | tail -1

答案 1 :(得分:0)

所以我遇到了同样的问题,这对我有用:

  1. 您需要使用mokutil use the first answer in this link

  2. 禁用安全启动
  3. 通过sudo运行insmod命令。

祝你好运。