0x00:前言

openwrt
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源码

注意:

  1. 不要用 root 用户 git 和编译!!!
  2. 国内用户编译前最好准备好梯子

    • 下载@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 

menuconfig

  • Target System 和 Subtarget

本次编译的是软路由openwrt固件(x86_x64系统)
Target System中选择x86
Target System
Subtarget选择x64。
Subtarget

如果编译的固件是为硬路由所使用,则按照各自硬路由硬件方案进行选择。

  • Target Images

此处勾选上squashfs。
squashfs
其次,在底下可以选择打包生成对应的虚拟机磁盘文件,如果你的软路由不是安装在物理机环境下,而是工作在如ESXi、PVE/KVM、Hyper-V和VirtualBox虚拟化环境下时,可以勾选相应的磁盘文件形式,直接生成磁盘文件。
直接生成磁盘文件
若你的物理机&虚拟机支持EFI引导,则在此处可以勾选Build EFI GRUB images
EFI

  • Base system

此处在dnsmasq-full将其中内容全选。
dnsmasq
注意!如果已经选择了dnsmasq-full则上面的dnsmasq和dnsmasq-dhcpv6不要勾选,否则编译时会报错。

  • Extra packages

此处可以勾选ipv6helper,提供ipv6支持(可选)
ipv6helper

  • LuCI

此处就为Lean大OpenWRT的精华所在了。
LuCI
进入Applications选项中,其中显示的就为OpenWRT中可以安装使用的插件。
Applications

以下为插件对应功能列表

名称附件中文名
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 Pluginsimple-obfs简单混淆工具
-Include s-s v贰瑞 Pluginv贰瑞插件
-Include v贰瑞v贰瑞
-Include Trojan特洛伊
-Include red--socks2red--socks2代理
-Include KcptunKcptun加速
-Include 违禁软件 Server魔法工具服务器
-Include DNS2SOCKSDNS服务器(方便解锁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 VersionGolang版本
-NodeJS VersionNodeJS版本
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
openvm

  • 保存配置

选择<save>选项卡,保存配置
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

Last modification:July 23rd, 2020 at 06:04 pm
If you think my article is useful to you, please feel free to appreciate