The Avery Kernel is a modern open-source operating system kernel written in C++. It serves as the foundation of mOS and represents the second major generation of Avery.
Avery aims to be a clean, educational, and extensible kernel, built from the ground up with modern software engineering practices while remaining approachable to contributors and learners alike.
- Serial output
- Framebuffer abstraction + character output
- Panic functions + Assertion system
- Logging system (both visual + serial)
- Halt loop
- Basics of the kernel + GDT, IDT and interrupt handlers
- PIC, timer and keyboard support
- Stack tracing support
- Limine Memory map parsing
- Physical memory manager
- Virtual memory manager
- Kernel heap (malloc, free)
- Create classes and helpers with the heap
- Device objects
- Driver registration
- Driver lifecycle
- MMIO port I/O helpers
- Block device abstraction
- Move to Limine 6 barely (APIC or x2APIC mapped to legacy PIC)
- PCI enumeration
- PCI BAR support
- ATA driver
- Block device layer
- VFS
- FAT32
- Read & Write files
- Create user mode
- Basic scheduler
- Read ELF executables
- System calls
- Create userland (shell + init process)
- Avery Kernel SDK
- Driver build system
- Driver templates
- Driver documentation
- Loadable modules
- Driver manifest format
- Sample PCI driver
- Sample block driver
- Sample character driver
- Stable kernel driver API
- ACPI
- MADT parsing
- x2APIC and APIC
- APIC timer
- IPIs
- xHCI
- USB enumeration
- USB keyboard
- USB mouse
- USB mass storage
- USB hubs
- Ethernet driver (E1000 first)
- Ethernet layer
- ARP
- IPv4
- ICMP
- UCP
- TCP
- DNS
- DHCP
- USB Bluetooth adapter support
- HCI layer
- L2CAP
- HID over Bluetooth
- Bluetooth keyboard and mouse
- Intel HDA
- Audio Mixer
- PCM playback
- Basic Sound API
- Better graphics abstraction
- Font renderer
- Mouse cursor
- Window manager
- Simple compositor
- Terminal app
- File manager
- Port binutils
- Port Clang
- libc
- C examples
- Build programs for Avery
- Self-hosting
- Graphics API
- Users/groups
- Permissions
- Process isolation
- ASLR
- NX
- Sandboxing
- Driver permissions/signing