zoukankan      html  css  js  c++  java
  • kernel module insmod错误

    kernel模块配置

    Enable loadable module support

    打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中

    Forced module loading

    允许模块强制加载

    Module unloading

    允许卸载已经加载的模块

    Forced module unloading

    允许强制卸载正在使用中的模块(比较危险)

    Module versioning support

    允许使用其他内核版本的模块(可能会出问题)

    Source checksum for all modules

    为所有的模块校验源码,如果你不是自己编写内核模块就不需要它

     

    一般仅选择“Module unloading”即可。

     

    当insmod模块时报错version或modversion错误,是因为模块版本问题,去掉内核配置项“Module versioning support”即可。

    常见错误如下:

    dido: disagree about version of symbol cdev_add

    dido:Unknown symbol cdev_add (err -22)

    dido: disagree about version of symbol cdev_init

    dido:Unknown symbol cdev_init (err -22)

    dido: disagree about version of symbol cdev_del

    dido:Unknown symbol cdev_del (err -22)

    insmod: can’t insert ‘dido.ko’: Invalid argument

    # insmod main.ko

    [  894.541900] main: version magic '3.2.0-g9d89df8 mod_unload ARMv7 p2v8 ' should be '3.2.0-g31e746c-dirty mod_unload ARMv7 p2v8 '

    insmod: can't insert 'main.ko': invalid module format

    内核版本不同,导致模块加载不成功,解决方法:

    1. 重新编译内核、驱动,即内核、驱动版本一致。

    2. 简单修改内核版本文件,与现有系统相同。

       3.2内核在include/generated/utsrelease.h

       2.6内核在include/linux/utsrelease.h

    3. 修改内核。根据内核中utsrelease.h内容产生的过程修改内核Makefie,仅向kernel.release输出内核版本,而不用脚本setlocalversion。

    kernelrelease = $(KERNELVERSION)$(localver-full)include/config/kernel.release: include/config/auto.conf FORCE

        $(Q)rm -f $@

        $(Q)echo $(kernelrelease) > $@

  • 相关阅读:
    分布式系统学习一-概念篇
    JAVA多线程学习九-原子性操作类的应用
    JAVA多线程学习八-多个线程之间共享数据的方式
    JAVA多线程学习七-线程池
    vue 工作随笔
    智能云课堂整理
    mysql
    模板引挚 jade ejs
    node实战小例子
    昭山欢node资料学习笔记
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5715477.html
Copyright © 2011-2022 走看看