首页 > 编程语言 >如何给OpenWrt的源码打patch

如何给OpenWrt的源码打patch

时间:2023-09-18 20:12:35浏览次数:38  
标签:iplatform quilt make patch queue platform 源码 OpenWrt

如何给OpenWrt的源码打patch

目录

给package打patch

OpenWrt有成熟的打patch机制,可以直接从服务器download源码,校验后,再结合自己开发的patch,打上,然后编译。

开发环境:基于Ubuntu 14.04 32bit主机,编译demo_board机型。

需要用到quilt工具,安装如下:

sudo apt-get install quilt

安装成功:

$ quilt --help 
Usage: quilt [--trace[=verbose]] [--quiltrc=XX] command [-h] ...
       quilt --version
Commands are:
	add       fold    new       remove    top
	annotate  fork    next      rename    unapplied
	applied   graph   patches   revert    upgrade
	delete    grep    pop       series
	diff      header  previous  setup
	edit      import  push      shell
	files     mail    refresh   snapshot

Global options:

--trace
	Runs the command in bash trace mode (-x). For internal debugging.

--quiltrc file
	Use the specified configuration file instead of ~/.quiltrc (or
	/etc/quilt.quiltrc if ~/.quiltrc does not exist).  See the pdf
	documentation for details about its possible contents.  The
	special value "-" causes quilt not to read any configuration
	file.

--version
	Print the version number and exit immediately.

这里以libnetfilter-queue这个package为例。新增一个打mark接口。

编译指令:

make PRODUCT_NAME=demo_boardv1 package/libnetfilter-queue/{clean,compile,install}

先准备:

make PRODUCT_NAME=xe75v1_1 demo_platform_package/libnetfilter-queue/{clean,prepare} QUILT=1

进入源码编译路径:

cd build_dir/target-arm-openwrt-linux-uclibc-xe75v1_1/libnetfilter_queue-1.0.2 

打上原来的patch,如果有的话:

quilt push -a

如果没有,日志如下:

No series file found

新建一个patch,编号需要是基于现有的patch最大编号再+1的,这里尚没有patch,因此可以命名为001:

$ quilt new 001-app-dpi-mark.patch     
Patch 001-app-dpi-mark.patch is now on top

编辑想要改动的源文件:

$ quilt edit ./include/libnetfilter_queue/linux_nfnetlink_queue.h

如果有其他想修改的文件,可以继续编辑,直到改动完成。

查看修改:

quilt diff

更新改动到patch文件:

quilt refresh

返回到build目录,并更新patch:

make PRODUCT_NAME=xe75v1_1 iplatform_package/libnetfilter-queue/update V=s

成功的日志:

$ make PRODUCT_NAME=demo_boardv1 package/libnetfilter-queue/update V=s             
make[1]: Entering directory `/home/git4/iplatform/platform'
make[2]: Entering directory `/home/git4/iplatform/platform'
make[3]: Entering directory `/home/git4/iplatform/platform'
make[3]: Leaving directory `/home/git4/iplatform/platform'
make[2]: Leaving directory `/home/git4/iplatform/platform'
make[2]: Entering directory `/home/git4/iplatform/platform'
make[3]: Entering directory `/home/git4/iplatform/platform/iplatform/develop/libnetfilter-queue'
if [ -s "/home/git4/iplatform/platform/build_dir/target-arm-openwrt-linux-uclibc-demo_boardv1/libnetfilter_queue-1.0.2/patches/series" ]; then (cd "/home/git4/iplatform/platform/build_dir/target-arm-openwrt-linux-uclibc-demo_boardv1/libnetfilter_queue-1.0.2"; if quilt --quiltrc=- next >/dev/null 2>&1; then quilt --quiltrc=- push -a; else quilt --quiltrc=- top >/dev/null 2>&1; fi ); fi
touch "/home/git4/iplatform/platform/build_dir/target-arm-openwrt-linux-uclibc-demo_boardv1/libnetfilter_queue-1.0.2/.quilt_checked"
mkdir -p ./patches
rm -f ./patches/* 2>/dev/null >/dev/null
'/home/git4/iplatform/platform/build_dir/target-arm-openwrt-linux-uclibc-demo_boardv1/libnetfilter_queue-1.0.2/patches/001-app-dpi-mark.patch' -> './patches/001-app-dpi-mark.patch'
make[3]: Leaving directory `/home/git4/iplatform/platform/iplatform/develop/libnetfilter-queue'
make[2]: Leaving directory `/home/git4/iplatform/platform'
make[1]: Leaving directory `/home/git4/iplatform/platform'

这个时候patch文件已经在package的源码路径生成了。

