status

Status

KoraOS is a work in progress. Some of it already runs on real hardware; the rest is planned or still just an idea, and is marked as such below.

This page is generated at build time from project_doc/features.yaml in the kernel repository, and the roadmap lives in project_doc/roadmap.md. As of kernel commit 7844d8c ().

Summary

84% of the 58 listed features are completed.

  • Completed49

    Merged to main.

  • In progress0

    Being implemented.

  • Planned3

    Scheduled on the roadmap.

  • Wish6

    An idea, not scheduled.

Now in progress

Nothing is marked as in progress right now.

Recently completed

Platforms

4 of 4 done
  • Raspberry Pi 3

    Boots on real Raspberry Pi 3 hardware from the SD card.

    Completed
    Platforms
    • Raspberry Pi 3
    PRs
    #19 #20
    Completed
  • Raspberry Pi 4

    Boots on real Raspberry Pi 4 hardware from the SD card.

    Completed
    Platforms
    • Raspberry Pi 4
    PRs
    #19 #21
    Completed
  • QEMU raspi3b

    Runs in QEMU's Raspberry Pi 3 emulation for quick testing.

    Completed
    Platforms
    • QEMU raspi3b
    Completed
  • QEMU virt

    Independent AArch64 development target with VirtIO devices.

    Completed
    Platforms
    • QEMU virt
    Completed

Kernel core

8 of 8 done
  • Boot and EL1 kernel

    Drops from EL2/EL3 to EL1 and parks secondary cores.

    Completed
    Platforms
    all platforms
    Completed
  • Exception vectors

    EL1 vector table with trap handling for kernel and EL0.

    Completed
    Platforms
    all platforms
    Completed
  • Interrupt controllers

    BCM controller on Pi 3, GIC-400 on Pi 4, GICv2 on virt.

    Completed
    Platforms
    all platforms
    Completed
  • System timer

    Generic-timer delays and a periodic interrupt tick.

    Completed
    Platforms
    all platforms
    PRs
    #14 #15
    Completed
  • MMU with flat identity map

    One shared address space with no memory protection, by design.

    Completed
    Platforms
    all platforms
    Completed
  • Page frame allocator

    Freeable bitmap allocator for physical pages.

    Completed
    Platforms
    all platforms
    PR
    #1
    Completed
  • Kernel heap

    Small-object kmalloc for the kernel and the USB stack.

    Completed
    Platforms
    all platforms
    Milestone
    M6
    PR
    #45
    Completed
  • Freestanding C++ runtime

    Lets the kernel host C++ code such as the Circle USB stack.

    Completed
    Platforms
    all platforms
    PR
    #13
    Completed

Multitasking

5 of 5 done
  • Cooperative processes

    Nested spawn/wait process model with per-task file tables.

    Completed
    Platforms
    all platforms
    PR
    #4
    Completed
  • Preemptive scheduler

    Timer-driven task switching with sleeping and wait queues.

    Completed
    Platforms
    all platforms
    Milestone
    M7
    PRs
    #51 #52
    Completed
  • Multicore (SMP)

    User programs run in parallel on all cores under one big kernel lock.

    Completed
    Platforms
    all platforms
    Milestone
    M7
    Completed
  • Core placement and pinning

    Per-core run queues; tasks can be started on a chosen core.

    Completed
    Platforms
    all platforms
    Milestone
    M7
    PR
    #60
    Completed
  • Threads and jobs

    Threads sharing a process, plus a job API to queue work to a core.

    Completed
    Platforms
    all platforms
    Milestone
    M7
    PR
    #61
    Completed

Userland

4 of 5 done
  • User programs in EL0

    Position-independent ELF64 programs loaded and run in EL0.

    Completed
    Platforms
    all platforms
    PRs
    #2 #3
    Completed
  • System calls

    I/O, memory, process and file syscalls with a private ABI.

    Completed
    Platforms
    all platforms
    PRs
    #5 #10
    Completed
  • Programs loaded from disk

    The kernel boots /bin/init and programs load from the filesystem.

    Completed
    Platforms
    all platforms
    PR
    #11
    Completed
  • Growable user memory

    Page allocation syscalls and a pool-based malloc in libk.

    Completed
    Platforms
    all platforms
    Milestone
    M6
    PR
    #48
    Completed
  • C library

    A real libc (picolibc or newlib) ported onto KoraOS syscalls.

    Planned
    Platforms
    all platforms
    Milestone
    M12

Shell

