gf 学校的编程练习课用 Minecraft PI edition 作为环境。老师给每个组发了一个树莓派跑这个 MCPI 游戏,网线连接笔记本,在笔记本上跑控制算法。
因为每组一个树莓派,想测试就得跟大伙错开时间,很不方便。同组有的人就在自己的 linux 机器上安装了 MCPI ,方便自己测试。gf 的用的 M1 MBA ,没找到移植版。加上连接网线还要加扩展 hub 等玩意,相当的麻烦。我们就在琢磨怎么能在本地 MBA 跑一个 MCPI
一开始觉得这玩意既有源码又是 arm 原生应用,装个 arm 版的 linux 虚拟机,在里面跑 MCPI 就是了。
结果安装的 ubuntu arm64 倒是正常跑起来了,MCPI 网上也有人编译了 arm64 的 AppImage 。但是运行时提示 MCPI 引用了很多 arm32 的 so 库,apple silicon 只支持 arm64 ,无法运行。
到这里事情就卡住了。难不成真的要用 QEMU 来完全模拟 linux 加 MCPI ,就因为几个 arm32 的库么?
1
Puteulanus 236 天前
整个便宜的服务器跑,阿里腾讯几十块一年的,阿里云是不是学生还有免费的
|
2
deorth 236 天前 via Android
啥学校这么爽
|
3
moudy OP @Puteulanus 我自己就有一个树莓派做个人服务器,要是没法本地模拟,就只能辛苦它了
|
4
gainsurier 236 天前 via iPhone
qemu-user-static
|
5
westerndream 236 天前
海鲜市场几十块钱收个能刷 ubuntu 的机顶盒,4c1g 或者 2g ,arm 和 aarch64 都可以跑
|
6
tianshilei1992 236 天前
建议在一台 x86_64 系统上运行 QEMU ,在 Apple Silicon 上面运行 QEMU 真的是屎一样的感觉…
现在云服务提供商好像不给提供 32-bit 系统吧… 我之前为了调一个 x86 的 bug 也是吃屎了一样,我的主力机是一台 Mac Studio ,那跑起 QEMU 来…最后还是在一台 6 年前的 Intel NUC 上面跑 QEMU + Debian ,有硬件加速跑起来和真机速度差不多。 |
7
JensenQian 236 天前 via Android
买个 n100 小主机,五百块
|
8
Chihaya0824 236 天前
可以试一下先把 arm32 加到 apt 里
然后再把缺失的 so 库全部都装好,应该就可能可以运行了? 类似的参考这里: https://askubuntu.com/questions/1090351/can-i-run-an-arm32-bit-app-on-an-arm64bit-platform-which-is-running-ubuntu-16-04 |
9
moudy OP @Chihaya0824 我理解这个问题这个缺库,是库代码不能被 cpu 执行。因为 M1 无法执行 arm32 的机器码。而树莓派的 cpu 同时支持 32 位和 64 位指令集
|
10
moudy OP @tianshilei1992 你说的是 qemu 在 M 系列上执行 x86 代码吧。这里是想找个办法在 m 系列上执行 arm32 的代码
|
11
tianshilei1992 236 天前 via iPhone
@moudy 可以开启硬件加速的话应该还好 不能的话是一样的
|
12
daveh 236 天前 via iPhone
UTM
|
13
Chihaya0824 236 天前
|
14
tool2d 236 天前
xcode 早就不支持 arm32 了,我也不知道能不能自己加进去。
还是安卓好,没那么激进。 |
15
Chihaya0824 236 天前
不好意思,看错了
我 MCPI reborn 和 MCPI 不是一个东西,看了下好像 MCPI 并没有 source code ,所以上面应该是行不通的 |
16
vicalloy 235 天前
如果不介意速度慢可以用 docker 创建个 linux/arm32 的容器跑。
docker 底层用的 QEMU ,速度会非常慢。 |
17
MaxLi77 235 天前
再买一个呗,有你折腾的时间早就挣回来了,大不了用完了出掉,也不会损失太多
|
18
keakon 235 天前
试了下用 docker 是可以运行的,但是好像要自己编译 libpng12.so.0 ,其他库基本上可以 apt-get
https://hub.docker.com/r/arm32v7/ubuntu |
19
icyalala 235 天前
苹果很早就在硬件层面完全抛弃 arm32 了,话说 arm32 和 arm64 相差太大,完全可以当做两套不同的指令集。
|