当前位置: 首页 > news >正文

【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包 注意&#xff1a;如果要修改配置文件需要把tar包解压&#xff0c;修改tomcat配置文件 cp apache-tomcat-8.5.93.tar.gz /root/rpm-build/SOURCES 三、编辑/root/rpm-build/SOURCES/tomcat.…...

大屏大概是怎么个开发法(前端)

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

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是 Selenium 吗&#xff1f;你知道为什么要使用它吗&#xff1f;答案就在本文中&#xff0c;很高兴能够与你共飧。 自动化测试正席卷全球&#xff0c;Selenium 认证是业界最抢手的技能之一。 什么是 Selenium&#xff1f; Selenium 是一种开源工具&#xff0c;用于…...

第一章:最新版零基础学习 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&#xff0c;就是NaNa[b] || (a[b] 1);ret…...

【Leetcode Sheet】Weekly Practice 7

Leetcode Test 1462 课程表Ⅳ(9.12) 你总共需要上 numCourses 门课&#xff0c;课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite &#xff0c;其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程&#xff0c;你 必须 先选 ai 课程。 有的课会有直接…...

leetcode Top100(23)回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true采用动态数组&#xff0c;判断数组对称就可以了&#xff08;这解法空间…...

WebGL绘制圆形的点

目录 前言 如何实现圆形的点&#xff1f; 片元着色器内置变量&#xff08;gl_FragCoord、gl_PointCoord&#xff09; gl_PointCoord的含义 示例程序&#xff08;RoundedPoint.js&#xff09; 代码详解 前言 本文将讨论示例程序RoundedPoint&#xff0c;该程序绘制了圆…...

《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 的代理的兴起和潜力&#xff1a;一项调查 论文信息摘要1. 介绍2. 背景2.1 AI 代理的起源2.2 代理研究的技术趋势2.3 为什么大语言模型适合作为代理大脑的主要组件 论文信息 题目&#xff1…...

在线地图获取城市路网数据

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

8.2 Jmeter if控制器使用

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

科技云报道:青云科技打出“AI算力牌”,抢跑“云+AI”新增市场

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

学习路之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);三、生成…...

Rust实战:通过DLL注入与IAT Hook技术拦截Windows API调用

1. 为什么需要Hook Windows API&#xff1f; 在Windows系统开发中&#xff0c;Hook技术就像给系统功能安装了一个"监听器"。想象一下&#xff0c;当你点击某个按钮时&#xff0c;原本应该弹出标准对话框&#xff0c;但通过Hook技术&#xff0c;我们可以在这个动作发生…...

HackBar插件许可绕过实战:从旧版降级到源码修改

1. HackBar插件许可验证问题解析 最近不少安全测试同行反馈&#xff0c;HackBar插件突然弹出许可验证窗口&#xff0c;导致无法正常使用。这个问题其实从2.2.0版本开始就存在了&#xff0c;开发者加入了商业化验证机制。作为一个用了HackBar五年的老用户&#xff0c;我完全理解…...

开发提效新组合:用Cursor编写核心逻辑,快马平台一键生成完整企业级项目

今天想和大家分享一个提升开发效率的实用组合&#xff1a;用Cursor编写核心业务逻辑&#xff0c;再通过InsCode(快马)平台一键生成完整项目。最近在开发一个企业内部工时管理系统时&#xff0c;这套组合拳帮我节省了大量重复劳动时间。 1. 为什么选择这个技术组合 开发企业级…...

前端新手入门:借助快马仿写腾讯qclaw官网掌握基础布局

作为一个刚接触前端开发的新手&#xff0c;我最近尝试通过模仿企业官网来学习HTML和CSS。腾讯qclaw官网结构清晰、设计规范&#xff0c;非常适合作为入门练习的样板。在这个过程中&#xff0c;我发现InsCode(快马)平台的实时预览功能特别有帮助&#xff0c;让我能即时看到代码修…...

技术赋能B端拓客:号码核验行业的迭代升级与价值深耕,

在数字经济持续深耕的当下&#xff0c;B端市场的竞争逻辑已发生根本性转变&#xff0c;“粗放拓客”逐渐被“精准高效”取代&#xff0c;企业对拓客全流程的效率与成本管控提出了更高要求。号码核验作为B端拓客的前置核心环节&#xff0c;其作用远不止于简单的空号筛查&#xf…...

【喜报】义翘神州再获CNAS认可,全面对标2025版药典新标准

义翘神州生物安全检测实验室近日成功通过中国合格评定国家认可委员会&#xff08;CNAS&#xff09;的扩项评审及定期监督评审&#xff0c;并已完成全部能力附表更新&#xff01;这标志着实验室技术能力与质量管理体系持续符合ISO/IEC 17025:2017国际标准的严苛要求&#xff0c;…...

GeoServer REST API实战:手把手教你用Python封装自己的批量发布工具

GeoServer REST API深度封装&#xff1a;Python自动化发布框架设计与实战 1. 为什么需要自定义GeoServer发布工具&#xff1f; 在GIS项目实施过程中&#xff0c;我们经常面临数百个地理数据文件需要快速发布的场景。传统手动操作不仅效率低下&#xff08;单个文件平均耗时2分钟…...

晶闸管全球市场:2026-2032年CAGR为3.4%

据恒州诚思调研统计&#xff0c;2025年全球晶闸管收入规模约59.96亿元&#xff0c;到2032年收入规模将接近75.71亿元&#xff0c;2026-2032年CAGR为3.4%。晶闸管作为功率半导体领域的核心器件&#xff0c;凭借其独特的性能在众多电力电子场景中发挥着关键作用。全球晶闸管&…...

从温控器到无人机:PID参数整定的‘手感’秘籍,附C语言代码避坑指南

从温控器到无人机&#xff1a;PID参数整定的‘手感’秘籍与实战避坑指南 在工业自动化和智能硬件开发中&#xff0c;PID控制算法就像一位隐形的调音师&#xff0c;默默调节着系统的每一个细微变化。无论是缓慢升温的工业烘箱&#xff0c;还是高速响应的四旋翼无人机&#xff0c…...

大模型加载优化二选一:DeepSpeed Zero-3 vs Hugging Face device_map,我该如何抉择?

大模型加载优化二选一&#xff1a;DeepSpeed Zero-3 vs Hugging Face device_map&#xff0c;我该如何抉择&#xff1f; 在资源受限的环境下运行大型语言模型&#xff08;LLM&#xff09;时&#xff0c;内存优化策略的选择往往决定了项目的成败。面对动辄数十亿参数的模型&…...