BareMetal OS - For a lean, mean, processing machine
BareMetal is a 64-bit OS for x86-64 based computers. The OS is written entirely in Assembly, while applications can be written in Assembly or C/C++. Development of the Operating System is guided by its 3 target segments:
- High Performance Computing - Act as the base OS for a HPC cluster node. Running advanced computation workloads is ideal for a mono-tasking Operating System.
- Embedded Applications - Provide a platform for embedded applications running on commodity x86-64 hardware.
- Education - Provide an environment for learning and experimenting with programming in x86-64 Assembly as well as Operating System fundamentals.
Current version is 0.6.0 - released April 30, 2013.
BareMetal boots via Pure64 and has a command line interface with the ability to load programs/data from a hard drive. Current plans for v0.7.0 call for basic TCP/IP support, improved file handling, as well as general bug fixes and optimizations. The creation of BareMetal was inspired by MikeOS - A 16-bit OS written in Assembly used as a learning tool to show how simple Operating Systems work.
SpeedReturn Infinity goes back to the roots of computer programming with pure Assembly code. As we are programming at the hardware level, we can achieve a runtime speed that is not possible with higher-level languages like C/C++, VB, and Java.
SimplicityBareMetal was written with simplicity in mind. All internal functions are lean and well documented in the source code. Seasoned programmers as well as people new to computer programming will be able to pick it up quickly.
Open SourceThe source code for BareMetal is freely available under the 3-clause BSD license. Go ahead and add, modify, or remove whatever you want. Each OS function and all other components are well documented. The source code can also be viewed online here.
SizeStarting with a clean slate we can say goodbye to bloated code and feature creep! As of the current version with the full CLI and internal functions, the operating system binary is only 16384 bytes. A standard "Hello, World!" example compiles to a file of only 31 bytes.
One Task Per CoreBareMetal uses an internal work queue that all CPU Cores poll. Simply add tasks to the work queue and they will be processed by any available CPU Cores in the system. A short presentation on the BareMetal OS Queue can be viewed here.
NetworkingEthernet networking is supported with the Realtek 8169 and Intel 8254x Gigabit chipsets. BareMetal OS machines can communicate over the network via raw Ethernet packets. Plans are in place to support TCP/UDP protocols as well as support for more Ethernet chipsets.
- Written in pure Assembly language for x86-64 based computers
- Over 70 integrated functions
- Gigabit Ethernet support with the Realtek 8169 and Intel 8254x chipsets
- Read/Write support for FAT16
- ANSI C library support with Newlib v1.20.0
- System calls are provided for delegation of tasks to different processors
- Scalable up to 128 64-bit processors
- System calls are provided for sending and receiving packets via Ethernet
- Ring buffer that automatically stores received packets in memory
- An Intel/AMD-based 64-bit computer
- Memory requirements are based on the number of cores in the computer. The OS itself uses 2 MiB as well as each core gets its own 2 MiB stack. A dual core computer would need at least 6 MiB (2 x 2 + 2). A quad core, 10 MiB.
- 32 MiB Hard drive minimum
- NASM to compile the source code