惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
宝玉的分享
宝玉的分享
美团技术团队
量子位
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
爱范儿
爱范儿
J
Java Code Geeks
博客园 - Franky
Last Week in AI
Last Week in AI
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
GbyAI
GbyAI
Recent Announcements
Recent Announcements
小众软件
小众软件
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog

Show HN

Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code.
GitHub - ReturnInfinity/BareMetal-Firecracker: BareMetal ...
ianseyler · 2026-06-24 · via Show HN

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.

Components

  • BareMetal, an exokernel written in x86-64 Assembly.
  • Firecracker, a streamlined virtualization environment.

Contents

  • 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

Getting Started

Prerequisites

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.

Building

./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 running as a DHCP client and web server
  • hello.app - "Hello World" in Assembly

Running

./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 <text> - Send a line of text to the VM serial console
  • output [--full] - Print new VM serial console output (--full for entire log)
  • attach - Attach to the interactive screen session
  • stop - Gracefully shut down the VM (Ctrl+Alt+Del)

Firecracker

Firecracker provides hardware isolated microVMs.

Overview

What is missing from a "standard" VM:

  • No firmware (BIOS/UEFI)
  • No PCI/PCIe bus
  • No VGA or LFB
  • No USB
  • No HPET
  • Minimal ACPI

What you get:

  • VirtIO devices (block, net, and others) addressable via MMIO
  • PS/2 keyboard controller (only used for sending Ctrl-Alt-Del)
  • Serial console

Note: It is possible to enable a PCIe bus for Firecracker but it is not a default.

Memory usage

Firecracker uses the following memory address on startup:

Start AddressDescription
0x000500GDT
0x000520IDT
0x006000PVH
0x007000boot_params
0x008000Stack (starts at 0x8FF0)
0x009000PML4 (CR3 points here)
0x00A000PDPTE
0x00B000PDE
0x020000cmd_line
0x0E0000RSDP
0x100000your software

0xC000-0xFFFF should be free

Startup

Execution starts in 64-bit mode at 0x100000. RFLAGS is set to 0x2, RSP/RBP to 0x8FF0, and RSI to the address of boot_params.

BareMetal Init

Init preps the system for the BareMetal Kernel. It sets the system up in a similar way to Pure64. It is also written in Assembly.

Memory Map

Start AddressEnd AddressSizeDescription
0x00000000000000000x0000000000000FFF4 KiBIDT - 256 descriptors (each descriptor is 16 bytes)
0x00000000000010000x0000000000001FFF4 KiBGDT - 256 descriptors (each descriptor is 16 bytes)
0x00000000000020000x0000000000002FFF4 KiBPML4 - 512 entries, entry 0 points to PDP at 0x3000, entry 256 points to PDP at 0x4000
0x00000000000030000x0000000000003FFF4 KiBPDP Low - 512 entries
0x00000000000040000x0000000000004FFF4 KiBPDP High - 512 entries
0x00000000000050000x0000000000005FFF4 KiBInit data
0x00000000000060000x0000000000006FFF4 KiBStack
0x00000000000070000x0000000000007FFF4 KiBboot_params
0x00000000000080000x000000000000FFFF32 KiBStub
0x00000000000100000x000000000001FFFF64 KiBPD Low - Entries are 8 bytes per 2MiB page
0x00000000000200000x000000000005FFFF256 KiBPD High - Entries are 8 bytes per 2MiB page
0x00000000000600000x000000000009FFFF256 KiBFree
0x00000000000A00000x00000000000FFFFF384 KiBLegacy BIOS ROM Area
   VGA RAM at 0xA0000 (128 KiB) Color text starts at 0xB8000
   Video BIOS at 0xC0000 (64 KiB)
   Motherboard BIOS at F0000 (64 KiB)
0x00000000001000000xFFFFFFFFFFFFFFFF1+ MiBThe software payload is loaded here

Init data

Start AddressEnd AddressSizeDescription
0x00000000000058000x00000000000058FF256 BMMIO devices
0x00000000000059000x00000000000059FF256 Bmemmap
0x0000000000005A000x0000000000005AFF256 Bcmdline

BareMetal

The BareMetal kernel in this repo has been adapted from the general version. VirtIO drivers have been reworked to use MMIO.

Virtio-Block and Virtio-Net drivers are present. Virtio-Vsock, and other Firecracker-supported devices, are yet to be added.

SMP is not included in this version of BareMetal and will be added at a later date. BareMetal uses 2MiB of memory - A microVM should be provisioned with at least 4MiB of memory so 2MiB can be mapped at 0xFFFF800000000000. 2MiB is the minimum if the application runs from kernel memory (there is some room).

The kernel binary (actual code + data) is currently ~5500 bytes. About 913408 bytes of padding is added to the end of the kernel so that the monitor utility is already at 0x1E0000 in memory. The monitor utility is also padded to be 131072 bytes in length so that any application will be at 0x200000 in memory (which is mapped to 0xFFFF800000000000).

TODO

  • parse ACPI tables for APIC IDs (SMP removed from this version)
  • when building in unikernel mode exclude monitor binary
  • re-org BareMetal memory usage to make more room for payloads when running with only 2MiB of RAM
  • combine build.sh into baremetal.sh

//EOF