内核版本是如何生成的:

Linux 内核在进行模块装载时先完成模块的 CRC 值校验,再核对

vermagic 中的字符信息,linux版本:在linux/utsrelease.h中定义,文件中的内容如下:#define

UTS_RELEASE "2.6.35.7-perf+",utsrelease.h是kernel编译后自动生成的,用户更改里面的内容不会有效果。

在init/version.c中,定义了kernel启动时的第一条打印信息:

const char linux_banner[] =

"Linux version" UTS_RELEASE "(" LINUX_COMPILE_BY "@"LINUX_COMPILE_HOST") (" LINUX_COMPILER ")" UTS_VERSION "\n";

这里UTS_RELEASE在kernel编译时自动生成

在init/main.c的start_kernel函数中,有kernel启动的第一条打印信息,这条信息是dmesg命令打印出来:

printk(KERN_NOTICE "%s", linux_banner);

方法二:

驱动模块的version magic信息是怎么生成的:

2

.6内核下,在linux/vermagic.h中定义有VERMAGIC_STRING,VERMAGIC_STRING不仅包含内核版本号,还包含有

内核使用的gcc版本,SMP与PREEMPT等配置信息。模块在编译时,我们可以看到屏幕上会显示"MODPOST"。在此阶

段,VERMAGIC_STRING会添加到模块的modinfo段。在内核源码目录下scripts\mod\modpost.c文件中可以看到模块后

续处理部分的代码。模块编译生成后,通过`modinfo

mymodule.ko`命令可以查看此模块的vermagic等信息。2.6内核下的模块装载器里保存有内核的版本信息,在装载模块时,装载器会比较所

保存的内核vermagic与此模块的modinfo段里保存的vermagic信息是否一致,两者一致时,模块才能被装载。为了使两个版本一致:可以把

依赖源码中的include/linux/vermagic.h中的UTS_RELEASE修改成与目标机器的版本一致,这样,再次编译模块就可以了。

参考:

http://blog.sina.com.cn/s/blog_6e5e78bf010105jj.html

http://blog.csdn.net/armeasy/article/details/6027563

原文:http://www.cnblogs.com/muyuzhanglao/p/4311225.html

linux内核版本不一致,内核模块版本和内核版本不一致的处理方法相关推荐

  1. linux的驱动开发——内核模块如何使用?

    1.内核模块的使用 \qquad查看内核模块的信息的命令: modinfo xxx.ko \qquad查看当前内核中已经插入的内核模块 lsmod \qquad将内核模块加载到内核中,和内核形成一个整 ...

  2. linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...

    环境:Ubuntu 12.10     学号:SA****199 1.更新内核: 直接安装的系统内核版本一般不是最新,用 uname -a 查看一下 自己的版本,OK,我的是: Linux chenh ...

  3. linux查看linux版本,内核版本,系统位数,gcc版本,Ubuntu下查看linux版本,内核版本,系统位数,gcc版本...

    转自:http://www.cnblogs.com/nucdy/p/5447722.html 1. 查看linux版本 sunny@ubuntu:~$cat /etc/issue Ubuntu 11. ...

  4. linux mint 18.3 内核,Linux Mint 18.3 “Sylvia” KDE和Xfce版本正式发布

    Linux Mint团队发布了Linux Mint 18.3 "Sylvia" Xfce和Linux Mint 18.3"Sylvia" KDE正式最终版本以供 ...

  5. Linux 之十七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面

      前段时间重新安装了 Ubuntu 22.04 LTS,安装后没有显示 GRUB 引导页面(默认自动跳过),直接使用默认内核启动,而我需要变更一下默认的内核版本,特此记录一下修改过程. 安装其他版本 ...

  6. 【会议记录】Linux内核的最新进展(6.2版本)分享

    前一段时间我参加了阅码场的活动 Yomoday(北京场),现场有很多技术专家,非常多前沿的技术分享.这是其中一个主题的记录,尽量还原当时的分享内容,但也可能有些地方不特别准确. Linux内核的最新进 ...

  7. Linux内核开发_内核模块

    内核模块是什么? Linux下的内核模块类似于Windows下的DLL动态链接库技术,和我们平常所使用的一些动态链接的SDK库一样,只是调用者是内核而已,不是用户态的程序. 内核模块拥有的的权限是和用 ...

  8. linux内核驱动ldd3_走进linux 驱动开发 之 内核模块

    一.Linux内核简介 1.宏内核与微内核 内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务 ...

  9. 编译内核启用KASan动态检测内核内存错误功能(ubuntu16.04 4.4.0内核编译升级到linux-4.4.252版本)

    目录 一.编译内核并配置支持KAsan 1.下载源码 2.安装编译内核必须的库 3.清理之前内核编译生成及相关配置 4.配置内核参数 5.开始编译 6.模块(驱动)安装 7.安装新编译的内核 8.修改 ...

最新文章

  1. 有个程序员老公有多爽???
  2. Win10系统和子系统Ubuntu16.04 安装 ros
  3. SAP ABAP ALV(LVC)的一个自定义事件(F4帮助事件,回车ENTER按钮事件)的一个实例
  4. 深源恒际医疗票据OCR落地九省市 服务范围覆盖过半市场
  5. 学妹问我,并发问题的根源到底是什么?
  6. java获取iPhone手机图片旋转角度处理
  7. 可燃气体浓度多少合格_科普:气体容积单位LEL%、VOL%、TLV(ppm)之间如何换算?...
  8. sql limit不接具体数字_SQL汇总函数和分组函数
  9. Seata多微服务互相调用_全局分布式事物使用案例_Storage-Module 仓储微服务说明---微服务升级_SpringCloud Alibaba工作笔记0063
  10. 使用Docker部署Gitlab
  11. Mac系统怎么设置文件夹显示在前面?
  12. ExtJS笔记 Grids
  13. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第1节 基础加强_1_今日内容(1)...
  14. php酒店系统论文,PHP酒店网站管理系统毕业论文
  15. linux刷显卡bios版本,一种Linux系统下显卡刷新BIOS的方法与流程
  16. 计算机地球一小时word处理,地球一小时策划书word版
  17. Uipath调用Macro(invoke VBA/Execute Macro/invoke VBScript)
  18. 新思路,坚持创新;好想法,坚持执行
  19. 外挂的介绍 什么是外挂
  20. 图片分类的入门:二分类

热门文章

  1. Ubuntu20.04下Nginx的.NetCore项目部署流程
  2. Matlab 结构体数组批量赋值
  3. libmagic 介绍
  4. 2022年注册会计师考试财务成本管理模拟题及答案
  5. 一款超好用的 Redis 可视化管理工具
  6. TimesTen 应用层数据库缓存学习:16. Aging策略与AWT缓存组
  7. OpenJDK 下载地址
  8. 近邻分析 -- KNN
  9. 每日分享 hive hue 报错Error while compiling statement: FAILED: SemanticException Error in parsing
  10. 笔试面试题目:点P是否在三角形ABC内?