A fast, simple, secure 64-bit ring-0 kernel written in C and assembly. With modern capabilities.
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!
- 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.
# 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
- x86_64
- AArch64
- MIPS
- SPARC
- RISC-V (RV64)
- Power (modern)
- Multiboot2
- GRUB (BIOS)
- GRUB (UEFI)
- GRUB (Hybrid)
- Vesa (VBE)
- Multiboot2 Info parsing
- 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
- 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
- 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