---
layout: post
title: Linux ARM生态评测
tags: [Linux, ARM, 树莓派]
---

  看看现在的Linux ARM能不能替代macOS？<!--more-->    

# 起因
  我的树莓派4B从好久之前就一直吃灰了，之前用它装过[Ubuntu](/2023/09/24/rpi-ubuntu.html)，[openFyde](/2023/12/10/openfyde.html)，[Windows 11](/2023/05/22/rpi-win.html)和[piCore](/2021/01/17/picore.html)，但都因为性能和使用体验不佳放弃使用了。不过随着华为的某系统发布以及高通出的某个笔记本电脑用处理器，我对运行在ARM指令集CPU系统的生态产生了一些兴趣。macOS的生态之前我已经[体验](/2023/02/03/mbp.html)过了，是符合预期的不错。[Windows on ARM](/2023/05/22/rpi-win.html)虽然在树莓派上装了试着用了但是没驱动太卡了，其实没有体现它怎么样，要想体验还得整个高通CPU的拿来试，不过我手头没有所以没办法😂，那在树莓派上的Linux系统我也试过不少，有什么测试的必要吗？其实还是有的，因为之前我测都是当服务器测的，虽然也测了[openFyde](/2023/12/10/openfyde.html)（ChromeOS），但是生态其实挺垃圾的，虽然能用Linux软件但是因为是容器卡的不能用。所以这次我想装树莓派官方的Raspberry Pi OS完整版来测测现在Linux ARM生态能不能和我现在用的macOS比拼。   
  另外前段时间树莓派出了新的连接方式：Raspberry Pi Connect，可以登录树莓派官网的账号然后用浏览器操作图形界面或者命令行，可以自动判断使用P2P模式还是中继模式，而且可以根据浏览器界面大小自动修改树莓派的分辨率，体验还不错。   

