第一个hello word 驱动加载失败--------

博主尝试自行加载驱动模块,并在遇到问题时记录了整个操作过程。包括内核版本检查、模块代码与MAKEFILE配置、编译过程、解决内核版本不匹配的方法以及最终加载失败的尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                   今天尝试自己加载第一个驱动模块,根据惯例hello word 然后失败了,现在说明我的操作过程,请个位看看。

首先我的内核版本:


模块代码与MAKEFILE

     

#include<linux/init.h>
#include<linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
    printk("hello,world\n");
    return 0;
}

static void hello_exit(void)
{
    printk("GOODBYE,world\n");
}

module_init(hello_init);
module_exit(hello_exit);

obj-m +=Hello.o  
CURRENT_DIR:=$(shell pwd)  
KERNEL_DIR:=$(shell uname -r)  
KERNEL_PATH:=/usr/src/kernels/$(KERNEL_DIR)  
  
all:  
	    make -C $(KERNEL_PATH) M=$(CURRENT_DIR) modules  
clean:  
	    make -C $(KERNEL_PATH) M=$(CURRENT_DIR) clean  

编译通过:

  

      

   这是编译的结果,没有报错。

   首先查看了/usr/src 这里并没有源码树,所以执行  yum install kernel-devel    命令安装源码树

   但是安装完成后是4.0.7 版本内核源码树,但是现在内核版本是4.0.6 于是更新yum update

   但是显示已经更新4.0.7 版本,重新启动后还是4.0.6   

   此处第一次脑洞大开,将/usr/src/ 下最新的4.0.7 源码树名称更改为 4.0.6

   但是modinfo Hello.ko    的vermagic  还是4.0.7

   于是更改/usr/src/kernels/4.0.6-200.fc21.x86_64/include/linux/vermagic.h   文件

   本来是:

       

     更改为:

          

   

       强制给一个和PC 同样的内核版本号

这是重新编译后的结果vermagic 已经改变

然后再次尝试加载:


                        

然后加载再次失败

请各位看看到底是哪里出错?

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值