linux内核版本不一致,内核模块版本和内核版本不一致的处理方法
内核版本是如何生成的:
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内核版本不一致,内核模块版本和内核版本不一致的处理方法相关推荐
- linux的驱动开发——内核模块如何使用?
1.内核模块的使用 \qquad查看内核模块的信息的命令: modinfo xxx.ko \qquad查看当前内核中已经插入的内核模块 lsmod \qquad将内核模块加载到内核中,和内核形成一个整 ...
- linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...
环境:Ubuntu 12.10 学号:SA****199 1.更新内核: 直接安装的系统内核版本一般不是最新,用 uname -a 查看一下 自己的版本,OK,我的是: Linux chenh ...
- linux查看linux版本,内核版本,系统位数,gcc版本,Ubuntu下查看linux版本,内核版本,系统位数,gcc版本...
转自:http://www.cnblogs.com/nucdy/p/5447722.html 1. 查看linux版本 sunny@ubuntu:~$cat /etc/issue Ubuntu 11. ...
- 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正式最终版本以供 ...
- Linux 之十七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面
前段时间重新安装了 Ubuntu 22.04 LTS,安装后没有显示 GRUB 引导页面(默认自动跳过),直接使用默认内核启动,而我需要变更一下默认的内核版本,特此记录一下修改过程. 安装其他版本 ...
- 【会议记录】Linux内核的最新进展(6.2版本)分享
前一段时间我参加了阅码场的活动 Yomoday(北京场),现场有很多技术专家,非常多前沿的技术分享.这是其中一个主题的记录,尽量还原当时的分享内容,但也可能有些地方不特别准确. Linux内核的最新进 ...
- Linux内核开发_内核模块
内核模块是什么? Linux下的内核模块类似于Windows下的DLL动态链接库技术,和我们平常所使用的一些动态链接的SDK库一样,只是调用者是内核而已,不是用户态的程序. 内核模块拥有的的权限是和用 ...
- linux内核驱动ldd3_走进linux 驱动开发 之 内核模块
一.Linux内核简介 1.宏内核与微内核 内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务 ...
- 编译内核启用KASan动态检测内核内存错误功能(ubuntu16.04 4.4.0内核编译升级到linux-4.4.252版本)
目录 一.编译内核并配置支持KAsan 1.下载源码 2.安装编译内核必须的库 3.清理之前内核编译生成及相关配置 4.配置内核参数 5.开始编译 6.模块(驱动)安装 7.安装新编译的内核 8.修改 ...
最新文章
- 有个程序员老公有多爽???
- Win10系统和子系统Ubuntu16.04 安装 ros
- SAP ABAP ALV(LVC)的一个自定义事件(F4帮助事件,回车ENTER按钮事件)的一个实例
- 深源恒际医疗票据OCR落地九省市 服务范围覆盖过半市场
- 学妹问我,并发问题的根源到底是什么?
- java获取iPhone手机图片旋转角度处理
- 可燃气体浓度多少合格_科普:气体容积单位LEL%、VOL%、TLV(ppm)之间如何换算?...
- sql limit不接具体数字_SQL汇总函数和分组函数
- Seata多微服务互相调用_全局分布式事物使用案例_Storage-Module 仓储微服务说明---微服务升级_SpringCloud Alibaba工作笔记0063
- 使用Docker部署Gitlab
- Mac系统怎么设置文件夹显示在前面?
- ExtJS笔记 Grids
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第1节 基础加强_1_今日内容(1)...
- php酒店系统论文,PHP酒店网站管理系统毕业论文
- linux刷显卡bios版本,一种Linux系统下显卡刷新BIOS的方法与流程
- 计算机地球一小时word处理,地球一小时策划书word版
- Uipath调用Macro(invoke VBA/Execute Macro/invoke VBScript)
- 新思路,坚持创新;好想法,坚持执行
- 外挂的介绍 什么是外挂
- 图片分类的入门:二分类
热门文章
- Ubuntu20.04下Nginx的.NetCore项目部署流程
- Matlab 结构体数组批量赋值
- libmagic 介绍
- 2022年注册会计师考试财务成本管理模拟题及答案
- 一款超好用的 Redis 可视化管理工具
- TimesTen 应用层数据库缓存学习:16. Aging策略与AWT缓存组
- OpenJDK 下载地址
- 近邻分析 -- KNN
- 每日分享 hive hue 报错Error while compiling statement: FAILED: SemanticException Error in parsing
- 笔试面试题目:点P是否在三角形ABC内?