A very minimal, resource efficient exo-kernel
Assembly C Shell Makefile
Switch branches/tags
Nothing to show
Clone or download
Latest commit 84d779a Jun 1, 2018



Just enough kernel

Official repo of the BareMetal exokernel. It's written from scratch in Assembly, designed for x86-64 hardware, with no dependencies except for the virtual/physical hardware. A 64-bit ARMv8 version is also planned.

What is this?

BareMetal is a very lean kernel. The name is a play on the phrase "bare metal" which means to run directly on physical or virtualized hardware. BareMetal also only offers the "bare essentials" required for a working operating system.

BareMetal provides basic support for symmetric multiprocessing, network, and disk access via a low-level abstraction layer.

BareMetal Model

Key features

  • 64-bit: Make use of the extra-wide and additional registers available in 64-bit mode.
  • Mono-processing, multi-core: The system is able to execute a single "program" but can spread the work load amongst available CPU cores.
  • Extremely tiny memory footprint: A minimal bootable image, including boot-loader and operating system components, is currently 16K.
  • Standard C library using newlib from Red Hat
  • Physical and virtual hardware support with full virtualization, using x86 hardware virtualization whenever available (it is on most modern x86-64 CPU's). In principle BareMetal should run on any x86-64 hardware platform, even on a physical x86-64 computer, given appropriate drivers. Officially, we develop on QEMU and VirtualBox, which means that you can run BareMetal on both Linux, Microsoft Windows, and Apple macOS.

Try it out!

See the BareMetal-OS repo for a full build environment.

// EOF