BareMetal OS running inside Firecracker microVMs with <1ms cold start BareMetal OS now runs inside Firecracker microVMs with a cold start time under 1 millisecond, achieving ~700µs with network and disk enabled on an AMD Ryzen AI Max+ 395. The project enables near-instant-on, hardware-isolated microVMs with as little as 2MiB of RAM, supporting unikernel and monitor modes. This repository contains the source code for BareMetal-Firecracker. This is a custom version of the BareMetal kernel explicitly for execution within a Firecracker microVM. The goal of this project was to achieve a <1ms cold start for the BareMetal kernel and its payload. That goal was achieved. The purpose of this project is to allow for near "instant on" hardware isolated microVMs to be provisioned with as little as 2MiB of RAM assigned to each. On an AMD Ryzen AI Max+ 395, running Ubuntu Desktop 26.04 with Firecracker v1.15.1, execution times are as follows: - Init: ~100µs from Firecracker handoff to kernel start. - BareMetal: ~700µs with network and disk enabled. ~500µs with only network enabled. This continues the work to support the "Hypervisor as the OS" philosphy as written here https://returninfinity.com/blog/hypervisos-as-data-centre-os . BareMetal https://github.com/ReturnInfinity/BareMetal , an exokernel written in x86-64 Assembly. Firecracker https://firecracker-microvm.github.io , a streamlined virtualization environment. src : Source code for BareMetal init and the BareMetal kernel payload : Payload for the kernel - Currently a minimal version of BareMetal Monitor scripts : Scripts for creating/removing bridge and tap networks img : Screenshot nasm, curl or wget, binutils, screen, firecracker see FIRECRACKER.md A tap0 network device is expected for microVM network connectivity. mkbr0.sh in the scripts directory will configure the bridge and tap. ./build.sh Running this will build the kernel and the monitor utility. The monitor will run on startup. ./build.sh payload.app Running this will configure "unikernel" mode. The app specified in the argument will run on startup. A couple examples are included: webserver.app - lwIP https://github.com/IanSeyler/BareMetal-lwip running as a DHCP client and web server hello.app - "Hello World" in Assembly ./baremetal.sh is the main script. It expects one of several arguments: start - Start the BareMetal VM status - Check if the VM is currently running send