扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

openwrt开发使用-制作patch补丁

2023/03/13
62
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

今天分享的内容是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 篮球。关注我,与我一起同行。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

一个程序员,喜欢写文章,还喜欢打篮球,也喜欢吉他钢琴的驳杂之人。日常更新自己,分享包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,公众号内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!