Infinite Mac: BeOS
本文为原文前 6,000 字符的节选翻译,完整内容请查看原文。
tl;dr: You can now run many BeOS versions in the browser at Infinite Mac, my site where you can experience the Macintosh Cinematic Universe from 1984 to 2005. The installs are full peers to their Mac cousins: you can boot them instantly (large disks are streamed in), play around with pre-installed software from Infinite HD, insert CD-ROMs from the Internet Archive, and save your work on the “Saved HD” drive.
简而言之:你现在可以在 Infinite Mac 浏览器中运行多个版本的 BeOS。这是我的网站,你可以在这里体验从 1984 年到 2005 年的 Macintosh 电影宇宙。这些安装版本与它们的 Mac 同类产品完全对等:你可以立即启动它们(大磁盘通过流式传输加载),使用 Infinite HD 中预装的软件,从 Internet Archive 插入 CD-ROM,并将你的工作保存在“Saved HD”驱动器上。
BeOS was a multimedia-focused, multi-tasking and multi-threaded OS that was eventually ported to the Power Macintoshes of the mid-90s. It impressed many in the Mac community, including Apple itself, who considered acquiring Be, the company that had created it. If you’ve been following the saga of Apple’s search for a next-generation operating system, this lets you see what the road not taken was like.
BeOS 是一款专注于多媒体、多任务和多线程的操作系统,最终被移植到了 90 年代中期的 Power Macintosh 上。它给 Mac 社区的许多人留下了深刻印象,包括苹果公司本身,他们曾考虑收购创建该系统的 Be 公司。如果你一直在关注苹果寻找下一代操作系统的历程,那么这让你能够看到那条“未被选择的路”是什么样子。
Getting BeOS Running After the last somewhat involved (though still satisfying) project on Infinite Mac, I was looking for a quicker win. BeOS had been on my radar for a while, and (unlike A/UX) I had a personal connection to it: I remember spotting a BeBox in Akihabara, making my Mac cosplay as it with BeView, and eventually dual-booting BeOS on my Power Macintosh 8500.
让 BeOS 运行起来:在 Infinite Mac 上完成了上一个虽然有些复杂(但仍然令人满意)的项目后,我正在寻找一个更快的突破口。BeOS 已经在我的关注范围内有一段时间了,而且(与 A/UX 不同)我和它有个人渊源:我记得在秋叶原看到过一台 BeBox,用 BeView 让我的 Mac 模仿它,并最终在我的 Power Macintosh 8500 上双启动了 BeOS。
DingusPPC, an emulator I had already integrated, was making good progress on running BeOS, so it seemed like adding it to the site would be mostly a matter of preparing some additional disk images. Initially it appeared to be as straightforward as I had hoped; I added a Power Macintosh 7300 configuration (one of the Power Macs that was officially supported), found an install CD, made a disk image, and was up and running.
DingusPPC 是我已经集成的一个模拟器,它在运行 BeOS 方面进展顺利,所以将其添加到网站似乎主要只是准备一些额外的磁盘镜像的问题。起初,它看起来正如我所希望的那样简单;我添加了一个 Power Macintosh 7300 配置(官方支持的 Power Mac 之一),找到了安装光盘,制作了磁盘镜像,然后就运行起来了。
But as I used it more and started to install additional versions, I began to find a lot of small bugs and edge cases: The BeOS boot loader thought that all modifier keys were being held down due to a bug in the ADB emulation; this made it present the (ugly, PC BIOS-like) partition choice screen every time.
但随着我使用得越来越多并开始安装其他版本,我开始发现许多小错误和边缘情况:由于 ADB 模拟中的一个错误,BeOS 引导加载程序认为所有的修饰键都被按住了;这导致它每次都会显示(丑陋的、类似 PC BIOS 的)分区选择屏幕。
When changing the screen depth, there are two hardware components that need to be notified: the video controller and the digital-to-analog converter. DingusPPC had been accidentally relying on the order that Mac OS sent these notifications in; BeOS happened to make the opposite choice and would end up with a corrupted display.
在更改屏幕深度时,有两个硬件组件需要被通知:视频控制器和数模转换器。DingusPPC 此前无意中依赖了 Mac OS 发送这些通知的顺序;而 BeOS 恰好做出了相反的选择,最终导致显示画面损坏。
Early versions of BeOS did video memory updates in little-endian mode; DingusPPC was missing support for that hardware capability. Later versions of BeOS could mount HFS partitions, but they were having trouble with the volumes that I generated via the machfs Python library. It turned out that BeOS was (correctly) stricter than Mac OS about how some data structures should be populated. And so on – most of the commits that I upstreamed to DingusPPC over the past month were in a quest for better BeOS compatibility.
早期版本的 BeOS 以小端模式进行视频内存更新;DingusPPC 缺少对该硬件功能的支持。较新版本的 BeOS 可以挂载 HFS 分区,但在处理我通过 machfs Python 库生成的卷时遇到了问题。事实证明,BeOS 在某些数据结构的填充方式上比 Mac OS(正确地)更严格。诸如此类——过去一个月我向 DingusPPC 上游提交的大多数提交都是为了追求更好的 BeOS 兼容性。
The best of both worlds? SheepShaver, a Power Macintosh emulator that is still around today (and that Infinite Mac also embeds), originated on BeOS. Mostly for the fun of another layer of inception/emulation, I wanted to make sure that it worked too. As it turned out, it also required a compatibility fix – it relied on an edge case of how the ROM is mapped to physical memory addresses that DingusPPC did not accurately model.
两全其美?SheepShaver 是一款至今仍在使用(且 Infinite Mac 也嵌入了)的 Power Macintosh 模拟器,它起源于 BeOS。主要是为了体验另一层“盗梦空间”式的模拟乐趣,我想确保它也能运行。事实证明,它也需要一个兼容性修复——它依赖于 ROM 如何映射到物理内存地址的边缘情况,而 DingusPPC 没有准确地模拟这一点。
There is a pattern to most of these bug fixes: DingusPPC (and Infinite Mac) have been mostly focused on running Mac OS, and thus accidentally became dependent on its quirks or implementation choices. Adding an independently developed operating system to the mix exercised new paths, and ended up improving the accuracy of the emulated hardware.
这些错误修复大多有一个模式:DingusPPC(和 Infinite Mac)主要专注于运行 Mac OS,因此无意中依赖了它的怪癖或实现选择。将一个独立开发的操作系统加入其中,锻炼了新的路径,并最终提高了模拟硬件的准确性。
To be clear, DingusPPC was pretty close out of the box; kudos to its maintainers. I believe that, with this work, it’s the only emulator that can run PowerPC versions of BeOS. I’m also hopeful that this will help with bringing up alternate operating systems like MkLinux (which I also have memories of) and Rhapsody.
需要说明的是,DingusPPC 开箱即用效果已经相当不错;向其维护者致敬。我相信,通过这项工作,它是唯一能够运行 PowerPC 版本 BeOS 的模拟器。我也希望这将有助于启动其他操作系统,如 MkLinux(我也有相关记忆)和 Rhapsody。
On the Infinite Mac side, there were obvious changes like a “BeOS” appearance for my custom controls and collecting software for the library. I also needed to overlay some dynamically generated content on the disk to get the OS to preselect a screen resolution that matches the browser window’s (similar to what was done for A/UX).
在 Infinite Mac 方面,有一些明显的变化,比如为我的自定义控件设置了“BeOS”外观,并为库收集了软件。我还需要在磁盘上覆盖一些动态生成的内容,以使操作系统预选与浏览器窗口匹配的屏幕分辨率(类似于为 A/UX 所做的工作)。
An AI agent (still Codex for me) was once again helpful for this type of fiddly reverse-engineering task: it’s one thing to observe that the OS stores a file on disk with the screen size; it’s another to be able to reproduce all its nuances, especially as the format changed with later releases.
一个人工智能代理(对我来说仍然是 Codex)再次在这种繁琐的逆向工程任务中提供了帮助:观察到操作系统在磁盘上存储了一个包含屏幕尺寸的文件是一回事;能够重现其所有细微差别则是另一回事,尤其是当格式在后续版本中发生变化时。
Developer Release 8.2, the initial BeOS version for Power Macs, had a time bomb that kept it from booting after April 1, 1997. This was not just to create a sense of urgency; it shipped with a licensed font renderer that Be could not distribute indefinitely. DR8.3 addressed this, but to make that notable first version bootable, I did end up relying on the custom date support to hardcode a working date when choosing that disk.
Developer Release 8.2 是 BeOS 针对 Power Mac 的初始版本,它有一个定时炸弹,导致它在 1997 年 4 月 1 日之后无法启动。这不仅仅是为了制造紧迫感;它附带了一个 Be 公司无法无限期分发的授权字体渲染器。DR8.3 解决了这个问题,但为了让那个值得注意的第一个版本能够启动,我最终依赖自定义日期支持,在选择该磁盘时硬编码了一个有效日期。
BeOS Impressions Though I did kick the tires of BeOS back when it was current, I don’t recall using it enough to form any opinions beyond “this is fast; I miss all my third-party software.” About This Particular Macintosh does have contemporary coverage, including Be’s first and second appearances at Macworld Expo Boston, and reviews of R3 and R4.5; they make for interesting reading.
BeOS 感想:虽然我在 BeOS 当红时确实试用过它,但我记得并没有使用到足以形成任何观点的程度,除了“这很快;我很怀念我所有的第三方软件”。《About This Particular Macintosh》确实有当时的报道,包括 Be 公司在波士顿 Macworld Expo 上的首次和第二次亮相,以及对 R3 和 R4.5 的评论;它们读起来很有趣。
This video released by Be itself also has a walkthrough of what they considered its strengths. Looking at it with 2026 eyes, I am still struck by its speed – it’s fast to boot and to use, especially when compared with its contemporary Mac OS releases that do so much less (e.g. live window dragging did not appear until Mac OS X).
Be 公司自己发布的这段视频也介绍了他们认为该系统的优势所在。用 2026 年的眼光来看,我仍然对其速度感到震惊——它的启动和使用速度很快,尤其是与当时功能少得多的 Mac OS 版本相比(例如,实时窗口拖动直到 Mac OS X 才出现)。
The POSIX subsystem and the Unix-like shell also feel modern (unlike A/UX’s) – I had no trouble using the terminal to poke around. There’s also plenty of innovation, though some of it (BFS with its attributes and live queries) is more interesting than the rest (replicants are a precursor to widgets, but I couldn’t think of a use for them). It also feels lik
POSIX 子系统和类 Unix shell 也感觉很现代(与 A/UX 不同)——我使用终端进行探索没有任何困难。这里也有很多创新,尽管其中一些(带有属性和实时查询的 BFS)比其他部分更有趣(Replicants 是小部件的前身,但我没能想到它们的用途)。它也感觉像