CryptixOS is a modern, modular, Unix-like operating system for x86_64 and aarch64, written entirely in C++. It features its own kernel, and standard library (Prism). Designed for clarity, extensibility, and education, CryptixOS serves as a powerful base for learning OS development or building your own custom system from scratch.
CryptixOS was created out of curiosity and a desire to understand how modern operating systems workβfrom kernel bootstrapping and memory management to user-facing system calls. The goal is to build a modular, maintainable, and educational operating system from scratch, with clean C++ abstractions, not just C.
This project is ideal for:
- Learning OS design (kernel, memory, file systems, drivers, scheduling, etc.)
- Experimenting with low-level C++ in a systems context
- Building an actual custom OS on real or emulated hardware
CryptixOS is a monolithic kernel designed for the x86_64 architecture. It features:
- Physical & virtual memory manager with paging and kernel heap allocation
- Custom C++ STL-like containers (vector, string, intrusive list, unordered map)
- Virtual filesystem layer with support for ext2 and shmem
- ELF loading and execution for userland programs
- Syscall interface for user-kernel communication
- Multithreading and scheduling with future plans for SMP
- Basic device drivers: PS/2, serial, VGA, RTC, PCI, etc.
- It uses its own standard library (Prism) and custom build tools.
Make sure the following tools are installed on your system:
- C++20 compiler (GCC or Clang)
- NASM (for low-level assembly)
- QEMU (or Bochs) for emulation
- Meson + Ninja (build system)
- xbstrap + Python 3 (for sysroot management)
- python-guestfs (for creating and formatting the root filesystem image)
- xorriso (for ISO image creation)
Before building the kernel, you need to build the system root (toolchain and base packages). Here's how:
mkdir build-sysroot # Create a directory for the sysroot
cd build-sysroot # Enter it
xbstrap init .. # Initialize xbstrap using the main repo
xbstrap install base # Build and install base packages
This step ensures you have the tools and libraries needed for building the OS.
Once the sysroot is ready:
./Meta/run.py --target-arch x86_64 --compiler clang --build-type release setup # Configure for your target architecture
./Meta/run.py --target-arch x86_64 --compiler clang --build-type release build # Build the kernel and generate a bootable .iso
To run CryptixOS in QEMU:
./Meta/run.py --target-arch x86_64 --compiler clang --build-type release <run_uefi|run_bios>
- Use run_uefi to boot via UEFI.
- Use run_bios for BIOS boot (x86_64 only).
- β Fully custom C++ kernel with standard containers
- β ELF loading and userland support
- β PCI / ACPI / APIC / HPET / NVMe / PS/2
- β Multiple filesystems: ext2, tmpfs, procfs, fat32
- β Basic userland shell
- β Lazy Loading the pages
- β³ Signals, AHCI, and full networking coming soon
- β³ Networking
- β³ Module support
- Meson - Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible.
- Limine Boot Protocol
- OSDev Wiki β A comprehensive resource for operating system development.
- mlibc - mlibc is a fully featured C standard library designed with portability in mind.
- Limine - Modern, advanced, portable, multiprotocol bootloader and boot manager, also used as the reference implementation for the Limine boot protocol.
- compiler-rt builtins β Low-level runtime library for compiler support.
- demangler - C++, Microsoft C++, Rust and DLang name demangler
- fmt β Fast, type-safe formatting library (used instead of stdio or iostreams).
- freestnd-cxx-hdrs - Headers from GCC's libstdc++ that can be used in a freestanding environment.
- magic_enum - Header-only C++17 library provides static reflection for enums, work with any enum type without any macro or boilerplate code.
- OVMF binaries - Unofficial EDK2 nightly build
- uACPI - A portable and easy-to-integrate implementation of the Advanced Configuration and Power Interface (ACPI).
CryptixOS welcomes contributions in the following areas:
- New drivers (network, USB, GPU)
- Scheduler enhancements (preemption, SMP support)
- Filesystem additions (FAT, ISO9660)
- Kernel modules
- Unit tests & test harness
- Documentation (inline + developer guides)
- Use PascalCase for types and functions
- Use m_PascalCase for private members
- Follow Prism conventions and RAII principles
- Prefer Ref over raw pointers
- β Per-CPU Wait, Ready, Blocked Queues using IntrusiveLists
- β Multi-threading
- β SMP
- β WaitPid
- β Events
- β Physical Bitmap Allocator
- β¬ Physical Buddy Allocator
- β Virtual Memory Allocator, using Red-Black Tree
- β Heap Slab Allocator
- β¬ Heap Slob Allocator
- β Kernel Module Loader
- β MBR
- β¬ EBR
- β GPT
- β NVMe
- β¬ AHCI
- β¬ SCSI
- β¬ Virtio
- β PIT
- β Local APIC Timer
- β RTC
- β¬ KVM Clock
- β HPET
- β PIC
- β I/O APIC
- β PCI
- β PCIe
- β Device Tree
- β ACPI
- β Basic Power Management (Reboot, Shutdown)
- β¬ USB
- β¬ Embedded Controller
- β TTY
- β¬ PTY
- β Serial
- β I8042 Controller
- β PS/2 Keyboard
- β PC Speaker
- β¬ Virtio Console
- β¬ ARP
- β¬ TCP
- β¬ UDP
- β Rtl8139
- β¬ Virtio NIC
- β¬ Named Pipes
- β DevTmpFs
- β Ext2Fs
- β Fat32Fs
- β ProcFs
- β TmpFs
- β Initrd
- β¬ SysFs
- β¬ DevPtsFs
- β¬ Plan9Fs
- β¬ DevLoopFs
- β¬ Iso9660Fs
- β¬ EfiVarsFs
- β¬ Signals
- β¬ Thread API
- β VFS
- β Session Management
- β¬ Networking
CryptixOS is licensed under the GPL-3.0. See LICENSE for details.

