电脑技术+软路由:如何编译属于自己的软路由OpenWrt固件[转载]

本文全文转载自:如何编译属于自己的软路由OpenWrt固件 (hansendong.me)


从去年买了J1900软路由后一直使用其他人编译好的固件,没有想过自己编译,觉得这方面对自己很遥远。但最近新冠病毒疫情爆发一直在家,无聊看了很多视频教程感觉编译属于自己的软路由系统可以做到。说干就干,现在写这篇文章同时编译正在进行中。

关于如何编译 OpenWrt 固件,网上已有很多教程,我根据实操情况做适当的教程汇总,一是方便自已往后使用,二是提供想折腾编译 OpenWRT 的朋友一个思路。

关于为什么自已编译软路由固件?原因与以前的折腾Android精简手机ROM一样:追求极致的简洁与稳定。现在市面上很多网友提供的固件都是根据他们自身需求而做的编译,里面有很多插件对于我来说根本没什么用处,不好意思,强迫症又犯了。开始正题吧。

注意:

  • 不要用 root 用户 git 和编译!!!安装好操作系统后先新建一个用户。
  • 国内用户编译前最好准备好全局模式上网
  • 默认登陆IP 192.168.1.1, 密码 password

如果是电脑或者虚拟机的,在桌面右键“打开终端”,如果是VPS服务器的,使用 SSH 连接服务器后进入非Root用户帐号进行代码操作。我的教程是基于下面YouTuber视频加上我自己在固件增加不自带的插件教程。(编译openwrt你也行|我用win10自带的linux一次搞定软路由的编译 – YouTube

升级及安装必要组件

更新系统

然后安装编译环境

克隆lean的源代码到本地

开始定制与编译

敲下回车键后稍等片刻进入如下菜单

进入Target System和Subtarget勾选你需要编译的平台,默认的是X86,并且是64位的,所以你需要选择自助选择。进入Target Images勾选你需要的固件格式等

接下来是最重要也是最核心部份,选择编译的插件。进入LuCI–>Applications内选中你需要的插件。

这里按Y键勾选,空格键取消勾选,M键编译而不安装。连按两次Esc键返回上一界面。( ‘*’ 代表编入固件,‘M’ 表示编译成模块或者IPK包, ‘空’不编译 )。

勾选完需要的插件后就可以退回第一个界面按方向键选择Exit保存退出,保存按默认的文件名称(.config)保存即可,不需要修改。编译会根据.config的内容编译,想要恢复到初始配置删掉.config文件即可。

注意:make -j1 V=s -j1 后面是线程数。第一次编译推荐用单线程,国内请尽量用全局模式上网。

即可开始编译你要的固件了。首次编译大概需要两三个小时,之后基本上只需要十多分钟既可。编译过程中不要断开SSH。若断开,请清除整个lede 文件夹重新开始。

编译完成后,前往:/home/lede/bin/targets/x86/64这个目录获取编译成功的固件。

IPK路径:/lede/bin/targets/x86/64/packages

如果是物理机软路由的话,建议选择输出UEFI,这样能挂载2TB以上的磁盘,虚拟机就没这个必要了 Target Images[*] Build EFI GRUB images (Linux x86 or x86_64 host only)

进阶:OpenWrt固件增加第三方插件

有人喜欢Lienol的插件包,但是如果只知道软件包的github地址怎么编译到固件里面呢?那以下是添加第三方插件的方法。

克隆lean的源代码到本地

添加 src-git lienol https://github.com/Lienol/openwrt-package 到 OpenWRT源码根目录feeds.conf.default文件里。
feeds.conf.default 文件在lede根目录中,使用文本编辑器打开既可。

然后进入编译菜单,退出编译菜单进行编译


固件添加第三方插件的方法结束。

再次编译

完成首次编译 再编译可大大缩短时间,只输入以下代码,十几分钟的事情。

以上代码一行一行操作。

刷写 OpenWrt 软件由固件方法

好吧,最后如何刷机都告诉大家吧。如何把固件刷到软路由上面,建议使用以下两个方案。

  • DiskImage直接刷写(最直接方便)

刷写方法:制作一个PE盘,把DiskImage和LEDE固件拷贝到PE盘,插到软路由上,启动PE,打开DiskImage,选择软路由上的那块硬盘,选择OpenWrt.img,点开始,等进度条结束,然后关机,拔掉U盘,再开机就可以了

  • 用physdiskwrite刷写

刷写方法:制作一个PE盘,把physdiskwrite和LEDE固件拷贝到PE盘(同一个目录下,建议放在根目录,就是打开U盘就能看到的那个目录),插到软路由上,启动PE,然后查看下存放固件的盘符(这里举例为U:盘符),打开cmd(不懂的就按Win建+r键,输入cmd回车,Win键就是键盘左下方是Windows图标的那个按键)

然后会显示目前检测到的硬盘,输入0或者1选择要刷写到哪个盘(看容量,选择硬盘的那个编号),按Y确定,之后等待刷写结束就可以了,然后关机,拔掉U盘,再开机就可以了.

用SSH改OpenWrt的主题

本文到此结束,是不是挺简单的,有轮子了造飞机还难吗?也希望你成功。

题外话:最近SmartDNS和AdGuardHome很火,我最近一段时间也在跟随一些UP主用AdGuardHome,但当看到lean大神一些话,仔细想想的确如此。只能说明这个社会太浮躁,大部分人不经过大脑思考就做出行为。

固件 DNS 的逻辑是, 国外域名会通过内部的 PDNSD 会走代理的转发工具建立的隧道到 VPS 节点,然后由 VPS 通过 TCP DNS 查询 8.8.8.8 等 BGP 服务器,获得离 VPS 节点最优的 CDN DNS 查询记录,这样你的梯子才是速度最快的

国内域名直接缓存 ISP 或者 114 的结果,过滤掉错误的和被污染的IP记录,并缓存在内存中。

你本地路由器通过 SmartDNS 查询国外域名,肯定返回的是“你本地路由器的最优CDN节点DNS记录”, 而不是 “VPS节点的最优DNS记录”。 这样你访问国外域名的记录肯定是几乎最慢的

那些 Up 主(例如 Mike 之类的傻逼),为了流量和点击率,DNS 的原理都没搞清楚,带节奏骗小白们。

工具本身没问题(SmartDNS 通过设置也能走隧道),是某些人的脑子问题而已。

来自:https://github.com/coolsnowwolf/lede/issues/2551

常用插件列表
一般来说只要选对你的机器型号其他按默认就行了,有特殊需要可以勾选需要的插件即可
luci-app-accesscontrol 上网时间控制
luci-app-adbyby-plus 广告屏蔽大师Plus +
luci-app-amule 电驴下载–我一般精简掉
luci-app-aria2 Aria2下载–我一般精简掉
luci-app-arpbind IP/MAC绑定
luci-app-ddns 动态域名解析
luci-app-flowoffload Turbo ACC FLOW转发加速
luci-app-frpc 内网穿透 Frp–我一般精简掉,因为我的是公网IP
luci-app-hd-idle 硬盘休眠
luci-app-ipsec-vpnd IPSec服务端
luci-app-mwan3 MWAN负载均衡
luci-app-nlbwmon 网络带宽监视器
luci-app-openvpn OpenVPN客户端
luci-app-openvpn-server OpenVPN服务端
luci-app-pptp-server PPTP服务端
luci-app-ramfree 释放内存
luci-app-samba 网络共享(samba)
luci-app-sfe Turbo ACC网络加速(开启Fast Path转发加速)
luci-app-sqm 流量智能队列管理(QOS)
luci-app-transmission BT下载–我一般精简掉
luci-app-upnp 通用即插即用UPnP(端口自动转发)
luci-app-usb-printer USB 打印服务器–我一般精简掉
luci-app-vlmcsd KMS服务器(WIN激活工具)–我一般精简掉
luci-app-vsftpd FTP服务器–我一般精简掉
luci-app-webadmin Web管理
luci-app-wireguard VPN服务器 WireGuard状态
luci-app-wol 网络唤醒
luci-app-wrtbwmon 实时流量监测

支持 iPv6:
Extra packages —> ipv6helper (选定这个后下面几项自动选择了)
Network —> odhcp6c
Network —> odhcpd-ipv6only
LuCI —> Protocols —> luci-proto-ipv6
LuCI —> Protocols —> luci-proto-ppp

如果你实在是很懒或者不会,那可以试试我编译的固件。本链接固件会不定期更新。

注:

编译源码来自(致谢):
Lean’s git source of OpenWrt and packages
https://github.com/coolsnowwolf/lede

主题及插件
https://github.com/Lienol/openwrt-package

Adguard Home​插件
https://github.com/rufengsuixing/luci-app-adguardhome

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注