6 of 8 done
  • Interactive shell

    Runs programs by name with arguments.

    Completed
    Platforms
    all platforms
    PR
    #6
    Completed
  • OS commands

    ls, cat, echo and friends.

    Completed
    Platforms
    all platforms
    PR
    #10
    Completed
  • File management commands

    cp, rm, mkdir, rmdir, mv and sync on writable volumes.

    Completed
    Platforms
    all platforms
    Milestone
    M9
    PR
    #55
    Completed
  • Volume navigation

    Amiga-style device and volume names, assigns, cd and pwd.

    Completed
    Platforms
    all platforms
    Milestone
    M8
    PRs
    #47 #49
    Completed
  • Background jobs and pinning

    Run programs in the background or on a chosen core.

    Completed
    Platforms
    all platforms
    Milestone
    M7
    PRs
    #52 #60
    Completed
  • Multicore demos

    A Mandelbrot rendered as one job per core, and hand-pinned unbalanced sub-processes.

    Completed
    Platforms
    all platforms
    Milestone
    M7
    PR
    #62
    Completed
  • BASIC

    A built-in BASIC interpreter in the home-computer tradition.

    Wish
    Platforms
    all platforms
  • Python

    A Python interpreter usable from the shell.

    Wish
    Platforms
    all platforms

Storage and filesystems

8 of 8 done
  • Block device layer

    Common block device interface with an embedded ramdisk.

    Completed
    Platforms
    all platforms
    PR
    #8
    Completed
  • FAT32 read

    Reads FAT32 files with long filenames.

    Completed
    Platforms
    all platforms
    PR
    #9
    Completed
  • VirtIO block storage

    Disk images attached to QEMU virt.

    Completed
    Platforms
    • QEMU virt
    PR
    #40
    Completed
  • Volumes and assigns

    Several mounted volumes addressed by device or volume name.

    Completed
    Platforms
    all platforms
    Milestone
    M8
    PRs
    #47 #49
    Completed
  • MBR partitions

    Bounded primary FAT32 partition devices discovered from MBR disks.

    Completed
    Platforms
    all platforms
    Milestone
    M8
    PR
    #46
    Completed
  • FAT32 write

    Create, write, rename and delete files and directories.

    Completed
    Platforms
    all platforms
    Milestone
    M9
    Completed
  • SD card

    Native SD card driver, so the boot card is a usable volume.

    Completed
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
    • QEMU raspi3b
    Milestone
    M10
    PRs
    #63 #64
    Completed
  • USB mass storage

    USB sticks and drives as volumes.

    Completed
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
    • QEMU raspi3b
    Milestone
    M10
    PR
    #67
    Completed

Display and graphics

4 of 6 done
  • HDMI framebuffer

    Framebuffer output on HDMI via the VideoCore mailbox.

    Completed
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
    • QEMU raspi3b
    PR
    #22
    Completed
  • ramfb display

    Framebuffer output on QEMU virt.

    Completed
    Platforms
    • QEMU virt
    PR
    #39
    Completed
  • Screen terminal

    Scrolling terminal with xterm escape sequences and scrollback.

    Completed
    Platforms
    all platforms
    Completed
  • Framebuffer access from programs

    Programs can draw directly to the screen.

    Completed
    Platforms
    all platforms
    PR
    #5
    Completed
  • HDMI hotplug

    Connect or disconnect a display while running.

    Planned
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
    Milestone
    M11
  • GPU acceleration

    Use the VideoCore GPU for accelerated graphics.

    Wish
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4

Input and USB

5 of 6 done
  • Serial console

    UART kernel log and debug console alongside the shell.

    Completed
    Platforms
    all platforms
    PRs
    #24 #33
    Completed
  • USB host (Pi 3)

    DWC2 USB controller through the Circle USB stack.

    Completed
    Platforms
    • Raspberry Pi 3
    Completed
  • USB host (Pi 4)

    PCIe and xHCI USB controller through the Circle USB stack.

    Completed
    Platforms
    • Raspberry Pi 4
    PRs
    #34 #35
    Completed
  • USB keyboard

    USB HID keyboards drive the shell.

    Completed
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
    PRs
    #18 #35
    Completed
  • VirtIO keyboard

    Keyboard input on QEMU virt.

    Completed
    Platforms
    • QEMU virt
    PR
    #41
    Completed
  • USB hotplug

    Plug and unplug USB devices while running.

    Planned
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
    Milestone
    M11

Networking

0 of 3 done
  • Ethernet

    Wired networking (USB LAN on Pi 3, GENET on Pi 4, VirtIO on virt).

    Wish
    Platforms
    all platforms
  • Wi-Fi

    Wireless networking on the Pi's built-in chip.

    Wish
    Platforms
    • Raspberry Pi 3
    • Raspberry Pi 4
  • TCP/IP stack

    IPv4, TCP and UDP for programs.

    Wish
    Platforms
    all platforms

Development and testing

5 of 5 done
  • Unified build

    One build script for all targets with a shared userland image.

    Completed
    Platforms
    all platforms
    PR
    #43
    Completed
  • SD card image

    Bootable SD card image with pinned Pi firmware.

    Completed
    Platforms
    all platforms
    PR
    #19
    Completed
  • Host unit tests

    Sanitizer-checked unit tests that run on the build machine.

    Completed
    Platforms
    all platforms
    PR
    #27
    Completed
  • QEMU smoke tests

    Boots each QEMU target and drives the shell automatically.

    Completed
    Platforms
    all platforms
    PRs
    #28 #42
    Completed
  • Continuous integration

    GitHub Actions runs tests and builds every target on each PR.

    Completed
    Platforms
    all platforms
    PRs
    #29 #30
    Completed