{"id":15060130,"url":"https://github.com/returninfinity/baremetal","last_synced_at":"2025-12-17T14:35:07.417Z","repository":{"id":19408814,"uuid":"22650819","full_name":"ReturnInfinity/BareMetal","owner":"ReturnInfinity","description":"A very minimal, resource efficient exo-kernel","archived":false,"fork":false,"pushed_at":"2025-04-09T00:47:20.000Z","size":820,"stargazers_count":709,"open_issues_count":9,"forks_count":99,"subscribers_count":52,"default_branch":"master","last_synced_at":"2025-04-11T19:39:27.795Z","etag":null,"topics":["assembly","baremetal","baremetal-kernel","kernel"],"latest_commit_sha":null,"homepage":"http://www.returninfinity.com","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ReturnInfinity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-08-05T16:32:23.000Z","updated_at":"2025-04-08T11:24:39.000Z","dependencies_parsed_at":"2023-10-16T10:41:15.058Z","dependency_job_id":"13c52c54-aa5b-4c49-9565-a1854ecb0388","html_url":"https://github.com/ReturnInfinity/BareMetal","commit_stats":{"total_commits":471,"total_committers":10,"mean_commits":47.1,"dds":0.6560509554140128,"last_synced_commit":"72024bba78fa0739dc6bf39cd98fa9db7530442b"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReturnInfinity%2FBareMetal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReturnInfinity%2FBareMetal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReturnInfinity%2FBareMetal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReturnInfinity%2FBareMetal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ReturnInfinity","download_url":"https://codeload.github.com/ReturnInfinity/BareMetal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248908461,"owners_count":21181533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","baremetal","baremetal-kernel","kernel"],"created_at":"2024-09-24T22:53:22.437Z","updated_at":"2025-12-17T14:35:07.412Z","avatar_url":"https://github.com/ReturnInfinity.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"doc/cheetah.svg\" alt=\"BareMetal Logo\" width=\"120\" height=\"120\"\u003e\n\n# BareMetal\n**Just enough kernel**\n\n[![Assembly](https://img.shields.io/badge/x86--64-Assembly-blue)]()\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![CI](https://github.com/ReturnInfinity/BareMetal/actions/workflows/main.yml/badge.svg)](https://github.com/ReturnInfinity/BareMetal/actions/workflows/main.yml)\n\n\u003csub\u003eExokernel • 100% Assembly • Virtual/Physical\u003c/sub\u003e\n\u003c/div\u003e\n\nOfficial repo of the BareMetal [exokernel](http://en.wikipedia.org/wiki/Exokernel). It's written from scratch in Assembly, designed for x86-64 hardware, with no dependencies except for the virtual/physical hardware. An ARM and/or RISC-V rewrite would be considered once hardware is standardized.\n\n### Table of Contents\n\n- [What it is](#what-it-is)\n- [Architecture](#architecture)\n- [Key features](#key-features)\n- [Supported hardware](#supported-hardware)\n- [Try it out](#try-it-out)\n\n## What it is\n\nBareMetal is a _very_ lean kernel. The name is a play on the phrase \"bare metal\" which means to run directly on physical or virtualized hardware. BareMetal also only offers the \"bare essentials\" required for a working operating system.\n\nBareMetal provides basic support for symmetric multiprocessing, network, and storage access via a low-level abstraction layer.\n\n## Architecture\n\nBareMetal is an [exokernel](https://en.wikipedia.org/wiki/Exokernel) and offers a [single address space](https://en.wikipedia.org/wiki/Single_address_space_operating_system) system.\n\nIt is written in [assembly](https://en.wikipedia.org/wiki/Assembly_language) to achieve high-performance computing with a minimal footprint and a \"[just enough operating system](https://en.wikipedia.org/wiki/JeOS)” approach.\n\nThe kernel is primarily targeted towards physical and [virtualized](https://en.wikipedia.org/wiki/Virtualization) environments for [cloud computing](https://en.wikipedia.org/wiki/Cloud_computing), or [HPC](https://en.wikipedia.org/wiki/High-performance_computing) clusters. It could also be used as a [unikernel](https://en.wikipedia.org/wiki/Unikernel).\n\n\u003e “Do not try to do everything. Do one thing well.” — Steve Jobs\n\nThe premise of the kernel is to \"do one thing well\" and that is to execute a program with zero overhead.\n\n## Key features\n* **BIOS/UEFI**: Both boot methods are supported via the companion Pure64 loader.\n* **64-bit only**: Make use of the extra-wide and additional registers available in 64-bit mode.\n* **Mono-processing, multi-core**: The system is able to execute a single program but can spread the work load amongst available CPU cores.\n* **Extremely tiny memory footprint**: The kernel binary is less than 32KiB. BareMetal uses 4 MiB of RAM while running. The majority of its RAM usage is for required memory structures while operating in 64-bit mode, drivers/system buffers, and CPU stacks. All other system memory is dedicated to the running program.\n* **Physical and virtual hardware support** with full virtualization, using [x86 hardware virtualization](https://en.wikipedia.org/wiki/X86_virtualization) whenever available (it is on most modern x86-64 CPU's). In principle BareMetal should run on any x86-64 hardware platform, even on a physical x86-64 computer, given appropriate drivers. Officially, we develop on [QEMU](http://www.qemu.org) and [VirtualBox](https://www.virtualbox.org), which means that you can run BareMetal on both Linux, Microsoft Windows, and Apple macOS.\n\n## Supported Hardware\n\n* CPU\n  * Multi-core on 64-bit x86 systems (Intel/AMD)\n* Bus\n  * PCIe\n  * PCI\n  * xHCI (USB 3)\n* Network\n  * Gigabit\n    * Intel 8254x Gigabit (e1000)\n    * Intel 8257x Gigabit (e1000e)\n  * 10 Gigabit\n    * Intel 8259x 10 Gigabit (ixbge)\n  * Virtual\n    * Virtio-Net\n* Storage\n  * NVMe\n  * AHCI (SATA)\n  * Virtio-Blk\n* HID (Human Interface Devices)\n  * Input\n    * PS/2 Keyboard\n    * USB Keyboard\n    * Serial\n  * Output\n    * LFB (linear frame buffer at native screen resolution with 1024x768x32bpp as fallback)\n    * VGA text mode (80x25 characters with 16 colors)\n    * Serial\n\n## Try it out\n\nSee the [BareMetal-OS](https://github.com/ReturnInfinity/BareMetal-OS) repo for a full build environment.\n\n\n// EOF\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freturninfinity%2Fbaremetal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freturninfinity%2Fbaremetal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freturninfinity%2Fbaremetal/lists"}