/fusion

A hobby OS implemented in Nim

Primary LanguageNimMIT LicenseMIT

Fusion OS

Fusion is a hobby operating system for x86-64 implemented in Nim. I'm documenting the process of building it at: https://0xc0ffee.netlify.app.

Screenshots

UEFI Bootloader

UEFI Bootloader

GUI (Note: This screenshot is from the graphics branch, which is still a work-in-progress.)

Screenshot from the graphics branch

Booting and Running the Kernel

Booting and Running Fusion Kernel

Features

The following features are currently implemented:

  • UEFI Bootloader
  • Memory Management
    • Single Address Space
    • Physical Memory Manager
    • Virtual Memory Manager
    • Higher Half Kernel
  • Task Management
    • Kernel Tasks
    • User Mode Tasks
    • Preemptive Multitasking
    • Priority-based Scheduling
    • ELF Loader
  • System Calls
    • System Call Interface
    • SYSCALL/SYSRET
    • User Mode Library
  • IPC
    • Synchronization Primitives
    • Channel-based IPC
    • Message Passing
  • Hardware
    • Timer Interrupts
    • PCI Device Enumeration
    • Bochs Graphics Adapter Driver

Planned

  • Capability-based Security
  • Event-based Task State Machines
  • Demand Paging
  • Disk I/O
  • File System
  • Keyboard/Mouse Input
  • Shell
  • GUI
  • Networking

Building

To build Fusion, you need to have the following dependencies installed:

Build Fusion with the following command:

just build

Running

Fusion currently runs on QEMU, so you'll need to install it first. Launch Fusion with the following command:

just run

License

MIT