主页 > 路由器 > 解决Openwrt自编译版本内核不兼容问题

解决Openwrt自编译版本内核不兼容问题

2016年9月9日 解决Openwrt自编译版本内核不兼容问题无评论 阅读: 24,487 次

下载了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)是什么东西呢??

看起来是和这个变更集有关
12
这是加了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:

 

发表评论

新用户的评论需审核后才会显示;

电子邮件地址不会被公开;
必填项已用*标注