BareMetal

{{other uses|Bare metal (disambiguation)}}

{{Multiple issues|

{{Notability|date=May 2024}}

{{Primary sources|date=May 2024}}

}}

{{Infobox OS

| logo =

| screenshot =

| caption =

| developer = Return Infinity

| source model = Open source

| marketing target = HPCs, HTC, Cloud computing

| kernel type = Exokernel, SASOS

| ui = Command-line

| released = {{Start date and age|2008}}

| latest release version = 2025.01

| latest release date = {{Start date and age|2025|01|30}}

| programmed in = Assembly

| userland = Unknown

| supported platforms = x86-64

| license = BSD License

| language = English

| updatemodel =

| working state = Current

| website = {{URL|http://www.returninfinity.com/}}

}}

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 with a "just enough operating system" (JeOS) approach. 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, and it is a recent example of an operating system that is not written in C or C++, nor based on Unix-like kernels.

Overview

= Hardware requirements =

  • AMD/Intel based 64-bit computer
  • Memory: 4 MB (plus 2 MB for every additional core)
  • Hard Disk: 32 MB

= Supported devices =

  • 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.

Programming

= [[API]] =

An API is documented 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).

= [[C (programming language)|C]] =

BareMetal OS has a build script to pull the latest code, make the needed changes, and then compile C code using the Newlib C standard library.

= [[C++]] =

A mostly-complete C++11 Standard Library was designed and developed for working in ring 0. 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.

= [[Rust (programming language)|Rust]] =

A Rust program demonstration was added to the programs in November 2014, demonstrating the ability to write Rust programs for BareMetal OS.

Networking

= TCP/IP stack =

A TCP/IP stack was the #1 feature request. A port of lwIP written in C was announced in October 2014.

minIP, 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

{{Reflist|refs=

{{cite web

|url=https://github.com/ReturnInfinity/BareMetal-kernel/blob/master/src/x86-64/kernel.asm

|title=kernel.asm

|first=Ian |last=Seyler

|work=BareMetal OS GitHub repository

|accessdate=May 24, 2017

}}

{{cite web

|url=http://distrowatch.com/weekly.php?issue=20100719

|title=DistroWatch Weekly, Issue 363

|first=Jesse |last=Smith

|work=DistroWatch

|date=July 19, 2010

|accessdate=May 26, 2014

}}

{{cite web

|url=http://hackaday.com/2011/05/27/64-bit-os-written-entirely-in-assembly/

|title=64-bit OS written entirely in assembly

|first=Brian |last=Benchoff

|work=Hack A Day

|date=May 27, 2011

|accessdate=May 26, 2014

}}

{{cite web

|url=http://www.osnews.com/story/23556/BareMetal_OS

|title=BareMetal OS

|first=David |last=Adams

|work=OSNews

|date=July 14, 2010

|accessdate=May 26, 2014

}}

{{cite web

|url=http://www.osnews.com/story/24815/Interview_With_Baremetal_OS_Ian_Seyler

|title=Interview With Baremetal OS' Ian Seyler

|first=Conrad |last=Voorsanger

|work=OSNews

|date=June 2, 2011

|accessdate=May 26, 2014

}}

{{cite web|url=http://www.returninfinity.com/baremetal.html#spec_list |title=BareMetal OS Requirements |work=Return Infinity (archived copy at Wayback Machine) |accessdate=September 6, 2014 |url-status=dead |archiveurl=https://web.archive.org/web/20140906120230/http://www.returninfinity.com/baremetal.html#spec_list |archivedate=September 6, 2014 }}

{{cite web

|url=https://vimeo.com/13423853

|title=BareMetal OS Queue

|accessdate=April 28, 2015

}}

{{cite web

|url=https://groups.google.com/forum/#!msg/baremetal-os/f-7NGTEIZ6k/pdeqgPW29GIJ

|title=TCP/IP

|first=Ian |last=Seyler

|work=BeareMetal OS Google Group

|date=August 22, 2013

|accessdate=February 2, 2015

}}

{{cite web

|url=https://groups.google.com/forum/#!msg/baremetal-os/Lfeb-9GXPc0/fpkhnIp1LckJ

|title=BareMetal and lwIP

|first=Ian |last=Seyler

|work=BeareMetal OS Google Group

|date=October 31, 2014

|accessdate=February 2, 2015

}}

{{cite web

|url=http://www.returninfinity.com/

|title=Return Infinity (home page), The BareMetal advantage

|first=Ian |last=Seyler

|work=Return Infinity

|accessdate=February 2, 2015

}}

{{cite web

|url=https://groups.google.com/d/msg/baremetal-os/-EnSOPQJiwg/lCvg_0y4-xMJ

|title=Bare C++ library

|first=Sergei |last=Lodyagin

|work=BeareMetal OS Google Group

|date=November 17, 2013

|accessdate=February 2, 2015

}}

{{cite web

|url=https://groups.google.com/forum/#!msg/baremetal-os/oxhjHA_B5-U/LqDSfOSHr5UJ

|title=Newlib build script

|first=Ian |last=Seyler

|work=BeareMetal OS Google Group

|date=January 17, 2014

|accessdate=February 2, 2015

}}

{{cite web

|url=https://github.com/ReturnInfinity/BareMetal/blob/master/newlib.sh

|title=newlib.sh

|first=Ian |last=Seyler

|work=Build scripts for BareMetal OS and its related utilities, GitHub repository

|accessdate=February 2, 2015

}}

{{cite web

|url=https://github.com/lodyagin/bare_cxx

|title=The Bare C++ library

|first=Sergei |last=Lodyagin

|work=The Bare C++ library GitHub repository

|accessdate=February 2, 2015

}}

{{cite web

|url=https://github.com/ReturnInfinity/BareMetal-OS-legacy/commit/740d2b2359f51283cc269c26a6121a156b3db285

|title=Add Rust example

|first=Ian |last=Seyler

|work=BareMetal OS GitHub repository (legacy version)

|accessdate=March 18, 2018

}}

{{cite web

|url=https://github.com/ReturnInfinity/BareMetal-OS/blob/master/docs/BareMetal%20OS%20-%20API.md

|title=API documentation

|first=Ian |last=Seyler

|work=BareMetal OS GitHub repository

|accessdate=June 26, 2015

}}

{{cite web

|url=https://github.com/IanSeyler/minIP

|title=minIP - A minimalist IP stack written in ANSI C

|first=Ian |last=Seyler

|work=BareMetal OS GitHub repository

|accessdate=May 24, 2017

}}

}}