⚙️总结openwrt 的 kernel 版本的方法
2023-7-7
| 2023-7-16
0  |  0 分钟
type
status
date
Jul 7, 2023 12:40 PM
slug
summary
tags
category
icon
password
引言:
 

问题现象说明

 
 

解决过程

 

以x86为例 /target/linux/x86/Makefile

修改 KERNEL_PATCHVER:=内核版本
正规做法:
在 KERNEL_PATCHVER 下面加行 KERNEL_TESTING_PATCHVER:=5.4
 
但看来`KERNEL_TESTING_PATCHVER:=5.4` 在lean的源码中是不起作用的,要改为 `KERNEL_PATCHVER:=5.4`才行。
KERNEL_TESTING_PATCHVER 是 5.15的在 make menuconfig,Global build settings 里选中 Use the testing kernel version

 
各个 codebase 版本区别:
 
 
 
加行?岂不是有两个内核版本?.config文件中需不需要修改?谢谢。 详情 回复 发表于 2020-7-20 00:00
 
是2個內核版本, 最新的openwrt官方版只要Makefile文件中有KERNEL_TESTING_PATCHVER定義就會優先使用, 最新官方target/linux/下对应平台的大部分都有patch-5.4目錄和config-5.4文件
 
ccbcfan 发表于 2020-7-20 18:13 感谢指导,lean的源码也是这样改吗?
https://github.com/coolsnowwolf/lede.git 的ipq40xx已存在KERNEL_TESTING_PATCHVER:=5.4 以使用5.4内核
 
看来"KERNEL_TESTING_PATCHVER:=5.4" 在lean的源码中是不起作用的,要改为KERNEL_PATCHVER:=5.4才行。
 
 
大佬,上午好,按照你的方法的确顺利编译到低版本的5.15.116了,请问小版本可以设置修改降级编译吗?比如kernel-5.15 …
改源码的这个文件 include/kernel-5.15  和一些 patch文件,看更新:
5.15.105 版的更新是这个
右上角点 Browse files,点Code,点Download ZIP,下载对应 5.15.105版本的源码
复制出来 kernel-5.15  和一些 更新过的 patch文件,覆盖到 你的源码里
我对 git 也不是很熟悉,你也可以试一下用 git命令的方式,来指定某个文件的版本:
 
 
 

OpenWrt 之 Kernel version hash luci 的那些事include/kernel-version.mk

在 OpenWrt 中 , 有指定的 kernel version , 也就是内核版本 , 具体配置在include/kernel-version.mk中 ,
kernel version 由版本号Hash校验构成 , 形式如下:
在 mster 分支中 , kernel-version.mk有做变动 , 添加了以下改动
内核版本会遍历在include目录下以kernel-5.4的形式文件 , kernel-5.4 内容如下:
notion image
内核版本被独立出来 , 如果有新的内核版本添加, 只需要添加多一个文件即可 , 比如新增5.18.11的内核
, 只需要在include目录下创建一个kernel-5.18即可

Kernel Hash 校验

kernel 下载链接: https://www.kernel.org/
notion image
Hash 校验方法
OpenWrt 采用的 Kernel Hash 校验方式是检测SHA256 , 其实不仅仅是 kernel , 一些插件的PKG_HASHPKG_MIRROR_HASH , 乃至 OpenWrt 的大多数 Hash 校验都是SHA256 , 当然也是有MD5
  • windows10 及以上系统 , 打开 windows powershell (计算 MD5 则把SHA256替换MD5)
方式一:
方式二 (效率最快):
生成的 Hash 直接复制到剪辑版, 还可以改良成这样
  • Linux 系统 (计算 MD5 则把sha256sum替换md5sum)
注意: OpenWrt 对比的 Hash 是小写 , 所以生成的 Hash 是大写时需要转换成_小写_
 
 

更新对应 target config 的内核配置文件 target/linux/config-x.x

比如配置 LINUX_VERSION-4.4 = .52 后,需要再 target/linux 对应的目录增加 config-4.4 的内核配置文件,在编译内核是会用这个配置文件作为默认配置。
notion image
notion image
notion image
 
这个文件是对应的 `kernel_menuconfig` 的默认配置文件, 内容如下:
notion image

更新 patch target/linux/ipq40xx/patches-5.4

新建一个 patch 目录,命名格式为 patch-x.x,如 patch-4.4, 里面用于放修改的 patch 文件.
这些文件可以从其他 codebase 里面移植过来.
notion image
notion image
 

修改 openwrt 根目录的内核宏

如果配置的是 4.4 内核,则将 CONFIG_LINUX_4_4 设置为 y
这里也没有找到对应实际修改的地方.

总结

 

遗留问题&思考

 
技术折腾
  • TODO
  • openwrt
  • openwrt 4g 修改 imei 参考Openwrt 修改默认主题-解决 lede 默认主题不能取消问题
    目录