Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  



1.1  Hardware requirements  





1.2  One task per core  







2 Programming  



2.1  API  





2.2  C





2.3  C++  





2.4  Rust  







3 Networking  



3.1  TCP/IP stack  







4 References  





5 External links  














BareMetal






Español
ि
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


BareMetal
DeveloperReturn Infinity
Written inAssembly
Working stateCurrent
Source modelOpen source
Initial release2008; 16 years ago (2008)
Latest release1.0.0 / November 13, 2017; 6 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 CorC++, nor based on Unix-like kernels.[6]

Overview[edit]

Hardware requirements[edit]

One task per core[edit]

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[edit]

API[edit]

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[edit]

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++[edit]

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[edit]

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

Networking[edit]

TCP/IP stack[edit]

ATCP/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 stackinANSI 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[edit]

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

  • t
  • e

  • Retrieved from "https://en.wikipedia.org/w/index.php?title=BareMetal&oldid=1226156678"

    Categories: 
    Free software operating systems
    Hobbyist operating systems
    Microkernels
    Software using the BSD license
    Assembly language software
    Operating system stubs
    Hidden categories: 
    Articles with topics of unclear notability from May 2024
    All articles with topics of unclear notability
    Articles lacking reliable references from May 2024
    All articles lacking reliable references
    Articles with multiple maintenance issues
    Articles with short description
    Short description is different from Wikidata
    All stub articles
     



    This page was last edited on 28 May 2024, at 21:55 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki