A monolithic x86_64 hobby operating system built from scratch in C and Assembly.
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.
OSiris includes a port of DOOM using the PureDOOM library. The game runs in userspace with high-performance software rendering.
- 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.
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.
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.
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.
git clone --recursive https://github.com/mrunix00/osiris.git
cd osirisThe 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 |
Building the project for the first time will compile a custom GCC cross-compiler.
make run- 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

