解决Openwrt自编译版本内核不兼容问题
下载了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:
发表评论