From 49917121252462925a52c70454d87c47c5ce92ad Mon Sep 17 00:00:00 2001 From: Tsanie Lily Date: Fri, 20 Aug 2021 17:07:25 +0800 Subject: [PATCH] add post: openwrt kernel vermagic --- source/_posts/openwrt-kernel-vermagic.md | 59 ++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 source/_posts/openwrt-kernel-vermagic.md diff --git a/source/_posts/openwrt-kernel-vermagic.md b/source/_posts/openwrt-kernel-vermagic.md new file mode 100644 index 0000000..050a8b2 --- /dev/null +++ b/source/_posts/openwrt-kernel-vermagic.md @@ -0,0 +1,59 @@ +--- +title: OpenWrt 自行编译的内核扩展安装失败的解决方法 +date: 2021-08-20 16:53:07 +tags: +--- + +## 现象 ## +拉取 `OpenWrt` 源码编译出来的内核扩展 `ipk` 拿到装有官方版本 `OpenWrt` 的路由器上无法安装,出现以下提示: +```shell + * satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-xxx: + * kernel (= 4.14.241-1-68143adfcb7fc62a239c4be112fe40de) + * opkg_install_cmd: Cannot install package kmod-xxx. +``` + +## 解决方案 ## +修改 `kernel vermagic` 从计算配置文件的 `md5 hash` 改为固定值。 + + +* `OpenWrt` 源码根目录添加文件 `vermagic` +```shell +cat 68143adfcb7fc62a239c4be112fe40de ./vermagic +``` + +* 修改 `kernel-defaults.mk` +```diff +diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk +index cc1e2361be..35ffc1fbba 100644 +--- a/include/kernel-defaults.mk ++++ b/include/kernel-defaults.mk +@@ -105,7 +105,7 @@ 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 ++ cp $(TOPDIR)/vermagic $(LINUX_DIR)/.vermagic + endef +``` + +* 修改 `package/kernel/linux/Makefile` +```diff +diff --git a/package/kernel/linux/Makefile b/package/kernel/linux/Makefile +index 39b9e82c27..6ff64b2939 100644 +--- a/package/kernel/linux/Makefile ++++ b/package/kernel/linux/Makefile +@@ -24,7 +24,7 @@ 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 cat $(LINUX_DIR)/.vermagic) + -include $(LINUX_DIR)/.config + endif +``` + +## 重新编译 ## +```shell +$ make clean # 注意清除缓存 +$ make -j1 V=s +``` \ No newline at end of file