去掉SVN管理kernel编译后版本自动变化

本文介绍了一种因版本不匹配导致的WiFi驱动加载失败问题及其解决方案。通过分析内核版本号生成过程,发现版本信息中包含了SVN版本号,这与驱动期望的版本不符。通过注释掉相关代码后,问题得以解决。

由于版本变化导致wifi驱动insmod检测时出错退出,提示:

# insmod unifi_sdio.ko

unifi_sdio: version magic '2.6.27 mod_unload ARMv6 ' should be '2.6.27-svn53 mod_unload ARMv6 '

insmod: init_module 'unifi_sdio.ko' failed (Exec format error)

 

查找到"2.6.27-svn53"是在$(srctree)/inlucde/linux/utsrelease.h中定义的,按$(srctree)/Makefile中

kernelrelease = $(KERNELVERSION)$(localver-full)

KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

localver-full = $(localver)$(localver-auto)

ifdef CONFIG_LOCALVERSION_AUTO

_localver-auto = $(shell $(CONFIG_SHELL) /

                 $(srctree)/scripts/setlocalversion $(srctree))

localver-auto  = $(LOCALVERSION)$(_localver-auto)

endif

 

再到$(srctree)/scripts/setlocalversion查找,看到有

# Check for svn and a svn repo.

if rev=`svn info 2>/dev/null | grep '^Revision'`; then

rev=`echo $rev | awk '{print $NF}'`

changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l`

 

# Are there uncommitted changes?

if [ $changes != 0 ]; then

printf -- '-svn%s%s%s' "$rev" -dirty "$changes"

else

printf -- '-svn%s' "$rev"

fi

 

# All done with svn

exit

fi

原来是这里! 检测svn的版本信息,然后加入到_localver-auto,最终连接到kernelrelease。

注释掉这部分,编译后就可以正常加载了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值