Fuchsia Internals: A New Report Series for Hardware Engineers
I have written a series of technical reports on the internals of Fuchsia, Google’s capability-based microkernel operating system. The material addresses electrical, register-transfer level (RTL), and FPGA engineers rather than kernel developers. This article introduces the publication series, which covers the reports progressively. The complete collection spans fourteen reference volumes. The overview document is linked at the end of this article, and each subsequent post will provide the full text and download link for an individual volume.
Note: These reports are machine-generated reference summaries. Treat them as an architectural roadmap rather than formal documentation, and verify specific implementation details against the public source tree. The text reflects engineering interpretations of the architecture and operational mechanisms of Fuchsia and Zircon. For authoritative reference specifications, consult https://fuchsia.dev.
Fuchsia is my day job, and I recently documented booting Zircon on a RISC-V soft core in an Artix-7 FPGA. During that development effort, I wanted an architectural map of the operating system written for engineers who reason about synthesizable blocks, buses, and hardware handshakes. Most operating system literature assumes familiarity with traditional POSIX abstractions. I compiled this reference to bridge that conceptual gap. All material derives directly from the public Fuchsia source tree and documentation at fuchsia.dev and cs.opensource.google/fuchsia. The reports organize public architecture data around the mental model of a hardware designer.
Hardware mental model
Fuchsia relies on a compact microkernel, Zircon, that provides a consistent set of kernel objects accessed through unforgeable handles. System policies, including drivers, filesystems, networking stacks, and graphics compositors, execute entirely in isolated user-space components. The report series maps these concepts directly to hardware structures:
- A kernel object corresponds to an IP block with typed interface ports.
- A handle functions as an unforgeable bus-grant capability token.
- A channel represents an AXI-Stream link with typed, ordered, and flow-controlled signaling.
- A port operates as an interrupt aggregator that collects signals from multiple asynchronous sources.
- A VMO (Virtual Memory Object) represents a DMA buffer descriptor whose physical backing store is managed by the kernel.
- The BTI (Bus Transaction Initiator) and IOMMU together form a bus firewall that restricts device DMA to explicitly pinned physical memory.
- The scheduler acts as an arbiter that grants processing cycles across execution contexts.
These structural mappings provide a direct entry point for engineers who routinely design with registers, transaction rings, and hardware handshakes.
Reference volumes
The fourteen volumes carry numbers reflecting the order of their compilation. While technical readers often begin with the kernel (Vol. III) and the component framework (Vol. VI), this series presents the volumes in numerical sequence. The full curriculum includes the following volumes:
- Vol. I: Graphics and Display Pipeline. Magma, sysmem, the display coordinator, Flatland, and the Escher Vulkan renderer as a user-space pipeline of cooperating services.
- Vol. II: The Build System and Toolchains. GN as an elaboration step, Ninja as the build execution engine, and the multi-toolchain architecture that compiles a single target across varied configurations.
- Vol. III: The Zircon Kernel. Kernel objects, handles, rights, the vDSO system call interface, VMOs and VMARs, the scheduler, channels, ports, and hardware-access primitives.
- Vol. IV: Starnix. Execution of unmodified Linux and Android binaries directly on host processors using Zircon restricted execution mode.
- Vol. V: Graphics FIDL APIs in Practice. The wire-level companion to Vol. I, detailing concrete FIDL declarations, sequence workflows, and synchronization fences.
- Vol. VI: The Component Framework. Realms, CML manifests, and capability routing, treating components as module instances and routing topologies as interconnect port maps.
- Vol. VII: Driver Development in Practice (DFv2). Device driver architecture: bind rules, driver node topology, MMIO mapping, interrupt service routines, and pinned DMA management via BTIs.
- Vol. VIII: Storage. The block storage subsystem from hardware DMA descriptor rings up through Fxfs and the Merkle-verified blob store.
- Vol. IX: Power Management. The Power Framework implemented as a user-space dependency graph managing power levels, rails, votes, and state transitions.
- Vol. X: Networking. Netstack3, network sockets, and network-device descriptor rings that mirror the block protocol architecture.
- Vol. XI: FIDL. The Fuchsia Interface Definition Language, its byte-and-handle wire ABI, and language bindings shared across system services.
- Vol. XII: Software Delivery and OTA. Content-addressed packages, TUF repositories, and the A/B/R partition paver.
- Vol. XIII: Diagnostics and Observability. Inspect diagnostics, structured logs, execution tracing, telemetry metrics, and crash reporting coordinated by the Archivist.
- Vol. XIV: Security and Verified Boot. Architectural synthesis covering the object-capability security model and the chain of trust extending from eFuse keys to page fault resolution.
Publication schedule and access
Upcoming posts will analyze individual volumes in sequence, starting with the graphics and display pipeline in Volume I. Each entry will review architectural concepts and provide a download link for the corresponding standalone document.
The unified reference document, compiling the overview and all fourteen volumes in series order, is available online:
For technical feedback or corrections, please send an email. These reports remain living documents subject to regular maintenance.