首页 > 其他分享 >openwrt开发使用-制作patch补丁

openwrt开发使用-制作patch补丁

时间:2023-01-29 22:00:36浏览次数:58  
标签:patches quilt 补丁 patch 编译 openwrt

前言

今天分享的内容是openwrt里面使用patch文件进行自己定制化开发。

作者:良知犹存

转载授权以及围观:欢迎关注微信公众号:羽林君

或者添加作者个人微信:become_me


安装quilt工具

quilt命令具有生成补丁和应用补丁的功能,但它的优势是还可以作为管理补丁的工具。一个比较大的项目可能由不同开发者共同维护,其中很多修改都以补丁的方式提供,例如openwrt,这些补丁可能存在依赖关系。 quilt工具在源代码目录中生成一个patches/目录,里面存放所有可用的补丁,记录了所有patches的先后顺序,并提供了一系列操作这些补丁的命令。 quilt以栈的形式管理补丁,最先打上的补丁位于栈底,最后打上的补丁位于栈顶(top)。打patch的动作称为push,取消补丁的动作称为pop。就如下图所示,项目中有5个patch,最新的patch为e.patch,所以quilt将这个patch放在栈顶,通过维护这样一个结构,quilt可以继续打新patch或按顺序回退patch。

安装

sudo apt-get install quilt

这是quilt工具的介绍文档,更详细内容可以看此文: http://www.shakthimaan.com/downloads/glv/quilt-tutorial/quilt-doc.pdf

修改quilt.quiltrc

为了使 quilt 创建的补丁文件适合 Openwrt,需要给 quilt 创建一个配置文件/etc/quilt.quiltrc,vi /etc/quilt.quiltrc 其内容如下:

QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="vi"

使用quilt进行制作自定义补丁

首先编译需要修改的包,例如:make package/kernel/mtxx/compile V=s ,这个时候就会单独编译mtxx包,编译生成的文件在build_dir目录,我们去编译的目录去进行我们的修改。

应用已经存在的补丁

进入之后执行quilt push -a

创建新的补丁文件

quilt new 001-support-add-c hannel-mt76.patch 示例如下:

:要是不知道patch增加数字id可以使用这个进行排序确认 find -name *patch| awk -F/ '{print $3}' | sort -n 寻找并排序

编辑要修改的源文件

quilt edit mac80211.c 原有信道基础上增加信道:

 CHAN2G(13, 2472),
 CHAN2G(14, 2484),
 CHAN2G(15, 2485), /* Channel 15 */
 CHAN2G(16, 2512), /* Channel 16 */

查看修改后的变化

quilt diff

把变化应用的补丁文件

quilt refresh

把生成的patch文件复制到package包的patches目录

示例如下:

cp /home/lyn/Documents/lyn_work/openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7621/mt76-2022-11-12-4bf26073/patches/*patch /home/lyn/Documents/lyn_work/openwrt/package/kernel/mt76/patches

package源目录要是没有patch文件话,建立一个patches文件夹

make package/kernel/mtxx/update V=s(增量更新) 或者 make package/kernel/mtxx/compile V=s (重新编译)进行编译

编译完成后去build_dir查看编译的原始文件,这时候看到patch打进来了

这个时候可以用编译好的可执行文件替换到路由器中进行测试,看是否是自己功能是否达到。

结语

这就是我自己在openwrt制作patch补丁使用分享。如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。


作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推荐阅读

【1】jetson nano开发使用的基础详细分享

【2】Linux开发coredump文件分析实战分享

【3】CPU中的程序是怎么运行起来的 必读

【4】cartographer环境建立以及建图测试

【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。

标签:patches,quilt,补丁,patch,编译,openwrt
From: https://www.cnblogs.com/conscience-remain/p/17073933.html

相关文章

  • openwrt_imagebuilder_修改缺省配置_network_firewall_root密码
    openwrt_imagebuilder_修改缺省配置_network_firewall_root密码转载注明来源:本文链接来自osnosn的博客,写于2023-01-29.参考和方法【官方文档:使用ImageBuilder】......
  • HTTP提交方式-PATCH说明
    https://blog.csdn.net/weixin_36691991/article/details/108848835在使用postman请求接口得时候,使用get,post得时候我们是使用body下form-data来传输数据得,但是使用patch......
  • python functools.singledispatch的使用,针对函数不同的传参类型,做出不同的操作。
    背景希望函数根据传参类型不同,做出不同的操作.根据传入变量的类型来判断需要输出的内容,常见的做法是把这个函数做成一个分派函数,在这个函数中通过大量的if/elif/else来判......
  • Linux工具篇 | Linux diff与git补丁文件的生成与使用
    一、diff命令生成的补丁(1)补丁文件的生成在某一目录下新建目录patch-test-new与patch-test-old:~/Study/patch$lspatch-test-newpatch-test-old分别在目录patch-test-new......
  • Lspatch使用
    前言xp模块可以使用户获得应用原本所没有的功能。使用模块需要修改应用。对于Root用户来说,使用Lsposed是个不错的选择,也方便。但是大多数用户没有将手机Root。所以Lspo......
  • 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patche
    请访问原文链接:https://sysin.org/blog/install-macos-13-on-unsupported-mac/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.org随着OpenCoreLegacyPatch......
  • openwrt搭建WEB服务器(LNMP)
    opkgupdate-------------------------------------------------------------------准备:  安装USB/挂载/分区工具--------------------------------------------------......
  • OpenWrt安装Filebrowser网页文件管理器
    平台ARMv8Processorx4(1416MHz,43.8°C)OpenWrtR22.9.9/LuCIMaster(git-22.247.60943-cb4150f)安装超轻量化私有云盘FileBrowser安装及使用opkginstall......
  • Servlet18 - DispatcherController
    DispatcherServlet-设置中央控制器创建核心控制器,拦截所有请求进行处理,然后将请求发送给相应xxController=调用xxController方法处理请求将原本的xxServlet改......
  • Openwrt路由器搭建网站教程
      最近都在折腾这个,多方借鉴了一下,萌新一枚,分享一下过程,不足之处,还请大佬指点指点本文主要内容:1.安装Entware2.安装ONMP3.安装可道云网站程序准备材料:1......