# 与我Mac上软件的替代测试
## 原生应用测试
  既然是和macOS相比，那就看看我现在用的软件是不是能在树莓派上原生运行吧。首先是常用的国产软件，比如WPS Office，钉钉，微信，QQ。因为UOS的缘故，大多数常用的国产软件都有Linux ARM的版本，首先钉钉和QQ在官网上可以直接下载deb包安装，运行也没什么问题，功能完全一致，而且也没有卡到不能用的程度，对于树莓派来说已经很让我满意了。WPS Office和微信稍微有点麻烦，官网并没有提供安装包，但是我找到一个不错的国产Linux应用商店——[星火应用商店](https://github.com/spark-store-project/spark-store)。里面有不少Debian系各种CPU架构的国产软件，官网上没有的也能在这里下到，让我很满意。不过里面有好多Wine的应用……我不是特别想用，而且不知道它是怎么处理的，会不会一个软件安装一个Wine？所以就先不考虑了。随后我在里面找到了WPS Office和微信，安装试了一下，微信看起来还不错，至少小程序，视频号之类的都能用（反正是基于浏览器的，好适配🤣），WPS Office虽然能用，但是刚安装是英文版的……而且中文切换找了半天找不到😅，后来找了半天才找到……不过安了WPS Office，应该再配个中文输入法才对，我试着安装了搜狗输入法，但是安装好之后不能用，Fcitx不停崩溃重启，不知道是什么问题，换了谷歌输入法之后就正常了。   
  除了常用的国产软件之外，还有一些我平时开发用的软件，这些软件对Linux ARM的支持也挺不错的，可能国外也是比较支持Linux ARM生态吧（大概是因为Chromebook？）。我平时用的VSCode当然是有的，不过数据库管理和接口调试我在Mac用的是[Sequel Ace](https://github.com/Sequel-Ace/Sequel-Ace)和RapidAPI，这两个是专为macOS设计的，当然没有Linux版。但是这些是有替代品的，我找了一下，数据库我用的是Navicat Premium Lite，它有原生Linux ARM版，但是是AppImage……感觉不是很舒服。接口调试的话用的是Apipost，估计就是因为用的Electron的所以才愿意整跨平台的版本吧。Mac上有时候我还会远程桌面到Windows主机，这个树莓派也可以，有个叫[Remmina](https://gitlab.com/Remmina/Remmina)的客户端可以用，效果也还不错，如果不是局域网连接还有[RustDesk](https://github.com/rustdesk/rustdesk)可以用（虽然不知道为什么中文会变方块😂）。另外还有用来测试的网站环境，这个倒是比macOS更简单，毕竟Linux有那么多面板，也不需要敲命令安装，而且还可以运行Docker，我这次用的是1Panel，使用基本上没什么问题，还能安装杀毒软件😁（虽然MongoDB安装会因为缺少指令集报错用不了，但是我用不着🤣）。   
  除此之外还有虚拟机，这个在之前Ubuntu Server上已经[测过了](/2023/09/24/rpi-ubuntu.html#%E6%95%B4%E7%82%B9qemu-kvm-windows%E8%99%9A%E6%8B%9F%E6%9C%BA)，不过那时候是无头模式，现在可以在图形界面用virt-manager来管理了，之前安装了Windows，这次就安装个FreeBSD吧，安装起来也不复杂，和其他虚拟机管理软件一样，而且还能用虚拟串口连接，感觉还挺有意思的。安装好之后上网之类的都没问题，和在macOS上用UTM的区别可能就只有在macOS上可以把Rosetta 2穿透到Linux下使用吧。   
  另外还有游戏，专门为Linux ARM设计的游戏估计没几个，不过想玩肯定是有的，比如用Ren'Py引擎的游戏以及在浏览器上的游戏，其他引擎似乎没什么资料……但没事，在macOS上也是用的iOS版的模拟器，后面讲到的安卓也可以运行模拟器😁。我之前也研究过[在macOS上玩Ren'Py引擎的游戏](/2024/01/20/renpy.html)。不过Ren'Py默认发行是不支持Linux ARM版的……但是可以另外下载SDK来支持。然而有一个问题，只有新版的SDK才支持64位的ARM，旧版虽然有树莓派支持，但可能是因为旧版树莓派只有32位的系统所以没有64位ARM的运行库😂。我看了看我电脑上之前下的Ren'Py引擎的游戏，找了一个《[Sakura Isekai Adventure](https://store.steampowered.com/app/2646050/Sakura_Isekai_Adventure/)》游戏看了一下Ren'Py的版本还可以，SDK也能正常的在树莓派上运行，试了一下感觉效果还不错，运行的方法是“SDK所在目录/renpy.sh 游戏所在目录/Game”，之前没加Game不停报错😅，文档写的也不清晰，测了半天才测出来……那对于旧版的就不能玩了吗？估计是可以但可能要自己编译很麻烦，反正源代码都有。不过有个例外，我本来想试试《[Katawa Shoujo](https://www.katawa-shoujo.com/)》，它用的Ren'Py很旧，但是因为是同人类游戏所以有人做了重制版《[Katawa Shoujo: Re-Engineered](https://www.fhs.sh/projects)》😆，这个是用的最新版的Ren'Py，增加了新的特性和各种BUG，但是正因如此，可以简单的在树莓派上运行了🤣。   
  至于其他关于AI方面的比如LLaMA和Stable Diffusion，这些毕竟是开源的，Linux ARM当然可以运行，只不过树莓派的GPU不能用来加速，运行会很卡而已，生态方面是没问题。   
## 安卓软件测试
  既然macOS可以原生运行iOS软件，那对于Linux来说自然应该对比一下原生运行安卓软件了。关于安卓软件我之前在Ubuntu Server上已经测了[Waydroid和redroid](/2023/12/24/android.html)。但毕竟当时是在无头模式下测的，没有图形界面，现在有了图形界面可以再测一下。安装除了要挂梯子下载镜像之外没什么问题，但是打开的时候不知道为什么只会黑屏……后来搜了一下，执行“waydroid prop set persist.waydroid.multi_windows true”再重启就没问题了。虽然安卓软件比iOS的要更多，不过毕竟树莓派的性能想玩手游还是有点勉强，当然这次测的是生态，所以还是完全没问题😁。   
## 转译应用测试
  既然macOS有Rosetta 2可以运行x86架构的软件，那Linux ARM当然也不能少，这个方案比较多，有QEMU，Box86/64还有ExaGear，不过听说ExaGear性能相对更好一些，那这次就测这个吧。   
  现在ExaGear已经被华为收购了，想要下载的话在[华为源](https://mirrors.huaweicloud.com/kunpeng/archive/ExaGear/)里就能下到，我装的是4.0.0的，因为4.1.0似乎要自己配置镜像太麻烦了所以就没用。安装很简单，直接把对应目录的deb包安装了就可以，安装好之后就可以执行“exagear”进到转译后的Bash中，不过和macOS有个区别，macOS的程序都是通用二进制文件，里面包含了ARM架构和x86架构的程序，所以可以无缝衔接，Linux当然没有这个特性，所以ExaGear是映射到它自己的镜像里面的，各种包还得另外安装。   
  那这个东西装什么比较好呢？我发现我的Mac上有个网易云音乐，在Linux上似乎没有ARM版的，在星火应用商店也只有Wine版。但是它之前和深度合作出过Linux版，现在估计谈崩了从官网上消失了，但是原来的链接还在可以下载。具体的流程在[CSDN上有篇博客](https://blog.csdn.net/qq_35533121/article/details/128237853)有写，试了一下可以安装，而且运行效率比我预期高不少，最起码点击不算卡，而且听音乐也没有卡顿的感觉，感觉算是相当不错了。   
  其实我也挺疑惑Rosetta 2和ExaGear的效率怎么样，我看网上有篇文章[Comparing Huawei ExaGear to Apple's Rosetta 2 and Microsoft's solution](https://habr.com/en/companies/huawei/articles/577206/)说ExaGear效率最高，Rosetta 2有硬件加速都比不上，说实话我是不信的，要是那么厉害Eltechs怎么可能停更？而且全网就这一篇文章，很难不相信是华为员工写的软文😅，我自己手头没有合适的设备也不好测，不知道有没有大佬来打假。   
  那运行转译的Linux软件没问题之后再测一下转译Windows应用吧，我的Mac上可是有Whisky的。那对树莓派来说就是ExaGear+Wine了。安装很简单，直接在ExaGear的shell里用apt安装就行，安装好之后就可以用“exagear -- wine ./windows程序.exe”来运行了。我在我的Mac上找了一个用Godot引擎写的小游戏，放上去试了一下，居然可以运行，而且也是比想象中的流畅，不过我玩的本来就是画面变动少的游戏也不会卡到哪里，不过能在接受范围内有反应已经很不错了，虽然没Mac反应快但毕竟测生态和芯片本身速度无关，树莓派的性能当然比不了Mac，能玩我已经很满足了。   
  其实如果论游戏的话在x86平台毕竟有SteamOS的先例，用ExaGear转译然后加上Proton如果芯片性能足够的情况应该是能玩不少游戏的。   

# 其他实验
  在玩树莓派的时候我又想玩[电台](/2022/03/27/radio.html)了🤣毕竟这是树莓派唯一的优势，能用到它的GPIO接口，不然真的就是性价比不怎么样，性能还差的ARM迷你主机了。这次我多试了一下怎么样把图形界面上的声音通过广播传出来，如果可以的话树莓派离得比较远而且不用蓝牙耳机的情况下也能听到声音了。不过我不太清楚Linux中的声音是怎么合成的，我搜了一下似乎是用PulseAudio合成的，用“pactl list sources”命令就可以列出相关的设备，在我的树莓派上可以看到是叫“alsa_output.platform-bcm2835_audio.stereo-fallback.monitor”，然后用
```bash
sox -t pulseaudio alsa_output.platform-bcm2835_audio.stereo-fallback.monitor -t wav - | sudo ./pi_fm_adv --audio - --freq 87.0 --power 7 --gpio 4 --gpio 20 --gpio 32 --rds 0
```
  命令理论上就可以发射电台了，但实际上不知道为什么虽然能听到声音，但是声调变的很高，而且一卡一卡的，根本不能听，而且进程会卡住，要用kill -9才能结束😓……   
  不过这个就和Linux ARM生态无关了，这是只有树莓派才有的特殊功能，其他电脑估计做不到这一点😆。

# 感想
  这次测下来感觉Linux ARM好像还挺强的啊，基本上我Mac上装的东西都有，而且功能也挺齐全，从原生应用的角度来看可能比Windows on ARM还多。看来除了易用性之外Linux ARM生态已经很成熟了啊，这么来看Mac就只剩下美观、易用性和芯片性能强大这些优势了啊😂。