小米路由器R3G编译OpenWRT固件

本文最后更新于:2022年6月21日 凌晨

OpenWrt是适合于嵌入式设备的一个Linux发行版。

相对原厂固件而言,OpenWrt不是一个单一、静态的固件,而是提供了一个可添加软件包的可写的文件系统。这使用户可以自由的选择应用程序和配置,而不必受设备提供商的限制,并且可以使用一些适合某方面应用的软件包来定制你的设备。对于开发者来说,OpenWrt是一个框架,开发者不必麻烦地构建整个固件就能得到想要的应用程序;对于用户来说,这意味着完全定制的能力,与以往不同的方式使用设备,OPKG包含超过3500个软件。 默认使用LuCI作为web交互界面。

OpenWrt另有一个复刻分支项目,名为LEDE,两者于2018年1月合并,合并后的项目使用OpenWrt的名字、LEDE的源代码

本地编译

编译前须知

  1. 不要用root用户进行编译
  2. 请全局使用魔法👁‍🗨
  3. 默认登陆IP:192.168.1.1 密码:password

编译环境配置

编译环境:Ubuntu 20.04 LTS,请在终端分别执行以下命令:

1
2
3
4
5
6
7
8
9
10
sudo apt update -y

sudo apt full-upgrade -y

sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

下载Lean的OpenWRT源码

1
git clone https://github.com/coolsnowwolf/lede

添加OpenWRT插件源

Git Clone 完成后,进入lede目录,根据实际需求添加以下插件库。

科学上网插件仓库

1
2
3
4
5
#常用
sed -i '$a src-git helloworld https://github.com/fw876/helloworld' feeds.conf.default

#次要
sed -i '$a src-git passwall https://github.com/xiaorouji/openwrt-passwall' feeds.conf.default

openwrt插件合集仓库

1
2
sed -i '$a src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '$a src-git small https://github.com/kenzok8/small' feeds.conf.default

openwrt插件合集仓库(每天更新)

1
sed -i '$a src-git small8 https://github.com/kenzok8/small-package' feeds.conf.default

更新feeds并安装插件,开启配置菜单

1
2
3
4
5
6
7
git pull

./scripts/feeds update -a

./scripts/feeds install -a

make menuconfig

选择编译目标

小米路由器R3G对应的编译设置

下载dl库,编译固件

1
2
3
make download -j8

make V=s -j1 #-j 后面是线程数,第一次编译推荐用单线程

编译完成后输出路径:lede/bin/targets/.

二次编译

请分别执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
cd lede

git pull

./scripts/feeds update -a

./scripts/feeds install -a

make defconfig

make download -j8

make V=s -j$(nproc)

重新配置

请分别执行以下命令:

1
2
3
4
5
rm -rf ./tmp && rm -rf .config

make menuconfig

make V=s -j$(nproc)

使用Github Actions编译OpenWRT固件

编译前须知

  1. 访问Github可能不顺畅,请使用魔法👁‍🗨
  2. 需要一个注册一个Github账号

创建自动编译脚本仓库

P3TERX / Actions-OpenWrt仓库

P3TERX / Actions-OpenWrt

配置编译脚本

diy-part1.sh

配置diy-part1.sh

diy-part2.sh

配置diy-part2.sh

创建.config

配置.config

输入以下内容:

该配置文件仅针对Xiaomi r3g v1,请根据自己的编译目标配置该文件!

1
2
3
CONFIG_TARGET_ramips=y
CONFIG_TARGET_ramips_mt7621=y
CONFIG_TARGET_ramips_mt7621_DEVICE_xiaomi_mi-router-3g=y

开始编译

Xiaomi r3g v1不能将SSH connection to Actions设置为 true ,否则会编译失败。

开始编译操作

SSH远程配置编译目标

如果在 上一个步骤 中将 SSH connection to Actions 改为 true,则需要跟踪编译步骤,当编译步骤进行到 SSH connection to Actions 时,会给出类似下图所示的SSH链接,使用SSH工具连接到编译服务器进行编译目标配置:

追踪编译进程

SSH链接

等待编译完成

编译成功,下载固件包

编译成功后,脚本会自动将生成的固件打包,可下载刷入。

补充说明

OpenWRT 更新软件包 和 安装软件包 命令

1
2
3
opkg update #更新软件包

opkg install software_name.ipk #安装软件包

如果使用的本地编译环境是WSL(Windows Subsystem for Linux),请使用以下命令进行编译:

首次编译:

1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make V=s -j1

二次编译:

1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j$(($(nproc) + 1)) V=s

添加插件

OpenWRT通过LuCI来管理插件:

  • 通过方向键选择插件,Y键选中,N键不选中,M键编译成模块。

  • *代表编译插件,!代表与其他插件依赖或冲突。

  • 启用较多插件时可能会编译错误,请根据需求来启用插件,不要全部都要!!!

LuCI插件管理界面

常用插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adblock #AdBlock广告过滤
LuCI ---> Applications ---> luci-app-adbyby-plus #广告屏蔽大师Plus
LuCI ---> Applications ---> luci-app-advancedsetting #系统高级设置(Le库以外的插件
LuCI ---> Applications ---> luci-app-aria2 #Aria2下载工具
LuCI ---> Applications ---> luci-app-arpbind #IP/MAC绑定
LuCI ---> Applications ---> luci-app-attendedsysupgrade #固件更新升级相关
LuCI ---> Applications ---> luci-app-autoreboot #支持计划重启
LuCI ---> Applications ---> luci-app-baidupcs-web #百度网盘管理
LuCI ---> Applications ---> luci-app-cifs-mount #CIFS/SMB挂载设置
LuCI ---> Applications ---> luci-app-cifsd #CIFS/SMB网络共享
LuCI ---> Applications ---> luci-app-commands #Shell命令模块
LuCI ---> Applications ---> luci-app-ddns #动态域名 DNS(集成阿里DDNS客户端
LuCI ---> Applications ---> luci-app-dnscrypt-proxy #DNSCrypt解决DNS污染
LuCI ---> Applications ---> luci-app-dnsfilter #DNSFilter基于DNS的广告过滤
LuCI ---> Applications ---> luci-app-dnsforwarder #DNSForwarder防DNS污染
LuCI ---> Applications ---> luci-app-filetransfer #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall #添加防火墙
LuCI ---> Applications ---> luci-app-frpc #内网穿透Frp客户端
LuCI ---> Applications ---> luci-app-frps #内网穿透Frp服务端
LuCI ---> Applications ---> luci-app-guest-wifi #WiFi访客网络
LuCI ---> Applications ---> luci-app-hd-idle #硬盘休眠
LuCI ---> Applications ---> luci-app-nlbwmon #网络带宽监视器
LuCI ---> Applications ---> luci-app-noddos #NodDOS Clients 阻止DDoS攻击
LuCI ---> Applications ---> luci-app-passwall #科学上网(Li大佬插件)
LuCI ---> Applications ---> luci-app-qbittorrent #BT下载工具(qBittorrent)
LuCI ---> Applications ---> luci-app-ramfree #释放内存
LuCI ---> Applications ---> luci-app-samba #网络共享(Samba)
LuCI ---> Applications ---> luci-app-ssr-plus #SSR科学上网Plus+(Le大佬插件)
LuCI ---> Applications ---> luci-app-statistics #流量监控工具
LuCI ---> Applications ---> luci-app-transmission #BT下载工具
LuCI ---> Applications ---> luci-app-turboacc #Turbo ACC 网络加速(支持 Fast Path 或者 硬件 NAT)
LuCI ---> Applications ---> luci-app-unblockmusic #解锁网易云灰色歌曲31新版本
LuCI ---> Applications ---> luci-app-upnp #通用即插即用UPnP(端口自动转发
LuCI ---> Applications ---> luci-app-vlmcsd #KMS服务器设置
LuCI ---> Applications ---> luci-app-vsftpd #FTP服务器
LuCI ---> Applications ---> luci-app-watchcat #断网检测功能与定时重启
LuCI ---> Applications ---> luci-app-webadmin #Web管理页面设置
LuCI ---> Applications ---> luci-app-wifischedule #WiFi 计划
LuCI ---> Applications ---> luci-app-wol #WOL网络唤醒
LuCI ---> Applications ---> luci-app-wrtbwmon #实时流量监测

