解决Openwrt版本内核不兼容

Openwrt 星雨 4314℃ 0评论

下载了Openwrt 15.05的主干版本,编译后的固件进行ipk更新时,还是出现内核不兼容的提示:

root@OpenWrt:~# opkg install ppp-mod-pptp
Installing ppp-mod-pptp (2.4.7-6) to root…
Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base/ppp-mod-pptp_2.4.7-6_ar71xx.ipk.
Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for ppp-mod-pptp:
* kernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * kernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * k
ernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * kernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * k
ernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * kernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * k
ernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * kernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * k
ernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) * kernel (= 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66) *
* opkg_install_cmd: Cannot install package ppp-mod-pptp.
root@OpenWrt:~#

 

网上的内核版本是 3.18.20-1-7bed08fa9c06eb8089e82c200340ec66,我编译的内核版本是kernel – 3.18.20-1-e67823b8c9a9bf8e61e855bcb57ab3b4

那内核版本后面的一串数字(e67823b8c9a9bf8e61e855bcb57ab3b4)是什么东西呢??

看起来是和这个变更集有关
https://dev.openwrt.org/changeset/29686
这是加了MD5效验进去,防止不兼容啥子的,而修改了设置(相关的),可能就会引起这个问题

此版本号在编译过程中产生,可在下面文件中查看:

openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/packages/ipkg-ar71xx/kernel/CONTROL

与此相关的配置文件:

openwrt/package/kernel/linux/makefile

openwrt/include/kernel-defaults.mk

 

知道原理后,可以指定编译生成的版本号:

1、在openwrt顶层目录新建一个文件vermagic,写入要生成的版本号尾串字符7bed08fa9c06eb8089e82c200340ec66,保存在openwrt/目录

2、修改./include/kernel-defaults.mk

屏蔽原生产语句,用vermagic直接拷贝替代:

cp $(TOPDIR)/vermagic $(LINUX_DIR)/.vermagic

如果是linux的小版本不兼容,可以采用下面的方式进行欺骗:

修改./package/kernel/linux/makefile文件:

合适位置加入版本号

LINUX_VERSION:=3.10.14

如果是应用模块,修改对应的package目录下的模块makefile:

 

转载请注明:星雨小站 » 解决Openwrt版本内核不兼容

如果你觉得这篇文章对你有帮助,请支持我继续更新网站!捐赠本站
喜欢 (2)or分享 (0)

您必须 登录 才能发表评论!