尝鲜 Linux 桌面 Arm 主机

zping

2269 字

2025-11-24 16:14 +0000


最近买到了一台 UEFI 的 Arm 主机,铭凡的 MS-R1 , 这玩意据说是全球首款,不过应该只是迷你工作站这一个小品类的首款。之前我当然也跑过几个开发板,但从来没有用它们作过桌面。这款至少推广中确实有能跑通的展示,让我比较好奇。当然,好奇心是很费钱的。

它自带的系统把是 Debian 12 改了一下,内核是厂商从主线中自己进行了相关的改动,不过它们确实把代码也放到了 GH 上面。不过我放到 GH 上面的应该不是真正投产时的代码,至少没有同步,这个我后面再说。

不过,我还是比较感兴趣如何把别的正式发行版,像 NixOS 安装到它上面。特别做了相关的尝试。

这里歪一下 NixOS 相关一些技巧。国内的话,首要解决的还是网络问题。我们有两种办法,找国内镜像或者直接翻。我这次就偷懒,找了镜像。用的是清华源的 nixpkgs 仓库和交大源的 nix channel ,前面需要在 flake.nix 中配置,后面是 nixos-install 时指定。 home manager 的情况略有不同,但这个后面再讨论。

回到这台机器,我安装时, Linux LTS 版本号是 6.12 ,这个装好以后,无线网卡可以正常工作,有线网卡(RTL8127)则没有识别出来,集显(Arm Immortalis)驱动也缺失,所以图形界面是没戏的。换到最新的主线 6.18 后,有线网卡识别出来了,不过集显的驱动仍旧缺失。再换 testing 版本,还是没有。对这个我还是比较吃惊的。因为 Mali G720 相关的支持确实已经合并到主线里了,文档里写明了是 panthor 模块。

接下来是测试编译厂商文档中的内核源码。我专门对比了一下和主线的区别,发现其实还是有点风险,开发商的主要工作涉及到 APCI 相关。理论上存在硬件损伤问题。

编译时遇到了报错(drivers/regulator/fwnode_regulator.c:96),查了一下 GH 还真让我找到了相关的补丁。通过这个补丁,我找到了其上游厂商此芯(CIX)开源仓库,同时也找到了这台机器在开发板上的合作商——瑞莎,并查找到相关提交,可以发现一个很有意思的地方,这之前已经有人试过在这个芯片上使用 NixOS。另一个显而易的是瑞莎的工作是基于 Rockchip Linux 。这也是因为瑞莎和嵌入式主要的发行版 Armbian 是合作关系。

不过这个事情让我有了一个想法,就是反过来去看设备树(Device Tree)配置。然后我查到了他们向内核提交的设备树源码记录。可以看到内核,当前支持的是设备 CIX P1 (SKY1) SoC ,但是仅有 Radxa Orion O6 这一个型号的主板得收录进入了内核。而这款主机的主板型号是 CIX sky1 EVB board 。也就是说不光是 ACPI 没有有效支持,连 DTS 到目前也没有提交支持。

不过查到这里,我的一个收获是发现这台机器其实是基于 Radxa Orion O6 做的产品。

到这里我觉得基本上可以放弃直接安装 NixOS。除了内核支持有限外,我们可能还需要 Mesa 3D 这些东西。别忘记了,还有电源管理相关工具软件,这些如果厂商没有公开具体细节,社区是不可能提供支持的。我个人就更不可能了。就算是想做,那也是需要先跑一下厂商提供的镜像弄清楚具体情况。

再歪一下题,这个事情并不是第一次发生。老实说,总是出现类似的事情,反而显示出 Linux 内核开发的很多问题。单纯的宏内核架构和个人电脑这类生态天然的就有点八字不合的样子。这样子看,Windows 在个人电脑领域的垄断,似乎 Windows NT 时代搞出的混合内核也有相当的贡献。二〇〇年前后,个人电脑的应用场景对 Linux 整个操作系统的生态确实有不少挑战。不过,移动设备又是另外一个故事了。

回到正题,厂商本身提供的这个系统其实也有不少问题。最表面的一个问题是不能在图形界面下用 ctrl+alt+fn 切出文本终端,不过这更可能是一个功能,因为本身设置了 root 在 tty1 自动登录,并且启用了 console 线。我查了相关配置,没有查到限制,猜测这是在驱动层面实现的,要知道这类芯片就是从移动端直接搬过来的。另一个最明显的问题是熄屏支持,可能还是和 ACPI 的实现不完全有关系,运行 mpv 媒体播放时,明确报了熄屏支持提示。

在配置方面,比较明显的像一些 systemd service 文件带了执行权限,这个只要翻一下 journalctl -xe 就能看到。另外,作为一个台式工作站,我们可以看到 /etc/systemd/logind.conf 文件中开启了不少移动相关的东西。最过份的可能还是 /etc/environment.d/cix_env.conf 这个文件,它竟然指定了 LD_LIBRARY_PATH=/usr/share/cix/lib 。这并不是说他们不知道 /etc/ld.so.conf.d/ 事实上,其它的一些私有库都确实用的都是 ldconfig 。猜测或许是这是一个临时性质的东西只是出现在了最终版本里。又或者为了某个专门桌面功能而做的变通。

这里不得不提再歪一次,开源社区一个很奇怪的现象,至少在一些需要查漏补缺的小事方面,用爱发电的往往比拿工资干活的显得更专业。对于这种规模有限的厂商来说,我觉得其对开源社区的拥抱需要更上一层楼才行。毕竟,他们自己能提供的资源,不要说跟苹果、华为这种友商相比,和一般大学里的实验室相比也存在差距。当然,想把这个东西变成一个生产力工具让数以万计的人使用,远远超过了一般个人,甚至是绝大多数公司的能力。

这个机器在推广时,还有一个直接用容器跑安卓虚拟机,玩游戏的功能。目前只是粗略试了一下,总体上并不是完整的解决方案,不过我也没有测试它的效率。

关于大模型运行也是类似的问题,它带了一个厂商提供的 llama-server ,但我随便找了一个千问运行就直接报错 unknown model architecture: 'qwen3' ,最新的 llama.cpp 当然是可以的。实际的性能,因为没有 GPU 支持, 32B Q8 这个规模的只有每秒几个词元。

当然,目前一般的开发环境和日常办公肯定是没有问题的。但是想日后维护升级就不同了。不过很多开发版性质的产品都有这个问题。明年看看自己有没有空,想不想折腾吧。内核与 MESA 对 Immortalis G720 的支持应该是会在明年。到时状况应该会好不少。但是厂商会不会跟进,在主线版本基础上做开发其实是一个大问题。

最后再来点主观评论,如果它用低一档的,集成 Mali 显核的芯片,我觉得在生态上更容易利用开源社区的资源,做出一个更成形的产品。当然,这个其实日后我再想尝试类似方案产品的话,我自己的考虑。玩 Linux 目前总体上还是做垃圾佬省心。