0x00:前言
OpenWrt可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt三类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
本文为博主捣鼓以Lean大佬的源码定制编译专属于自己的Openwrt固件。
需要准备的工具:
- 服务器系统:64位Ubuntu系统
0x01:配置并安装环境
- 更改包源地址
国内推荐使用阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
- 安装所需相关包
apt update
apt -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget swig
0x02:下载Lean大OpenWrt源码
注意:
- 不要用 root 用户 git 和编译!!!
国内用户编译前最好准备好梯子
- 下载@Lean大雕的OpenWrt源码
git clone https://github.com/coolsnowwolf/lede
- 添加@Lienol的OpenWRT插件源
进入OpenWrt源码文件夹
cd ~/lede
在feeds.conf.default中末尾添加以下信息
src-git lienol https://github.com/Lienol/openwrt-package
- 添加@tty228的ServerChan插件
cd ~/
git clone https://github.com/tty228/luci-app-serverchan.git
mv luci-app-serverchan ~/lede/package
- 更新
./scripts/feeds update -a
./scripts/feeds install -a
0x03:自定义OpenWrt固件
- 进入自定义菜单
make menuconfig
- Target System 和 Subtarget
本次编译的是软路由openwrt固件(x86_x64系统)
Target System中选择x86
Subtarget选择x64。
如果编译的固件是为硬路由所使用,则按照各自硬路由硬件方案进行选择。
- Target Images
此处勾选上squashfs。
其次,在底下可以选择打包生成对应的虚拟机磁盘文件,如果你的软路由不是安装在物理机环境下,而是工作在如ESXi、PVE/KVM、Hyper-V和VirtualBox虚拟化环境下时,可以勾选相应的磁盘文件形式,直接生成磁盘文件。
若你的物理机&虚拟机支持EFI引导,则在此处可以勾选Build EFI GRUB images。
- Base system
此处在dnsmasq-full将其中内容全选。
注意!如果已经选择了dnsmasq-full则上面的dnsmasq和dnsmasq-dhcpv6不要勾选,否则编译时会报错。
- Extra packages
此处可以勾选ipv6helper,提供ipv6支持(可选)
- LuCI
此处就为Lean大OpenWRT的精华所在了。
进入Applications选项中,其中显示的就为OpenWRT中可以安装使用的插件。
名称 | 附件 | 中文名 |
---|---|---|
luci-app-accesscontrol | - | 访问时间控制 |
luci-app-acme | - | ACME自动化证书管理环境 |
luci-app-adblock | - | ADB广告过滤 |
luci-app-adbyby-plus | - | 广告屏蔽大师Plus + |
luci-app-advanced-reboot | - | Linksys高级重启 |
luci-app-ahcp | - | 支持AHCPd |
luci-app-amule | - | aMule下载工具 |
luci-app-aria2 | - | Aria2下载工具 |
luci-app-arpbind | - | IP/MAC绑定 |
luci-app-asterisk | - | 支持Asterisk电话服务器 |
luci-app-attendedsysupgrade | - | 固件更新升级相关 |
luci-app-autoreboot | - | 支持计划重启 |
luci-app-baidupcs-web | - | 百度网盘管理 |
luci-app-bcp38 | - | BCP38网络入口过滤(不确定) |
luci-app-bird1-ipv4 | - | 对Bird1-ipv4的支持 |
luci-app-bird1-ipv6 | - | 对Bird1-ipv6的支持 |
luci-app-bmx6 | - | BMX6路由协议 |
luci-app-bmx7 | - | BMX7路由协议 |
luci-app-cifsd | - | 网络共享CIFS/SMB服务器 |
luci-app-cjdns | - | 加密IPV6网络相关 |
luci-app-clamav | - | ClamAV杀毒软件 |
luci-app-commands | - | Shell命令模块 |
luci-app-cshark | - | CloudShark捕获工具 |
luci-app-ddns | - | 动态域名 DNS(集成阿里DDNS客户端) |
luci-app-diag-core | - | core诊断工具 |
luci-app-dnscrypt-proxy | - | DNSCrypt解决DNS污染 |
luci-app-dnsforwarder | - | DNSForwarder防DNS污染 |
luci-app-dockerman | - | Docker容器 |
luci-app-dump1090 | - | 民航无线频率(不确定) |
luci-app-dynapoint | - | DynaPoint(未知) |
luci-app-e2guardian | - | Web内容过滤器 |
luci-app-familycloud | - | 家庭云盘 |
luci-app-filetransfer | - | 文件传输(可web安装ipk包) |
luci-app-firewall | - | 添加防火墙 |
luci-app-flowoffload | - | Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS... |
luci-app-freifunk-diagnostics | - | freifunk组件 诊断(未知) |
luci-app-freifunk-policyrouting | - | freifunk组件 策略路由(未知) |
luci-app-freifunk-widgets | - | freifunk组件 索引(未知) |
luci-app-frpc | - | 内网穿透FRP客户端 |
luci-app-fwknopd | - | Firewall Knock Operator服务器 |
luci-app-guest-wifi | - | WiFi访客网络 |
luci-app-haproxy-tcp | - | HAProxy负载均衡-TCP |
luci-app-hd-idle | - | 硬盘休眠 |
luci-app-hnet | - | Homenet Status家庭网络控制协议 |
luci-app-ipsec-virtual**d | - | virtual**服务器 IPSec |
luci-app-kodexplorer | - | KOD可道云私人网盘 |
luci-app-lxc | - | LXC容器管理 |
luci-app-meshwizard | - | 网络设置向导 |
luci-app-minidlna | - | 完全兼容DLNA/UPnP-AV客户端的服务器软件 |
luci-app-mjpg-streamer | - | 兼容Linux-UVC的摄像头程序 |
luci-app-mtwifi | - | MTWiFi驱动的支持 |
luci-app-mwan3 | - | MWAN3负载均衡 |
luci-app-mwan3helper | - | MWAN3分流助手 |
luci-app-n2n_v2 | - | N2N内网穿透 N2N v2 virtual**服务 |
luci-app-netdata | - | Netdata实时监控(图表) |
luci-app-nft-qos | - | QOS流控 Nftables版 |
luci-app-nlbwmon | - | 网络带宽监视器 |
luci-app-noddos | - | NodDOS Clients 阻止DDoS攻击 |
luci-app-nps | - | 内网穿透nps |
luci-app-ntpc | - | NTP时间同步服务器 |
luci-app-ocserv | - | OpenConnect virtual**服务 |
luci-app-olsr | - | OLSR配置和状态模块 |
luci-app-olsr-services | - | OLSR服务器 |
luci-app-olsr-viz | - | OLSR可视化 |
luci-app-openvirtual** | - | Openvirtual**客户端 |
luci-app-openvirtual**-server | - | 易于使用的Openvirtual**服务器 Web-UI |
luci-app-p910nd | - | 打印服务器模块 |
luci-app-pagekitec | - | Pagekite内网穿透客户端 |
luci-app-polipo | - | Polipo代理(是一个小型且快速的网页缓存代理) |
luci-app-pppoe-relay | - | PPPoE NAT穿透 点对点协议(PPP) |
luci-app-privoxy | - | Privoxy网络代理(带过滤无缓存) |
luci-app-qbittorrent | - | BT下载工具(qBittorrent) |
luci-app-qos | - | 流量服务质量(QoS)流控 |
luci-app-radicale | - | CalDAV/CardDAV同步工具 |
luci-app-ramfree | - | 释放内存 |
luci-app-rp-pppoe-server | - | Roaring Penguin PPPoE Server 服务器 |
luci-app-samba | - | 网络共享(Samba) |
luci-app-samba4 | - | 网络共享(Samba4) |
luci-app-sfe | - | Turbo ACC网络加速(flowoffload二选一) |
luci-app-s-s-libes | - | SS-libev服务端 |
luci-app-shairplay | - | 支持AirPlay功能 |
luci-app-siitwizard | - | SIIT配置向导 SIIT-Wizzard |
luci-app-simple-adblock | - | 简单的广告拦截 |
luci-app-softethervirtual** | - | SoftEther virtual**服务器 NAT穿透 |
luci-app-splash | - | Client-Splash是无线MESH网络的一个热点认证系统 |
luci-app-sqm | - | 流量智能队列管理(QOS) |
luci-app-squid | - | Squid代理服务器 |
luci-app-乳酸菌饮料-plus | - | 魔法工具Plus |
- | Include s-s New Version | 新SS代理 |
- | Include s-s Simple-obfs Plugin | simple-obfs简单混淆工具 |
- | Include s-s v贰瑞 Plugin | v贰瑞插件 |
- | Include v贰瑞 | v贰瑞 |
- | Include Trojan | 特洛伊 |
- | Include red--socks2 | red--socks2代理 |
- | Include Kcptun | Kcptun加速 |
- | Include 违禁软件 Server | 魔法工具服务器 |
- | Include DNS2SOCKS | DNS服务器(方便解锁Netflix媒体服务) |
luci-app-乳酸菌饮料server-python | - | 魔法工具 Python服务器 |
luci-app-statistics | - | 流量监控工具 |
luci-app-syncdial | - | 多拨虚拟网卡(原macvlan) |
luci-app-tinyproxy | - | Tinyproxy是 HTTP(S)代理服务器 |
luci-app-transmission | - | BT下载工具 |
luci-app-travelmate | - | 旅行路由器 |
luci-app-ttyd | - | 网页终端命令行 |
luci-app-udpxy | - | udpxy做组播服务器 |
luci-app-uhttpd | - | uHTTPd Web服务器 |
luci-app-unblockmusic | - | 解锁网易云灰色歌曲3合1新版本 |
- | Golang Version | Golang版本 |
- | NodeJS Version | NodeJS版本 |
luci-app-unbound | - | Unbound DNS解析器 |
luci-app-upnp | - | 通用即插即用UPnP(端口自动转发) |
luci-app-usb-printer | - | USB 打印服务器 |
luci-app-v贰瑞-server | - | v贰瑞 服务器 |
luci-app-verysync | - | 微力同步 |
luci-app-vlmcsd | - | KMS服务器设置 |
luci-app-vnstat | - | vnStat网络监控(图表) |
luci-app-virtual**bypass | - | virtual BypassWebUI 绕过virtual设置 |
luci-app-vsftpd | - | FTP服务器 |
luci-app-watchcat | - | 断网检测功能与定时重启 |
luci-app-webadmin | - | Web管理页面设置 |
luci-app-wifischedule | - | WiFi 计划 |
luci-app-wireguard | - | virtual**服务器 WireGuard状态 |
luci-app-wirele违禁软件egdb | - | WiFi无线 |
luci-app-wol | - | WOL网络唤醒 |
luci-app-wrtbwmon | - | 实时流量监测 |
luci-app-xlnetacc | - | 迅雷快鸟 |
luci-app-zerotier | - | ZeroTier内网穿透 |
luci-app-serverchan | - | tty8大佬的server酱 |
luci-app-passwall | - | @Lienol的魔法工具 |
- Utilities
若你的OpenWRT工作于ESXi,则在此可以勾选open-vm-tools
- 保存配置
选择<save>选项卡,保存配置
0x04:开始编译
- 下载编译所需文件
make download
- 开始编译
make -j1 V=s
# n=线程数+1,例如4线程的I5填-j5,开始编译
- 编译完成,下载固件
编译完成后,固件将被存放在【~/lede/bin/targets/】目录中。
本文编译的是x86软路由固件,故固件存放在【~/lede/bin/targets//x86/64】中。
使用sftp或者WinSCP将想要的固件下载下来即可。
注:默认登陆IP 192.168.1.1, 密码 password
0x05:参考文档
Lean OpenWRT:https://github.com/coolsnowwolf/lede
Lienol Package:https://github.com/Lienol/openwrt-package
ServerChan:https://github.com/tty228/luci-app-serverchan
Luci插件列表:https://www.right.com.cn/forum/thread-344825-1-1.html
博主真是太厉害了!!!
很棒的文章,再详细点就好了,
因为过程中会有多的坑…
站长我想问下页面下面的滑动RJ是怎么实现的