https://github.com/khaledh/fusion
A hobby OS implemented in Nim https://0xc0ffee.netlify.app/osdev
https://github.com/khaledh/fusion
kernel nim operating-system osdev
Last synced: 6 days ago
JSON representation
A hobby OS implemented in Nim https://0xc0ffee.netlify.app/osdev
- Host: GitHub
- URL: https://github.com/khaledh/fusion
- Owner: khaledh
- License: mit
- Created: 2023-11-20T21:10:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-07T13:14:15.000Z (7 days ago)
- Last Synced: 2025-05-08T23:52:36.733Z (6 days ago)
- Topics: kernel, nim, operating-system, osdev
- Language: Nim
- Homepage:
- Size: 2.91 MB
- Stars: 464
- Watchers: 7
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://0xc0ffee.netlify.app).## Screenshots
**UEFI Bootloader**

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

**Booting and Running the 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:
- [Nim](https://nim-lang.org)
- [LLVM](https://llvm.org) (clang and lld)
- [Just](https://github.com/casey/just)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:
```sh
just build
```## Running
Fusion currently runs on [QEMU](https://www.qemu.org), so you'll need to install it first. Launch Fusion with the following command:
```sh
just run
```## License
MIT