Skip to content

assembler-0/VoidFrame

Repository files navigation

[VoidFrame] - a ring 0 kernel 💫

A fast, simple, secure 64-bit ring-0 kernel written in C and assembly. With modern capabilities.


  • Roadmap/Features: here!
  • How it works: here!
  • CMake Build and Configuration Guide: here!

Status

CI/CD License Version

About

VoidFrame is a 64-bit ring-0 kernel designed for the x86_64 architecture written in C and assembly (nasm). This kernel was intended and targeted for people who want to learn about operating systems and want to make a piece of their own. As the designer of this kernel, I just wanted to make something that is simple, fast, secure and easy to understand. Which obviously means that it is not a perfect kernel. And it breaks all the time. But I have tried my hardest to bring many security features to the kernel. If you were to come across a bug, feel free to open an issue. Fork the repo and make a pull request. It would be amazing if you could contribute to this project!

Prerequisites (development)

  • x64-compatible cpu (used: Intel i3-12100F)
  • POSIX-compliant OS (SysV ABI) (used: Arch Linux 6.16.9-arch1-1)
  • cmake >= 3.20 (used: cmake 4.1.2)
  • ninja >= 1.11 (used: ninja 1.21.1)
  • clang/++ >= 18.0.0 (used: 20.1.8)
  • nasm >= 2.16 (used: 2.16.03)
  • qemu >= 7.0.0 (used: 10.1.0)
  • mkfs.fat
  • mkfs.ext2
  • grub-mkrescue (used: 2:2.12.r359.g19c698d12-1)
    • Note: depending on your distro, grub-mkrescue may require xorriso and mtools packages.

Quickstart

Full development setup

# CMake
git clone https://github.com/assembler-0/VoidFrame.git
cd VoidFrame
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -G Ninja
ninja -j$(nproc)
ninja img
ninja extra-img
ninja run

Features

Architecture

  • x86_64
  • AArch64
  • MIPS
  • SPARC
  • RISC-V (RV64)
  • Power (modern)

Boot

  • Multiboot2
  • GRUB (BIOS)
  • GRUB (UEFI)
  • GRUB (Hybrid)
  • Vesa (VBE)
  • Multiboot2 Info parsing

Core

  • Multi-tasking (MLFQ)
  • Per-process authentication check (Astra)
  • Dynamic ML-inspired PIT frequency scaling (DynamoX)
  • Virtual Memory (canonical)
  • Physical Memory
  • Dynamic memory mapping
  • Memory Pool
  • AVX2/SSE2 accelerated memory operations
  • Memory & user protection
  • Memory canaries, guard pages
  • Per-process memory checks (Cerberus)
  • Stack guard
  • Stack trace
  • Heap (Class-based)
  • Paging
  • Interrupts
  • Process Management
  • Locks (MCS/RW/norm)
  • Atomics
  • IPC
  • Compositor
  • Embedded shell
  • Builtin Editor
  • ELF64 loader
  • PE32+/COFF loader
  • a.out loader

Filesystems

  • FAT1x
    • Read
    • Write
    • Create
    • Delete
    • List
  • EXT2
    • Read
    • Write
    • Create
    • Delete
    • List
  • VFRFS (VoidFrame RAMFS)
    • Read
    • Write
    • Create
    • Delete
    • List
  • ISO9660 (RO)
    • Read
    • List
  • VFS (Virtual File System)
    • Full abstraction
    • EXT2
    • FAT1x
    • VFRFS
    • ISO9660

Drivers

  • Network
    • RTL8139 (PCI)
    • E1000 (PCI)
  • Network Interface
    • IP
    • ARP
    • ICMP
  • Sound
    • SB16 (PCI)
    • Generic PC speaker
  • USB
    • xHCI
  • VirtIO
    • Block
  • Graphics
    • Vesa (VBE)
    • VMWare SVGA II
    • VGA text mode
  • Timers
    • PIT (for APIC calibration)
    • PIC (remnants)
    • APIC (with timer)
    • LAPIC
    • IOAPIC
    • RTC
    • TSC (usable delay(), finally!)
  • Generic
    • PCI
    • ISA
    • xHCI
    • Serial
    • PS/2
    • LPT
  • Storage
    • PATA (IDE)
    • VirtIO Block
    • AHCI