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
- USB mass storageStorage and filesystems ·
- SD cardStorage and filesystems ·
- Threads and jobsMultitasking ·
- Multicore demosShell ·
- Multicore (SMP)Multitasking ·
Platforms
4 of 4 doneRaspberry Pi 3
Boots on real Raspberry Pi 3 hardware from the SD card.
CompletedRaspberry Pi 4
Boots on real Raspberry Pi 4 hardware from the SD card.
CompletedQEMU raspi3b
Runs in QEMU's Raspberry Pi 3 emulation for quick testing.
CompletedQEMU virt
Independent AArch64 development target with VirtIO devices.
Completed
Kernel core
8 of 8 doneBoot and EL1 kernel
Drops from EL2/EL3 to EL1 and parks secondary cores.
CompletedException vectors
EL1 vector table with trap handling for kernel and EL0.
CompletedInterrupt controllers
BCM controller on Pi 3, GIC-400 on Pi 4, GICv2 on virt.
CompletedSystem timer
Generic-timer delays and a periodic interrupt tick.
CompletedMMU with flat identity map
One shared address space with no memory protection, by design.
CompletedPage frame allocator
Freeable bitmap allocator for physical pages.
CompletedKernel heap
Small-object kmalloc for the kernel and the USB stack.
CompletedFreestanding C++ runtime
Lets the kernel host C++ code such as the Circle USB stack.
Completed
Multitasking
5 of 5 doneCooperative processes
Nested spawn/wait process model with per-task file tables.
CompletedPreemptive scheduler
Timer-driven task switching with sleeping and wait queues.
CompletedMulticore (SMP)
User programs run in parallel on all cores under one big kernel lock.
CompletedCore placement and pinning
Per-core run queues; tasks can be started on a chosen core.
CompletedThreads and jobs
Threads sharing a process, plus a job API to queue work to a core.
Completed
Userland
4 of 5 doneUser programs in EL0
Position-independent ELF64 programs loaded and run in EL0.
CompletedSystem calls
I/O, memory, process and file syscalls with a private ABI.
CompletedPrograms loaded from disk
The kernel boots /bin/init and programs load from the filesystem.
CompletedGrowable user memory
Page allocation syscalls and a pool-based malloc in libk.
CompletedC library
A real libc (picolibc or newlib) ported onto KoraOS syscalls.
Planned
Shell
6 of 8 doneInteractive shell
Runs programs by name with arguments.
CompletedOS commands
ls, cat, echo and friends.
CompletedFile management commands
cp, rm, mkdir, rmdir, mv and sync on writable volumes.
CompletedBackground jobs and pinning
Run programs in the background or on a chosen core.
CompletedMulticore demos
A Mandelbrot rendered as one job per core, and hand-pinned unbalanced sub-processes.
CompletedBASIC
A built-in BASIC interpreter in the home-computer tradition.
WishPython
A Python interpreter usable from the shell.
Wish
Storage and filesystems
8 of 8 doneBlock device layer
Common block device interface with an embedded ramdisk.
CompletedFAT32 read
Reads FAT32 files with long filenames.
CompletedVirtIO block storage
Disk images attached to QEMU virt.
CompletedVolumes and assigns
Several mounted volumes addressed by device or volume name.
CompletedMBR partitions
Bounded primary FAT32 partition devices discovered from MBR disks.
CompletedFAT32 write
Create, write, rename and delete files and directories.
CompletedSD card
Native SD card driver, so the boot card is a usable volume.
CompletedUSB mass storage
USB sticks and drives as volumes.
Completed
Display and graphics
4 of 6 doneHDMI framebuffer
Framebuffer output on HDMI via the VideoCore mailbox.
Completedramfb display
Framebuffer output on QEMU virt.
CompletedScreen terminal
Scrolling terminal with xterm escape sequences and scrollback.
CompletedFramebuffer access from programs
Programs can draw directly to the screen.
CompletedHDMI hotplug
Connect or disconnect a display while running.
PlannedGPU acceleration
Use the VideoCore GPU for accelerated graphics.
Wish
Input and USB
5 of 6 doneSerial console
UART kernel log and debug console alongside the shell.
CompletedUSB host (Pi 3)
DWC2 USB controller through the Circle USB stack.
CompletedUSB host (Pi 4)
PCIe and xHCI USB controller through the Circle USB stack.
CompletedUSB keyboard
USB HID keyboards drive the shell.
CompletedVirtIO keyboard
Keyboard input on QEMU virt.
CompletedUSB hotplug
Plug and unplug USB devices while running.
Planned
Networking
0 of 3 doneEthernet
Wired networking (USB LAN on Pi 3, GENET on Pi 4, VirtIO on virt).
WishWi-Fi
Wireless networking on the Pi's built-in chip.
WishTCP/IP stack
IPv4, TCP and UDP for programs.
Wish
Development and testing
5 of 5 doneUnified build
One build script for all targets with a shared userland image.
CompletedSD card image
Bootable SD card image with pinned Pi firmware.
CompletedHost unit tests
Sanitizer-checked unit tests that run on the build machine.
CompletedQEMU smoke tests
Boots each QEMU target and drives the shell automatically.
CompletedContinuous integration
GitHub Actions runs tests and builds every target on each PR.
Completed