如何解决modprobe / insmod-错误:无法插入模块,不允许操作以root用户权限安装内核空间模块
因此,我试图安装一个Hello World内核,如乔纳森·科贝特(Corbet)所著的“ Linux设备驱动程序”一书。
这是文件hello.c的代码
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk(KERN_ALERT "Hello World!!\n");
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Good Bye Module!!\n");
}
module_init(hello_init);
module_exit(hello_exit);
要构建它,我使用以下makefile:
obj-m += hello.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
运行后
make all
sudo insmod ./hello.ko
我有错误
ERROR: could not insert module Operation not permitted
安装具有root特权的内核空间模块。也尝试过
sudo su
sudo insmod ./hello.ko
也尝试过
sudo modprove -v hello.ko
有类似错误。
解决方法
所以,发生了几件事,主要的问题是您的计算机(通常是笔记本电脑)在BIOS中启用了secure boot
选项。
这通常可以解决问题,但在某些笔记本电脑中,只有在为BIOS设置管理密码后,该选项才会出现(或被禁用)。
如果将secure boot
选项更改为disabled
有时还不够。在某些较新的英特尔笔记本电脑中,您还需要从BIOS中禁用英特尔平台信任技术。
最后,您可以毫无问题地运行insmod或modprobe。
要检查printk(KERN_ALERT "Hello World!!\n");
的输出,您需要执行
tail -f /var/log/kern.log
应该可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。