You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Official repo of the BareMetal [exokernel](http://en.wikipedia.org/wiki/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.
15
15
16
16
### Table of Contents
17
17
18
18
-[What it is](#what-it-is)
19
+
-[Architecture](#architecture)
19
20
-[Key features](#key-features)
20
21
-[Supported hardware](#supported-hardware)
21
22
-[Try it out](#try-it-out)
@@ -26,13 +27,23 @@ BareMetal is a _very_ lean kernel. The name is a play on the phrase "bare metal"
26
27
27
28
BareMetal provides basic support for symmetric multiprocessing, network, and storage access via a low-level abstraction layer.
28
29
29
-

30
+
## Architecture
30
31
32
+
BareMetal is an [exokernel](https://en.wikipedia.org/wiki/Exokernel) and offers a [single address space](https://en.wikipedia.org/wiki/Single_address_space_operating_system) system.
33
+
34
+
It is written in [assembly](https://en.wikipedia.org/wiki/Assembly_language) to achieve high-performance computing with a minimal footprint and a "[just enough operating system](https://en.wikipedia.org/wiki/JeOS)” approach.
35
+
36
+
The kernel is primarily targeted towards physical and [virtualized](https://en.wikipedia.org/wiki/Virtualization) environments for [cloud computing](https://en.wikipedia.org/wiki/Cloud_computing), or [HPC](https://en.wikipedia.org/wiki/High-performance_computing) clusters. It could also be used as a [unikernel](https://en.wikipedia.org/wiki/Unikernel).
37
+
38
+
> “Do not try to do everything. Do one thing well.” — Steve Jobs
39
+
40
+
The premise of the kernel is to "do one thing well" and that is to execute a program with zero overhead.
31
41
32
42
## Key features
33
-
***64-bit**: Make use of the extra-wide and additional registers available in 64-bit mode.
43
+
***BIOS/UEFI**: Both boot methods are supported via the companion Pure64 loader.
44
+
***64-bit only**: Make use of the extra-wide and additional registers available in 64-bit mode.
34
45
***Mono-processing, multi-core**: The system is able to execute a single program but can spread the work load amongst available CPU cores.
35
-
***Extremely tiny memory footprint**: The kernel binary is less than 32KiB. BareMetal uses 4 MiB of RAM while running. The majority of RAM usage is for required memory structures for operating in 64-bit mode, drivers/system buffers, and CPU stacks.
46
+
***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.
36
47
***Physical and virtual hardware support** with full virtualization, using [x86 hardware virtualization](https://en.wikipedia.org/wiki/X86_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](http://www.qemu.org) and [VirtualBox](https://www.virtualbox.org), which means that you can run BareMetal on both Linux, Microsoft Windows, and Apple macOS.
0 commit comments