Apple Rhapsody open source reimplementation
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-01 18:21:43 -05:00
.superpowers/sdd scsi: clarify getter copy extent 2026-10-19 05:58:51 -04:00
docs boot: fix relative paths after CoreOS move 2026-11-01 18:21:43 -05:00
src boot: fix relative paths after CoreOS move 2026-11-01 18:21:43 -05:00
tests/ffsbench vm: ffsbench remounts the test disk so the manifest reads what is on disk 2026-10-06 19:35:02 -04:00
tools boot: fix relative paths after CoreOS move 2026-11-01 18:21:43 -05:00
vm kernel: move core kernel, boot, driver and library projects under src/CoreOS 2026-10-31 23:55:33 -04:00
.gitattributes rbuild: document vendored sources and store patch series byte-exact 2026-09-24 19:25:16 -04:00
.gitignore kernel: move core kernel, boot, driver and library projects under src/CoreOS 2026-10-31 23:55:33 -04:00
AGENTS.md docs: add additional language on how agents can boot using QEMU 2026-10-11 18:12:28 -04:00
CLAUDE.md kernel: move core kernel, boot, driver and library projects under src/CoreOS 2026-10-31 23:55:33 -04:00
README.md Developer: move command sources 2026-10-01 20:55:15 -04:00

RhapsodiOS

This is an open source reimplementation of Apple's Rhapsody operating system, that later became Mac OS X Server 1.0 through 1.2v3.

It's a fork of the Darwin 0.3 open source release done by Apple in the summer of 1999 with additional contributions from the community.

Notes

These sources work best with a case-sensitive file system. Rhapsody DR 2 and Mac OS X Server 1.0 through 1.2v3 have been tested to work at the moment.

Current builds are driven from a Windows host against a Rhapsody DR2 / Mac OS X Server ppc guest over OpenSSH. Copy vm/vm.conf.example to vm/vm.conf and set Host, User, Password, and the build paths. Defaults:

Guest path Role
/build/src Synced sources (RemoteRoot/src)
/build/tools Private rbuild and bootstrap helpers
/build/bootstrap-root Bootstrap sysroot
/build/repo Package repository (.apk)
/build/built World DSTROOT
/build/state Resume state

rbuild replaced the Perl darwin-buildpackage / darwin-buildall tools. QEMU, SSH crypto, and image-loop details live in vm/README.md.

Sync sources

Upload from the repository src/ tree. Prefer one project path over -All:

powershell -NoProfile -File vm\sync-src.ps1 -Path rbuild-1
powershell -NoProfile -File vm\sync-src.ps1 -Path Developer/Commands/cctools-2

-All uploads the entire src/ tree. Exactly one of -All or -Path is required.

Install rbuild

Builds, tests, and installs rbuild plus private relpath, decomment, config, and mig helpers into /build/tools:

powershell -NoProfile -File vm\build-src.ps1 -Rbuild

Success prints build-src: complete (rbuild) and exits 0.

On the guest, the same rbuild tree is:

cd /build/src/rbuild-1
make CC=/usr/bin/cc clean test all

Bootstrap

Stage-0 seed: resume src/BootstrapManifest into /build/bootstrap-root and /build/repo. -Bootstrap runs thin rbuild bootstrap and then rbuild bootstrap-universal with the same sysroot, toolchain, state, and manifest; thin-only bootstrap is not enough for ordinary universal builds. -Rbuild and -Bootstrap cannot be combined.

powershell -NoProfile -File vm\build-src.ps1 -Bootstrap

Success prints build-src: complete (bootstrap) and exits 0. Already-built packages are skipped.

Full build

-All runs rbuild, bootstrap, kernel/drivers, then world in that order:

powershell -NoProfile -File vm\build-src.ps1 -All

Success prints build-src: complete (rbuild, bootstrap, kernel, kernel-drivers, world) and exits 0.

-Fresh is valid only with -All. It deletes /build/tools, /build/bootstrap-root, /build/repo, /build/built, and /build/state, and keeps /build/src.

To reset those outputs without starting a rebuild:

powershell -NoProfile -File vm\clean-build.ps1

Then sync anything that changed, run -Rbuild, then -Bootstrap (or -All).

Individual phases after rbuild is installed:

powershell -NoProfile -File vm\build-src.ps1 -Kernel
powershell -NoProfile -File vm\build-src.ps1 -KernelDrivers
powershell -NoProfile -File vm\build-src.ps1 -World
Flag Remote action
-Rbuild make CC=… clean test all in src/rbuild-1, install into /build/tools
-Bootstrap rbuild bootstrap --sysroot … --toolchain … --state … BootstrapManifest
-Kernel rbuild kernel --state … --arch <profile> src repo built (driverkit, driverTools, kernload, PExpert, kernel-7)
-KernelDrivers rbuild kerneldrivers --state … --arch <profile> src repo built (remaining packaged drv* / Intel* plus drvBPF / drvPortServer / drvSCSIServer / drvSCSITape, minus rbuild-1/kernel-drivers-blacklist.json)
-World rbuild buildall --state … Manifest /build/repo /build/built
-All The five phases above, in order