openwrt使用linux内核版本,解决Openwrt自编译版本内核不兼容问题

在尝试安装OpenWrt 15.05自编译固件的ppp-mod-pptp时遇到内核版本不匹配问题。错误显示需要3.18.20-1-7bed08fa9c06eb8089e82c200340ec66,但实际编译内核版本尾串为e67823b8c9a9bf8e61e855bcb57ab3b4。该尾串与变更集有关,用于MD5校验。解决办法包括创建vermagic文件指定版本号或修改makefile欺骗内核版本。对于小版本不兼容,可直接修改LINUX_VERSION。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

看起来是和这个变更集有关

1

这是加了MD5效验进去,防止不兼容啥子的,而修改了设置(相关的),可能就会引起这个问题

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

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

36e2a721e6fd539de21937eb245aba25.png

与此相关的配置文件:

openwrt/package/kernel/linux/makefile

b9e3e46da90ebe35e56b2287646d5540.png

openwrt/include/kernel-defaults.mk

e52831ea81d58cdc78256989b7906b77.png

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

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

c62e435c0ba33b022d7d018565655834.png

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

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

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

a8b98609c9f77b99fa67d3f55f6b5ba5.png

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

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

合适位置加入版本号

LINUX_VERSION:=3.10.14

ebf5516aeb15530f7c6bdd0c6a2efac1.png

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

4cfa3c808ad5df9624c31c1d28907e46.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值