Monix kernel source code repository.
Monix is a personal hobby project operating system kernel which begun in May 2023 as a simple bare-metal Raspberry Pi kernel, and has since refocused to be a generic AArch64 operating system. Monix is not intended for any real-world practical purpose, and is provided entirely for educational purposes.
Monix is intended to be loaded by the tinyBoot bootloader. This is a closed-source (currently) two-stage bootloader, with binaries for QEMU provided as download under the Releases tab of this repository.
Technical documentation for monix is found under the docs/
directory, and contribution guidelines can be found in CONTRIBUTING
. Monix is released under a GPLv3 license.
While you are free to contribute to Monix, it is encouraged that you upstream all your changes to this repository.
The current version of Monix contains a device tree for a QEMU configuration called "tiny-ex1". This is the base QEMU device tree with the virtio_mmio
devices removed for simplicity. The necessary tinyBoot binaries can be found under the releases tab, and should be sufficient to boot Monix 0.0.2.
A script, boot.py
, is provided with Monix to boot the Kernel. Set the following environment variables and run the script:
$ python3 scripts/boot.py -r {$TINYROM_IMG} -f {$TBOOT_FIRMWARE},0x48000000 {$KERNEL_IMG},0x49000000 -t {$DTREE} -q $QEMU
Preferred version of QEMU is 8.2.0.
The current Monix source structure looks as follows:
Directory | Description |
---|---|
arch | aarch64 architecture-specific code |
docs | documentation |
drivers | monix device drivers |
kern | core kernel code |
libkern | kernel support (linked lists, logging, utils), libfdt, tinylibc |
platform | platform interface |
scripts | general scripts |