openwrt 生成patch方法-灵思科

一、前言

配置完Openwrt后,首次编译时会在编译过程中下载各种源码包,而且解压这些源码包并打上patch。

需要对源码进行修改时,可直接修改源码并重新编译,但clean后再次编译时会再次解压源码包,以至所做

的修改全部丢失。本文参考Openwrt官网提供的patch管理方法,实践操作并记录linux kernel及package源

码修改并生成patch的方法。

二、环境及准备工作

2.1 开发环境

linux发行版:ubuntu12.0LTS

openwrt 版本:LEDE 17.02.1

硬件:mt7628

2.2 准备工作

patch的管理工具使用quilt,在ubuntu下使用apt-get intallquilt安装quilt工具。

为了让quilt创建适合OpenWrt格式的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。

三、package的patch方法

3.1 修改内容

package的patch生成方法以修改mt7628加一个编译选项为例为例进行介绍

信息。(进行该操作之前,需要在make menuconfig时选择tftp-hpa包)

3.2 pactch生成步骤

openwrt 生成patch方法-灵思科1. 准备mt7628源码

openwrt 生成patch方法-灵思科make package/mt7628/{clean,prepare} V=s QUILT=1

此命令会解压tftp-hpa的源码包并准备patch文件(如果有),通过打印信息可获取解压到的目录路径。

2.进入mt7628包源码目录

openwrt 生成patch方法-灵思科

cd build_dir/target-mipsel_24kc_musl-1.1.16/linux-ramips_mt7628/mt7628-p4rev-120395/

3.安装所有已有patch

quilt push -a

4.创建新patch

quilt new 103-app-zhishi-arobe-sta-test.patch

patch文件名以数字开头,“-”后为patch的描述信息

开头的数字必须比已有patch的数字都大,使用命令quilt series查看已有patch的列表

5.修改源码文件

quilt edit src/embedded/os/linux/rbus_main_dev.c

该命令将使用在.quiltrc中定义的编辑器打开main.c文件,在main函数中增加一条打印信息。

如果还有其他文件需要修改,可继续用此命令进行修改

6.查看修改内容

quilt diff

openwrt 生成patch方法-灵思科

7.更新修改到patch文件

quilt refresh

此命令会将更新的修改保存到当前目录的patches/103-app-zhishi-arobe-sta-test.patch(如果没有 patches目录会自动创建)。

8.返回到buildroot目录

cd …/…/…/

9.保存patch文件到buildroot

make package/mt7628/update V=s // 这一步会把patch 放入到编译包下面

openwrt 生成patch方法-灵思科

  1. 重新编译tftp-hpa包以测试修改

make package/feeds/packages/tftp-hpa/{clean,compile} package/index V=s

11.如果有问题,需要编辑patch文件

===================================================

参考文档:http://www.cnblogs.com/xuyh/p/6278937.html