Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maestro-os/maestro
Unix-like kernel written in Rust
https://github.com/maestro-os/maestro
kernel rust unix
Last synced: 9 days ago
JSON representation
Unix-like kernel written in Rust
- Host: GitHub
- URL: https://github.com/maestro-os/maestro
- Owner: maestro-os
- License: agpl-3.0
- Created: 2020-11-29T19:32:39.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-31T20:46:43.000Z (5 months ago)
- Last Synced: 2024-06-06T23:10:22.480Z (5 months ago)
- Topics: kernel, rust, unix
- Language: Rust
- Homepage: https://blog.lenot.re
- Size: 5.62 MB
- Stars: 2,819
- Watchers: 23
- Forks: 92
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
- awesome-ccamel - maestro-os/maestro - Unix-like kernel written in Rust (Rust)
README
[![AGPL-3.0 license](https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=for-the-badge&logo=book)](./COPYING)
![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmaestro-os%2Fmaestro%2Fmaster%2Fkernel%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=version)
![Rust toolchain](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmaestro-os%2Fmaestro%2Fmaster%2Frust-toolchain.toml&query=%24.toolchain.channel&style=for-the-badge&logo=rust&label=rust%20toolchain&color=%23444)
![Continuous integration](https://img.shields.io/github/actions/workflow/status/maestro-os/maestro/check.yml?style=for-the-badge&logo=github)
![Stars](https://img.shields.io/github/stars/maestro-os/maestro?style=for-the-badge&color=yellow)
[![Discord](https://img.shields.io/discord/971452040821760080?style=for-the-badge&logo=discord&color=%235865f2)](https://discord.gg/4JMBN3YPAk)# About
Maestro is a lightweight Unix-like kernel written in Rust.
The goal is to provide a lightweight operating system able to use the safety features of the Rust language to be reliable.
> This project is still in early stage development, thus it is highly unstable and misses a lot of features. **Do not use it in production!**
To stay updated with the project, follow the [blog](https://blog.lenot.re)!
[Neofetch](https://github.com/dylanaraps/neofetch) and bash running on the OS.
# Features
The following features are currently implemented (non-exhaustive):
- Terminal with [VGA text mode](https://en.wikipedia.org/wiki/VGA_text_mode) and [PS/2](https://en.wikipedia.org/wiki/PS/2_port) keyboard (with forward compatibility with USB handled by the motherboard's firmware)
- Partial support of [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
- Memory allocation/virtual memory
- [Buddy allocator](https://en.wikipedia.org/wiki/Buddy_memory_allocation)
- Internal memory allocator, with similarities with **dlmalloc**'s implementation, working on top of the buddy allocator
- Processes and [scheduler](https://en.wikipedia.org/wiki/Scheduling_(computing)) ([round-robin](https://en.wikipedia.org/wiki/Round-robin_scheduling))
- POSIX signals
- [PCI](https://en.wikipedia.org/wiki/Peripheral_Component_Interconnect) devices enumeration
- Files:
- Mountpoints
- [IDE/PATA](https://en.wikipedia.org/wiki/Parallel_ATA) driver
- Filesystem ([ext2](https://en.wikipedia.org/wiki/Extended_file_system) only for now)
- Disk partitions ([MBR](https://en.wikipedia.org/wiki/Master_boot_record) and [GPT](https://en.wikipedia.org/wiki/GUID_Partition_Table))
- Virtual filesystems (`/tmp` and `/proc`)
- initramfs
- Time/Clock ([RTC](https://en.wikipedia.org/wiki/Real-time_clock))
- Linux system calls (roughly 30% are currently implemented)
- Kernel modules
- [ELF](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format) programs# Quickstart
This repository is not a full operating system in itself but only the kernel.
You can either:
- Use the [installer](https://github.com/maestro-os/maestro-install) to build a full operating system from an ISO file
- Build the OS by hand. For this, you can check the kernel's bookThe OS can then be run by a virtual machine such a **QEMU** or **VirtualBox**, or on a physical machine.
## Build
To build and/or run the OS, `cd` into the kernel's crate:
```sh
cd kernel/
```Then follow the instructions in [README.md](kernel/README.md)
## Documentation
The kernel's book contains general information on how to use the kernel.
The book can be built using *mdbook*, with the command:
```sh
mdbook build doc/
```Then, it can be accessed at `doc/book/index.html`.