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.
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 symetric multiprocessing, network, and disk access via a low-level abstraction layer.
- 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 bootloader 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.
- NASM (The Netwide Assembler) - At least version 2.07
- That's it!
ATOM is highly recommended. Make sure to install the language-x86-64-assembly package for proper syntax highlighting.
Execute the build script:
./build_x86-64.sh
Execute the run script to start the kernel in QEMU:
./run_x86.64.sh
// EOF