BeBox 是一款模拟 Be Inc. BeBox 的 Haiku 应用程序
摘要
BeBox 是一款模拟 Be Inc. 双处理器 BeBox 的 Haiku 应用程序,可从其原始启动 ROM 运行 PowerPC 603/603e 型号及 AT&T Hobbit 原型机,并搭载 BeOS for PowerPC。
查看缓存全文
缓存时间: 2026/10/16 01:15
johnrash/bebox
来源:https://github.com/johnrash/bebox
BeBox
BeBox 是一个 Haiku 应用程序,用于模拟 Be Inc. 的 BeBox——BeOS 诞生的双处理器计算机。它可以运行 PowerPC 各型号机器,使用其原始启动 ROM,支持从开发者发布版 6 到 R5.0.3 的 PowerPC 版 BeOS。它还能运行更早期的 Hobbit 原型机,该机型搭载两颗 AT&T Hobbit 处理器,可使用 Be 1993-94 年系统的存世磁盘运行。
| 型号 | 处理器 | 总线 |
|---|---|---|
| BeBox Dual603-66 | 两颗 PowerPC 603,66 MHz | 33 MHz |
| BeBox Dual603e-133 | 两颗 PowerPC 603e,133 MHz | 33 MHz |
| Hobbit 原型机(1993-94) | 两颗 AT&T 92010(Hobbit),25 MHz | BeBus,25 MHz |
窗口显示的是前面板两列 LED 灯(“blinkenlights”)之间的模拟屏幕,每列各十六段导光条:左侧是电源 LED 上方的十五颗 LED 组成的 CPU 负载条,右侧是磁盘 LED 上方的负载条,颜色为石灰色和琥珀色,与真实机器一致(也可以选择红色和绿色)。
模拟了什么
- 双处理器(PowerPC 603/603e 解释器,含 603 的软件 TLB)、MPC105 桥接芯片、BeBox 中断和 CPU 控制寄存器。
- 启动 ROM:nub 和主 ROM 存放在可写闪存中(BeOS 的 ROM 更新程序可用)、NVRAM 和实时时钟。
- 显卡:Number Nine #9 GXE64(S3 Vision864,AT&T 21C498 RAMDAC)及其图形引擎(默认);或 Cirrus Logic CL-GD5434。分辨率 640x480 到 1280x1024,每像素 8 位和 32 位色深(BeOS 驱动提供的选项)。
- 声卡:Crystal CS4231A 编解码器,通过 Haiku 媒体套件播放。
- AT 键盘和 PS/2 鼠标;四个游戏接口(轴和按钮)。
- 存储:NCR 53C810 SCSI(ID 0-6 上的磁盘和 CD-ROM)、IDE、软驱。
- 四个串口:可连接到控制台窗口、TCP 服务器或客户端、主机串口或日志文件。
- 以太网:NE2000 兼容 ISA 网卡,位于主机背后的专用网络中(通过 libslirp 实现 NAT):BeBox 可以访问主机和互联网,主机端口也可转发给 BeBox。
- 共享文件夹:Haiku 文件夹以 SCSI 磁盘的形式出现在 BeOS 中,可读可写;BeOS 关机后更改会同步回文件夹。
尚未模拟:并口、GeekPort、MIDI 和红外端口。
你需要什么
- BeBox 启动 ROM(不随本项目提供):从一台 BeBox 上获取的
bootnub.rom(16 KB)和bootmain.rom(Be Boot ROM 1.1d7),放在你选择的文件夹中。 - PowerPC 版 BeOS:CD 镜像(ISO、BIN/CUE 或 Toast)。
- 对于使用 Be 文件系统的版本(Advanced Access 到 R5):需要较新的启动 ROM,Preview Release 2、R3 和 R4.5 的 CD 中包含该 ROM,路径为
/beos/etc/bebox_bootmain.image(Advanced Access、Preview Release 1 和 R5 使用其中之一)。BeBox 会自动为你提取(见下文)。
快速上手
- 打开 Machine > Preferences > ROM & NVRAM,选择存放 ROM 的文件夹。对于 BFS 版本,将其 CD 镜像选为 Boot ROM image:BeBox 会从 CD 中复制启动 ROM(PR2 的 ROM 同样可以启动 Advanced Access 和 PR1)。
- 在 Storage 中,将 CD 镜像放到某个 SCSI ID 上作为 CD-ROM(经典选择是 ID 3),再给另一个 ID 分配一块磁盘用于安装:Choose… 会打开一个文件面板,其中的 New disk image… 按钮可以就地创建一个新镜像(位于面板显示的文件夹中)并自动分配到该 ID。
- Machine > Power on。较新的启动 ROM 在未设置启动卷时会停留在启动菜单:按 Return 键继续。硬件更改需要重启机器。未指定文件的设备类型在保存偏好设置时会被恢复为“None“。
Hobbit 原型机
在 PowerPC BeBox 之前,Be 围绕两颗 AT&T 92010 “Hobbit” 处理器、三颗 AT&T DSP3210 信号处理器和 BeBus 构建了其机器。少数原型机连同磁盘存世,运行着 Be 1993-94 年的系统:一个窗口服务器、一个控制台、Browser 及其 Dock。
模拟的内容:
- 两颗 Hobbit 处理器(根据 AT&T 程序员参考手册编写的解释器:包含栈缓存、MMU、定时器、事件序列)。
- 主板:其 I/O 和中断寄存器、处理器复位、软驱 DMA;PC 兼容 I/O 芯片(键盘和 PS/2 鼠标、实时时钟、两个串口、软驱)以及 NCR 53C94 SCSI 控制器。
- 显卡:一块 Trident VGA,带有 XGA 风格图形引擎,挂在 BeBus 上(640x480 或 800x600,256 色,由窗口服务器设置)。
未模拟:三颗 DSP 及其挂载的设备(声音、电话和调制解调器)、以太网卡、摇杆控制器和并口。没有它们系统也能启动(其声音服务器会报告错误)。
这些机器没有任何启动 ROM 存世,因此 BeBox 承担了启动 ROM 的职责:从启动卷加载 /system/kernel(如果插入了软盘则从软盘启动,否则从 ID 最小的 SCSI 磁盘加载)并启动它。
运行方法:
- 在 Preferences > Machine 中选择 Hobbit prototype,并选择 4、8、16、20 或 32 MB 内存(其内核支持的大小)。
- 在 Storage 中,将 Hobbit 磁盘镜像放到某个 SCSI ID 上作为磁盘。如果你想使用自己的内核而非磁盘上的内核,在 ROM & NVRAM > Hobbit kernel 中选择它。
- Machine > Power on。内核会在串口 1 上报告其进度(在 Serial 中为它分配一个控制台窗口即可查看)。
注意事项:
- 1994 年 11 月的磁盘启动的是
/system/Browser,但实际路径是/system/browser:因此会改为启动控制台(真实机器也是这样)。在控制台中输入/system/browser &即可启动 Browser。 - 软驱是内核的驱动器 1。
- 系统会写入其磁盘(交换文件等):请保留镜像的副本,或使用 QCOW2 叠加层(
bebox-img create -b IMAGE OVERLAY.qcow2)。 - 前面板灯被隐藏了:Hobbit 的内核不驱动它们。
从软盘安装
安装盘和 1of7 至 7of7 磁盘可以将 1994 年 11 月的系统(即 “pixels” 磁盘上的系统)安装到新磁盘上。安装盘没有自己的窗口:其 /system/Browser 会将一个最小系统(内核、服务器、shell、/Installer)从软盘复制到第一块硬盘上,不会询问,也不会显示任何内容(只有一个光标指针)。只在有待安装磁盘的情况下启动它:它会替换它找到的任何其他 Hobbit 磁盘上的系统文件。
- 将 Hobbit 磁盘的副本(或其叠加层)放到 SCSI ID 0 上,将新磁盘镜像放到 ID 1 上(在 Storage 中,ID 对应的文件面板有 New disk image…;120 MB 就够了,原始磁盘为 120 到 170 MB)。开机,在控制台中输入
/bin/format,选择 ID 为 1 的 SCSI 磁盘,给卷命名,然后输入 0 退出。关机。 - 将 Hobbit 磁盘从 ID 0 上移除,将新磁盘放到 ID 0 上。插入安装盘并开机。大约一分钟后(你只能看到光标指针),关机并弹出软盘。
- 开机:控制台会从新磁盘启动。输入
/Installer,点击 Begin,然后插入 1of7(Media > Insert floppy…),点击 Continue,依此类推直到 7of7。Installer 随后会解压缩、校验并提取归档文件(需要几分钟),点击 Install 完成:“Installation complete”。开始解压缩时,控制台会显示VOLUME:/_install_/archive.Z: System Error 0:无害的错误,真实的 Hobbit 也一样(compress在文件仍处于打开状态时就删除了归档文件,而该文件系统不允许这样做;Installer 最终会删除它)。 - 重启,输入
/system/browser &启动 Browser。 - 可选:再次运行
/Installer,使用update.img作为 1 号磁盘:Be 于 1994 年 11 月 28 日发布的更新(修复了storage_server,并包含/system/phone中 Phone 电话答录机的语音提示,与 “be” 磁盘上的内容一致)。
配置档案
每个版本都偏好自己的机器配置(其启动 ROM、磁盘,可能是 133 MHz 型号),因此机器配置保存在**配置档案(profile)**中:除键盘与鼠标和 LED 外观外的所有偏好设置,加上启动 ROM 闪存(含 BeOS 安装的启动 ROM 更新)和 NVRAM(含启动卷)。
Machine > Profile 列出各配置档案以便切换(运行中的 BeBox 会用另一个配置档案重启),并提供 New profile…(复制当前配置档案,命名为如 “BeOS5 133 MHz” 或 “DR8 66 32 MB”)、Rename 和 Delete。状态栏显示当前配置档案。配置档案是 ~/config/settings/BeBox/Profiles/ 中的文件夹;在配置档案功能出现之前的设置成为了 “Default” 配置档案。
| 版本 | 启动 ROM | 从 CD 启动 | 安装到磁盘 |
|---|---|---|---|
| DR6(BeOS 1.1d6) | 原始 1.1d7 | 是 | 是 |
| DR7(BeOS 1.1d7) | 原始 1.1d7 | 是 | 是 |
| DR8 | 原始 1.1d7 | 是 | 是 |
| Advanced Access | PR2 的 ROM | 是 | 是 |
| Preview Release 1 | PR2 的 ROM | 是 | - |
| Preview Release 2 | 来自其 CD | 是 | 是 |
| R3 | 来自其 CD | 是 | 是 |
| R4.5 | 来自其 CD | 是 | 是 |
| R5.0.3 | R3 的 ROM | 是 | 是 |
“-” 表示尚未测试。DR8.2 镜像是 Mac 更新程序,R4 镜像仅支持 x86。来自 R3 CD 的启动 ROM 可与这里测试过的所有版本配合使用,因此使用它的单一配置档案可以运行所有版本。
DR6 早于 1.1d7 启动 ROM:BeBox 会以旧版格式向其内核提供 PCI 设备表。按照 CD 上的说明安装它:从 CD 启动,从 Dock 运行 Installer,格式化 SCSI 磁盘(在左侧弹出菜单中选择 “Format:”),然后安装到该磁盘上并将其设为启动磁盘。DR6 的鼠标驱动向左和向下移动指针的距离是向右和向上的两倍(这是 DR6 的问题,不是模拟器的问题)。开发者版本的 date 会将年份输出为自 1900 年以来的年数(2026 年显示为 126)。
使用方法
- 窗口处于活动状态时,键盘属于 BeBox。点击屏幕捕获鼠标;按主机键(右 Ctrl 键)释放鼠标。偏好设置中的 Keyboard & mouse 可以选择其他主机键并设置鼠标速度。
- 偏好设置中的 Game ports 可以将主机摇杆连接到四个游戏摇杆上(每个游戏接口两个,如同使用 Y 型线)。
- 状态栏显示软盘、CD 和硬盘的状态(含磁盘活动指示);点击软盘即可插入。
- Machine 菜单提供电源、复位和中断开关,以及带启动菜单或在串口 4 上输出内核调试信息的重启方式(开机时按住 F1,与真实 BeBox 一致)。Send Ctrl+Alt+Delete 将 Haiku 保留的按键发送给 BeOS:BeOS R3 及之后的版本会显示 Team Monitor,再次发送则重启。
- 当两个处理器都繁忙时,它们会在两个主机核心上运行(Preferences > Advanced,默认开启):速度提升接近两倍,这对在较慢计算机上运行 133 MHz 型号很有必要。状态栏以真实 BeBox 的百分比显示当前速度。
- Tools > Serial console 显示连接到控制台的串口。
- View 以实际大小、双倍大小或适应窗口显示屏幕,并显示或隐藏 LED。
网络
在 Preferences > Network 中启用以太网卡(默认端口 300h,IRQ 5,与 Be 的软件期望一致)。在 BeOS 的网络偏好设置中,添加 “Novell NE2000 compatible adapter (ISA)”,使用相同的端口和 IRQ,并选择 DHCP(R4.5)或手动设置 IP 10.0.2.15、子网掩码 255.255.255.0、网关 10.0.2.2 和 DNS 10.0.2.3。从 BeBox 角度看,主机地址为 10.0.2.2。
转发的主机端口(tcp:2121:21, tcp:2323:23)使 BeOS 中运行的服务可从主机访问。
共享文件夹
在 Preferences > Storage 中,将某个 SCSI ID 设为 Shared folder 并选择一个 Haiku 文件夹。开机时 BeBox 会将该文件夹(含其属性:文件类型、图标)复制到一个全新的 BFS 卷中,BeOS 会像普通磁盘一样挂载它;带有 BFS 的版本(Advanced Access 及之后)可以使用它。当 BeOS 关机(Be 菜单 > Shut Down)且 BeBox 断电后,BeOS 的更改会同步回文件夹:新增和修改的文件、属性、删除。如果双方都修改了同一个文件,Haiku 版本会被保留,BeOS 的版本保存在旁边,命名为 “NAME (BeBox)”。如果 BeOS 未正常关机,该卷会被保留,下次开机时仍交给 BeOS,以便先进行修复。由于每次开机都会复制整个文件夹,请保持文件夹尽量小。
磁盘镜像
硬盘使用原始镜像或 QCOW2 镜像,QCOW2 仅占用实际写入的空间(精简配置),并且可以作为叠加层叠加在基础镜像之上。bebox-img 用于管理它们,也可以从 BeOS 卷(BFS)和 Hobbit 原型机磁盘中读取文件:
bebox-img create [-f raw|qcow2] [-b BACKING] FILE SIZE
bebox-img info FILE
bebox-img check FILE
bebox-img convert [-O raw|qcow2] SOURCE DESTINATION
bebox-img ls IMAGE [PATH]
bebox-img attr IMAGE PATH
bebox-img extract IMAGE PATH OUTPUT
例如:bebox-img extract "BeOS Release 3 PowerPC.iso" /beos/etc/bebox_bootmain.image r3.rom。
在 Hobbit 磁盘上,extract 还可以将整个目录(/ 表示整个磁盘)复制到新文件夹中,保留文件日期;ls 可以显示文件的类型和创建者:
bebox-img extract hobbit-930800009.img / pixels
没有任何 BeOS 版本可以读取 Hobbit 的文件系统(DR6 到 DR8 使用了后来的不兼容版本,其余使用 BFS),因此这是访问其文件的方式:先提取,然后将文件夹作为共享文件夹交给某个 BFS 版本。Hobbit 的程序无法在 PowerPC 上运行;其源代码、头文件、文本和图片才是真正有价值的。
脚本控制
机器窗口支持 hey 命令:
hey BeBox get Running of Window BeBox # 也可 set ... 为 true/false
hey BeBox get Speed of Window BeBox # 实时时间的百分比
hey BeBox get LedLevels of Window BeBox # 左、右 (0-15)
hey BeBox get SerialLog 4 of Window BeBox # 某个控制台端口的输出
hey BeBox set Floppy of Window BeBox to /path/disk.img
hey BeBox type of Window BeBox with text=ls # 在键盘上输入
hey BeBox shot of Window BeBox with path=/tmp/screen.png
另外还有 get Mips、get EmulatedTime、get DiskLed、get AudioStats(音频输出计数器:下溢即间隙)、get Profiles、get Profile 和 set Profile(切换配置档案,运行中的机器会重启),以及命令 pwon、pwof、rset 和 cadl(Ctrl+Alt+Delete)。回复在动作执行后返回。
命令行
BeBox [--profile NAME] [--rom-dir DIR] [--boot-rom IMAGE] [--model 66|133|hobbit] [--kernel FILE] [--ram MB] [--video s3|cirrus] [--scsiN-disk FILE] [--scsiN-cd FILE] [--scsiN-share FOLDER] [--ide0 FILE] [--floppy FILE] [--net] [--net-forward SPEC] [--power-on]
用于配置机器(设置会被保存)。--profile 先切换到指定配置档案,若不存在则将其创建为当前配置档案的副本;其他选项修改该配置档案。
bebox-headless 在无窗口模式下运行机器,用于测试和调试:串口输出到文件或 TCP、脚本化键盘和鼠标操作、截图、指令追踪、内存转储和监视点。bebox-headless --help 列出所有选项。
构建
在 Haiku 上(需要 haiku_devel、zlib_devel 和 libslirp_devel):
make构建应用程序;package/build-package.sh构建应用程序和工具,并创建安装包。
模拟器核心是可移植的 C++17 代码,在 Linux 上经过测试:
make -C tests/linux check:处理器测试(以qemu-ppc为参照)、Hobbit 处理器测试、多处理器和设备测试、QCOW2 测试(以qemu-img为参照),在 AddressSanitizer 和 UndefinedBehaviorSanitizer 下运行。tests/boot-regression.sh:以无窗口模式启动每个 BeOS 版本(介质和安装磁盘放在work/中)以及 Hobbit 磁盘(放在Hobbit/中),通过临时叠加层运行。tests/vm-test.sh user@haiku-host:在 Haiku 机器上构建应用程序并用hey驱动。
design/ 描述了硬件和模拟器的设计。
作者
- Claude Opus 5.5
- John Rash
许可证
MIT 许可证,详见 LICENSE。
应用程序图标(artwork/BeBox.hvif)由 zuMi 制作,采用 MIT 许可证。
artwork/icons 中的图标来自 Haiku 的图标集(MIT 许可证,Haiku, Inc.)。
BeBox ROM 和 BeOS 不属于本项目。
相似文章
BeBox:BeOS 硬件、照片以及与苹果的未竟交易
一篇关于 BeBox 硬件和 BeOS 的怀旧回顾,详细记述了作者在 20 世纪 90 年代末使用该设备的经历,以及 Be Inc. 与苹果交易失败的历史背景。
box
一个简单的计算机,提供完整的虚拟机用于运行代理,在Product Hunt上发布。
BoxBox
BoxBox 是一款专为 Linux 家庭实验室和 NAS 式服务器设计的文件管理器,提供基于 Web 的界面以简化文件管理。
@QingQ77: WonderBox 是一款完全原生运行在 Mac 上的系统工具箱,集中提供系统监控、内存优化…
WonderBox 是一款原生 macOS 系统工具箱,提供系统监控、内存优化、缓存清理及其他实用工具,帮助用户高效管理他们的 Mac。
在86Box上使用M6 Mac Mini模拟600MHz的Pentium II与Voodoo 3
本文回顾了86Box在Apple Mac Mini M6上的模拟性能,成功实现了对搭载Voodoo 3显卡的600MHz Pentium II的稳定模拟,并强调了单线程CPU速度对于精确复古模拟的重要性。