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 =
= 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]] =
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=
|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
}}
|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
}}
|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
}}
|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
}}
|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 }}
|url=https://vimeo.com/13423853
|title=BareMetal OS Queue
|accessdate=April 28, 2015
}}
|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
}}
|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
}}
|url=http://www.returninfinity.com/
|title=Return Infinity (home page), The BareMetal advantage
|first=Ian |last=Seyler
|work=Return Infinity
|accessdate=February 2, 2015
}}
|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
}}
|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
}}
|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
}}
|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
}}
|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
}}
|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
}}
|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
}}
}}
External links
- {{GitHub|ReturnInfinity}}
- [https://groups.google.com/forum/#!forum/baremetal-os BareMetal OS] Google Group discussion forum
{{Hobbyist operating systems}}
Category:Free software operating systems
Category:Hobbyist operating systems
Category:Software using the BSD license
Category:Assembly language software
Category:X86-64 operating systems
{{Operating-system-stub}}