Skip to content

siketyan/mikan

Repository files navigation

🍊 mikan

Rust Image

Yet another implementation of MikanOS for aarch64 CPUs, written in Rust.

MikanOS (uchan-nos/mikanos) was originally created by @uchan-nos, who is author of the book ゼロからの OS 自作入門 by Mynavi Publishing Corporation. I tried to port this OS to aarch64 CPUs, written in Rust, built on macOS. For details of this OS and C++ implementation, please refer the original repository.

Note that this repository aims to implement all features of MikanOS, but their design and implementation is customised and optimised for writing in Rust.

Features

  • Supports aarch64 (ARM64) CPUs
  • Written in Rust (no_std)
  • Built on macOS

Prerequisites

  • Rust Toolchain (1.65-nightly+)
  • QEMU
  • dosfstools (macOS only)

Building

Builds a disk image and boots them on QEMU by calling only one command:

make boot

Licencing

Since the original MikanOS is licenced under the Apache 2.0 Licence (see the repo), this repository is also licenced under the licence. For details of the licence, see LICENCE.md.

Roadmap

  • Day 1: Hello world
  • Day 2: Memory map
  • Day 3: Bootloader and framebuffer
  • Day 4: Pixel drawing
  • Day 5: Text rendering and console
  • Day 6: Mouse input and PCI
  • Day 7: Interruption and FIFO
  • Day 8: Memory management
  • Day 9: Super-positioning
  • Day 10: Windows
  • Day 11: Timer and ACPI
  • Day 12: Key inputs
  • Day 13: Multi-tasking (1)
  • Day 14: Multi-tasking (2)
  • Day 15: Terminal
  • Day 16: Commands
  • Day 17: Filesystem
  • Day 18: Applications
  • Day 19: Paging
  • Day 20: System calls
  • Day 21: Windows in application
  • Day 22: Graphics and events (1)
  • Day 23: Graphics and events (2)
  • Day 24: Multiple terminals
  • Day 25: Loading files into app
  • Day 26: Writing files from app
  • Day 27: Memory management for apps
  • Day 28: Japanese (CJK) support and redirecting
  • Day 29: Inter-application communication
  • Day 30: Misc applications

About

🍊 WIP: Yet another implementation of MikanOS for aarch64 CPUs, written in Rust.

Resources

License

Stars

Watchers

Forks