rind(pronounced rin-dee, or rindy) is an init system and system runtime that provides the building primitives for reactive systems with persistent machine state, where services are drawn via dynamic state trees as opposed to static dependency threads.
Caution
Experimental Status: Rind is currently a proof-of-concept. The codebase is under active development and in a state of rapid flux. Expect architectural shifts, breaking changes, and occasional instability as I refine the core engine.
For more information and architectural details, visit rind.bushyice.com.
qemumkfs.ext4e2fsckjust(optional)
The builder for the rootfs is written in crates/xtask, you can use cargo xtask to use the builder.
Inside of rootfs.toml, you can configure settings for how you want the builder to build and run the init.
To get help, you can just execute the builder executable without any arguments and it will print help, but here's a quick start:
- When you build first time do:
cargo xtask iu - When you change code and rebuild:
cargo xtask bpr(build, prepare rootfs, run) - If you changed something like bzimage or busybox configs or new packages, do:
cargo xtask i - If you ever need to reset, do:
cargo xtask iubp(if you need a new fresh rootfs, remove.artifacts/rootfs.img)
There's a flake.nix, but as of now it only builds and sets up the builder.
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0). See the LICENSE file for details.
To ensure maximum compatibility and zero friction for developers, all C headers generated by or provided with rind (such as rind.h) are explicitly licensed under the MIT License. This allows them to be included in any project, regardless of its license.
Any kind of help is appreciated! Granted, this may not be the most welcoming codebase, but you can look through or message me on anything and I will definitely respond! Forsooth, With fellowship, we shall rise!!