Infinite Mac: 在浏览器中运行 BeOS
Infinite Mac: BeOS
Infinite Mac 平台现已支持在浏览器中即时启动并运行多个版本的 BeOS 操作系统。此次更新通过修复 DingusPPC 模拟器中的兼容性问题,实现了对 PowerPC 版本 BeOS 的流畅支持,并允许用户直接体验预装软件和保存工作。
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.
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.
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. 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. 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.
- 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.
- Early versions of BeOS did video memory updates in little-endian mode1; 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
machfsPython 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.
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.
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. 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 emulator2 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.
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). 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.
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.
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. 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). 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 like a developer-focused and under-construction system: many of the included apps are technology demos (though who doesn’t love a Utah teapot), while a contemporary Be homepage links directly to the developer release notes and discusses CodeWarrior releases and access to the bug tracker. The unfinished nature extends to third-party software too – I stumbled across some BeOS software on this Amiga magazine CD, and most of it had a “version 0.1” feel, either literally or figuratively. To be fair, I did find some more fleshed-out software, for example, Gobe Productive from the former ClarisWorks team. This and other software is on Infinite HD if you’d like to try it out (preferably in later OS versions).
The interface seemed novel at the time, though I wonder how it would have held up3. The distinctive tabbed window titles look neat, but they have a reduced draggable area, so I’d have to think harder every time I wanted to move a window. And using a hand as the default cursor makes clicking feel less precise than a traditional arrow (just which of the pixels on the “finger” is the hotspot?). Other parts of the UI feel like a not-fully-coherent Windows/Mac hybrid, with a Deskbar that can emulate a Start menu4, Alt key accelerators on menu items, but also spring-loaded folders and a spatial Finder Tracker.
Speaking of the Tracker, I had not realized that Be had open-sourced it (and even incorporated changes from the open-source version). This was around the time that Be pivoted away to internet appliances – there’s no need to invest engineering resources in a file manager if all that’s exposed is one full-screen browser app. This interview with the Tracker developer has more of the backstory.
Do your own bake-off: NeXT vs. Be
NeXTStep, by comparison, feels more mature. It had gone through some similar churn (proprietary hardware to off-the-shelf PCs, company strategy shifts), but, perhaps because it had more time, it handled things a bit more gracefully. For example, NeXT supported “fat” binaries that could run on 68K, Intel, PA-RISC and other architectures. On BeOS they had to be separate executables, making the user choose which to run and complicating distribution (this made it harder for me to find software to include in Infinite HD). Worse yet, you also had to have parallel disk partitions on CD-ROMs: BFS used the host endianness, so disks written by a PowerPC install could not be read by an Intel one, or vice versa. But my pro-NeXT bias may be due to knowing which OS Apple ended up picking.
Other Site Improvements
It’s only been a short while since the last update, but I did squeeze in a couple of quality-of-life improvements. You can now take screenshots and record videos (with sound) of the emulated machine’s screen. This gives you a high-fidelity way to capture image content, since it’s a direct dump of what would have been shown on the screen.
I also expanded the collection of operating system CD-ROMs with items like the Rhapsody and Mac OS X developer previews. While they’re aspirational for now (DingusPPC can’t run them yet), they do satisfy my completionist tendencies. These CDs are mirrored to and served from my own Cloudflare R2 bucket – the Internet Archive is an incredible resource (you can donate to them), but streaming from it has been increasingly flaky. I don’t want to add to the problem, and thanks to my sponsors, I can afford to serve a few gigabytes.
As for what’s next, with this alternate Mac timeline covered, it may be time to explore a prequel.
- TIL that this was possible – Apple generally ran the PowerPC and did everything on its machines in big-endian mode. There’s even a patent about this controller capability. ↩
- Though while I was working on this, BeBox was vibed into existence. ↩
- Then again it looks like Haiku has preserved it almost verbatim, so it definitely has a long-lasting appeal to some. ↩
- If you can find the 3-pixel-wide draggable area to move it to the bottom. ↩
来源:Hacker News-首页 · blog.persistent.info