Hermit is a unikernel targeting a scalable and predictable runtime for high-performance and cloud computing.
Unikernel means, you bundle your application directly with the kernel library, so that it can run without any installed operating system.
This reduces overhead, therefore, interesting applications include virtual machines and high-performance computing.
Background
Hermit is a rewrite of HermitCore in Rust developed at RWTH-Aachen.
HermitCore was a research unikernel written in C (libhermit).
The ownership model of Rust guarantees memory/thread-safety and enables us to eliminate many classes of bugs at compile-time.
Consequently, the use of Rust for kernel development promises fewer vulnerabilities in comparison to common programming languages.
The kernel and the integration into the Rust runtime are entirely written in Rust and do not use any C/C++ Code.
We extended the Rust toolchain so that the build process is similar to Rust’s usual workflow.
Rust applications that use the Rust runtime and do not directly use OS services are able to run on Hermit without modifications.
Requirements
Building your own applications
Have a look at the template.
Use Hermit for C/C++, Go, and Fortran applications
If you are interested to build C/C++, Go, and Fortran applications on top of a Rust-based library operating system, please take a look at https://github.com/hermit-os/hermit-playground.
Wiki
Please use the Wiki to get further information and configuration options.
Publications
Several scientific publications have been made based on the Hermit project:
- Niklas Eiling, Martin Kröning, Jonathan Klimt, Philipp Fensch, Stefan Lankes, and Antonello Monti. 2023. GPU Acceleration in Unikernels Using Cricket GPU Virtualization. In Workshops of The International Conference on High Performance Computing, Network, Storage, and Analysis (SC-W 2023), November 12–17, 2023, Denver, CO, USA. ACM, New York, NY, USA, 8 pages. https://doi.org/10.1145/3624062.3624236
- Jonathan Klimt, Martin Kröning, Stefan Lankes, and Antonello Monti. 2023. On the Challenge of Sound Code for Operating Systems. In Proceedings of the 12th Workshop on Programming Languages and Operating Systems (Koblenz, Germany) (PLOS ’23). Association for Computing Machinery, New York, NY, USA, 83–90. https://doi.org/10.1145/3623759.3624554
- Stefan Lankes, Jonathan Klimt, Jens Breitbart, and Simon Pickartz. 2020. RustyHermit: A Scalable, Rust-Based Virtual Execution Environment. In High Performance Computing, Heike Jagode, Hartwig Anzt, Guido Juckeland, and Hatem Ltaief (Eds.). Springer International Publishing, Cham, 331–342. https://doi.org/10.1007/978-3-030-59851-8_22
- Mincheol Sung, Pierre Olivier, Stefan Lankes, and Binoy Ravindran. 2020. Intra-Unikernel Isolation with Intel Memory Protection Keys. In Proceedings of the 16th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (Lausanne, Switzerland) (VEE ’20). Association for Computing Machinery, New York, NY, USA, 143–156. https://doi.org/10.1145/3381052.3381326
- Stefan Lankes, Jens Breitbart, and Simon Pickartz. 2019. Exploring Rust for Unikernel Development. In Proceedings of the 10th Workshop on Programming Languages and Operating Systems (Huntsville, ON, Canada) (PLOS’19). Association for Computing Machinery, New York, NY, USA, 8–15. https://doi.org/10.1145/3365137.3365395
- Pierre Olivier, Daniel Chiba, Stefan Lankes, Changwoo Min, and Binoy Ravindran. 2019. A Binary-Compatible Unikernel. In Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (Providence, RI, USA) (VEE 2019). Association for Computing Machinery, New York, NY, USA, 59–73. https://doi.org/10.1145/3313808.3313817
- Stefan Lankes, Simon Pickartz, and Jens Breitbart. 2017. A Low Noise Unikernel for Extrem-Scale Systems. In Architecture of Computing Systems - ARCS 2017, Jens Knoop, Wolfgang Karl, Martin Schulz, Koji Inoue, and Thilo Pionteck (Eds.). Springer International Publishing, Cham, 73–84. https://doi.org/10.1007/978-3-319-54999-6_6
- Stefan Lankes, Simon Pickartz, and Jens Breitbart. 2016. HermitCore: A Unikernel for Extreme Scale Computing. In Proceedings of the 6th International Workshop on Runtime and Operating Systems for Supercomputers (Kyoto, Japan) (ROSS ’16). Association for Computing Machinery, New York, NY, USA, Article 4, 8 pages. https://doi.org/10.1145/2931088.2931093
Credits
Hermit is derived from following tutorials and software distributions:
- Philipp Oppermann’s excellent series of blog posts.
- Erik Kidd’s toyos-rs, which is an extension of Philipp Opermann’s kernel.
- The Rust-based teaching operating system eduOS-rs.
License
Hermit is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Hermit is being developed on GitHub.
Create your own fork, send us a pull request, and chat with us on Zulip.