Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
25d1a98
Shell changed
assembler-0 Aug 23, 2025
61604b2
Shell changed
assembler-0 Aug 23, 2025
f198fa9
Shell changed
assembler-0 Aug 23, 2025
2c9fba0
patches
assembler-0 Aug 23, 2025
e256c49
patches
assembler-0 Aug 23, 2025
5773081
FS changes, More efficient Heap engine improvements, Extra MLFQ fixes…
assembler-0 Aug 24, 2025
b820a82
FS changes, More efficient Heap engine improvements, Extra MLFQ fixes…
assembler-0 Aug 24, 2025
6b6f5df
Docs
assembler-0 Aug 24, 2025
259ee10
Get file size, FAT12 is broken
assembler-0 Aug 24, 2025
925888f
Added new commands
assembler-0 Aug 24, 2025
842951a
FAT12 driver fixes, path resolution, extra changes
assembler-0 Aug 30, 2025
5fb1a64
FAT12 driver fixes, path resolution, extra changes
assembler-0 Aug 30, 2025
d027b5d
FAT12 driver fixes, path resolution, extra changes
assembler-0 Aug 30, 2025
d5eced7
Memory layout changed
assembler-0 Aug 31, 2025
9c3f5d5
Memory layout changed
assembler-0 Aug 31, 2025
88f686b
ISR80 & LSCPU + extra devices
assembler-0 Aug 31, 2025
d125598
Recursive delete and stuff
assembler-0 Aug 31, 2025
d26d94d
New process features
assembler-0 Aug 31, 2025
f79c22f
New process features
assembler-0 Aug 31, 2025
b48fa1c
Renamed
assembler-0 Aug 31, 2025
83e3d97
Quick fix
assembler-0 Aug 31, 2025
10e9883
Documentation
assembler-0 Aug 31, 2025
bed1907
Lots of changes
assembler-0 Sep 1, 2025
7210ac5
Device files?
assembler-0 Sep 1, 2025
0e386c4
Device files?
assembler-0 Sep 1, 2025
272a0bb
Changes
assembler-0 Sep 1, 2025
9de24ae
Docs
assembler-0 Sep 1, 2025
7f5b77a
Docs
assembler-0 Sep 1, 2025
6276305
VirtIO
assembler-0 Sep 1, 2025
a909af2
VirtIO
assembler-0 Sep 1, 2025
8caaccb
New script
assembler-0 Sep 1, 2025
ac5d3f8
New script
assembler-0 Sep 1, 2025
9f87c28
Ready for CFS
assembler-0 Sep 1, 2025
8aee2c7
No cfs
assembler-0 Sep 2, 2025
3a6e296
changes
assembler-0 Sep 2, 2025
17e7e40
changes
assembler-0 Sep 2, 2025
faedd99
GPL
assembler-0 Sep 2, 2025
2107f20
changes
assembler-0 Sep 2, 2025
83b5cb3
RTC century
assembler-0 Sep 2, 2025
e9c828b
docs
assembler-0 Sep 2, 2025
27e31e6
docs
assembler-0 Sep 2, 2025
4205486
docs
assembler-0 Sep 2, 2025
06e2af7
Extra options
assembler-0 Sep 2, 2025
6d5485b
Docs
assembler-0 Sep 2, 2025
8675a16
Small changes, preparing for WM
assembler-0 Sep 3, 2025
6d04180
Compositor?
assembler-0 Sep 3, 2025
779bc92
Compositor?
assembler-0 Sep 4, 2025
6daf5f8
Extra fixes
assembler-0 Sep 4, 2025
153f327
i hvae no idea what is going on but it doesnt work
assembler-0 Sep 4, 2025
34227c4
Extra fixes (again) added workflows
assembler-0 Sep 5, 2025
ceb70c7
Extra fixes (again) added workflows
assembler-0 Sep 5, 2025
d2fb857
Extra fixes (again) added workflows
assembler-0 Sep 5, 2025
ea3bbb8
VirtIO drivers
assembler-0 Sep 5, 2025
b5f404d
Name mangling
assembler-0 Sep 5, 2025
9fd184f
Name mangling
assembler-0 Sep 5, 2025
17a8c53
Copy & renaming
assembler-0 Sep 6, 2025
4430fcd
Iso9660 driver
assembler-0 Sep 6, 2025
e8be264
Changes
assembler-0 Sep 6, 2025
be49b31
sucks
assembler-0 Sep 6, 2025
c0d2fc3
Ext2 driver Read
assembler-0 Sep 6, 2025
d3f0d0f
EXT2 mount
assembler-0 Sep 6, 2025
7d95fd9
New target + extra workflow test
assembler-0 Sep 6, 2025
c8ed091
New target + extra workflow test
assembler-0 Sep 6, 2025
77f4ba2
Read (kinda)
assembler-0 Sep 6, 2025
dd6c82f
EXT2
assembler-0 Sep 6, 2025
52b8eb0
v0.0.1-beta6 release
assembler-0 Sep 6, 2025
9c88e4d
RW lock improvements, EXT delete
assembler-0 Sep 7, 2025
cc68253
RTC update
assembler-0 Sep 7, 2025
c9c55dc
VMware SVGA II
assembler-0 Sep 7, 2025
06c4c8b
Docs & fixes
assembler-0 Sep 7, 2025
63baacb
v0.0.2-rc1
assembler-0 Sep 7, 2025
c1ba948
v0.0.2-rc1
assembler-0 Sep 7, 2025
42876fc
Crashing
assembler-0 Sep 7, 2025
fd2ecb7
Fixed
assembler-0 Sep 7, 2025
1ea2ee8
Extra fixes
assembler-0 Sep 7, 2025
bbe5be3
E1000
assembler-0 Sep 7, 2025
2f78d58
Generic Speaker
assembler-0 Sep 7, 2025
2fcc680
AHCI driver
assembler-0 Sep 7, 2025
658fbb1
AHCI driver
assembler-0 Sep 7, 2025
7ce19a3
6502 Emulator
assembler-0 Sep 7, 2025
29b520a
6502 Emulator
assembler-0 Sep 7, 2025
586b68d
v0.0.2-development1
assembler-0 Sep 7, 2025
9bf8372
Many fixes
assembler-0 Sep 7, 2025
becb3ff
Less cooked
assembler-0 Sep 7, 2025
fd35e39
Unified API and process names
assembler-0 Sep 9, 2025
b0a773d
IPC updated
assembler-0 Sep 9, 2025
36935c0
IPC updated
assembler-0 Sep 9, 2025
d822b2b
IPC updated
assembler-0 Sep 10, 2025
a04ba67
PE32+ loader
assembler-0 Sep 10, 2025
c0e9335
PE32+ loader
assembler-0 Sep 10, 2025
9a1f782
register dump
assembler-0 Sep 11, 2025
c86e50c
POST test included
assembler-0 Sep 12, 2025
b7464c3
AOUT loader, stability changes
assembler-0 Sep 12, 2025
30c9456
RC2
assembler-0 Sep 12, 2025
dbc30a8
new objs
assembler-0 Sep 12, 2025
4aa12d7
VMM + improved layout
assembler-0 Sep 13, 2025
43867d1
Fixed undef variable
assembler-0 Sep 13, 2025
69e80b2
Extra stuff
assembler-0 Sep 13, 2025
5991ba1
Extra stuff
assembler-0 Sep 13, 2025
0f9d6fe
SVGA II update
assembler-0 Sep 13, 2025
9531994
Failing ISO
assembler-0 Sep 13, 2025
e4f1c2e
Failing ISO
assembler-0 Sep 13, 2025
87f54cb
Heap changes
assembler-0 Sep 13, 2025
803cfd2
Vmem changes
assembler-0 Sep 13, 2025
763d6dc
Vmem changes
assembler-0 Sep 13, 2025
be9f52c
Network interfaces
assembler-0 Sep 13, 2025
a0b500e
Vesa optimizations
assembler-0 Sep 13, 2025
7275a64
Some changes
assembler-0 Sep 14, 2025
2eb9c76
VMem changes
assembler-0 Sep 14, 2025
584fb45
New allocator
assembler-0 Sep 14, 2025
5f2fa62
Initrd + extra mount changes
assembler-0 Sep 14, 2025
1688c8f
Initrd
assembler-0 Sep 14, 2025
20c81e5
Initrd
assembler-0 Sep 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# .github/workflows/main.yml
name: VoidFrame kernel build

