前言
本月初,NAS圈捷报频传。堪称“要做NAS系统里的Windows”的飞牛OS迎来了其ARM版本的首次内测,电子垃圾废物利用的风终究还是从x86吹到了ARM。但首批次内测官方支持的机型数量在ARM浩如烟海的设备型号面前少得可怜,仅RK3566等几款芯片型号的ARM设备获得了官方支持。不过,社区能人不少,在内测固件发布仅几小时后,就变成了“一人内测全员公测”。先是有大佬发现,只要有合适的设备树文件,同一个芯片家族的方案有自行“适配”的希望。然后有大佬逆向dtb文件获得dts,针对自己的机型修改后重新编译dtb导入镜像,刷入设备后成功点亮。再然后,为openwrt和armbian做系统镜像适配的大佬ophub根据飞牛官方提供的内核火速为上百款ARM设备编译了适配镜像,包括晶晨/瑞芯微/全志系列的众多设备。飞牛OS ARM社区版本就此诞生,飞牛OS正式进入黑牛时代...
飞牛OS ARM 社区版本
飞牛OS ARM的社区版本由ophub打包和维护,项目地址如下:
可以看到,社区版本的飞牛OS ARM适配了包括晶晨S9XXX系列和瑞芯微RKXXXX系列以及全志h6等多款Soc的设备。项目目前跟随飞牛OS官方版本包同步打包更新。
不过,需要说明的是。由于飞牛OS的内核和内置应用的源码官方目前暂未开源,因此社区版本系统许多设备虽然显示适配了但实际刷入后仍会有各种各样的毛病,有些甚至刷入系统后无法启动。目前ophub大佬也表示,因为没有源码,目前所有的适配工作都只能靠经验倒猜,许多BUG和适配问题也无法解决。希望社区的各路大佬能够积极出手,集思广益出更多的方案和补丁,让飞牛OS社区版本的适配工作更顺利。
刷机方法
刷机方法我就不提供教程了。ARM设备的刷机方法千奇百怪,详情可以查看项目的README的安装及升级 FnNAS 的相关说明这一栏。另外,你都玩ARM了,那你自己的板子你肯定了解怎么刷机。
当前新进展
rk35xx启用GPU加速解码
飞牛OS ARM官方版本已经在338版本更新中为部分支持设备提供了VPU 硬件编解码支持,但部分设备型号还需要等到官方在 dtb 里加入 VPU, VOP 节点才能启用。对此有大佬在社区提供了自适配的解决方案:针对rk3568和rk3588机型,补齐主线缺失的&rkvdec、&mpp_srv等相关节点。大佬同时还提供了抠出来的节点的dtsi,可以整合进自己设备的dts文件中编译出来dtb,导入进系统后重启应该就能启用GPU硬件加速解码。推荐使用LEDE的源码进行dts-dtb的编译。具体详情可查看如下issue:
本人的一些实操经验
针对这一节,我的设备是FastRhino-R66s,刚好Soc是RK3568,于是沿着大佬提供的思路我做了相关尝试。
但很遗憾,在折腾了两天后,我尝试各种方法进行编译,但编译出来的dtb在系统启动时内核始终报错如下:
[ 2.313017] rockchip-otp fe38c000.otp: error -ENOENT: Failed to get clk 'otp'
[ 2.313046] rockchip-otp fe38c000.otp: error -ENOENT: failed to get clocks
[ 2.313060] rockchip-otp fe38c000.otp: probe with driver rockchip-otp failed with error -2
[ 19.561351] panfrost fde60000.gpu: _of_add_opp_table_v2: no supported OPPs
[ 19.562005] panfrost fde60000.gpu: devfreq init failed -2
[ 19.562528] panfrost fde60000.gpu: Fatal error during GPU init
[ 19.564478] panfrost fde60000.gpu: probe with driver panfrost failed with error -2我猜测可能是因为大佬提供的dtsi文件内的相关节点还是和我的设备的dts不适配导致的,我也不会改,所以暂且放弃吧...
另外,我看有人问如何把dts编译成dtb,我这有三种方案:
使用lede的源码修改dts,把大佬提供的dtsi引入,然后编译完整的系统,最后把dtb从编译好的系统中取出来。
这个方法严格参照Lemon1151和ophub两位大佬提供的方案,但说实话比较繁琐,编译一次系统至少需要一个小时。如果算上搭建编译环境和首次编译等等因素,那编译一次三个小时妥妥的。另外,本地编译一定要准备好干净的ubuntu环境和梯子,不要用WSL!!!别问我怎么知道的(〒︿〒)...使用主线内核中的dts进行修改,修改后在内核中将dts编译为dtb。
这个方法参照飞牛社区大佬陪玩的帖子,直接在主线内核上做修改,然后借助内核完成dtb的编译然后取出来。这个方法较第一个方案来说更简单快速,但编译出来的dtb不一定能成功启用GPU加速解码,至少我没成功。直接在板子上把系统内的dtb反向编译出dts,然后做修改引入dtsi,最后用dtc工具把dts重新编译出dtb。
这个方法仅提供思路,因为我没实际尝试。但理论上是可行的。对于如何使用dtc工具编译和反编译,问AI。
启用应用商店,“黑牛”变“黄牛”
没有内测资格的用户的FnOS的应用中心是空空如也的,即便你刷入的是官方包也不行。这应该是“黑牛”和“白牛”最明显的区别了,应该是飞牛官方做了限制。“黑牛”用户想要安装应用只能导入fpk离线安装包。不过,近日有恩山大佬开发出了一个工具箱,可以帮助“黑牛”玩家开启ARM飞牛应用商店。
正确的使用姿势应该是:
系统装好,存储空间创建好,需要安装应用。
安装大佬开发的xxnas工具箱。
工具箱的第6个菜单是应用中心权限(其他先别动),点击蓝色临时开启权限。开启后去看系统设置,你会发现设备ID发生了变化。
去应用商店安装你需要的应用。
回到xxnas工具箱,点击恢复默认状态。刷新页面后再去系统设置里查看,你原来的设备ID回来了。
本方案的原理应该就是借用了有内测资格用户的位于官方白名单内的设备ID短暂开启应用中心权限,然后应用中心就可以用了。不过鉴于本方案还是有一定风险的,而且飞牛OS ARM最迟今年过年前也开启公测了,到时大家就都能用应用中心了,所以这就是个临时的解决方案,大家图一乐就好了。
除此之外,还有人提供了命令行直接改设备ID的方案,跟xxnas工具箱的原理是一样的,不过是不需要多安装一个fpk包更方便而已。
资源下载区: