MorpheusX is a UEFI boot and hardware exokernel-like runtime that loads Linux kernels directly from firmware space, treats distributions as disposable layers, and aims to keep userland state persisten[...]
- Boots Linux kernels from the EFI system partition with custom GPT and FAT32 handling.
- Provides a boot-time TUI for selecting images and guiding installs.
- Includes a bare-metal network stack (operating after ExitBootServices) for downloading ISOs and updates. (Work in progress)
- Implements a self-persisting runtime: The in-memory, relocated PE loader can clone itself, reverse its own relocations, and reconstruct a fully bootable on-disk binary—enabling live regeneratio[...]
- Contains the full iso9660-rs implementation: A pure no_std, Rust ISO9660 and El Torito parser/reader, written for MorpheusX and developed in this repository; enables direct extraction and booting[...]
- Implements a custom, standalone FAT32 filesystem library: Written from scratch for this project (no_std, Rust), enabling direct parsing, allocation, and manipulation of FAT32 volumes and boot records[...]
Prerequisites: Rust 1.75+ with rustup, target x86_64-unknown-uefi, and a nightly or stable toolchain that supports no_std UEFI builds.
rustup target add x86_64-unknown-uefi
cargo build --release --target x86_64-unknown-uefiOr you just use the /setup-dev.sh shell utility
It offers diverse preconfigured worflows. To see them just use:
./setup-dev.sh -h Or if you want to automatically setup the whole environment, build and run qemu just use:
./setup-dev.shThe bootable binary is produced at target/x86_64-unknown-uefi/release/morpheus-bootloader.efi.
Use the provided scripts (requires QEMU and OVMF):
./setup-dev.sh runSee additional helper scripts in testing/ for preparing initrds and disk images.
The project uses GitHub Actions for continuous integration:
| Workflow | Purpose |
|---|---|
| CI | Lint (rustfmt, clippy), build, and test on host |
| UEFI Build | 2-pass build for relocation embedding |
| UEFI E2E | Boot test in QEMU with OVMF |
| Security Audit | Weekly cargo-audit and cargo-deny |
| Release | Automated releases on version tags |
# Build UEFI bootloader (2-pass with reloc embedding)
./scripts/ci-build-uefi.sh
# Run E2E boot test
./scripts/qemu-e2e.sh target/x86_64-unknown-uefi/release/morpheus-bootloader.efi
# Generate test fixtures (ISO, FAT images)
./scripts/gen-fixtures.sh fixtures/This is experimental, not production-hardened, and the network and persistence layers are still under construction. Expect sharp edges and incomplete flows.
Can be found in /docs.
See CONTRIBUTING.md for how to set up the toolchain, run builds/tests, and send focused PRs.
For technical assistance, please contact our 24/7 support team.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.