从零开始编译OpenWRT(LEDE)固件——7.编译Openwrt固件解决Openwrt版本内核不兼容

2020-08-05
0评论
/
1952阅读
爱搜啊

从零开始编译OpenWRT(LEDE)固件系列文章第一篇文章

下载了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版本内核不兼容

与此相关的配置文件:

openwrt/package/kernel/linux/makefile

解决Openwrt版本内核不兼容

openwrt/include/kernel-defaults.mk

解决Openwrt版本内核不兼容

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

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

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

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

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

解决Openwrt版本内核不兼容

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

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

合适位置加入版本号

LINUX_VERSION:=3.10.14

解决Openwrt版本内核不兼容

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

解决Openwrt版本内核不兼容


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


于2020-08-05发布