Skip to content

NilayShenai/OSiris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSiris

OSiris Desktop

A monolithic x86_64 hobby operating system built from scratch in C and Assembly.

Architecture Language License


OSiris is a hobby project focused on learning low-level system development. It consists of a custom kernel, a window manager, a networking stack, and a small collection of userspace applications.

DOOM Port

OSiris includes a port of DOOM using the PureDOOM library. The game runs in userspace with high-performance software rendering.

DOOM on OSiris


Features

  • x86_64 Kernel: Monolithic architecture booting via Limine (BIOS and UEFI support).
  • Multitasking: Preemptive round-robin scheduler for both kernel and userspace tasks.
  • Memory Management:
    • Bitmap-based Physical Memory Manager.
    • Virtual Memory Manager with recursive paging.
    • Kernel heap for dynamic memory allocation.
  • Desktop Environment:
    • Custom compositor with support for window transparency.
    • Window management features including dragging, resizing, snapping, and minimizing.
    • Support for bitmap fonts and image loading via stb_image.
  • Networking:
    • Driver for Intel e1000 network cards.
    • Implementation of ARP, ICMP, and IPv4 protocols.
    • Support for DHCP and DNS.
  • IPC: Communication between applications and the desktop server via shared memory channels.
  • VFS: Virtual Filesystem layer with support for tmpfs and initrd.
  • Terminal: Terminal emulator with a built-in shell and diagnostic tools.

Architecture Overview

Kernel Design

The system uses a monolithic design where core services run in kernel space. The kernel handles CPU interrupts, exceptions, and provides system calls for userspace interaction.

Graphics and Windowing

The Desktop server acts as a compositor. Applications communicate with the server via IPC to receive a framebuffer. The compositor then blends these buffers to produce the final output.

Network Stack

The networking stack handles raw packet data from the network card and processes it through the various protocol layers. A DHCP client is included to handle automatic IP configuration.


Installation and Setup

1. Repository Setup

git clone --recursive https://github.com/mrunix00/osiris.git
cd osiris

2. Prerequisites

The following dependencies are required to build and run the system:

Distribution Command
Ubuntu/Debian sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libisl-dev nasm qemu-system xorriso
Fedora/RHEL sudo dnf install gcc gcc-c++ make bison flex gmp-devel libmpc-devel mpfr-devel texinfo isl-devel qemu nasm xorriso
Arch Linux sudo pacman -S base-devel qemu-desktop nasm

3. Build and Run

Building the project for the first time will compile a custom GCC cross-compiler.

make run

Roadmap

  • Preemptive Multitasking
  • Compositing Window Manager
  • Networking (e1000, DHCP, DNS)
  • DOOM Port
  • TCP/IP Stack Implementation
  • FAT32 and ext2 Filesystem Support
  • Symmetric Multiprocessing (SMP)
  • Ports for other architectures

About

A monolithic x86_64 hobby operating system built from scratch in C and Assembly.

Topics

Resources

Stars

Watchers

Forks

Contributors