摸鱼小电脑能跑 MacOS 了,就是慢到怀疑人生

最近看到了 pico-mac-nano 项目,知道了 umac 这个模拟器,想着我的摸鱼小电脑终于可以跑 Mac OS 啦~

关于摸鱼小电脑可以看之前的分享《摸鱼小副屏,把它变成摸鱼小电脑~》。

之前已经尝试过用 qemu 运行 Mac OS 9,但是失败了,一直启动不起来,可能是系统资源不够,这次用 umac 模拟器来跑 System 7.0 总归应该没啥问题吧 🙈。

然后尝试了一下,果然还是可以的,能在香橙派 H616 上通过 umac 把 System 7.0 跑起来,但是速度相当相当慢,慢到怀疑人生。

有多慢,可以看看视频……

不过也算是完成一个小小目标了,记录分享一下过程,有想玩的朋友可以参考一下。

编译 umac 模拟器

umac 项目介绍

项目地址:https://github.com/evansm7/umac

项目介绍:

This is a minimalist Apple Macintosh 128K/512K emulator. It uses the Musashi 68K interpreter and lashes the absolute minimum in hardware emulation around it so as to boot and run basic apps.

umac 模拟了 68K CPU,可以支持 Mac OS 的版本最高到 System 7.5.5,大部分应用程序都可以运行。

修改 umac 代码

umac 默认编译设置是在系统中以窗口模式运行的,为了让 umac 在 Orange PI + 640x480 的屏幕上全屏运行,让摸鱼小电脑更像是原生运行 Mac OS 的,需要改一下源代码中的配置。

要修改的参数代码文件路径是 umac/src/unix_main.c

调整 DISP_SCALE

默认的 Scale 是 2,会导致以窗口运行的时候使用 2 倍分辨率,这里要改成 1。

run-macos7-on-orangepi-2

修改为全屏运行

为了让摸鱼小电脑更像一个完整的 Macintosh,需要把 umac 的窗口变成全屏窗口,这个需要在创建窗口时指定全屏参数。

run-macos7-on-orangepi-3

将上面代码中的最后一个参数 0 修改为 SDL_WINDOW_FULLSCREEN 就可以以全屏模式运行了。

后来反应过来似乎改成全屏运行就不用修改 DISP_SCALE 了,不过改都改了也不影响啥,就放着了 🙈。

编译 umac

最后一步编译 umac,这里面需要注意提前准备好编译环境,基本上使用 apt install build-essential libsdl2-dev 就能安装上大部分依赖,实在少了啥依赖,也在碰到错误时使用 apt 安装就行了。

编译 umac 命令:

MEMSIZE=4096 DISP_WIDTH=640 DISP_HEIGHT=480 make

这里需要特别指定一下 MEM_SIZE 变量,要不然在运行 System 7.x 的时候会跑不起来,可能高版本的 Mac OS 对内存要求更高?

编译好 umac 就可以准备 Mac OS 的系统镜像来启动了。

准备 Mac OS 7 镜像

毕竟香橙派的性能还是有点弱,准备磁盘镜像的事还是先在电脑上做好吧。

可以用 BasiliskII 这个模拟器来生成一个 Mac OS 7 的磁盘镜像,到时候 umac 运行的时候直接使用就可以了。

BasiliskII 模拟器

下载地址: https://www.emaculation.com/forum/viewtopic.php?f=6&t=7361

下载镜像和 ROM

注意 BasiliskII 需要使用 Performa ROM 版本的 ROM,Mac OS 镜像可以使用 Apple Mac OS 7.0 (Golden Master) (ISO)

下载地址:

执行安装

在电脑上配置好 BasiliskII 模拟器之后,就可以将 Mac OS 7 安装到一个磁盘镜像文件上了。

run-macos7-on-orangepi-4

run-macos7-on-orangepi-5

运行 Mac OS 7

把镜像、ROM、umac 都准备好,就可以使用下面这个命令来启动 Mac OS 啦,效果参考最开始的视频。

./umac/main -r 1986-03\ -\ 4D1F8172\ -\ MacPlus\ v3.ROM -d mac7.dsk

PS. 启动可能需要花个几分钟 😂。

参考资料

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>