所有插件

最后更新时间:2022/6/19

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adblock #ADB广告过滤
LuCI ---> Applications ---> luci-app-adbyby-plus #广告屏蔽大师Plus +
LuCI ---> Applications ---> luci-app-advanced-reboot #Linksys高级重启
LuCI ---> Applications ---> luci-app-ahcp #Ad-Hoc配置协议(AHCP) ipv6 and 双栈 自动配置协议 !
LuCI ---> Applications ---> luci-app-airplay2 #Apple AirPlay2 无损音频接收服务器
LuCI ---> Applications ---> luci-app-amule #aMule下载工具 !
LuCI ---> Applications ---> luci-app-aria2 # Aria2下载工具
LuCI ---> Applications ---> luci-app-arpbind #IP/MAC绑定
LuCI ---> Applications ---> luci-app-asterisk #支持Asterisk电话服务器
LuCI ---> Applications ---> luci-app-attendedsysupgrade #固件更新升级相关
LuCI ---> Applications ---> luci-app-autoreboot #支持计划重启
LuCI ---> Applications ---> luci-app-baidupcs-web #百度网盘管理
LuCI ---> Applications ---> luci-app-bcp38 #BCP38网络入口过滤(不确定)
LuCI ---> Applications ---> luci-app-bird1-ipv4 #对Bird1-ipv4的支持
LuCI ---> Applications ---> luci-app-bird1-ipv6 #对Bird1-ipv6的支持
LuCI ---> Applications ---> luci-app-bmx6 #BMX6路由协议
LuCI ---> Applications ---> luci-app-cifs-mount #CIFS/SMB挂载设置
LuCI ---> Applications ---> luci-app-cifsd #CIFS/SMB网络共享
LuCI ---> Applications ---> luci-app-cjdns #加密IPV6网络相关
LuCI ---> Applications ---> luci-app-clamav #ClamAV杀毒软件
LuCI ---> Applications ---> luci-app-commands #Shell命令模块
LuCI ---> Applications ---> luci-app-cshark #CloudShark捕获工具
LuCI ---> Applications ---> luci-app-ddns #动态域名 DNS(集成阿里DDNS客户端)
LuCI ---> Applications ---> luci-app-diag-core #core诊断工具
LuCI ---> Applications ---> luci-app-diskman #磁盘管理工具
luci-app-diskman ---> Include btrfs-progs #新型的写时复制 (COW)
luci-app-diskman ---> Include lsblk #lsblk命令 用于列出所有可用块设备的信息
luci-app-diskman ---> Include mdadm #mdadm命令 用于创建、管理、监控RAID设备的工具
LuCI ---> Applications ---> luci-app-dnscrypt-proxy #DNSCrypt解决DNS污染
LuCI ---> Applications ---> luci-app-dnsforwarder #DNSForwarder防DNS污染
LuCI ---> Applications ---> luci-app-docker #Docker容器(dockerman更名为docker)
LuCI ---> Applications ---> luci-app-dump1090 #民航无线频率(不确定)
LuCI ---> Applications ---> luci-app-dynapoint #DynaPoint(未知)
LuCI ---> Applications ---> luci-app-e2guardian #Web内容过滤器
LuCI ---> Applications ---> luci-app-familycloud #家庭云盘
LuCI ---> Applications ---> luci-app-filetransfer #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall #添加防火墙
LuCI ---> Applications ---> luci-app-flowoffload #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS...
LuCI ---> Applications ---> luci-app-freifunk-diagnostics #freifunk组件 诊断(未知)
LuCI ---> Applications ---> luci-app-freifunk-policyrouting #freifunk组件 策略路由(未知)
LuCI ---> Applications ---> luci-app-freifunk-widgets #freifunk组件 索引(未知)
LuCI ---> Applications ---> luci-app-frpc #内网穿透Frp客户端
LuCI ---> Applications ---> luci-app-frps #内网穿透Frp服务端
LuCI ---> Applications ---> luci-app-fwknopd #Firewall Knock Operator服务器
LuCI ---> Applications ---> luci-app-guest-wifi #WiFi访客网络
LuCI ---> Applications ---> luci-app-gost #隐蔽的https代理(Li大内插件)
LuCI ---> Applications ---> luci-app-haproxy-tcp #HAProxy负载均衡-TCP
LuCI ---> Applications ---> luci-app-hd-idle #硬盘休眠
LuCI ---> Applications ---> luci-app-hnet #Homenet Status家庭网络控制协议
LuCI ---> Applications ---> luci-app-https-dns-proxy #通过HTTPS代理为DNS提供Web UI
LuCI ---> Applications ---> luci-app-ipsec-vpnd #VPN服务器 IPSec
LuCI ---> Applications ---> luci-app-kodexplorer #KOD可道云私人网盘(与vnStat冲突 ! )
LuCI ---> Applications ---> luci-app-kooldns #virtual**服务器 ddns替代方案(丢弃)
LuCI ---> Applications ---> luci-app-koolproxy #KP去广告(丢弃)
LuCI ---> Applications ---> luci-app-lxc #LXC容器管理
LuCI ---> Applications ---> luci-app-meshwizard #网络设置向导
LuCI ---> Applications ---> luci-app-minidlna #完全兼容DLNA / UPnP-AV客户端的服务器软件
LuCI ---> Applications ---> luci-app-mjpg-streamer #兼容Linux-UVC的摄像头程序
LuCI ---> Applications ---> luci-app-music-remote-center #PCHiFi 数字转盘遥控
LuCI ---> Applications ---> luci-app-mwan3 #MWAN3负载均衡
LuCI ---> Applications ---> luci-app-mwan3helper #MWAN3分流助手
LuCI ---> Applications ---> luci-app-n2n_v2 #N2N内网穿透 N2N v2 virtual**服务
LuCI ---> Applications ---> luci-app-netdata #Netdata实时监控(图形化)
LuCI ---> Applications ---> luci-app-nfs #NFS网络共享
LuCI ---> Applications ---> luci-app-nft-qos #QOS流控 Nftables版
LuCI ---> Applications ---> luci-app-nlbwmon #网络带宽监视器
LuCI ---> Applications ---> luci-app-noddos #NodDOS Clients 阻止DDoS攻击
LuCI ---> Applications ---> luci-app-nps #内网穿透nps
LuCI ---> Applications ---> luci-app-ntpc #NTP时间同步服务器
LuCI ---> Applications ---> luci-app-ocserv #OpenConnect virtual**服务
LuCI ---> Applications ---> luci-app-olsr #OLSR配置和状态模块
LuCI ---> Applications ---> luci-app-olsr-services #OLSR服务器
LuCI ---> Applications ---> luci-app-olsr-viz #OLSR可视化
LuCI ---> Applications ---> luci-app-openvpn #OpenVPN客户端
LuCI ---> Applications ---> luci-app-openvpn-server #易于使用的OpenVPN服务器 Web-UI
LuCI ---> Applications ---> luci-app-oscam #OSCAM服务器(丢弃)
LuCI ---> Applications ---> luci-app-p910nd #打印服务器模块
LuCI ---> Applications ---> luci-app-pagekitec #Pagekitec内网穿透客户端
LuCI ---> Applications ---> luci-app-polipo #Polipo代理(是一个小型且快速的网页缓存代理)
LuCI ---> Applications ---> luci-app-pppoe-relay #PPPoE NAT穿透 点对点协议(PPP)
LuCI ---> Applications ---> luci-app-privoxy #Privoxy网络代理(带过滤无缓存)
LuCI ---> Applications ---> luci-app-ps3netsrv #PS3 NET服务器(用于加载蓝光/游戏ISO/PKG)
LuCI ---> Applications ---> luci-app-qbittorrent #BT下载工具(qBittorrent)
LuCI ---> Applications ---> luci-app-qos #流量服务质量(QoS)流控
LuCI ---> Applications ---> luci-app-radicale #CalDAV/CardDAV同步工具
LuCI ---> Applications ---> luci-app-ramfree #释放内存
LuCI ---> Applications ---> luci-app-rclone #命令行云端同步工具
Include rclone-webui #Rclone界面
Include rclone-ng (another webui) #Rclone另一个界面
Include fuse-utils (mount cloud storage) #fuse-utils(挂载云存储)
LuCI ---> Applications ---> luci-app-rp-pppoe-server #Roaring Penguin PPPoE Server 服务器
LuCI ---> Applications ---> luci-app-samba #网络共享(Samba)
LuCI ---> Applications ---> luci-app-samba4 #网络共享(Samba4)
LuCI ---> Applications ---> luci-app-sfe #Turbo ACC网络加速(flowoffload二选一)
LuCI ---> Applications ---> luci-app-shadowsocks-libev #SS-libev服务端
LuCI ---> Applications ---> luci-app-shairplay #支持AirPlay功能
LuCI ---> Applications ---> luci-app-siitwizard #SIIT配置向导 SIIT-Wizzard
LuCI ---> Applications ---> luci-app-simple-adblock #简单的广告拦截
LuCI ---> Applications ---> luci-app-softethervpn #SoftEther VPN服务器 NAT穿透
LuCI ---> Applications ---> luci-app-splash #Client-Splash是无线MESH网络的一个热点认证系统
LuCI ---> Applications ---> luci-app-sqm #流量智能队列管理(QOS)
LuCI ---> Applications ---> luci-app-squid #Squid代理服务器
LuCI ---> Applications ---> luci-app-ssr-plus #SSR Plus+
Include Shadowsocks #新SS代理
Include Shadowsocks V2ray Plugin #新V2ray代理
Include Xray #Xray代理 *
Include Trojan #Trojan代理
Include Redsocks2 #socks-red2代理
Include NaiveProxy #NaiveProxy代理
Include Kcptun #Kcptun加速
Include ShadowsocksR Server #ShadowsocksR服务器
LuCI ---> Applications ---> luci-app-ssrserver-python #SSR Python服务器
LuCI ---> Applications ---> luci-app-statistics #流量监控工具
LuCI ---> Applications ---> luci-app-syncdial #多拨虚拟网卡(原macvlan)
LuCI ---> Applications ---> luci-app-tinyproxy #Tinyproxy是 HTTP(S)代理服务器
LuCI ---> Applications ---> luci-app-transmission #BT下载工具
LuCI ---> Applications ---> luci-app-travelmate #旅行路由器
LuCI ---> Applications ---> luci-app-ttyd #网页终端命令行
LuCI ---> Applications ---> luci-app-udpxy #udpxy做组播服务器
LuCI ---> Applications ---> luci-app-uhttpd #uHTTPd Web服务器
LuCI ---> Applications ---> luci-app-unblockmusic #解锁网易云灰色歌曲31新版本
UnblockNeteaseMusic Golang Version #Golang版本
UnblockNeteaseMusic NodeJS Version #NodeJS版本
LuCI ---> Applications ---> luci-app-unbound #Unbound DNS解析器
LuCI ---> Applications ---> luci-app-upnp #通用即插即用UPnP(端口自动转发)
LuCI ---> Applications ---> luci-app-usb-printer #USB 打印服务器
LuCI ---> Applications ---> luci-app-uugamebooster #UU网游加速器 *
LuCI ---> Applications ---> luci-app-v2ray-server #V2ray 服务器
LuCI ---> Applications ---> luci-app-verysync #微力同步
LuCI ---> Applications ---> luci-app-vlmcsd #KMS服务器设置
LuCI ---> Applications ---> luci-app-vnstat #vnStat网络监控(图表)(与kodexplorer冲突 ! )
LuCI ---> Applications ---> luci-app-vpnbypass #VPN BypassWebUI 绕过VPN设置
LuCI ---> Applications ---> luci-app-vsftpd #FTP服务器
LuCI ---> Applications ---> luci-app-watchcat #断网检测功能与定时重启
LuCI ---> Applications ---> luci-app-webadmin #Web管理页面设置
LuCI ---> Applications ---> luci-app-wifischedule #WiFi 计划
LuCI ---> Applications ---> luci-app-wireguard #WireGuard状态
LuCI ---> Applications ---> luci-app-wol #WOL网络唤醒
LuCI ---> Applications ---> luci-app-wrtbwmon #实时流量监测
LuCI ---> Applications ---> luci-app-xlnetacc #迅雷快鸟
LuCI ---> Applications ---> luci-app-zerotier #ZeroTier内网穿透

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!