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.
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.
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.
- 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.
- 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
- Gigabit
- 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
- Input
See the BareMetal-OS repo for a full build environment.
// EOF