openwrt编译制作补丁patch文件
文章目录
用于对openwrt固件特殊定制.
我对patch文件结构不太了解,这里只是记录我自己本次使用.
patch的作用
如果你要对源码进行修改有两个方法
一,找到源码文件,修改代码
二,使用patch文件打补丁.
直接修改源码有个严重的弊端
当你更新openwrt源码,或者更新feeds,或者更新包的时候,你会发现你修改的代码被覆盖了.
patch文件就是为了解决这个弊端出来的,你可以忽略官方更新,只需要更新后打下补丁,那么代码就修改了.
演示一个目标
当uhttpd启用ssl之后,会默认开启 http跳转https
你打开http://192.168.1.1的时候,会自动跳转到https://192.168.1.1而且浏览器还会提示证书错误.
尝试制作一个补丁文件,来处理这个问题.
找到配置文件
package/network/services/uhttpd/files/uhttpd.config
编写修改
原理:
其实只需要在uhttpd配置中option redirect_https 1 改成0即可
我这里还做了一些其他定制.(仅自己用)
1,复制文件
到自己一个临时目录,我在openwrt下建立一个yake_fix文件夹,用于临时存放各种自己修改后的文件.
mkdir yake_fix
cp package/network/services/uhttpd/files/uhttpd.config yake_fix
2,修改文件
修改是修改拷贝后的文件,也就是拷贝到yake_fix目录的uhttpd.config
这个编辑看自己需求.
我做了3个修改
- 关掉http跳转https
- 去掉默认的IPV6访问(仅我个人需要)
- 新添加一个ipv6专用站点(仅我个人需要)
生成patch文件
不需要自己处理,用指令生成
diff 如果没有安装自己安装一个.
diff -Naur package/network/services/uhttpd/files/uhttpd.config yake_fix/uhttpd.config >uhttpd-disable-https-redirect.patch
将在openwrt的主目录生成一个uhttpd-disable-https-redirect.patch
patch文件内容
第二行我修改过. 将文件名直接是源文件名.
--- package/network/services/uhttpd/files/uhttpd.config 2020-09-30 18:26:48.638203386 +0800
+++ package/network/services/uhttpd/files/uhttpd.config 2020-09-30 18:29:43.094199445 +0800
@@ -3,14 +3,14 @@
# HTTP listen addresses, multiple allowed
list listen_http 0.0.0.0:80
- list listen_http [::]:80
+ #list listen_http [::]:80
# HTTPS listen addresses, multiple allowed
list listen_https 0.0.0.0:443
- list listen_https [::]:443
+ #list listen_https [::]:443
# Redirect HTTP requests to HTTPS if possible
- option redirect_https 1
+ option redirect_https 0
# Server document root
option home /www
@@ -112,6 +112,27 @@
# list httpauth prefix_user
+config uhttpd 'web'
+ list listen_http '[::]:80'
+ list listen_https '[::]:443'
+ option home '/web'
+ option rfc1918_filter '1'
+ option max_requests '3'
+ option max_connections '100'
+ option cert '/etc/ipv6.getce.cn.crt'
+ option key '/etc/ipv6.getce.cn.key'
+ option script_timeout '60'
+ option network_timeout '30'
+ option http_keepalive '20'
+ option tcp_keepalive '1'
+ option ubus_prefix '/ubus'
+ option redirect_https '1'
+ option error_page '/404.html'
+ option no_dirlists '1'
+ option no_symlinks '1'
+
+
+
# Defaults for automatic certificate and key generation
config cert defaults
打patch
patch -p0 < uhttpd-disable-https-redirect.patch
-p后面的0是补丁编号.
然后编译openwrt会自动应用修改的后的文件.
补丁还原
patch -R 文件 < 补丁
参考链接
https://blog.csdn.net/qq_39522922/article/details/77648071
https://blog.csdn.net/shenwanjiang111/article/details/52252249
https://github.com/unwireddevices/openwrt/blob/master/uhttpd-disable-https-redirect.patch
https://www.cnblogs.com/xuhongchuan/p/3180013.html