Linux kernel version dirty


在我们使用git来管理Linux Kernel的时候,在编译的时候会在你的kernel version加上git commit number

有时候还会出现dirty字样,字面意思是内核被污染的意思。

使用“uname -a”查看:

1 root@android:/system/lib/modules # /system/bin/busybox uname -a                
2 Linux localhost 3.0.35-06124-g6298bd2-dirty #1 SMP PREEMPT Mon Jan 20 10:30:05 CST 2014 armv7l GNU/Linux

我这里是Android的内核,其他内核应该也一样,这有可能会导致insmod时,magic number不匹配,而无法insert ko kernel。

典型错误:

1 255|root@android:/system/lib/modules # insmod blcr_imports.ko                  
2 [ 7045.918010] Running kernel UTS_RELEASE (3.0.35-06124-g6298bd2-dirty) does not match that used to build BLCR (3.0.35-06124-g6298bd2)

解决办法:

1.修改内核配置文件,取消下面的选项

General setup --->;

[] Automatically append version information to the version string

2.另外一种办法,就是提交未修改的代码,或者撤销本地修改。然后make clean,再次编译。

### 关于 `CONFIG_LOCALVERSION_AUTO` 的含义与用法 `CONFIG_LOCALVERSION_AUTO` 是 Linux 内核配置中的一个选项,用于自动附加 Git 版本信息到内核版本字符串中。当启用此选项时,在构建内核的过程中会自动生成并附加本地仓库的状态信息(例如提交哈希或脏标记),以便更容易区分不同构建的内核版本。 具体来说,如果启用了该选项,则会在编译过程中通过调用 `git describe` 命令来获取当前源码树的描述性标签,并将其作为 `-dirty` 或其他形式的信息追加到内核版本号后面[^3]。这有助于开发者快速识别所使用的特定代码状态,尤其是在开发分支上工作或者处理未推送更改的情况下。 以下是设置方法的一个简单示例: ```bash # 启动菜单配置工具 make menuconfig # 寻找 CONFIG_LOCALVERSION_AUTO 并选中它 General setup ---> [*] Automatically append version information to the version string (CONFIG_LOCALVERSION_AUTO) # 保存退出后重新编译内核 make && make modules_install && make install ``` 值得注意的是,虽然上述功能提供了便利性,但如果不需要额外跟踪细节或是为了保持生产环境的一致性和简洁度,可以选择禁用这个特性[^4]。 此外需要注意的是,尽管这里讨论了如何利用 git 提供更详细的版本控制数据给内核本身,但是关于运行期间调整某些行为比如警告追踪关闭等功能则涉及到了完全不同的机制如 sysctl 接口操作等[^1]^。 最后附带一段展示如何读取当前系统正在使用哪个定制化参数的小脚本如下所示: ```python import os def get_kernel_version(): with open('/proc/version', 'r') as f: content = f.read() print(content.strip()) if __name__ == "__main__": get_kernel_version() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值