penberg/manticore

Manticore is a research operating system, written in Rust.

C

295

580 commits

updated Dec 1, 2023

See the code

README

Manticore

MIT/Apache 2.0 License

Manticore is a research operating system to explore parakernels.

Table of Contents

Introduction

Manticore is a clean-slate research operating system, written in the Rust programming language, with the aim of exploring the parakernel OS architecture.

Please refer to the project homepage for more information.

Getting Started

Building from Sources

First, install the toolchain, which includes rustup, Rust, and other dependencies:

./scripts/install-toolchain

Now that you have the toolchain installed, you can build Manticore with:

make

The build system generates a kernel.iso image, which you can launch under QEMU with:

$ ./scripts/run kernel.iso

For more information, see Manticore Hacker's Guide.

Running Example Applications

Once kernel.elf is built, you can build an user space echo server with:

$ make -C usr/echod

and launch it under QEMU with:

$ ./scripts/run --publish 7777/udp usr/echod/echod.iso

You can now communicate with the echo server with:

$ nc -u4 localhost 7777
hello
hello

Supported Hardware

  • Legacy-free PC with a 64-bit x86 processor
    • xAPIC2 interrupt controller
    • MSI-X interrupt delivery
    • PCIe 3.0 bus
  • VirtIO network device

Code Structure

Manticore's code is structured into different directories as follows:

  • arch: machine architecture specific code
  • drivers: device drivers
    • virtio: VirtIO device drivers
    • pci: PCIe device drivers
  • kernel: kernel services (e.g., process scheduling and system calls)
  • lib: support libraries
  • mm: memory management (e.g., virtual memory manager and kernel dynamic memory allocator)
  • usr: user space libraries and example applications

Documentation

Publications

Community and Contributing

If you have questions or comments, please join the Manticore Slack! Bug reports and pull requests are also welcome!

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Code of Coduct for details.

Authors

See also the list of contributors who contributed to this project.

License

Licensed under either of these:

Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.

kernel
operating-system
rust

penberg/manticore

Manticore is a research operating system, written in Rust.

C

295

580 commits

updated Dec 1, 2023

See the code

README

Manticore

MIT/Apache 2.0 License

Manticore is a research operating system to explore parakernels.

Table of Contents

Introduction

Manticore is a clean-slate research operating system, written in the Rust programming language, with the aim of exploring the parakernel OS architecture.

Please refer to the project homepage for more information.

Getting Started

Building from Sources

First, install the toolchain, which includes rustup, Rust, and other dependencies:

./scripts/install-toolchain

Now that you have the toolchain installed, you can build Manticore with:

make

The build system generates a kernel.iso image, which you can launch under QEMU with:

$ ./scripts/run kernel.iso

For more information, see Manticore Hacker's Guide.

Running Example Applications

Once kernel.elf is built, you can build an user space echo server with:

$ make -C usr/echod

and launch it under QEMU with:

$ ./scripts/run --publish 7777/udp usr/echod/echod.iso

You can now communicate with the echo server with:

$ nc -u4 localhost 7777
hello
hello

Supported Hardware

  • Legacy-free PC with a 64-bit x86 processor
    • xAPIC2 interrupt controller
    • MSI-X interrupt delivery
    • PCIe 3.0 bus
  • VirtIO network device

Code Structure

Manticore's code is structured into different directories as follows:

  • arch: machine architecture specific code
  • drivers: device drivers
    • virtio: VirtIO device drivers
    • pci: PCIe device drivers
  • kernel: kernel services (e.g., process scheduling and system calls)
  • lib: support libraries
  • mm: memory management (e.g., virtual memory manager and kernel dynamic memory allocator)
  • usr: user space libraries and example applications

Documentation

Publications

Community and Contributing

If you have questions or comments, please join the Manticore Slack! Bug reports and pull requests are also welcome!

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Code of Coduct for details.

Authors

See also the list of contributors who contributed to this project.

License

Licensed under either of these:

Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.

kernel
operating-system
rust

Significant stargazers

Philipp Oppermann

3,143 followers · starred May 2019

ksqsf

237 followers · starred May 2019

Florian Diebold

110 followers · starred Sep 2019

Gibson Fahnestock

345 followers · starred May 2019