Infinite Mac 新增 BeOS:可在浏览器中运行多个 BeOS 版本
Infinite Mac: BeOS
Infinite Mac 现已支持在浏览器中运行多个 BeOS 版本,安装镜像与 Mac 版本对等,可即时启动、使用预装软件、插入 Internet Archive 的 CD-ROM 并在 Saved HD 保存工作。为提升 BeOS 兼容性,作者向 DingusPPC 模拟器上游提交了多项修复,并称其可能是唯一能运行 PowerPC 版 BeOS 的模拟器。
tl;dr:你现在可以在浏览器中通过 Infinite Mac 运行许多 BeOS 版本,这是我的网站,你可以在其中体验 1984 年至 2005 年的 Macintosh 电影宇宙。这些安装与它们的 Mac 表亲完全对等:你可以即时启动它们(大磁盘以流式传输方式加载),使用 Infinite HD 中预装的软件,插入来自 Internet Archive 的 CD-ROM,并将你的工作保存在“Saved HD”驱动器上。
BeOS 是一个专注于多媒体、多任务和多线程的操作系统,最终被移植到 90 年代中期的 Power Macintosh 上。它给 Mac 社区的许多人留下了深刻印象,包括 Apple 本身,后者曾考虑收购创建它的公司 Be。如果你一直关注 Apple 寻找下一代操作系统的传奇故事,这能让你看到那条未走之路是什么样子。
让 BeOS 运行起来
在 Infinite Mac 上完成上一个颇为复杂(但仍然令人满意)的项目后,我在寻找一个更快的成果。BeOS 已经在我的关注范围内有一段时间了,而且(与 A/UX 不同)我与它有个人联系:我记得在秋叶原看到过一台 BeBox,用 BeView 让我的 Mac 装扮成它的样子,最终在我的 Power Macintosh 8500 上双启动 BeOS。我已经集成的模拟器 DingusPPC 在运行 BeOS 方面进展良好,所以将它添加到网站似乎主要只是准备一些额外的磁盘镜像。
起初,事情似乎如我所希望的那样简单直接;我添加了一个 Power Macintosh 7300 配置(官方支持的 Power Mac 之一),找到了一个安装 CD,制作了一个磁盘镜像,然后就运行起来了。但随着我更多地使用它并开始安装更多版本,我开始发现许多小 bug 和边缘情况:
- 由于 ADB 模拟中的一个 bug,BeOS 引导加载程序认为所有修饰键都被按下了;这使得它每次都显示(丑陋的、类似 PC BIOS 的)分区选择屏幕。
- 更改屏幕色深时,有两个硬件组件需要被通知:视频控制器和数模转换器。DingusPPC 一直意外依赖于 Mac OS 发送这些通知的顺序;BeOS 恰好做出了相反的选择,最终会导致显示损坏。
- 早期版本的 BeOS 以小端模式进行视频内存更新1;DingusPPC 缺少对该硬件能力的支持。
- 较晚版本的 BeOS 可以挂载 HFS 分区,但对我通过
machfsPython 库生成的卷遇到了问题。结果发现 BeOS(正确地)在如何填充某些数据结构方面比 Mac OS 更严格。 - 以及 其他 等等——过去一个月我向上游提交到 DingusPPC 的大多数提交都是为了追求更好的 BeOS 兼容性。

