近来远程 AI Agent 概念爆火,催生了我搞一个 24 小时开机的设备玩一玩的想法。
想到这个设备要放在家里,体积小巧、功耗可观还是比较关键,于是 ARM 设备进入了我的视野。
由于懒得购置新的设备,手上完全闲置的树莓派 4B 进入了我的视野。要搞远程的 AI Agent,说到底还是得一个有完善 Linux 支持的系统比较合适,于是开始研究树莓派 4B 除了官方支持的系统镜像之外,近期有什么可玩性比较高的系统,这时候 飞牛 fnOS 进入了我的视野。
飞牛 fnOS 今年开始推出 ARM 版本镜像的公测,除了官方支持的几个机型,还推出了 UEFI 可引导的镜像。但是说实话,ARM 设备有支持 UEFI 引导的设备着实不多,好巧不巧树莓派 4B 刚好就有官方支持的 UEFI 引导。
树莓派 4B 小试牛刀
简要地带过一下,我手头的树莓派 4B 来自于不知名的淘宝店,配的 SD 卡是闪迪的便宜货,当时就有点担心性能顶不住。
实际上在安装的过程中就初见端倪,引导 Installer 和复制的过程都有点慢,不过确实可以成功装完整个系统,开机也都是正常的。但是在我装了 Docker 装了个镜像之后,突然就卡死了,掉电重启也无法恢复。果断放弃,我觉得换个性能好一些的 SD 卡估计也顶不住后面让他 24 小时开机的需求。
放弃树莓派之后,手里的一个安卓设备进入了我的视野 —— Firefly ITX3588J 。这个基于 RK3588 的设备之前是用来假装成 TV 机顶盒的,芯片也算比较新。
折腾 Firefly ITX3588J
但是 Firefly 官方并没有对它有 UEFI 的支持,只有社区三方适配的版本,并且仓库内也标注了这个设备其实并没有完美支持(仓库地址:https://github.com/edk2-porting/edk2-rk3588 )。经过验证这个镜像可以引导飞牛 fnOS 启动 grub ,但是点击任一 install ,都会直接黑屏假死;然后我出于好奇,搞了一个 Windows 11 ARM 的安装盘尝试引导,可以引导打开图形界面的安装流程,但是不能识别出内置的 EMMC,或许证明了这个引导适配 EMMC 的方式有哪里不对吧。
好在飞牛 fnOS 的热度很够,三方开发者愿意来玩的实在很多,于是找到了这个宝藏大佬 https://github.com/ophub 。从他开源的仓库看,他致力于适配一众 ARM based 的路由、机顶盒等设备的 Armbian 、OpenWRT 等系统。而且碰巧他对飞牛 fnOS 也感兴趣,在官方适配之外,适配众多小众设备型号 https://github.com/ophub/fnnas 。刚好也有 Issue 提到了 ITX3588J 这个板型,我也一并参与了讨论发现他适配 armbian 里是有这个板型的,他就直接在构建 workflow 加上了适配 fnOS 。

从 github action 产物拉下来直接烧录,Bingo 。
当然,由于不是官方主力适配,还是会有一些问题,比如网卡方面,无线网卡是不能识别的,并且也不能更新系统,否则一旦 fnOS 的更新里覆盖了 kernel ,网卡驱动就掉了。ophub 表示已经有解决方案,但是只能等官方适配;倒也无妨,已经能启动了,就已经可以开始玩了~

简单的配了一下环境之后

这么一看,可玩性不就来了,一个不算落后的内核版本,16G 的内存,主流的 Debian 系统,舒舒服服想玩什么都可以了。
接下来干嘛?装个龙虾?
哈哈哈哈,最初的初衷就是试试看,结果发现网络被墙了。于是目标立刻转换!
首先要能科学上网 ✅
诶,既然 NAS 这种 24 小时开机的设备都具备了,那是不是直接搞个软路由?
一开始我无脑了一下,觉得先在 NAS 装一个 ShellCrash ,然后直接用 ipv4 转发的方式,然后让主路由直接改网关指向 NAS 机。
结果 ShellCrash 装上来发现,TUN 功能是废掉的 😩 不过从网卡那边的适配情况来看,倒也不算出奇。后面改用 Redir 模式,再加上 ip 转发,看起来功能也是异常的,直接会导致其他设备都不能上网。
后面搜到了这个文章:飞牛NAS一键部署iStoreOS旁路由 。那必须说是看到希望了。
按照这个思路完整配置了一遍之后,果然,连上 WiFi 的设备都可以走这个旁路由出网了。
但是,NAS 自身反而不行 🤣。
后面跟博主联系了下,给了个方案是在 NAS 上尝试配置 macvlan 子接口,做个中间层。于是让 Claude 帮我补完了完整的步骤:
这里假设 Docker 里的 iStoreOS 分配的 ip 是 192.168.31.123。
第一步:创建 macvlan 子接口
ip link add macvlan0 link eth0 type macvlan mode bridge
ip addr add 192.168.31.2/32 dev macvlan0
ip link set macvlan0 up
192.168.31.2是宿主机在 macvlan 网段上的”虚拟身份”,随便选一个该网段内未被占用的 IP 即可,/32是故意的。
第二步:添加路由让宿主机能”看到”旁路由容器
ip route add 192.168.31.123/32 dev macvlan0这条路由让宿主机发往 192.168.31.123 的包走 macvlan0 出去,而不是被丢弃。
第三步:将默认网关指向旁路由
ip route replace default via 192.168.31.123 dev macvlan0噔噔!

To be continue
0 条评论