The unCORE Operating System Kernel⚓︎
Introduction⚓︎
Welcome to the official unCORE operating system kernel documentation. unCORE is
- an educational, modern operating system kernel
- completely written in pure, idiomatic Rust (and assembly where required),
- licensed under the GNU Public License v3 or later, except for those parts (lines of code from libraries used in this project) already licensed under other licenses,
- documented in its entirety: the code via Doc comments, the rest via Markdown and GitHub Pages.
Everything you need to know about how to work on unCORE can be found under Development. The Kernel Architecture section contains all the information about the kernel's internal structure and composition. The Testing page contains information on unit- and integration tests.
The Second Half of the Documentation
This documentation is only one half of the whole documentation that is available. The other part is the code documentation that can be build with cd code && cargo run -q -- doc [--help]
. The code itself is extensively documented with doc comments, so make sure to also check out the code documentation!
Writing a Kernel Subsystem or Component From Scratch
unCORE is (currently) suited to building kernel subsystems (scheduling, paging, etc.) or components (threads, drivers, etc.) from scratch. This is because unCORE provides a straight forward documentation and unCORE is very easy to get started with. The (current) code base is small and easy to grasp.
If you always wanted to build anything inside a kernel, this is the project that gets you going! Moreover, merge requests are welcome
Vision⚓︎
As of now, unCORE is an educational project that does not run real software. Anyone interested in Rust, whether they are beginners or experts, can start working on this project. Its extensive documentation eases working with the code tremendously. By fully sticking to Rust (for everything, including the build), we simplify working with the code across all disciplines: building, running, debugging, testing. Rust also provides excellent abstractions and new programming concepts that older languages like C simply lack.
Abstraction | Edsger Wybe Dijkstra
Abstraction is not about vagueness, it is about being precise on a new semantic level.