两全其美?
SheepShaver,一款至今仍在维护的 Power Macintosh 模拟器(Infinite Mac 也内嵌了它),起源于 BeOS。很大程度上是为了体验又一层“盗梦空间”式模拟的乐趣,我想确认它也能正常工作。结果发现,它同样需要一个兼容性修复——它依赖于 ROM 映射到物理内存地址时的一个边缘情况,而 DingusPPC 并未准确建模这一点。
这些 bug 修复大多有一个共同模式:DingusPPC(以及 Infinite Mac)主要专注于运行 Mac OS,因此无意中依赖了它的怪癖或实现选择。加入一个独立开发的操作系统后,新的代码路径被触发,最终提升了模拟硬件的准确性。需要说明的是,DingusPPC 开箱即用已经相当接近完美;感谢它的维护者。我相信,经过这项工作,它是唯一2能运行 PowerPC 版 BeOS 的模拟器。我也希望这能有助于启动像 MkLinux(我同样对它留有记忆)和 Rhapsody 这样的其他操作系统。
在 Infinite Mac 这边,有一些明显的变化,比如我的自定义控件采用了“BeOS”外观,以及为软件库收集软件。我还需要在磁盘上叠加一些动态生成的内容,让操作系统预选一个与浏览器窗口匹配的屏幕分辨率(类似于为 A/UX 所做的)。一个 AI 代理(对我来说仍然是 Codex)再次对这类繁琐的逆向工程任务很有帮助:观察到操作系统在磁盘上存储了一个包含屏幕尺寸的文件是一回事;能够复现其所有细微之处则是另一回事,尤其是随着后续版本格式发生了变化。
Developer Release 8.2 是 Power Mac 上的首个 BeOS 版本,它带有一个时间炸弹,使其在 1997 年 4 月 1 日之后无法启动。这不仅仅是为了制造紧迫感;它附带了一个 Be 无法无限期分发的授权字体渲染器。DR8.3 解决了这个问题,但为了让这个值得注意的首个版本能够启动,我最终确实依赖了自定义日期支持,在选择该磁盘时硬编码一个可用的日期。
BeOS 印象
虽然我在 BeOS 当红时曾试驾过它,但我不记得用得足够多,以至于除了“这很快;我怀念我所有的第三方软件”之外还能形成什么看法。About This Particular Macintosh 确实有当时的报道,包括 Be 在波士顿 Macworld Expo 的首次和第二次亮相,以及对 R3 和 R4.5 的评测;它们读起来很有趣。Be 自己发布的这个视频也演示了他们所认为的其优势。
以2026年的眼光来看,它的速度依然让我印象深刻——启动和使用都很快,尤其是与同期那些功能少得多的Mac OS版本相比(例如,实时窗口拖动直到Mac OS X才出现)。POSIX子系统和类Unix shell也感觉很现代(不像A/UX的)——我用终端四处探索毫无困难。创新之处也很多,尽管其中一些(带有属性和实时查询的BFS)比其余部分(replicants是小组件的前身,但我想不出它们有什么用处)更有趣。
它给人的感觉也是一个面向开发者、仍在建设中的系统:许多内置应用都是技术演示(不过谁不喜欢犹他茶壶呢),而同时期的Be主页直接链接到开发者发行说明,并讨论CodeWarrior版本和缺陷跟踪器的访问权限。这种未完成的状态也延伸到了第三方软件——我在这张Amiga杂志光盘上偶然发现了一些BeOS软件,其中大多数都带有“0.1版”的感觉,无论是字面上还是比喻意义上。公平地说,我确实找到了一些更成熟的软件,例如来自前ClarisWorks团队的Gobe Productive。如果你愿意尝试,这个软件和其他软件都在Infinite HD上(最好在较晚的操作系统版本中)。
这个界面在当时看来很新颖,不过我想知道它能否经得起时间的考验3。独特的标签式窗口标题看起来很整洁,但可拖动区域变小了,所以每次想移动窗口时我都得更加费心。而且使用手形作为默认光标让点击感觉不如传统箭头精确(“手指”上到底哪个像素是热点?)。UI的其他部分感觉像是一个不完全协调的Windows/Mac混合体,有可以模拟开始菜单的Deskbar4、菜单项上的Alt键加速器,但也有弹簧加载文件夹和空间式的Finder Tracker。
说到Tracker,我之前没有意识到Be已经将其开源(甚至整合了开源版本的更改)。这大约是在Be转向互联网设备的时期——如果只暴露一个全屏浏览器应用,就没有必要在文件管理器上投入工程资源了。这篇采访Tracker开发者的文章有更多背景故事。
相比之下,NeXTStep感觉更成熟。它经历了类似的一些动荡(从专有硬件到现成PC,公司战略转变),但也许因为它有更多时间,它处理事情的方式更优雅一些。例如,NeXT支持可在68K、Intel、PA-RISC和其他架构上运行的“胖”二进制文件。在BeOS上,它们必须是单独的可执行文件,让用户选择运行哪一个,并使分发复杂化(这让我更难找到可包含在Infinite HD中的软件)。更糟糕的是,你还必须在CD-ROM上有并行的磁盘分区:BFS使用主机字节序,因此由PowerPC安装写入的磁盘无法被Intel读取,反之亦然。但我对NeXT的偏爱可能源于我知道苹果最终选择了哪个操作系统。
其他站点改进
距离上次更新才过了没多久,但我还是挤出时间做了几项体验优化。现在你可以对模拟机的屏幕截图和录制视频(带声音)。这为你提供了一种高保真的图像内容捕获方式,因为它直接导出了原本会显示在屏幕上的内容。
我还扩充了操作系统 CD-ROM 的收藏,加入了 Rhapsody 和 Mac OS X 开发者预览版等条目。虽然它们目前还只是愿景(DingusPPC 尚无法运行它们),但它们确实满足了我的收藏癖。这些 CD 已镜像到我自己的 Cloudflare R2 存储桶并由其提供服务——Internet Archive 是一个了不起的资源(你可以捐款给他们),但从它那里流式传输已变得越来越不稳定。我不想加剧这个问题,而且多亏了我的赞助者,我负担得起提供几 GB 的服务。
至于接下来,既然这条另类的 Mac 时间线已经覆盖,或许是时候探索一部前传了。
来源:Hacker News · blog.persistent.info
