海运的博客

编译Openwrt固件安装软件内核版本不一致问题解决

发布时间:February 5, 2015 // 分类:OpenWrt // No Comments

最近将使用近3年Openwrt Backfire 10.03固件升级到了最新版本Barrier Breaker 14.07,编译后使用opkg安装官方源提供的软件出现了内核版本不一致的问题:

Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for openconnect:
 *     kernel (= 3.10.49-1-3051dee8f07064b727e9d57fbfeb05ec) * 
 * opkg_install_cmd: Cannot install package openconnect.

安装的openwrt kernel版本,内核大版本一样,就后面md5不一样:

opkg info kernel
Package: kernel
Version: 3.10.49-1-eac88df3cb49b94d68ac3bc78be57f95
Depends: libc
Status: install hold installed
Architecture: x86
Installed-Time: 1423195057

看看md5版本号是怎么生成的:

grep vermagic include/kernel-defaults.mk
$(SH_FUNC) grep '=[ym]' $(LINUX_DIR)/.config | LC_ALL=C sort | md5s > $(LINUX_DIR)/.vermagic

在编译前指定内核版本号:

#查看Openwrt官方源内核版本:
wget http://downloads.openwrt.org/barrier_breaker/14.07/x86/generic/packages/base/Packages.gz
zgrep -m 1 "Depends: kernel (=.*)$" Packages.gz | sed -e 's/.*-\(.*\))/\1/' > .vermagic
#取而代之
sed -i -e 's/^\(.\).*vermagic$/\1cp $(TOPDIR)\/.vermagic $(LINUX_DIR)\/.vermagic/' include/kernel-defaults.mk

编译后指定内核版本:

sed -i 's/eac88df3cb49b94d68ac3bc78be57f95/3051dee8f07064b727e9d57fbfeb05ec/' /usr/lib/opkg/status

以上解决方法和opkg --force-depends无区别,会造成不稳定因素,最好的解决方法是使用官方提供的固件,如果非要自己编译固件的话使用官方软件相同版本的源码编译,如Barrier Breaker 14.07 r42625:

svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker -r 42625 

就算使用同一版本源码编译内核md5版本号也不一致,除非使用官方提供的.config,可以使用前面的两种方法修改内核版本号。
Openwrt版本历史及版本号:
http://en.wikipedia.org/wiki/OpenWrt
http://wiki.openwrt.org/about/history#barrier_breaker

标签:openwrt, kernel, barrier breaker

发表评论

分类
最新文章
最近回复
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了
  • 海运: 不好意思,这个是很多年前的,现在也许已经不适用,我现在也不用多线了。