Openwrt 自编译后安装官方ipk时产生kernel MD5不兼容的问题处理 您所在的位置:网站首页 app目录下主要放置一些编译时生成的文件称为什么文档 Openwrt 自编译后安装官方ipk时产生kernel MD5不兼容的问题处理

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

#Openwrt 自编译后安装官方ipk时产生kernel MD5不兼容的问题处理| 来源: 网络整理| 查看: 265

目录

环境

原因:

解决方法:

最后

环境

芯片:V3S 软件:基于Openwrt 19.07.3的自编译版本 问题:在安装需要校验kernel版本的ipk时,无法安装,报错:satisfy_dependencies_for: Cannot satisfy the following dependencies for xxxx

原因:

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

解决方法:

因此需要修改三个地方:

    在openwrt跟目录,编写文件 vermagic ,内容为 9801ec2dfc48e8fb2cc10a339283e7b0

该md5是官方编译的md5,不同版本的不同,可以根据安装时的提示获取到需要更改的md5

openwrt/include/kernel-defaults.mk 更改编译规则,不用mkhash md5生成,而直接拷贝根目录下的vermagic文件到linux_dir/.vermagic

diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk index cc1e236..97d7bb1 100644 --- a/include/kernel-defaults.mk +++ b/include/kernel-defaults.mk @@ -105,7 +105,9 @@ define Kernel/Configure/Default cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.prev; \ } $(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(KERNEL_MAKE) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install - grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | mkhash md5 > $(LINUX_DIR)/.vermagic + # grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | mkhash md5 > $(LINUX_DIR)/.vermagic + + cp $(TOPDIR)/vermagic $(LINUX_DIR)/.vermagic endef

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

diff --git a/package/kernel/linux/Makefile b/package/kernel/linux/Makefile index 39b9e82..51a44d2 100644 --- a/package/kernel/linux/Makefile +++ b/package/kernel/linux/Makefile @@ -24,7 +24,9 @@ export SHELL:=/bin/sh include $(INCLUDE_DIR)/package.mk ifeq ($(DUMP),) - STAMP_BUILT:=$(STAMP_BUILT)_$(shell $(SCRIPT_DIR)/kconfig.pl $(LINUX_DIR)/.config | mkhash md5) +# STAMP_BUILT:=$(STAMP_BUILT)_$(shell $(SCRIPT_DIR)/kconfig.pl $(LINUX_DIR)/.config | mkhash md5) + STAMP_BUILT:=$(STAMP_BUILT)_$(shell cat $(LINUX_DIR)/.vermagic) + -include $(LINUX_DIR)/.config endif

修改完成后再编译即可,就可以指定使用官方的opkg源或者镜像源,使用涉及到验证kernel版本也不会无法安装了。

最后

本身验证kernel版本也是为了防止用户修改了config文件后,导致一些配置或者文件不匹配,从而导致安装的ipk和kernel无法对应上出错。因此我们在编译openwrt时,对于kernel的配置尽量少改动。必要的功能可以使用ipk进行模块导入。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有