Linux下/lib/modules/version与/lib/modules/version+的区别是什么
/lib/modules下版本号带+后缀的目录差异说明 两个目录本身的文件结构、存放的内容类型没有任何本质区别,核心差异只对应内核编译时的源码状态,这个+是内核构建系统自动追加的版本标记,不是手动创建的特殊目录:
- 无后缀目录(以
/lib/modules/3.4.61为例):匹配纯净官方发布版内核。编译这个内核时使用的源码和上游官方发布的3.4.61版本源码完全一致,没有自定义补丁、未提交的代码修改、额外的配置变更,内核生成的版本字符串就是纯3.4.61,对应的模块文件会被安装到这个无后缀目录下。 - 带
+后缀目录(以/lib/modules/3.4.61+为例):匹配本地修改过的定制内核。内核构建系统在编译前会自动检查源码树状态,只要检测到源码打过自定义补丁、存在未提交到版本控制系统的改动、修改过内核配置/代码但没有手动更新版本号,就会自动在版本字符串末尾追加+作为标记,目的是和官方纯净版做明确区分,避免模块和内核版本不匹配导致加载失败。这类定制内核的模块安装时就会放到带+后缀的对应目录里。
实际使用中要注意:系统的模块加载工具(比如
modprobe)是严格按照当前运行内核的完整版本字符串匹配模块目录的,你可以通过uname -r命令查看当前运行内核的完整版本号,如果输出是3.4.61+,系统只会从/lib/modules/3.4.61+目录下查找可加载模块,不会读取无后缀目录里的文件,差一个字符都会判定版本不匹配。
嵌入式设备、第三方定制ROM、自行编译修改过的内核基本都会带这个+后缀,属于非常常见的情况,不是系统异常。
内容的提问来源于stack exchange,提问作者Lieo Nkp
相关产品推荐
相关产品推荐

