BareMetal
Script error: No such module "other uses".
Page Module:Message box/ambox.css has no content.Page Template:Multiple issues/styles.css has no content.
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
Page Module:Message box/ambox.css has no content.
|
Page Module:Infobox/styles.css has no content.
| BareMetal | |
|---|---|
| Developer | Return Infinity |
| Written in | Assembly |
| Working state | Current |
| Source model | Open source |
| Initial release | 2008 |
| Latest release | 2025.04 / April 30, 2025[1] |
| Marketing target | HPCs, HTC, Cloud computing |
| Available in | English |
| Supported platforms | x86-64 |
| Kernel type | Exokernel, SASOS |
| Userland | Unknown |
| Default user interface | Command-line |
| License | BSD License[2] |
| Official website | www |
BareMetal is an exokernel-based single address space operating system (OS) created by Return Infinity.
It is written in assembly to achieve high-performance computing with minimal footprint[3][4] with a "just enough operating system" (JeOS) approach.[5] The operating system is primarily targeted towards virtualized environments for cloud computing, or HPCs due to its design as a lightweight kernel (LWK). It could be used as a unikernel.
It was inspired by another OS written in assembly, MikeOS,[2] and it is a recent example of an operating system that is not written in C or C++, nor based on Unix-like kernels.[6]
Overview
Hardware requirements
Source:[7]
Supported devices
Source:[8]
- Bus - PCIe, PCI, xHCI
- Non-volatile storage - NVMe, AHCI (SATA), ATA, Virtio-Blk
- Ethernet - Intel 8259x 10-gigabit, Intel 8254x/8257x Gigabit, Realtek 816x/811x Gigabit, Virtio-Net
One task per core
Multitasking on BareMetal is unusual for modern operating systems. BareMetal uses an internal work queue that all CPU cores poll. A task added to the work queue will be processed by any available CPU core in the system and will execute until completion, which results in no context switch overhead.[9]
Programming
An API is documented[10] but, in line with its philosophy, the OS does not enforce entry points for system calls (e.g.: no call gates or other safety mechanisms).
BareMetal OS has a build script to pull the latest code, make the needed changes, and then compile C code using[11] the Newlib C standard library.[12]
A mostly-complete C++11 Standard Library was designed and developed for working in ring 0.[13] The main goal of such library is providing, on a library level, an alternative to hardware memory protection used in classical OSes, with help of carefully designed classes.[14]
k for BareMetal:[15] a port of k edu from shakti[16] by Jack Andrews. At this stage, it is just a proof of concept and doesn't integrate the BareMetal file system.
A Rust program demonstration was added to the programs in November 2014, demonstrating the ability to write Rust programs for BareMetal OS.[17]
Networking
TCP/IP stack
A TCP/IP stack was the #1 feature request.[18] A port of lwIP written in C was announced in October 2014.[19]
minIP,[20] a minimalist IP stack in ANSI C able to provide enough functionalities to serve a simple static webpage, is being developed as a proof of concept to learn the fundamentals in preparation for an x86-64 assembly re-write planned for the future.
References
Page Template:Reflist/styles.css has no content.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "Releases · ReturnInfinity/BareMetal". BareMetal OS GitHub repository. Retrieved May 19, 2025.
- ^ a b Page Module:Citation/CS1/styles.css has no content.Voorsanger, Conrad (June 2, 2011). "Interview With Baremetal OS' Ian Seyler". OSNews. Retrieved May 26, 2014.
- ^ Page Module:Citation/CS1/styles.css has no content.Adams, David (July 14, 2010). "BareMetal OS". OSNews. Retrieved May 26, 2014.
- ^ Page Module:Citation/CS1/styles.css has no content.Benchoff, Brian (May 27, 2011). "64-bit OS written entirely in assembly". Hack A Day. Retrieved May 26, 2014.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "Return Infinity (home page), The BareMetal advantage". Return Infinity. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Smith, Jesse (July 19, 2010). "DistroWatch Weekly, Issue 363". DistroWatch. Retrieved May 26, 2014.
- ^ Page Module:Citation/CS1/styles.css has no content."BareMetal OS Requirements". Return Infinity (archived copy at Wayback Machine). Archived from the original on September 6, 2014. Retrieved September 6, 2014.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "Supported Hardware". BareMetal OS GitHub repository. Retrieved May 19, 2025.
- ^ Page Module:Citation/CS1/styles.css has no content."BareMetal OS Queue". Retrieved April 28, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "API documentation". BareMetal OS GitHub repository. Retrieved June 26, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian (January 17, 2014). "Newlib build script". BeareMetal OS Google Group. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "newlib.sh". Build scripts for BareMetal OS and its related utilities, GitHub repository. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Lodyagin, Sergei (November 17, 2013). "Bare C++ library". BeareMetal OS Google Group. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Lodyagin, Sergei. "The Bare C++ library". The Bare C++ library GitHub repository. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Andrews, Jack (December 10, 2024). "ReturnInfinity/kbm: k for BareMetal". BeareMetal OS port of k edu. Retrieved May 19, 2025.
- ^ Page Module:Citation/CS1/styles.css has no content.Whitney, Arthur. "shakti". k edu at shakti. Retrieved May 19, 2025.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "Add Rust example". BareMetal OS GitHub repository (legacy version). Retrieved March 18, 2018.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian (August 22, 2013). "TCP/IP". BeareMetal OS Google Group. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian (October 31, 2014). "BareMetal and lwIP". BeareMetal OS Google Group. Retrieved February 2, 2015.
- ^ Page Module:Citation/CS1/styles.css has no content.Seyler, Ian. "minIP - A minimalist IP stack written in ANSI C". BareMetal OS GitHub repository. Retrieved May 24, 2017.
External links
- ReturnInfinity on GitHub
- BareMetal OS Google Group discussion forum