BareMetal
Get BareMetal essential facts below. View Videos or join the BareMetal discussion. Add BareMetal to your PopFlock.com topic list for future reference or share this resource on social media.
BareMetal
BareMetal
DeveloperReturn Infinity
Written inAssembly
Working stateCurrent
Source modelOpen source
Initial release2008; 13 years ago (2008)
Latest release1.0.0 / November 13, 2017; 3 years ago (2017-11-13)[1]
Marketing targetHPCs, HTC, Cloud computing
Available inEnglish
Platformsx86-64
Kernel typeExokernel, SASOS
UserlandUnknown
Default
user interface
Command-line
LicenseBSD License[2]
Official websitewww.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[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

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

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.[8]

Programming

API

An API is documented[9] 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

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

C++

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

Rust

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

Networking

TCP/IP stack

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

minIP,[17] 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

  1. ^ Seyler, Ian. "kernel.asm". BareMetal OS GitHub repository. Retrieved 2017.
  2. ^ a b Voorsanger, Conrad (June 2, 2011). "Interview With Baremetal OS' Ian Seyler". OSNews. Retrieved 2014.
  3. ^ Adams, David (July 14, 2010). "BareMetal OS". OSNews. Retrieved 2014.
  4. ^ Benchoff, Brian (May 27, 2011). "64-bit OS written entirely in assembly". Hack A Day. Retrieved 2014.
  5. ^ Seyler, Ian. "Return Infinity (home page), The BareMetal advantage". Return Infinity. Retrieved 2015.
  6. ^ Smith, Jesse (July 19, 2010). "DistroWatch Weekly, Issue 363". DistroWatch. Retrieved 2014.
  7. ^ "BareMetal OS Requirements". Return Infinity (archived copy at Wayback Machine). Archived from the original on September 6, 2014. Retrieved 2014.
  8. ^ "BareMetal OS Queue". Retrieved 2015.
  9. ^ Seyler, Ian. "API documentation". BareMetal OS GitHub repository. Retrieved 2015.
  10. ^ Seyler, Ian (January 17, 2014). "Newlib build script". BeareMetal OS Google Group. Retrieved 2015.
  11. ^ Seyler, Ian. "newlib.sh". Build scripts for BareMetal OS and its related utilities, GitHub repository. Retrieved 2015.
  12. ^ Lodyagin, Sergei (November 17, 2013). "Bare C++ library". BeareMetal OS Google Group. Retrieved 2015.
  13. ^ Lodyagin, Sergei. "The Bare C++ library". The Bare C++ library GitHub repository. Retrieved 2015.
  14. ^ Seyler, Ian. "Add Rust example". BareMetal OS GitHub repository (legacy version). Retrieved 2018.
  15. ^ Seyler, Ian (August 22, 2013). "TCP/IP". BeareMetal OS Google Group. Retrieved 2015.
  16. ^ Seyler, Ian (October 31, 2014). "BareMetal and lwIP". BeareMetal OS Google Group. Retrieved 2015.
  17. ^ Seyler, Ian. "minIP - A minimalist IP stack written in ANSI C". BareMetal OS GitHub repository. Retrieved 2017.

External links


  This article uses material from the Wikipedia page available here. It is released under the Creative Commons Attribution-Share-Alike License 3.0.

BareMetal
 



 



 
Music Scenes