首页 > 解决方案 > insmod:错误:无法插入模块 HelloWorld.ko:不允许操作

问题描述

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

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

你好世界.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。

标签: linuxubuntulinux-kernellinux-device-driver

解决方案


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

  1. 您需要使用 mokutil 禁用安全启动 使用此链接中的第一个答案

  2. 通过 sudo 运行 insmod 命令。

祝你好运。


推荐阅读