on:
pull_request:
branches: [ main, dev ]
release:
types: [created]

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup build environment
run: |
sudo apt-get update
sudo apt-get install -y \
meson \
nasm \
xorriso \
grub-pc-bin \
grub-common \
qemu-system-x86 \
mtools \

- name: Compile & Link
run: |
meson setup build -Dexclude_extra_objects=true -Dautomatic_post=true
ninja -C build

- name: Artifact Analysis
run: |
timeout 30s ninja -C build runmin || true

grep -q "1KCSWF23Z456789" build/bootstrap.log
! grep -i "panic\|fault\|crash\|oops\|error\|failed" build/serial.log

ls -la build/voidframe.krnl
test -s build/voidframe.krnl

# Check if ISO was created
ls -la build/VoidFrame.iso
test -s build/VoidFrame.iso

file build/voidframe.krnl | grep -q "ELF.*executable"

# Verify kernel size is reasonable (not empty, not huge)
KERNEL_SIZE=$(stat -c%s build/voidframe.krnl)
test $KERNEL_SIZE -gt 100000 # > 100KB
test $KERNEL_SIZE -lt 10000000 # < 10MB

# Check ISO bootability
file build/VoidFrame.iso | grep -q "ISO.*bootable"

- name: Upload kernel artifacts
uses: actions/upload-artifact@v4
with:
name: voidframe-build-${{ github.sha }}
path: |
build/voidframe.krnl
build/VoidFrame.iso
retention-days: 30
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@ Meson-Build
Makefile
CMakeLists.txt
*build*
target
target
.venv
*cache*
.amazonq
279 changes: 161 additions & 118 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,126 +1,169 @@
# [VoidFrame] - a syscall-less microkernel 💫
# [VoidFrame] - a syscall-less monolithic kernel 💫

