月初的时候组建了一台 All-in-One,想在里面装一台软路由,于是开始了漫漫选型与试错之旅。尝试了 OpenWrt 官方 21、22 版本,恩山论坛网友修改过的两个版本、OPNsenseLEDE 自动编译版本,最终选择了自编译 lean 发布的 LEDE。

踩坑史

下面简要说明一下选择的原因和遇到的问题。

选择 LEDE

LEDE 是国人 lean 基于 OpenWrt 开发的、最后又合并到 OpenWrt 主线的版本,现在统一使用 OpenWrt 的名称。国内很多网友生成的固件都是基于它的代码制作的,因而它也最接近原生。我先开始使用了 LEDE 仓库 Release 的版本,感觉这就是我理想的 OpenWrt 发行版!但该版本缺少 IPv6 支持,后来便起了自己编译的念头。

编译步骤

源仓库 中有着完整的编译说明,在这一过程中只要网络通常,不大会出现莫名其妙的问题。lean 使用的是 Debian/Ubuntu,而我是在 Manjaro 上编译的,因此需要安装相关编译环境(issue 2309):

yay -S openwrt-devel

接着可以按照官方的说明,克隆代码:

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

(可选)注意,如果需要集成一些官方源中没有的软件,克隆仓库后应当修改根目录下的 feeds.conf.default,在其后添加一行:

src-git helloworld https://github.com/fw876/helloworld

拉取软件源并配置:

./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

强烈建议)(issue 3797)如果需要完整的 IPv6 支持,请在 make menuconfig 时,选择 Extra packages —> ipv6helper,此时下面几项也会自动选择上:

接着就可以编译了:

make download -j8
make V=s -j1

官方编译说明上建议第一次编译时使用单线程(即 -j1),我在编译时直接使用了全部 16 个核心,好像问题也不大。 download 过程受网络影响较大,编译过程在我的机器上花费了约半小时,二次编译时只需 3 分钟左右。

导入 PVE

bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined-efi.img 上传到 PVE 中,使用 importdisk 导入磁盘即可,存储名称一般为 local-zfs 或 local-lvm:

qm importdisk 虚拟机号 /var/lib/vz/template/iso/openwrt-x86-64-generic-squashfs-combined-efi.img 存储名称

和其他编译版本一样,默认用户名/密码为 root/password, IP 地址 192.168.1.1, 可在 /etc/config/network 中修改。

建议)如果官方软件源不能满足自己的要求,可以在 feeds 设置中添加一个第三方软件源:src/gz openwrt_kiddin9 https://op.supes.top/packages/x86_64。由于该源为个人用户创立,使用时需要删除 option check_signature 以关闭签名验证。

后话

偶然发现在 2019 年底的时候,lean 发了一个 issue,其中是这样写的:

终归到底,这个又是一个失败的项目而已 #2648

我一直想象的那种人人为我,我为人人,大家一起来维护一个项目的景象始终没有出现,也没有出现的迹象。

维护这个项目的过程中,主动分享的同学并不多。很多来汇报问题的人是以一种小白求大大免费解决问题,解决完就走人的方式来的。

然而既不愿提供足够的信息,截图日志什么都没有,也不愿写一些自己尝试的过程供后人参考。

issues 那边,一堆随随便便的一句话问题,却想着别人认认真真的去帮他分析解决的,比比皆是。

退一步来说,就算有些 issue 是很简单的问题,5000 多个 fork ,却也没有多少人愿意回复下,就好像这个完全就是作者一个人服务所有人的项目一样。

更别提pulls 区那边的一堆垃圾 yml 了,关都关不过来。

互帮互助的气氛就是搞不起来。对比下国外的社区差好远。

国内的开源环境到底是什么样呢?他们使用现成的开源的成果,却很少有人遵守开源协议。

更有甚者,毫无贡献、拿来就用,然后宣传开源后就属于全人类的了,然后说是自己的成果(即使不是公开说出来,也是暗示性的影响。为数不多的人遵守 GPL ,更别提哪怕在 Credit 注明一下来源的人),甚至反骂开源的作者。

这个项目已经让我觉得越来越无趣,罢了吧。

庆幸作者至今仍然坚持了下来。看到这么好的开源项目的作者被逼到如此境地,不禁有些难过。其实,专业刷路由器固件的同学恐怕也只是一少部分,更多的人在实现功能后便“撤离”也无可厚非。在这个 issue 下,一些评论建议区分专业用户和非专业用户,便是一个不错的思路。

其实 lede 项目本身,乃至这个仓库,知道的人还是有限的。仅浏览一下恩山上的帖子,红火的往往是各路“大神”基于 lede 所做的固件,而甚至有些还对用户收费——这也难怪 lean 会生气。

感叹自己错过了手机和路由器刷机最火的时候,谨纪念第一次编译路由器固件。