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.
UEFI Bootloader
GUI (Note: This screenshot is from the graphics
branch, which is still a work-in-progress.)
Booting and Running the Kernel
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
- Capability-based Security
- Event-based Task State Machines
- Demand Paging
- Disk I/O
- File System
- Keyboard/Mouse Input
- Shell
- GUI
- Networking
To build Fusion, you need to have the following dependencies installed:
Build Fusion with the following command:
just build
Fusion currently runs on QEMU, so you'll need to install it first. Launch Fusion with the following command:
just run
MIT