从零开始编译OpenWRT(LEDE)固件——7.编译Openwrt固件解决Openwrt版本内核不兼容
从零开始编译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/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:
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看