#  @ cyril in ~/git4/demo_platform/platform/demo_platform/develop/libnetfilter-queue/patches [16:51:35] 
$ ls
001-app-test-patch-mark.patch

重新编译即可:

make PRODUCT_NAME=xe75v1_1 iplatform_package/libnetfilter-queue/{clean,compile,install}

给kernel打patch

大同小异。

make target/linux/{clean,prepare} V=s QUILT=1

cd build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/linux-4.14.149/

quilt push -a

quilt new platform/666-reboot-softreset-2-hardreset-by-GPIO5.patch

quilt edit kernel/reboot.c
quilt edit 其他文件

quilt diff

quilt refresh

make target/linux/update V=s  

标签:iplatform,quilt,make,patch,queue,platform,源码,OpenWrt
From: https://www.cnblogs.com/adam-zheng/p/17712940.html

相关文章

  • [SpringSecurity5.6.2源码分析十一]:CorsFilter
    前言• 跨域:两个域名的(协议、域名/ip、端口)有任意一个不同即视为跨域• 跨域资源共享(Cors):即浏览器允许访问其他跨域的资源• 而CorsFilter就是SpringSecurity用来处理Cors的过滤器1.CorsConfigurer• CorsConfigurer是CorsFilter对应的配置类,其中就只有一个重要方法• co......
  • 人人都能学的数据分析体系课(16周完整版+源码+PDF课件)
    点击下载——人人都能学的数据分析体系课(16周完整版+源码+PDF课件)  提取码:nsep 人人都能学的数据分析体系课(16周完整版+源码+PDF课件),数据也称为观测值,是实验、测量、观察、调查等的结果。数据分析中所处理的数据分为定性数据和定量数据。只能归入某一类而不能用数值进行测度的数......
  • 程序开发:在线报名线下活动小程序源码功能解析
    针对线下活动在线报名场景的小程序,支持在线支付费用以及线下核销。可以应多大多数的线下报名,线上报名客服表单可以定制订单,支持导出报名,支持审核,支持分享,支持分销拓客以及线下核销。WEB+小程序双端管理活动,日常使用更方便,可以随时随地便捷的对活动进行设置管理,支持活动发布、查看收......
  • Django框架高级之DRF部分源码分析
    【一】DRF之请求执行流程和APIView源码分析【二】DRF之Request源码分析【三】DRF之Response源码分析【四】DRF之登录认证源码分析......
  • 世界第5大搜索引擎Yandex爆出源码后获得的其内部若干排名因素
    相关新闻:中文翻译版:https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9394501005789721090%22%7D&n_type=-1&p_from=-1英文版:https://www.hackread.com/yandex-source-code-hacked-leaked/  =============================      ========......
  • DRF之Response源码分析
    【一】响应类的对象Response源码【1】路由fromdjango.contribimportadminfromdjango.urlsimportpathfrombookimportviewsurlpatterns=[path('admin/',admin.site.urls),path('test/',views.TestView.as_view()),]【2】视图fromrest_frame......
  • 小程序AI换脸开发源码
      大家最近也听说关于换脸的新闻了,不过换脸的功能还是以娱乐和文化体验为主的。其中AI换脸也是需要数据接口的对接,AI换脸技术被广泛应用于各个领域,尤其是小程序开发。今天我们就来解析一下小程序AI换脸开发源码的主要功能。  一、AI模型训练与优化  AI换脸技术是以平......
  • 人人都能学的数据分析体系课(16周完整版+源码+PDF课件)
    点击下载——人人都能学的数据分析体系课(16周完整版+源码+PDF课件) 提取码:4vxi人人都能学的数据分析(16周完整版+源码+PDF课件),其中包含Excel从入门到表格分析、从0开始学SQL、数据可视化利器Tableau、Python实现数据分析、Python实现网络爬虫、构建用户画像、预售销售额、调整运......
  • OpenWRT安装Zerotier
    下文使用$ZT_ID表示Zerotier后台的网络IDSSH进入路由器shell,运行opkgupdate&&opkginstallzerotier配置shell加入Zerotierzerotier-clijoin$ZT_ID修改配置文件(推荐)vi/etc/config/zerotierconfigzerotier'sample_config' optionenabled'1' listjoin�......
  • springboot vue电子班牌系统源码,以云平台、云服务器为基础,融合课程管理、物联控制、
    随着时代进步,数字信息化不断发展,很多学校都开始了数字化的转变。智慧校园电子班牌系统是电子班牌集合信息化技术、物联网、智能化,电子班牌以云平台、云服务器为基础,融合了班级文化展示、课程管理、物联控制、教务管理、考勤管理、素质评价、资源管理、家校互联等一系列应用。实现了......