Clone this repo:
  1. 1eb9917 use common python toolchain by Dmitrii Merkurev · 5 weeks ago main master
  2. dfd9d57 add bazel targets to build riscv and arm64 lk by Dmitrii Merkurev · 6 months ago
  3. ba349e4 Merge 11.2023 lk upstream master by Dmitrii Merkurev · 7 months ago
  4. b3a8f3b Empty commit by Inna Palant · 7 months ago temp
  5. 94a1511 [libc][string] fix strncpy potential buffer overflow by Cody Wong · 8 months ago

The Little Kernel Embedded Operating System

The LK kernel is an SMP-aware kernel designed for small systems ported to a variety of platforms and cpu architectures.

See for the latest version.

High Level Features

  • Fully-reentrant multi-threaded preemptive kernel
  • Portable to many 32 and 64 bit architectures
  • Support for wide variety of embedded and larger platforms
  • Powerful modular build system
  • Large number of utility components selectable at build time

Supported architectures

  • ARM32
    • Cortex-M class cores (armv6m - armv8m)
    • ARMv7+ Cortex-A class cores
  • ARM64
  • RISC-V 32 and 64bit bit in machine and supervisor mode
  • x86-32 and x86-64 386 up through modern cores
  • microblaze
  • MIPS
  • OpenRISC 1000


To build and test for ARM on linux

  1. install or build qemu. v2.4 and above is recommended.
  2. install gcc for embedded arm (see note 1)
  3. run scripts/do-qemuarm (from the lk directory)
  4. you should see ‘welcome to lk/MP’

This will get you a interactive prompt into LK which is running in qemu arm machine ‘virt’ emulation. type ‘help’ for commands.

Note: for ubuntu x86-64: sudo apt-get install gcc-arm-none-eabi or fetch a prebuilt toolchain from