Skip to content

ReturnInfinity/BareMetal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BareMetal Logo

BareMetal

Just enough kernel

Assembly License CI

Exokernel • 100% Assembly • Virtual/Physical

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. An ARM and/or RISC-V rewrite would be considered once hardware is standardized.

Table of Contents

What it is

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 storage access via a low-level abstraction layer.

Architecture

BareMetal is an exokernel and offers a single address space system.

It is written in assembly to achieve high-performance computing with a minimal footprint and a "just enough operating system” approach.

The kernel is primarily targeted towards physical and virtualized environments for cloud computing, or HPC clusters. It could also be used as a unikernel.

“Do not try to do everything. Do one thing well.” — Steve Jobs

The premise of the kernel is to "do one thing well" and that is to execute a program with zero overhead.

Key features

  • BIOS/UEFI: Both boot methods are supported via the companion Pure64 loader.
  • 64-bit only: 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: The kernel binary is less than 32KiB. BareMetal uses 4 MiB of RAM while running. The majority of its RAM usage is for required memory structures while operating in 64-bit mode, drivers/system buffers, and CPU stacks. All other system memory is dedicated to the running program.
  • 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.

Supported Hardware

  • CPU
    • Multi-core on 64-bit x86 systems (Intel/AMD)
  • Bus
    • PCIe
    • PCI
    • xHCI (USB 3)
  • Network
    • Gigabit
      • Intel 8254x Gigabit (e1000)
      • Intel 8257x Gigabit (e1000e)
    • 10 Gigabit
      • Intel 8259x 10 Gigabit (ixbge)
    • Virtual
      • Virtio-Net
  • Storage
    • NVMe
    • AHCI (SATA)
    • Virtio-Blk
  • HID (Human Interface Devices)
    • Input
      • PS/2 Keyboard
      • USB Keyboard
      • Serial
    • Output
      • LFB (linear frame buffer at native screen resolution with 1024x768x32bpp as fallback)
      • VGA text mode (80x25 characters with 16 colors)
      • Serial

Try it out

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

// EOF

About

A very minimal, resource efficient exo-kernel

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages