【openwrt学习笔记】新patch的制作和旧patch的修改
目录
- 一、参考资料
- 二、使用QUILT工具添加补丁
- 2.1 添加一个新的补丁
- 2.2 编辑一个已存在的补丁
- 2.3 补丁命名规范
- 2.4 添加或修改内核补丁文件
- 三、使用diff 打补丁
- 四、相关问题及解决方法
- 4.1 make package/package-name/update V=s失败
一、参考资料
Working with patches
二、使用QUILT工具添加补丁
默认已有quilt工具,环境已配置好,此处不赘述
2.1 添加一个新的补丁
(1)准备源目录
make package/example/{clean,prepare} V=s QUILT=1
(2)切换到准备好源码的目录:
cd build_dir/target-*/example-*
(3)应用所有已存在的补丁文件:
quilt push -a
(4)创建一份新的,空的补丁文件
quilt new 010-main_code_fix.patch
(5)添加修改的文件
上述参考资料是直接使用quilt edit命令来修改文件,但是这种方法无论是用vim 和nano用起来都不太方便,而且此时的patch修改已经是基本确认验证过代码了,基本已经有修改好的代码了。
所以这是直接使用
quilt add file_name(涉及的改动文件,都添加进去)
(6)修改文件
使用任意编辑工具皆可。
(7)查看差异
quilt diff
(8)确认无误后,使得patch生成
quilt refresh
此时可以在当前目录下,patch文件中找到生成的patch文件。可复制出来,当做备份。
注释:(trailing whitespace 尾随空格)可能会与这个警告,就是说那一行行末尾有多余空格和tab,可以手动删除再更新,也可以不管。
(9)patch放到编译目录中,使用以下命令重新清除编译,查看是否修改成功,编译无误
make package/example/{clean,compile} V=s
2.2 编辑一个已存在的补丁
(1)开始准备源目录:
make package/example/{clean,prepare} V=s QUILT=1
(2)切换到准备好的源目录中:
cd build_dir/target-*/example-*
(3)列出有效的补丁文件:
quilt series
(4)转到需要编辑的补丁文件
quilt push 010-main_code_fix.patch
(5)(6)(7)(8)(9)同上
2.3 补丁命名规范
所有的补丁文件应该以“NNN-lowercase_shortname.patch”的形式命名,并分成以下几类:
0xx - 上游补丁
1xx - 代码等待上游合并
2xx - 内核构建、配置、头补丁
3xx - 特定架构的补丁
4xx - mtd相关的补丁(子系统和驱动)
5xx - 文件系统相关的补丁
6xx - 通用网络补丁
7xx - 网络层/物理层驱动补丁
8xx - 其他驱动
9xx - 未分类的其他补丁
2.4 添加或修改内核补丁文件
暂时没有用到,也未验证相关是否正确,后面用到再总结补充。
三、使用diff 打补丁
使用diff打补丁,适合于对补丁流程熟悉,并且补丁文件个数不多及目录结构简单的情况,有时候单个文件补丁内容过多不变一个个手动修改时使用本节介绍方法也可以让工作更高效。
相关操作及命令:
(1)修改目标文件,并将该文件重命名为newfile,旧文件假设为oldfile;
(2)执行命令添加补丁内容:
$diff –Nur oldfile newfile > number-destfile.patch
(3)修改补丁内容,修改文件路径,旧文件为a/xxx/xxx,新文件为b/xxx/xxx,文件路径必须和实际的路径层数相同,a,b代表编译包的名称;
(4)将制作好的number-destfile.patch这个补丁文件放到package/package-name/patches目录中,如果patches目录之前不存在,那么创建一个就可以了;
(5)打补丁工作结束!
四、相关问题及解决方法
题及解决方法
4.1 make package/package-name/update V=s失败
问题原因:目标组件的编译方法Makefile的Prepare节存在问题,缺少“$(call Build/Prepare/Default)”这句。
解决方法: 添加$(call Build/Prepare/Default)
这句到Prepare节中,如下:
define Build/Preparemkdir -p $(PKG_BUILD_DIR)$(CP) ./src/* $(PKG_BUILD_DIR)/$(call Build/Prepare/Default)
endef
结果:问题解决
相关文章:
【openwrt学习笔记】新patch的制作和旧patch的修改
目录 一、参考资料二、使用QUILT工具添加补丁2.1 添加一个新的补丁2.2 编辑一个已存在的补丁2.3 补丁命名规范2.4 添加或修改内核补丁文件 三、使用diff 打补丁四、相关问题及解决方法4.1 make package/package-name/update Vs失败 一、参考资料 Working with patches 二、使…...
【GIT】Git clone https://xxx.git 报错仓库找不到,ssh却可以。
环境 MacBook Pro:13.0 (22A380),Intel。 Python:3.10.9 序言 最近在Mac电脑中按照stable diffusion webUI 时,总是报: MacBook-Pro:openai yutao$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-…...

Vue系列(三)之 基础语法下篇【事件处理,表单综合案例,组件通信】
一. 事件处理 在 Vue.js 中,v-on 指令被用于监听 DOM 事件,并在事件触发时执行相应的方法,这些方法就是事件处理器。v-on 指令有简写形式 ,例如 click"handleClick" 会监听点击事件并执行 handleClick 方法。 事件处理…...

AI 编码助手 Codewhisperer 安装步骤和使用初体验
文章作者:为了自己加油 最近亚⻢逊云科技推出了一款基于机器学习的AI编程助手 Amazon Code Whisperer,可以实时提供代码建议。在编写代码时,它会自动根据现有的代码和注释给出建议。Amazon Code Whisperer与 GitHub Copilot 类似,…...
Python操作Elasticsearch
一、Python操作ES之基本使用 安装:pip3 install elasticsearch from elasticsearch import Elasticsearchobj = Elasticsearch() # 创建索引(Index) # result = obj.indices.create(index=user,ignore=400) # # print(result)# print(result) # 删除索引 # result = obj.i…...

面试打底稿② 专业技能的第二部分
简历原文 抽查部分 比较熟悉Nacos、Feign、SpringCloud Gateway等微服务的使用,有实际上手项目使用的经验;基本掌握Linux常用命令,了解Linux系统管理、网络管理、生产环境等必用服务,了解Docker的使用,在博客中多有关…...
java 对mybatis拦截Interceptor进行权限控制(条件修改),入参修改,返回修改
使用jsqlparser对sql解析拼装 基础准备 <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.5</version><scope>compile</scope> </dependency> <depende…...
鲲鹏+麒麟v10 sp1 打包tomcat
一、安装打包软件 yum install rpm-build yum install rpmdevtools 二、复制tar包 注意:如果要修改配置文件需要把tar包解压,修改tomcat配置文件 cp apache-tomcat-8.5.93.tar.gz /root/rpm-build/SOURCES 三、编辑/root/rpm-build/SOURCES/tomcat.…...

大屏大概是怎么个开发法(前端)
写在前面,博主是个在北京打拼的码农,从事前端工作5年了,做过十多个大大小小不同类型的项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何…...

什么是Selenium?使用Selenium进行自动化测试!
你知道什么是 Selenium 吗?你知道为什么要使用它吗?答案就在本文中,很高兴能够与你共飧。 自动化测试正席卷全球,Selenium 认证是业界最抢手的技能之一。 什么是 Selenium? Selenium 是一种开源工具,用于…...
第一章:最新版零基础学习 PYTHON 教程(第十七节 - Python 表达式语句–Python返回语句)
return 语句用于结束函数调用的执行,并将结果(return 关键字后面的表达式的值)“返回”给调用者。return 语句之后的语句不被执行。如果return语句没有任何表达式,则返回特殊值None。return 语句总体上用于调用函数,以便可以执行传递的语句。 注意: Return 语句不能在函数…...
前端碎知识点
1 统计字符串中每个字符出现的频率 const str fgasdfadfdasd;const result str.split().reduce((a, b) > {if (a[b]) {a[b];} else {a[b] 1;}return a; }, {});const resultNew str.split().reduce((a, b) > {// undefined,就是NaNa[b] || (a[b] 1);ret…...
【Leetcode Sheet】Weekly Practice 7
Leetcode Test 1462 课程表Ⅳ(9.12) 你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程,你 必须 先选 ai 课程。 有的课会有直接…...
leetcode Top100(23)回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 输入:head [1,2,2,1] 输出:true采用动态数组,判断数组对称就可以了(这解法空间…...

WebGL绘制圆形的点
目录 前言 如何实现圆形的点? 片元着色器内置变量(gl_FragCoord、gl_PointCoord) gl_PointCoord的含义 示例程序(RoundedPoint.js) 代码详解 前言 本文将讨论示例程序RoundedPoint,该程序绘制了圆…...

《The Rise and Potential of Large Language Model Based Agents: A Survey》全文翻译
The Rise and Potential of Large Language Model Based Agents: A Surve - 基于 LLMs 的代理的兴起和潜力:一项调查 论文信息摘要1. 介绍2. 背景2.1 AI 代理的起源2.2 代理研究的技术趋势2.3 为什么大语言模型适合作为代理大脑的主要组件 论文信息 题目࿱…...

在线地图获取城市路网数据
在线地图获取城市路网数据 近期科研项目中,需要获取城市路网数据,于是详细阅读各大在线地图api接口,总结出来这么一条可行的思路: 首先获取城市轮廓根据城市轮廓把城市分割成若干个小块在每个小块中根据在线地图的POI检索接口&a…...

8.2 Jmeter if控制器使用
前提:jmeter脚本需要用到if控制器,if判断如果查询不到,则去新增。 1、添加if控制器 线程组-->逻辑控制器-->如果(if)控制器 1)、Expression (must evaluate to true or false) :表达式(值必须是tru…...

科技云报道:青云科技打出“AI算力牌”,抢跑“云+AI”新增市场
科技云报道原创。 近三年,中国云计算市场在多个维度同时发生着剧烈变化——疫情极大加速了全社会对于数字化的认知和接受程度;一系列云原生技术依托着开源和蓬勃的市场而迅速发展演变,更多产品和技术名词同时涌向市场;国际关系复…...

学习路之PHP--lumen安装配置
一、下载lumen源码 composer create-project --prefer-dist laravel/lumen blog 安装lumen-generator composer require flipbox/lumen-generator 二、配置 bootstrap\app.php 97行 $app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);三、生成…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...

AWSLambda之设置时区
目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可,即Asia/Shanghai。 参考 使用 Lambda 环境变量...

智能照明系统:具备认知能力的“光神经网络”
智能照明系统是物联网技术与传统照明深度融合的产物,其本质是通过感知环境、解析需求、自主决策的闭环控制,重构光与人、空间、环境的关系。这一系统由智能光源、多维传感器、边缘计算单元及云端管理平台构成,形成具备认知能力的“光神经网络…...

SAP学习笔记 - 开发24 - 前端Fiori开发 Filtering(过滤器),Sorting and Grouping(排序和分组)
上一章讲了SAP Fiori开发的表达式绑定,自定义格式化等内容。 SAP学习笔记 - 开发23 - 前端Fiori开发 Expression Binding(表达式绑定),Custom Formatters(自定义格式化)-CSDN博客 本章继续讲SAP Fiori开发…...