A Rust-based downstream fork of coreboot, designed as a modern firmware implementation for booting LinuxBoot payloads.
oreboot is a firmware project forked from coreboot, rewritten primarily in Rust to provide a memory-safe foundation for system initialization. It focuses on booting LinuxBoot payloads across multiple architectures like ARM and RISC-V, leveraging Rust's safety features for embedded development.
Firmware developers and embedded systems engineers working on secure, modern firmware for ARM, RISC-V, or other architectures, particularly those integrating LinuxBoot payloads.
Developers choose oreboot for its memory-safe Rust implementation, which eliminates C-related vulnerabilities, and its vendor-agnostic design that encourages SoC vendors to provide Rust-based hardware abstraction layers for seamless integration.
oreboot is a fork of coreboot, with C removed, written in Rust.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Written mostly in Rust with minimal assembly, eliminating C-related vulnerabilities and leveraging modern language features for embedded safety, as emphasized in the project philosophy.
Designed specifically to boot LinuxBoot payloads, streamlining the firmware-to-OS handoff and focusing on compatibility, as stated in the README's core goals.
Supports ARM, RISC-V, and other architectures via QEMU emulation and physical hardware like the Allwinner D1, demonstrated in provided demos and mainboard directories.
Encourages SoC vendors to provide Rust-based Peripheral Access Crates (PACs) and Hardware Abstraction Layers (HALs) using Rust Embedded Working Group crates for portable hardware access.
Uses auto-formatting, CI checks via GitHub Actions, and clear ground rules for code quality, ensuring consistent collaboration and maintenance.
Currently only plans to support LinuxBoot payloads, restricting use for systems requiring UEFI or other bootloaders, as admitted in the README.
Aims to keep drivers minimal, focusing only on loading code from simple storage, which may not suffice for projects needing complex peripheral or network boot support.
Relies on vendors to provide and maintain Rust PACs and HALs, which are not yet widespread, potentially limiting hardware compatibility and increasing integration effort.
Requires specific packages like device-tree-compiler, rustup, and regular updates with 'make update', which can be cumbersome for quick prototyping or teams new to Rust embedded toolchains.