前一段时间创建linux内核的git仓库,遇到了几个很棘手的问题。这里记录一下。
我使用的内核版本号为linux-3.3.8-1.3,如果正常的话,生成的include/generated/utsrelease.h文件内容应该为:
#define UTS_RELEASE "3.3.8-1.3"。
第一个问题:使用git初始化仓库,提交一次后,include/generated/utsrelease.h文件的内容变为:#define UTS_RELEASE "3.3.8-1.3-g4eb627c"。
第二个问题:还是使用git仓库之后,include/generated/utsrelease.h文件的内容变为:#define UTS_RELEASE "3.3.8-1.3-dirty"。
第三个问题:还是使用git仓库之后,include/generated/utsrelease.h文件的内容变为:#define UTS_RELEASE "3.3.8-1.3+"
以上三个问题都会造成原来文件系统的驱动由于版本检查失败而不能使用。其原因是因为linux的版本号检查比较严格,或是仓库有修改而未提交文件,或是提交没有打tag。
下面一个文章有较详细的描述:
在一次编译kernel版本的时候我突然发现,“2.6.35.7“的内核版本编译成功后生成的版本号变成了“2.6.35.7+”,百思不得其解为什么后面会多一个加号。一步一步的查找,我发现了问题所在,原来问题出现在linux的版本控制这一块。
打开Makefile我们可以在文件的最上面可以发现
VERSION = 2
PATCHLEVEL = 6
SU