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生成步骤
1. 准备mt7628源码
make package/mt7628/{clean,prepare} V=s QUILT=1
此命令会解压tftp-hpa的源码包并准备patch文件(如果有),通过打印信息可获取解压到的目录路径。
2.进入mt7628包源码目录
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
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 放入到编译包下面
- 重新编译tftp-hpa包以测试修改
make package/feeds/packages/tftp-hpa/{clean,compile} package/index V=s
11.如果有问题,需要编辑patch文件
===================================================