Skip to content

khaledh/fusion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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
    • 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:

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages