问题:
在安装需要校验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
更改编译规则
不用mkhash md5生成,而直接拷贝根目录下的vermagic文件到linux_dir/.vermagic来达到生成固定的md5
修改openwrt根目录下的include/kernel-defaults.mk
文件
搜索md5,然后在这一行前面添加#号进行注释(可能每一个版本都不同,注意上下结构的代码)
并在下方添加一行代码
cp $(TOPDIR)/vermagic $(LINUX_DIR)/.vermagic
修改后如图所示
保存即可
修改编译出来的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)
修改后如图所示
然后就可以编译了
暂无评论内容