A WIP 64 Bit Operating System
  • C 95%
  • Makefile 1.6%
  • Shell 1.6%
  • Assembly 1.4%
  • Python 0.4%
Find a file
2026-03-18 22:27:09 +00:00
deps Add Virtual Memory Allocator 2026-02-06 12:03:43 -05:00
src allocator: implement slab allocator for small allocations 2026-03-18 22:27:09 +00:00
.clangd "Small" Refactor 2: Electric Boogaloo 2025-11-13 03:05:14 -05:00
.gitignore Add support for cmdline and fix serial and ps/2 bugs 2026-01-26 16:43:32 -05:00
.gitmodules Cross compiler and basic libc support complete 2025-12-27 18:20:30 -05:00
GNUmakefile Fix pmm calling into heap and other minor fixes 2026-03-18 17:49:17 -04:00
LICENCE.TXT 64bit UEFI Bootloader + Minimal 64bit Kernel Done 2025-07-06 20:28:17 -04:00
README.MD memcpy/set optimization & various bug fixes 2026-03-10 02:44:18 -04:00

EvalynOS

A W.I.P 64 Bit OS Kernel

Compiling & Running

You will need to install the following arch packages to compile (Non inclusive, More testing needs to be done)

  • base-devel
  • clang
  • lld
  • python3
  • qemu-desktop
  • edk2-ovmf
  • limine
  • mason
  • ninja
  • Dependancies for GCC & Binutils

Run the script in /src/libc/build-libc.sh to build libc

Delete the generated dot files to have the script recompile things if needed.

Add /src/libc/toolchain/usr/bin/ to your path aswell for things to compile right

Compile with make

Run and compile with make run

Run and compile and generate symbols (Compiles twice) with make debug

Compile Flags

  • -DMUTE_KERNEL_PANIC: Disables the 1khz tone played on a kernel panic for when doing active work on the kernel

Add these flags to the GNUmakefile CFLAGS section

Real Hardware

This kernel is designed to be able to run on REAL hardware if it meets the following requirements

  • x86-64 CPU
  • 512MB Memory
  • A 1280x720 or higher monitor (1920x1080 recommended)
  • A PS/2 keyboard
  • A PC speaker

Flash the evalynOS.iso file to a usb with a command such as dd if=./evalynOS.iso of=/dev/{USB_STICK} and then it can be booted om any system.

Kernel cmdline args

  • serial=on: Enables serial on port 0x3F8 on all machines
  • serial=on: Enables serial on port 0x3F8 when under hypervisor
  • serial=0xXXXX: Enables serial on the hex I/O port given
  • dbg=on: Enables extended logging
  • dbg=stub: Enables the gdb stub server. Requires a working serial port to connect

Kernel Mode Shell Commands

  • TEST: Prints a test message
  • CREDITS: Prints credits.txt
  • CLEAR: Clears the terminal (ALIAS: CLS)
  • MMAP: Prints the memory map provided by the bootloader
  • SMASH: Smashes the stack to test stack smashing protection
  • PANIC: Causes a kernel panic
  • FAULT: Causes a Page Fault to panic with extended info
  • BADAPPLE: Plays the Bad Apple demo inside userspace
  • DOOM: Starts doom in userspace