最近编译一个android 项目,结果莫名其妙的在linux kernel 启动过程中booting fail, 现象是load 动画时颜色变掉.
debug message 显示如下:
pvrsrvkm_sgx540_120: version magic '3.0.21-00003-OMAP-Android+ SMP preempt mod_unload ARMv7 ' should be '3.0.21-00003-OMAP-Android SMP preempt mod_unload ARMv7 '
很明显是pvrsrvkm_sgx540_120模块version magic 检查fail 导致加载失败.
1. version magic 是什么?
Linux是依靠内核模块构建时自动产生的"vermagic”标识检查是否与当前内核版本一致, 如果不一致则拒绝加载。除非在insmod/modprobe时指定参数强制忽略vermagic,但这样做的代价是如果使用错误版本的内核模块就可能导致内核崩溃。
2. 内核版本号"3.0.21-00003-OMAP-Android+" 为什么后面有一个加号?
打开kernel 根目录下的Makefile文件, 在文件的最上面可以发现内核版本的版本号
VERSION = 3
PATCHLEVEL = 0
SUBLEVEL = 21
EXTRAVERSION =
NAME = Sneaky Weasel
# Store (new) KERNELRELASE string in include/config/kernel.release
include/config/ker