MacintoshPi
MacintoshPi是一个小型项目,允许在Raspberry Pi上运行全屏版本的苹果公司的Mac OS 7、Mac OS 8和Mac OS 9,具有声音、活跃的互联网连接和调制解调器模拟功能。所有这些都无需X.org管理器,只需一个多媒体SDL2库,并从CLI / Raspberry Pi OS (Legacy)运行。这使得模拟器可以充分利用Raspberry Pi的性能,使其更加稳定,并与其他复古软件结合使用更加实用。安装只需在一个干净的Raspberry Pi OS (full) Legacy上运行一个脚本,然后等待约两小时编译和安装软件包。此外,通过项目中包含的文档,可以在双启动模式下放置最快的(裸机)Commodore 64/128/PET模拟器BMC64,从而在一张SD卡上构建一个有趣的复古软件包。整个MacintoshPi项目可在Raspberry Pi Zero 2 W、2、2B、3、3B、3A+、3B+上运行(目前不支持版本4)。
以下是一个简短的视频片段,展示了MacintoshPi的功能:
更长版本的视频可以在这里找到。
项目组件
该项目包含以下用于Raspberry Pi的自动编译和安装bash脚本:
- Macintosh 68K模拟器**Basilisk II**,支持Mac OS 7(System 7.5.5)和Mac OS 8。
- PowerPC模拟器**SheepShaver**,支持Mac OS 9。
- 开发库**SDL2**,旨在提供对音频、键盘、鼠标、游戏手柄和图形硬件的低级访问。
- Commodore 64/128/PET模拟器**VICE**。
- MacintoshPi虚拟调制解调器,使用**tty0tty和tcpser**项目,与上述两个Apple和Commodore产品的模拟器以及Raspberry Pi OS本身一起运行,还允许任何原始终端复古软件连接到现代telnet BBS。
- CD-ROM、DVD-ROM模拟器**CDEmu**,允许在Raspberry Pi OS下挂载CD镜像(iso、toast、cue/bin、mds/mdf等)- 与BasiliskII和SheepShaver模拟器一起运行,也可在Raspberry Pi OS上运行。模拟器已自动配置以支持该虚拟CD-ROM驱动器。
- 一致的**MacintoshPi启动器**,可以在不同分辨率下运行所有这些系统(重启后),具有不同配置、自动启动支持和各种启动提示音。
- SyncTERM - 一个用于从Raspberry Pi OS连接BBS的应用程序,与SDL库一起编译。
- 有关如何在双启动模式下运行Raspberry Pi OS和**BMC64**(Raspberry Pi最快的Commodore模拟器,裸机/低延迟模拟器)的信息。
Mac OS镜像已预先配置以支持在线连接。
Apple-1、Apple ][、Altair和IMSAI模拟器已移至新的DinosPi项目。
特别感谢Christian Bauer和kanjitalk755。
安装
该项目必须安装在干净的完整Raspberry Pi OS(oldold Legacy)Buster映像2022-04-04-raspios-buster-armhf.img.xz上 - 你必须切换到命令行或将系统启动设置为CLI(开始 -> 首选项 -> Raspberry Pi配置:选择To CLI和Wait for network)。安装过程需要至少16 GB的SD卡。
安装整个MacintoshPi软件包只需运行单个命令./build_all.sh
- 所有依赖项和所需软件包将自动安装:
git clone https://github.com/jaromaz/MacintoshPi
cd MacintoshPi
./build_all.sh
# 就是这样 - 现在你可以运行,例如,Mac OS 9:
mac os9
编译和安装软件包的过程可能需要约两个小时。
这些子项目中的每一个都可以通过运行相应子项目目录中包含的编译和安装脚本来单独安装。安装脚本必须以pi
用户身份运行。
MacintoshPi项目组件的详细描述
Basilisk II(Mac OS 7和8)和SheepShaver(Mac OS 9)
该脚本下载启动Mac OS所需的所有文件 - ROM、系统镜像,并创建配置文件。安装时,/home/pi/Downloads
目录将在Apple桌面上显示为Unix
目录 - 文件可以在这两个资源之间双向复制,但应用程序不能直接从该目录启动。此外,还编译了所谓的NetDriver,允许从虚拟化的Apple系统进行完全的在线访问。
到目前为止,全屏模式的Mac OS 9(没有不必要的窗口管理器)在Raspberry Pi上还不可用。这可能是第一个允许在全屏模式下使用Mac OS 9和SDL2的实现,具有声音和在线连接功能 - 甚至在小型Raspberry Pi 2W上也可以运行。
每个系统必须使用适当的命令启动:mac os7
、mac os8
或mac os9
。可以通过在启动相关系统的命令末尾添加图像文件名来将额外的.img
或.dsk
文件添加到启动的系统中,例如
mac os9 demo.img
可以使用键盘组合CTRL+SHIFT+ESC停止Basilisk II和SheepShaver模拟器。这会立即返回到命令行。在Mac OS 9中,COMMAND键通过左ALT键获得,在Mac OS 7和Mac OS 8中通过CTRL键获得。 有关这些模拟器的更多信息,请访问BasiliskII和SheepShaver网站。
VICE
编译 VICE Commodore 模拟器的脚本,可用于将模拟的 Commodore 连接到现代 BBS。它允许下载文件,这些文件可以在同一台 Raspberry Pi 设备上使用,但在双启动安装的快速 BMC64 模拟器上使用。将 BMC64 分区安装到 rootfs 后,可以直接从 BBS 下载数据到虚拟驱动器,然后在 BMC64 中自动可用。Raspberry Pi 上的 VICE 模拟器非常慢,因此建议对更高要求的应用程序使用 BMC64 模拟器。有关 VICE 模拟器的更多信息,请访问项目网站。
MacintoshPi 虚拟调制解调器
一个在 Raspberry Pi OS 中编译和安装虚拟调制解调器的脚本,允许使用上述 Basilisk II、SheepShaver 和 VICE 模拟器以及 Raspberry Pi OS 本身启动的任何终端软件连接到现代 telnet BBS。
MacintoshPi 虚拟调制解调器 由 systemd 控制,使用 tpcser 软件,通过 tty0tty 项目写入虚拟设备 /dev/tnt0
。数据可以从另一个虚拟设备 /dev/tnt1
读取,从而成为系统中的虚拟串行端口。调制解调器在系统启动后默认启动。
可以使用标准的 systemd 命令重置或暂停:
sudo systemctl stop vmodem
sudo systemctl reset vmodem
速度(bps)更改选项可以在配置文件中设置,如提供的示例条目所示:
/etc/vmodem.conf
要连接到 telnet BBS,只需在终端应用程序中运行以下命令:
ATDT telnet_url:port
例如:
ATDT borderlinebbs.dyndns.org:6400
虚拟调制解调器与 VICE Commodore 64 模拟器兼容,但只能与使用 x64sc
文件启动的版本兼容。
根据模拟的调制解调器速度
系统 | 最大速度 bps |
---|---|
Commodore / VICE | 2400 |
Mac OS 7-8 / BasiliskII | 28800 |
Mac OS 9 / SheepShaver | 28800 |
Raspberry Pi OS | 38400 |
配置虚拟调制解调器
-
在 VICE Commodore 64 中,运行命令 x64sc 并选择:F12 -> Machine settings -> RS232 Settings: 按下图设置屏幕,同时用绿色标记适当的点:
-
在 Basilisk II 和 SheepShaver 中,配置已在其配置文件中自动完成。在 Apple 终端应用程序中,只需选择标准串行端口和在 Raspberry Pi OS 的
/etc/vmodem.conf
文件中设置的调制解调器速度(默认 2400 bps)。 -
在直接在 Raspberry Pi OS 下的终端应用程序(如 minicom)中,只需指定串行端口:
/dev/tnt1
和/etc/vmodem.conf
文件中显示的速度。
CDEmu
一个编译 CDEmu CD/DVD 模拟器的脚本,允许挂载 iso、toast、cue/bin、mds/mdf 等多种格式的 CD 和 DVD 镜像。该应用程序类似于 Windows 的 Daemon Tools,可与 BasiliskII 和 SheepShaver 以及 Raspberry Pi OS 一起运行。它允许您创建旧 CD-ROM 的镜像,将其复制到 Raspberry Pi,并在 Raspberry Pi 上模拟的 Apple 系统中安装软件。
不再需要将 .toast 文件复制到磁盘镜像或用 Mac OS 软件挂载它们 - 现在您可以在 Raspberry Pi OS 下使用 unar
命令解压 .sit 文件,然后使用 cdload
命令在 Raspberry Pi OS 下挂载解压后的 .toast 文件,并在任何 Mac OS 上像使用普通 CD-ROM 一样使用 CD 镜像。在 CDEmu 中启动的音频 CD 在 Raspberry Pi OS 的图形和文本模式下都能正常运行,但在 Basilisk II 或 SheepShaver 模拟器中声音不工作。有关 CDEmu 的更多信息,请访问项目网站。
最简单的挂载 CD 镜像的方法是使用以下命令:
cdload image.toast
CD 将在虚拟设备中可用:
/dev/sr0
可以使用以下命令从虚拟设备卸载镜像:
cdunload
MacintoshPi 启动器
模拟器的最大性能是在模拟系统的原生分辨率下实现的,即如果我们想在 640x480 分辨率下启动 Mac OS,建议 Raspberry Pi 应该以 640x480 分辨率启动。
启动器的任务是启动给定版本的 Mac OS,如果已经以适当的参数运行,则用分配给特定系统或任何其他定义应用程序的适当屏幕分辨率和位置覆盖 config.txt
和任何其他系统文件,然后在系统重启后立即以新分辨率启动模拟器或应用程序。
包含系统要覆盖的数据的目录名称与 mac
命令后面的参数名称相同,例如 mac os8-480
将以 640x480 分辨率重启 Raspberry Pi OS,然后以该分辨率启动 Mac OS 8,但 mac os8
命令将简单地以最近选择的分辨率启动 Mac OS 8。
每个系统启动时都会播放不同的启动音效 - 根据所选分辨率:Macintosh 128K、Macintosh Classic II、Macintosh Color Classic、Macintosh Performa 520、Power Macintosh 550、Power Macintosh G3 的声音。
启动器还允许使用 mac os7 file.img
等方式将 .img
或 .dsk
文件添加到 Mac OS - 然后将启动相关的 Mac OS,镜像内容将作为额外驱动器出现在桌面上。
SyncTERM
目前这是使用 telnet 协议连接现代 BBS 的最佳应用程序。它使用 SDL 图形库的选项编译,因此在图形模式下使用适当调整的字体而不是系统字体。同样,SyncTERM 不需要 X.org 就能运行,程序本身默认以全屏模式启动。
Raspberry Pi OS 双启动
有关启动 Raspberry Pi OS 与快速 Commodore 模拟器 BMC64 双启动的可能性信息,包含在单独的 README dual-boot 中。
如何安装其他软件
Mac OS 7、Mac OS 8 和 Mac OS 9 的软件可以在以下网站找到:
这些网站可以直接在Raspberry Pi OS的Chromium浏览器中舒适地使用 - 下载的文件默认保存在/home/pi/Downloads
目录中,该目录被配置为本项目中所有Mac OS的共享目录 - 在Mac OS下,它显示为Unix驱动器。
虽然并非每个下载的应用程序都能在Basilisk II或SheepShaver模拟器中运行(例如OpenGL应用程序就是这种情况),但绝大多数应用程序都能正常运行。在下载之前,请确保软件属于abandonware组,或者如果可能的话购买所需的许可证。
根据下载文件的类型,有三种安装软件的方法:
-
下载的文件扩展名为
.sit
,包含.toast
或.iso
CD镜像:在Raspberry Pi OS下使用
unar file.sit
命令解压文件;删除解压后的.toast
文件名中的任何空格(如果有的话),然后使用cdload file.toast
命令挂载.toast
文件。接下来,启动给定的Mac OS版本,从桌面上显示的虚拟CD驱动器安装软件。 -
下载的文件扩展名为
.sit
或.zip
,包含.img
或.dsk
文件:在Raspberry Pi OS下使用
unar file.sit
或unzip file.zip
命令解压文件;删除解压后的.img
或.dsk
文件名中的任何空格,然后使用mac os7 file.img
命令启动给定的Mac OS - 镜像将自动添加到系统中,并在桌面上显示为额外的驱动器。 -
下载的文件扩展名为
.sit
,包含直接用于Mac OS的软件:首先下载Stuffit Expander应用程序的镜像并将其安装在Mac OS中;然后,将原本下载到Downloads目录的
.sit
文件从Mac OS中的Unix目录复制到Macintosh HD虚拟驱动器,并双击该文件以直接在Mac OS中解压。
关于我的Macintosh Classic II
我的MacintoshPi版本由Raspberry Pi 3B+驱动。我在eBay上购买了Macintosh Classic II机箱 - 它完全发黄,但我使用18%的过氧化氢和适当的光照恢复了它的出厂状态。
它的LCD IPS 10.1'' 1024x600px HDMI Waveshare 11870屏幕旋转了180°,这样接线就不会妨碍Macintosh上框。我用3D打印件填充了平面屏幕和CRT形状剩余部分之间的空间,这个设计来自2GuysTek YouTube频道的作者。Waveshare屏幕稍微有点宽,但适当操作config.txt
文件可以实现软件旋转并为每个系统或应用程序精确定义显示的屏幕图像(重启后)。屏幕也太低了,所以我用黑色卡纸填充了空隙,这样这些元素几乎无法区分(看起来像围绕屏幕的框架的黑色背景)。然而,我建议使用不同的、稍大一些的屏幕,然后通过软件减小显示的屏幕图像并确定其适当位置。
键盘和鼠标是Logiteh MK295 Silent Wireless Combo - 它们在风格上只与当时提供的外围设备略有相似,但它们也是无线的,使用单个蓝牙适配器。我添加了两个连接到Raspberry Pi 3B+模拟音频/插孔输入和分配器的扬声器。我将所有这些元素集成在Apple Macintosh Classic II机箱内。
关于这个项目
我已经研究Apple电脑模拟这个主题大约五年了(因为我真的喜欢并欣赏Apple复古系统),这个主题相当复杂:构建正确镜像的问题,为互联网支持配置系统镜像的问题,模拟器的适当配置问题,编译模拟器和(单独的)SDL2的正确选项(因为当然,来自软件包的SDL2在模拟中不起作用),性能问题,正确编译NetDriver的问题,库版本的问题(因为它们必须是遗留版本),最小化鼠标移动延迟的问题,声音问题等等。当然,我说的是初学者会遇到的问题,之后他们会感到沮丧并放弃这些模拟器。既然我在我的Raspberry Pi上解决了所有这些问题,我决定将这个解决方案提供给每个人,这样你只需运行一个脚本就可以毫不费力地在一个包中获得所有三个系统 - 这就是这个小项目的目的。
更多信息(和高分辨率照片)请访问我的网站:https://jm.iq.pl/MacintoshPi
支持
如果你想支持这个项目,你可以向我的PayPal账户转账任何你希望的金额。