当前位置:网站首页>OpenWrt之kmod内核不兼容分析
OpenWrt之kmod内核不兼容分析
2022-08-06 00:36:00 【NueXini】
OpenWrt之kmod内核不兼容分析
Kmod内核模块MD5校验
include/kernel-defaults.mk
define Kernel/Configure/Default
# 省略N行
grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | $(MKHASH) md5 > $(LINUX_DIR)/.vermagic
endef
可以看到会生成一个.vermagic在根目录下 , 里面包含着md5的校验信息
include/kernel.mk
ifeq ($(TARGET_BUILD),1)
# 省略N行
LINUX_VERMAGIC:=$(strip $(shell cat $(LINUX_DIR)/.vermagic 2>/dev/null))
LINUX_VERMAGIC:=$(if $(LINUX_VERMAGIC),$(LINUX_VERMAGIC),unknown)
# 省略N行
endif
再通过cat $(LINUX_DIR)/.vermagic 存放到 LINUX_VERMAGIC变量中
package/kernel/linux/makefile
define Package/kernel
SECTION:=sys
CATEGORY:=Kernel
DEFAULT:=y
TITLE:=Virtual kernel package
VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
URL:=http://www.kernel.org/
PKG_FLAGS:=nonshared
endef
于是就构建出了 komd这种 5.10.127-1-98140eff27c8328c5dc13f3f595ea43b
如果想自定义MD5 , 可以修改一下.vermagic的生成逻辑
define Kernel/Configure/Default
# 省略N行
cp -f $(TOPDIR)/.vermagic $(LINUX_DIR)/.vermagic
endef
在根目录下创建.vermagic文件 , 填入我们想要的MD5 , 即可.
Kmod内核信息
编译好的固件都会生成一份manifest , 里面记录着模块的内核版本 , 发行版本 , 还有MD5
就像这样VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
下面是openwrt-x86-64.manifest的参考:
# 省略N行
kernel - 5.10.127-1-98140eff27c8328c5dc13f3f595ea43b
# 省略N行
我们最主要还是获取这个kernel - 5.10.127-1-98140eff27c8328c5dc13f3f595ea43b中98140eff27c8328c5dc13f3f595ea43b这一串MD5
用下面命令也能输出上面的效果
opkg list
OpenWrt的内核信息存放在/usr/lib/opkg/status,
opkg info # opkg info kernel
也能查看已经安装软件包的信息, 也就是输出那个文件的内容
强制安装kmod - 解决kmod内核不兼容
- 直接上bash脚本
#!/bin/bash
# Author: NueXini
core=$(cat /etc/opkg/distfeeds.conf | grep 'core' | awk '{print $3}')
old_kernel_md5=$(opkg info kernel | grep 'Version' | cut -d '-' -f 3)
new_kernel_md5=$(curl -s "$core/Packages.manifest" | grep -oE -m 1 'kernel \(=.*\)' | awk -F\- '{print $3}' | sed 's,\),,g') sed -i "s/$old_kernel_md5/$new_kernel_md5/g" /usr/lib/opkg/status echo 'Finished'
这样就可以安装了, 效果跟opkg 的 force_depends效果是一样的
查看CPU架构
- 第一种
opkg print-architecture | grep -vE 'all|noarch' | awk '{print $2}'
- 第二种
# cat /etc/openwrt_release | grep '_TARGET' | cut -d "'" -f 2
cat /etc/openwrt_release | grep '_ARCH' | cut -d "'" -f 2
- 第三种
opkg info | grep '^Architecture' | grep -vE 'all|noarch' -m 1 | awk -F': ' '{print $2}'
- 第四种
# cat /etc/opkg/distfeeds.conf | grep -oE 'targets/(.*)/packages' | cut -d '/' -f 2,3
cat /etc/opkg/distfeeds.conf | grep -oE 'packages/(.*)/base' | cut -d '/' -f 2
- 第五种
# cat /usr/lib/os-release | grep '_BOARD' | cut -d '"' -f 2
cat /usr/lib/os-release | grep '_ARCH' | cut -d '"' -f 2
- 如果有其他的方法欢迎留言
feeds源参考
腾讯: https://mirrors.cloud.tencent.com/openwrt/
阿里: https://mirrors.aliyun.com/openwrt
清华大学: https://mirrors.tuna.tsinghua.edu.cn/openwrt/
中国科技大学: https://mirrors.ustc.edu.cn/openwrt/
兰州大学: https://mirror.lzu.edu.cn/openwrt/
南阳理工学院: https://mirror.nyist.edu.cn/openwrt/
北京外国语大学: https://mirrors.bfsu.edu.cn/openwrt/
上海交通大学: https://mirror.sjtu.edu.cn/openwrt/
- 使用方法
sed -i 's,downloads.openwrt.org,mirrors.bfsu.edu.cn/openwrt,g' /etc/opkg/distfeeds.conf
分析到此结束 , Enjoy it ~
边栏推荐
- DVWA:Brute Force(High)
- 1467. 两个盒子中球的颜色数相同的概率 数学+DFS
- 将多维数组变成一维数组及数组转置
- 2022 Shandong Health Expo, China Health Industry Exhibition, Postnatal Health Exhibition, Baby Care Exhibition
- Architecture Basic Concepts and Architecture Essence
- wsa无法安装如何解决
- How to fix wsa cannot be installed
- FPGA IIC SLAVE 实现
- 华为分析&联运活动,助您提升游戏总体付费
- 新型数据中心——推动数字经济发展的动力引擎
猜你喜欢

【LeetCode】623.在二叉树中增加一行

Kubernetes 调度器优化

如何对齐微信小程序胶囊按钮?

【论文阅读】Virtual Adversarial Training: a Regularization Method for SL and SSL

wsa无法安装如何解决

熵力(entropic force)

【kali-漏洞利用】(3.2)Metasploit基础(下):MSF终端利用过程

【瑞吉外卖】day01:整体介绍以及开发环境搭建

Solve the problems arising from the mysql statement MAX () function

How can el-table's data be turned into a picture plus text button?
随机推荐
【LeetCode】611.有效三角形的个数
解决mysql语句MAX()函数中出现的问题
MySQL: The Basics of Indexing
Idea如何查看代码注释 修改者?
VR全景在教育领域发展潜力如何?有哪些启发意义?
工作中常见的两种谬误
Oracle学习笔记(九)
白话机器学习-卷积神经网络CNN
Kubernetes构建Redis 集群
What are the core problems in the database application system
现货白银分析原来就这么简单
Oracle study notes combined index (12)
Qt入门(三)——计算器项目的实现
Chrome Google Chrome, how to install the appropriate browser driver?
2022 China Health Exhibition, Shandong Health Exhibition, Jinan Health Exhibition, Health Industry Exhibition
数据库管理系统中负责查询操作的数据库语言叫什么
关于时间格式和获取指定时间的方法
横向联邦学习-梯度安全聚合
Kubernetes网络模型
AS build菜单显示不全解决方法