openwrt 使用quilt制作patch

OPENWRT PATCH管理工具  --- QUILT

原因: 当对openwrt进行make clean/disclean时,之前所做的修改将会丢失,因此需要做属于自己的patch能够进行clean后自动更新修改的内容。

准备:指定opwrt的编辑器
为让quilt创建适合opwrt格式的patch,需要在本地home目录下创建quilt的配置文件.quiltrc。该配置文件包含diff和patch的选项。使用如下命令可创建quilt的配置文件:

cat > ~/.quiltrc
<<EOF
QUILT_DIFF_ARGS="--no-timestamps--no-index -pab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps--no-index -pab"
QUILT_PATCH_OPTS="--unified"QUILT_DIFF_OPTS="-p"
EDITOR="vim"
EOF
EDITOR参数为指定所要使用的编辑器,该处使用vim,如果使用vi,可设定EDITOR="vi"

安装:quilt
如果没有安装过quilt,在ubuntu环境下可以执行:
sudo apt-get install quilt

应用: 
opwrt常用的有以下几种patch:
1、platform patch     即kernel 和平台相关的补丁

2、generic patch     即某一模块功能相关的补丁

3、package patch 即应用app及第三方library

在项目中通常需要对底层driver和package中的内容进行修改,因此下面以下platform patch为例增加自己的patch。

首先opwrt的patch是根据chip type放到指定的目录,如ramips for opwrt-1505 version.
target/linux/ramips/patches-3.18

例子1:
针对内核文件 drivers/i2c/bussesralink-i2c.c做补丁
1、准备内核源码树
cd    $(OPTOPDIR)     //进入opwrt顶层目录
make target/linux/{clean,prepare} V=s QUILT=1      //准备内核源码,用于产生patch的原始文件,执行它会将源码恢复到原始状态并打全opwrt存在的patch

2、进入kernel源码顶层目录
cd build_dir/target-xxx/linux-ramips_xxx/linux-3.18.21

3、安装所有的patch - 这一步可以不执行,通常在执行步骤1的时候已经应用了所以的patch了
quilt push -a     //应用所有的patch, 在当前patches/目录下

4、创建新patch,也可以修改已经存在的patch,稍后举例。
quilt new platform/520-i2c-MIPS-adds-ralink-driver-rak.patch

新创建的patch文件名必须以数字开头,“-”为patch文件的简单描述信息。
原则上patch的数字要比现有的patch list中的数字要大,quilt series可以查看已经应用的所有patch列表。但必须要比相同文件所做出的补丁大。
platform指定创建的patch文件为platform patch
 
5、修改源码文件drivers/i2c/bussesralink-i2c.c
quilt edit drivers/i2c/busses/ralink-i2c.c          //通过edit打开要编辑的文件并写入修改的信息

如果在同一个patch中要修改多个文件可以继续执行上述命令,如还需修改Kconfig文件:
quilt edit drivers/i2c/busses/Kconfig

这样在一个patch中将会存在上述两个文件改动的内容。

6、查看修改的内容,可通过下面指令:
quilt diff

7、产生新修改的patch文件
quilt refresh     //必须执行,否则将不能生成patch,执行后新patch被创建在patches/platform目录下。

8、将新生成的patch更新到目标opwert patches目录下,即 target/linux/ramips/patches-3.18
cd $(OPTOPDIR)     //进入opwrt顶层目录
make target/linux/update V=s        更新patch到目标存储位置

例子2:
对已经存在的patch进行修改,无需创建新的patch。
针对内核文件 drivers/i2c/bussesralink-i2c.c再一次进行修改,因为已经存在对该文件的补丁520-i2c-MIPS-adds-ralink-driver-rak.patch,因此只需要对其进行修改就可以。

1、准备内核文件
cd    $(OPTOPDIR)     //进入opwrt顶层目录

具体请看下面文档openwrt制作patch及修改patch方法.pdf。

如此其他两种patch方式亦是如此。
根据上述做好patch后下次在执行clean就不用担心自己改动的地方丢失,并且也可将修改的patch打入到其他开发者的opwrt中,当然前提是opwrt使用的都是相同version哦。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值