Sierra Leone OS (SLeOS) — A minimal bootable operating system prototype built with C/Assembly, featuring FCFS + Round-Robin scheduling, paging-based memory management, and an interactive shell. Developed for COMP 323 - Operating Systems at Limkokwing University, Sierra Leone.
# SLeOS — Sierra Leone Operating System
## A Minimal Bootable OS Prototype
**Limkokwing University of Creative Technology — Sierra Leone**
**Faculty of Information and Communication Technology | March–July 2026**
---
## Project Overview
SLeOS is a minimal bootable operating system kernel built from scratch in C and x86 Assembly.
It runs inside the **QEMU** emulator, making it fully accessible on standard hardware.
> *"Welcome to Sierra Leone OS — Built by Limkokwing Students"*
### Goals
- Demonstrate core OS concepts: bootloading, process scheduling, memory management
- Address Sierra Leone's computing challenges through low-resource, open-source design
- Provide a hands-on learning platform for future ICT students
---
## Features
| Component | Description |
|-------------------|---------------------------------------------------------------|
| **Bootloader** | NASM Multiboot-compliant bootloader, loads kernel at 1MB |
| **VGA Driver** | 80×25 colour text-mode driver with scrolling and cursor |
| **Scheduler** | FCFS + Round-Robin with context-switch simulation & Gantt |
| **Memory Manager**| Paging (32 pages) + segmentation simulator with visual map |
| **Filesystem** | Simple in-memory filesystem with create/read/list |
| **Shell** | Interactive keyboard-driven shell with 10 built-in commands |
---
## Project Structure
```
sleos/
├── boot/
│ └── boot.asm # Multiboot-compliant bootloader (NASM)
├── kernel/
│ ├── kernel.c # Kernel entry, boot banner, init sequence
│ ├── vga.h / vga.c # VGA 80x25 text driver
│ ├── scheduler.h/.c # FCFS + Round-Robin process scheduler
│ ├── memory.h/.c # Paging + segmentation memory manager
│ ├── shell.h / shell.c # Interactive shell with filesystem
├── iso/
│ └── boot/grub/
│ └── grub.cfg # GRUB bootloader config
├── linker.ld # GNU LD linker scri …