Rust Bare Bones
This page is a work in progress.
This page may thus be incomplete. Its content may be changed in the near future.
Kernel Designs |
---|
Models |
Other Concepts |
Notes
- The rust libcore can easily be included in a kernel, it's analogous to C's freestanding headers
- Enable `--gc-sections` in ld to avoid having to define symbols you don't need (e.g. floating point math functions)
- Always use a target json file (Flexible Target Specifications)
- If you're building a UEFI app, disable function sections as well
- rustc puts every item in its own section by default. The PE format has a limit of 96 sections. So unless you disable function sections, your project will most likely fail to load.
Examples
- https://github.com/thepowersgang/rust-barebones-kernel - A framework written in rust 1.0 alpha, supporting x86 and x86-64, boots off multiboot.
- https://github.com/charliesome/rustboot - VERY old (rust 0.7), includes a bootsector.
- https://github.com/redox-os/redox
- http://os.phil-opp.com/ - New Rust OS Tutorial/Blog by Philipp Oppermann