Openwrt-自编译后安装官方ipk时产生kernel MD5不兼容的问题处理

问题:

在安装需要校验kernel版本的ipk时,无法安装,报错:satisfy_dependencies_for: Cannot satisfy the following dependencies for xxxx

原因:

当我们修改了kernel的config文件后,编译时,openwrt会根据kernel的.config文件( $(LINUX_DIR)/.config )计算md5的值,附加在kernel版本号后。同时编译出来的ipk包均会要求基于该版本。

解决方法:

修改生成的kernel为固定md5附加在kernel版本号.

在openwrt根目录,编写文件 vermagic ,内容为

9801ec2dfc48e8fb2cc10a339283e7b0
该md5是官方编译的md5,不同版本的不同,可以根据安装时的提示获取到需要更改的md5,可以在https://downloads.openwrt.org/releases/版本号/targets/x86/64/kmod 查看

红圈标注的就是md5

图片[1]-Openwrt-自编译后安装官方ipk时产生kernel MD5不兼容的问题处理-织秋笔记

更改编译规则

不用mkhash md5生成,而直接拷贝根目录下的vermagic文件到linux_dir/.vermagic来达到生成固定的md5

修改openwrt根目录下的include/kernel-defaults.mk文件

搜索md5,然后在这一行前面添加#号进行注释(可能每一个版本都不同,注意上下结构的代码)
并在下方添加一行代码

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

修改后如图所示
图片[2]-Openwrt-自编译后安装官方ipk时产生kernel MD5不兼容的问题处理-织秋笔记

保存即可

修改编译出来的ipk依赖的md5

即修改package/kernel/linux/Makefile 如果不改这个,编译时生成ipk时,会报错,因为ipk还是依赖于kernel的config文件生成的md5。 这里我们直接让它读取linux_dir/.vermagic文件。

修改openwrt根目录下的package/kernel/linux/Makefile文件

也是搜索md5字眼,然后在这一行前面添加#号进行注释

并在下方添加一行代码

STAMP_BUILT:=$(STAMP_BUILT)_$(shell cat $(LINUX_DIR)/.vermagic)

修改后如图所示

图片[3]-Openwrt-自编译后安装官方ipk时产生kernel MD5不兼容的问题处理-织秋笔记

然后就可以编译了

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容