Skip to content

Commit e4ec9bb

Browse files
authored
Revise README with new sections and clarifications
Updated the README to improve clarity and structure, including a new Table of Contents and expanded sections on features and supported hardware.
1 parent 53cb4a2 commit e4ec9bb

File tree

1 file changed

+38
-6
lines changed

1 file changed

+38
-6
lines changed

README.md

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,56 @@ _Just enough kernel_
66

77
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.
88

9+
### Table of Contents
910

10-
## What is this?
11+
- [What it is](#what-it-is)
12+
- [Key features](#key-features)
13+
- [Supported hardware](#supported-hardware)
14+
- [Try it out](#try-it-out)
15+
16+
## What it is
1117

1218
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.
1319

14-
BareMetal provides basic support for symmetric multiprocessing, network, and drive access via a low-level abstraction layer.
20+
BareMetal provides basic support for symmetric multiprocessing, network, and storage access via a low-level abstraction layer.
1521

1622
![BareMetal Model](./doc/BareMetal-Model.png)
1723

1824

19-
### Key features
25+
## Key features
2026
* **64-bit**: Make use of the extra-wide and additional registers available in 64-bit mode.
2127
* **Mono-processing, multi-core**: The system is able to execute a single program but can spread the work load amongst available CPU cores.
22-
* **Extremely tiny memory footprint**: A minimal bootable image, including boot-loader and operating system components, is currently 16K.
28+
* **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, CPU stacks, and system buffers.
2329
* **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.
2430

25-
26-
## Try it out!
31+
## Supported Hardware
32+
33+
* CPU
34+
* Multi-core on 64-bit x86 systems (Intel/AMD)
35+
* Bus
36+
* PCIe
37+
* PCI
38+
* xHCI (USB 3)
39+
* Network
40+
* Gigabit
41+
* Intel 8254x Gigabit (e1000)
42+
* Intel 8257x Gigabit (e1000e)
43+
* Realtek 816x/811x Gigabit (rtl8169)
44+
* 10 Gigabit
45+
* Intel 8259x 10 Gigabit (ixbge)
46+
* Virtual
47+
* Virtio-Net
48+
* Storage
49+
* NVMe
50+
* AHCI (SATA)
51+
* IDE
52+
* Virtio-Blk
53+
* HID (Human Interface Devices)
54+
* PS/2 Keyboard
55+
* PS/2 Mouse
56+
* USB Keyboard
57+
58+
## Try it out
2759

2860
See the [BareMetal-OS](https://github.com/ReturnInfinity/BareMetal-OS) repo for a full build environment.
2961

0 commit comments

Comments
 (0)