> A fast, simple, secure 64-bit microkernel written in C and assembly. With modern capabilities.
> A fast, simple, secure 64-bit monolithic written in C and assembly. With modern capabilities.

---

- Roadmap: [here!](docs/ROADMAP.md)
- How to build: [here!](docs/BUILD.md)
- Roadmap/Features: [here!](docs/ROADMAP.md)
- Structure: [here!](docs/STRUCTURE.md)
- How it works: [here!](docs/ARCHITECTURE.md)

---

### Project Structure
## Status

![License](https://img.shields.io/badge/License-GPLv2-orange)

![Version](https://img.shields.io/badge/Current%20Version-v0.0.2%20development2-blue)

![Build](https://img.shields.io/badge/Build-passing-brightgreen)

## About

VoidFrame is a 64-bit syscall-less **monolithic** kernel (sounds weird and contradicting right?) 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 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

- meson >= 1.0.0
- ninja >= 1.11
- clang >= 18.0.0 (or any C-compliant compiler)
- nasm >= 2.16
- qemu >= 7.0.0 (minimum, failed to run on Limbo emulator (v5.x))
- mkfs.fat (dosfstools)
- mkfs.ext2
- grub-mkrescue
- Note: depending on your distro, grub-mkrescue may require xorriso and mtools packages.

### Quickstart
#### Full development setup
```bash
git clone https://github.com/assembler-0/VoidFrame.git
cd VoidFrame
python scripts/vfconfig.py
meson setup build
cd build
ninja
ninja img
ninja extra-img
ninja run
```
VoidFrame/
├── arch/x86_64/ # Architechture specific code
│ ├── asm/
│ │ └── pxs.asm
│ ├── cpu/
│ │ ├── Cpu.h
│ │ └── Cpu.c
│ ├── gdt/
│ │ ├── GdtTssFlush.asm
│ │ ├── Gdt.h
│ │ └── Gdt.c
│ ├── idt/
│ │ ├── IdtLoad.asm
│ │ ├── Ide.h
│ │ └── Ide.c
│ └── interrupts/
│ ├── Interrupts.asm
│ ├── Interrupts.c
│ └── Interrupts.h
├── drivers/ # Drivers code
│ ├── ethernet/
│ │ ├── Packet.h
│ │ ├── RTL8139.h
│ │ └── RTL8139.c
│ ├── PCI/
│ │ ├── PCI.h
│ │ └── PCI.c
│ ├── RTC/
│ │ ├── Rtc.h
│ │ └── Rtc.c
│ ├── xHCI/
│ │ ├── xHCI.h
│ │ └── xHCI.c
│ ├── Ide.h
│ ├── Ide.c
│ ├── Pic.h
│ ├── Pic.c
│ ├── PS2.h
│ ├── PS2.c
│ ├── Serial.c
│ ├── Serial.c
│ ├── VesaBIOSExtension.c
│ └── VesaBIOSExtension.h
├── fs/
│ ├── FAT12.h # Filesystems
│ ├── FAT12.c
│ ├── Fs.h
│ ├── Fs.c
│ ├── FsUtils.h
│ ├── FsUtils.c
│ ├── VFS.c
│ └── VFS.h
├── include/ # Common includes
│ ├── Font.h
│ ├── Io.h
│ ├── Paging.h
│ ├── Paging.asm
│ ├── stdbool.h
│ ├── stdint.h
│ ├── stddef.h
│ ├── stdlib.h
│ └── stdarg.h
├── kernel/ # Kernel core
│ ├── atomic/ # Atomic operations
│ │ ├── Atomics.c
│ │ ├── Atomics.h
│ │ └── Spilock.h
│ ├── core/ # Entry point
│ │ ├── Kernel.h
│ │ ├── Kernel.c
│ │ ├── Panic.c
│ │ ├── Panic.c
│ │ └── Multiboot2.h
│ ├── elf/ # ELF loader
│ │ ├── ELFloader.c
│ │ └── ElFloader.h
│ ├── etc/ # Misc. files
│ │ ├── Console.c
│ │ ├── Console.h
│ │ ├── Editor.h
│ │ ├── Editor.c
│ │ ├── Shell.c
│ │ ├── Shell.h
│ │ ├── StringOps.c
│ │ ├── StringOps.h
│ │ ├── VBEConsole.c
│ │ └── VBEConsole.h
│ ├── ipc/ # IPC related files
│ │ ├── Ipc.c
│ │ └── Ipc.h
│ ├── memory/ # Physical and Virtual memory manager
│ │ ├── KernelHeap.c
│ │ ├── KernelHeap.h
│ │ ├── MemOps.h
│ │ ├── MemOps.c
│ │ ├── Memory.h
│ │ ├── Memory.c
│ │ ├── MemoryPool.c
│ │ ├── MemoryPool.h
│ │ ├── StackGuard.c
│ │ ├── StackGuard.h
│ │ ├── VMem.c
│ │ └── VMem.h
│ └── process/ # MLFQ scheduler
│ ├── Process.c
│ └── Process.h
├── scripts/
│ └── elf.ld
├── linker.ld
├── grub.cfg
├── meson.build
└── ...
```
#### Minimal setup
```bash
git clone https://github.com/assembler-0/VoidFrame.git
cd VoidFrame
meson setup build -Dexclude_extra_objects=true
cd build
ninja
ninja runmin
```

## Features
### Architecture
- [x] x86_64
- [ ] AArch64
- [ ] MIPS
- [ ] SPARC
- [ ] RISC-V (RV64)
- [ ] Power (modern)
### Boot
- [x] Multiboot2
- [x] GRUB (BIOS)
- [ ] GRUB (UEFI)
- [ ] GRUB (Hybrid)
- [x] Vesa (VBE)
- [x] Multiboot2 Info parsing
### Core
- [x] Multi-tasking (MLFQ)
- [x] Per-process authentication check (Astra)
- [x] Dynamic ML-inspired PIT frequency scaling (DynamoX)
- [x] Virtual Memory (canonical)
- [x] Physical Memory
- [x] Memory Pool
- [x] AVX2/SSE2 accelerated memory operations
- [x] Memory & user protection
- [x] Memory canaries, guard pages
- [x] Per-process memory checks (Cerberus)
- [x] Stack guard
- [x] Stack trace
- [x] Heap (Class-based)
- [x] Paging
- [x] Interrupts
- [x] Process Management
- [x] Locks (MCS/RW/norm)
- [x] Atomics
- [x] IPC
- [x] Compositor
- [x] Embedded shell
- [x] Builtin Editor
- [x] ELF64 loader
- [x] PE32+/COFF loader
- [x] a.out loader
### Filesystems
- FAT1x
- [x] Read
- [x] Write
- [x] Create
- [x] Delete
- [x] List
- EXT2
- [x] Read
- [x] Write
- [x] Create
- [x] Delete
- [x] List
- VFRFS (VoidFrame RAMFS)
- [x] Read
- [x] Write
- [x] Create
- [x] Delete
- [x] List
- ISO9660 (RO)
- [x] Read
- [x] List
- VFS (Virtual File System)
- [x] Full abstraction
- [x] EXT2
- [x] FAT1x
- [x] VFRFS
- [ ] ISO9660
### Drivers
- Network
- [x] RTL8139 (PCI)
- [x] E1000 (PCI)
- Network Interface
- [x] IP
- [x] ARP
- [x] ICMP
- Sound
- [x] SB16 (PCI)
- [x] Generic PC speaker
- USB
- [x] xHCI
- VirtIO
- [x] Block
- Graphics
- [x] Vesa (VBE)
- [x] VMWare SVGA II
- [x] VGA text mode
- Timer
- [x] PIT
- [x] PIC
- [x] APIC (not working)
- [x] RTC
- Generic
- [x] PCI
- [x] ISA
- [x] xHCI
- [x] Serial
- [x] PS/2
- [x] LPT
- Storage
- [x] PATA (IDE)
- [x] VirtIO Block
- [x] AHCI
Loading