Skip to content

khaledh/fusion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 (Higher Half Kernel)
    • Physical Memory Manager
    • Virtual Memory Manager
    • Demand Paging
  • Task Management
    • Kernel Tasks
    • User Mode Tasks
    • Preemptive Multitasking
    • Priority-based Scheduling
    • ELF Loader (Demand Paged, Relocation)
  • System Calls
    • System Call Interface
    • User Mode Library
  • IPC
    • Channel-based IPC
    • Message Passing
  • Hardware
    • PCI Device Enumeration
    • ACPI Configuration
    • Local APIC Timer
    • I/O APIC Interrupts
    • PS/2 Keyboard Driver
    • Bochs Graphics Adapter Driver

Planned

  • Capability-based Security
  • Event-based Task State Machines
  • Disk I/O
  • File System
  • Shell
  • GUI
  • Networking

Building

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

The clang and lld binaries should be in your PATH. You can edit the .env file to specify the path to the clang and lld binaries if they are not in your PATH.

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

About

A hobby OS implemented in Nim https://0xc0ffee.netlify.app/osdev

Topics

Resources

License

Stars

Watchers

Forks

Languages