An Operating System for Building Small Computers
See the code
MnemOS (mnɛːmos) is a hobby-grade, experimental operating system for
small computers (and bigger ones, too). The MnemOS kernel and
userspace use a design based on asynchronous message passing, inspired by
Erlang and microkernels, although MnemOS is not a true microkernel.
This repository contains the cross-platform core of the MnemOS kernel, which is implemented as a Rust library crate, platform-specific implementation for supported hardware and simulator targets, development tools for working on MnemOS, and reusable libraries which the kernel, tools, and platform implementations depend on.
The project layout contains the following folders:
assets/ - images and files used for READMEs and other documentationbook/ - This is the source of "the mnemOS book"hardware/ - Hardware designs for MnemOS systems, including CAD files and documentationsource/ - This folder contains the source code of the cross-platform kernel, userspace, and related librariesplatforms/ - This folder contains code specific to each targeted hardware and simulation platformrfcs/ - MnemOS design RFCstools/ - This folder contains desktop tools used for working with MnemOSCurrently, the primary supported hardware platform for MnemOS is the
Allwinner D1, a RISC-V system-on-chip (SOC). Instructions for running MnemOS on
D1 single-board computer can be found in platforms/allwinner-d1/README.md.
If you don't have access to a supported D1 board, or want a quicker development
workflow for testing cross-platform changes, MnemOS also has a software
simulator, called Melpomene. Melpomene runs as a userspace application binary on
a development machine, and runs the MnemOS kernel with simulated hardware.
Melpomene can be run using the just melpomene just recipe, or using
cargo run --bin melpomene.
Pomelo is a web-based simulator, which runs the MnemOS kernel in the browser using WebAssembly. A hosted version of Pomelo can be found at https://web.versteht.es/mlem/.
[!NOTE]
Some
justrecipes in the Justfile have additional build-time dependencies which must be installed on the user's system in order to run those recipes.In order to automate installing (most of) these dependencies, the
manganesetool provides a wrapper forjustrecipes that depends on all Rust build dependencies fromcrates.ioas normal cargo deps. To run ajustrecipe usingmanganese, run:cargo mn $RECIPErather than
just $RECIPEwhere
$RECIPEis the name of the desiredjustrecipe.
rustdoc output for the current main branch can be built locally with cargo doc --open.
main branch API documentation for the kernel and other
MnemOS cratesWe've written a series of development blogs following the story of MnemOS' implementation. You can find them here:
Join us on Matrix: #mnemos-dev:beeper.com
MIT + Apache 2.0.
The MnemOS project follows the Contributor Covenant Code of Conduct.
851 followers · starred Jul 2023
3,341 followers · starred Jun 2023
223 followers · starred Oct 2024
654 followers · starred Oct 2023
An Operating System for Building Small Computers
See the code
MnemOS (mnɛːmos) is a hobby-grade, experimental operating system for
small computers (and bigger ones, too). The MnemOS kernel and
userspace use a design based on asynchronous message passing, inspired by
Erlang and microkernels, although MnemOS is not a true microkernel.
This repository contains the cross-platform core of the MnemOS kernel, which is implemented as a Rust library crate, platform-specific implementation for supported hardware and simulator targets, development tools for working on MnemOS, and reusable libraries which the kernel, tools, and platform implementations depend on.
The project layout contains the following folders:
assets/ - images and files used for READMEs and other documentationbook/ - This is the source of "the mnemOS book"hardware/ - Hardware designs for MnemOS systems, including CAD files and documentationsource/ - This folder contains the source code of the cross-platform kernel, userspace, and related librariesplatforms/ - This folder contains code specific to each targeted hardware and simulation platformrfcs/ - MnemOS design RFCstools/ - This folder contains desktop tools used for working with MnemOSCurrently, the primary supported hardware platform for MnemOS is the
Allwinner D1, a RISC-V system-on-chip (SOC). Instructions for running MnemOS on
D1 single-board computer can be found in platforms/allwinner-d1/README.md.
If you don't have access to a supported D1 board, or want a quicker development
workflow for testing cross-platform changes, MnemOS also has a software
simulator, called Melpomene. Melpomene runs as a userspace application binary on
a development machine, and runs the MnemOS kernel with simulated hardware.
Melpomene can be run using the just melpomene just recipe, or using
cargo run --bin melpomene.
Pomelo is a web-based simulator, which runs the MnemOS kernel in the browser using WebAssembly. A hosted version of Pomelo can be found at https://web.versteht.es/mlem/.
[!NOTE]
Some
justrecipes in the Justfile have additional build-time dependencies which must be installed on the user's system in order to run those recipes.In order to automate installing (most of) these dependencies, the
manganesetool provides a wrapper forjustrecipes that depends on all Rust build dependencies fromcrates.ioas normal cargo deps. To run ajustrecipe usingmanganese, run:cargo mn $RECIPErather than
just $RECIPEwhere
$RECIPEis the name of the desiredjustrecipe.
rustdoc output for the current main branch can be built locally with cargo doc --open.
main branch API documentation for the kernel and other
MnemOS cratesWe've written a series of development blogs following the story of MnemOS' implementation. You can find them here:
Join us on Matrix: #mnemos-dev:beeper.com
MIT + Apache 2.0.
The MnemOS project follows the Contributor Covenant Code of Conduct.
851 followers · starred Jul 2023
3,341 followers · starred Jun 2023
223 followers · starred Oct 2024
654 followers · starred Oct 2023