awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
cirosantilli avatar

cirosantilli/x86-bare-metal-examples

0
View on GitHub↗
5,306 stars·426 forks·Assembly·10 views

X86 Bare Metal Examples

This project is a collection of minimal operating systems, bootloaders, and hardware drivers used to demonstrate low-level x86 system programming and hardware interfacing. It serves as a kernel development toolkit and a system programming lab designed for testing architecture concepts and hardware behavior within a system emulator.

The repository provides reference implementations for creating bootable disk images and loading kernel stages. It includes guides for implementing protected mode transitions, memory paging, interrupt descriptor tables, and symmetric multiprocessing on x86 hardware.

The codebase covers a wide range of system primitives, including virtual memory mapping, hardware interrupt handling, and physical memory detection. It also contains bare-metal drivers for the PC speaker, PS/2 keyboard, serial ports, and VGA text buffers.

The project includes a raw binary toolchain to compile assembly source into images for direct hardware execution and supports testing via hardware emulation and remote debugging.

Features

  • Bare-Metal Runtimes - Provides a collection of minimal operating systems and bootloaders for low-level x86 system programming.
  • System Programming Labs - Offers a collection of minimal binaries for testing x86 architecture concepts and hardware behavior in QEMU.
  • Hardware Exception Handlers - Implements low-level hardware exception handlers to capture and respond to processor interrupts.
  • BIOS Firmware Interfaces - Implements screen output, disk reading, and keyboard input by invoking BIOS firmware routines.
  • Boot Sector Loaders - Implements a boot manager that locates and executes secondary boot sectors on disk partitions.
  • Multi-Stage Loading - Reads additional sectors from disk into memory and transfers execution to secondary boot stages.
  • Bootable Image Generation - Generates minimal x86 disk images with mandatory magic bytes for BIOS recognition.
  • CPU Register Initialization - Sets up essential segment registers and disables interrupts to ensure a consistent execution environment.
  • Firmware Text Output - Provides routines to output characters and strings using BIOS interrupts and VGA video memory.
  • Bootable Image Creation - Creates the smallest possible x86 executable that the system BIOS can recognize and boot.
  • x86 Bootloaders - Includes detailed examples for creating x86 bootable disk images and loading kernel stages.
  • Memory Segmentation - Implements memory segmentation and configures the Global Descriptor Table (GDT) for memory isolation.
  • Interrupt Controller Initializations - Configures and remaps the PIC interrupt controller vectors to avoid conflicts with CPU exceptions.
  • Interrupt Vector Handlers - Defines an Interrupt Descriptor Table to map hardware and software vectors to specific handler functions.
  • Interrupt Descriptor Tables - Defines an Interrupt Descriptor Table to map hardware interrupts to handler functions.
  • Page Fault Handlers - Intercepts memory access violations using an Interrupt Descriptor Table to resolve page faults.
  • Processor Mode Transitions - Implements the transition from 16-bit real mode to 32-bit protected mode using the Global Descriptor Table.
  • Symmetric Multiprocessing Mechanisms - Implements kernel-level symmetric multiprocessing mechanisms to boot and synchronize multiple CPU cores.
  • Virtual Memory Mapping - Maps virtual addresses to physical memory frames using a multi-level page table structure.
  • x86 Kernel Implementations - Provides reference implementations for x86 protected mode, paging, and symmetric multiprocessing.
  • Native Binary Toolchains - Provides a toolchain to compile assembly source into flat binary images for direct hardware execution.
  • Remote Hardware Debugging - Enables connecting an external debugger to an emulated system to set breakpoints and inspect low-level state.
  • Serial Port Interfaces - Initializes serial port hardware by configuring baud rates and data bits for communication.
  • Hardware Timer Controllers - Configures the Programmable Interval Timer to generate periodic interrupts for system timing.
  • CPU Register Inspection - Includes tools for reading and printing the initial CPU register values provided by the system firmware.
  • BIOS Disk I/O - Reads specific disk sectors into memory using BIOS interrupts to transfer data into system memory.
  • Disk Installers - Writes bootloader configuration to a hard disk and updates the Master Boot Record.
  • Kernel Loading Mechanisms - Loads and executes multiboot-compliant ELF files from the boot menu.
  • Kernel Memory Layouts - Defines memory addresses and section alignments to ensure the hardware loads the kernel at the correct location.
  • Multiboot Standard Implementations - Uses the Multiboot standard to load ELF kernel images into memory while bypassing custom bootloader stages.
  • Physical Memory Mapping - Queries the hardware to determine available and reserved physical memory regions.
  • PS/2 Keyboard Drivers - Reads character scancodes from the keyboard controller using polling and interrupts.
  • Serial Port Drivers - Provides a bare-metal driver for transmitting text characters via the hardware serial port.
  • VGA Text Buffer Drivers - Writes characters and colors directly to the memory-mapped video buffer to bypass BIOS firmware.
  • Hardware Emulators - Supports executing and testing compiled binary images within a hardware emulator to simulate x86 architecture.
  • Binary Compilation - Compiles assembly source code and links it using a custom script to create raw binary images.
  • Cheat Sheets - Listed in the “Cheat Sheets” section of the The Book Of Secret Knowledge awesome list.

Star history

Star history chart for cirosantilli/x86-bare-metal-examplesStar history chart for cirosantilli/x86-bare-metal-examples

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to X86 Bare Metal Examples

Similar open-source projects, ranked by how many features they share with X86 Bare Metal Examples.
  • mit-pdos/xv6-publicmit-pdos avatar

    mit-pdos/xv6-public

    9,466View on GitHub↗

    xv6 is a Unix-like educational operating system designed for teaching kernel concepts. It is implemented as an instructional kernel for x86 and RISC-V architectures, featuring a virtual memory manager and support for symmetric multiprocessing. The system is designed to demonstrate core OS principles through a simplified re-implementation of Unix Version 6. It provides a controlled environment for studying system calls, trap handling, and process lifecycles. Its capability surface covers process management, including scheduling and context switching, and memory management via page tables for

    C
    View on GitHub↗9,466
  • yourtion/30daymakeosyourtion avatar

    yourtion/30dayMakeOS

    6,412View on GitHub↗

    30dayMakeOS is an educational hobby operating system project designed for the x86 architecture. It implements a monolithic kernel and a custom bootloader that transitions the CPU from real mode to 32-bit protected mode to enable flat memory addressing. The project focuses on low-level system development, featuring a custom graphics driver for direct pixel-buffer rendering and window management without an existing operating system. It includes an x86 bootloader that loads the kernel from disk into memory. The system covers core kernel capabilities including round-robin task scheduling for pro

    Casmbootc
    View on GitHub↗6,412
  • s-matyukevich/raspberry-pi-oss-matyukevich avatar

    s-matyukevich/raspberry-pi-os

    13,854View on GitHub↗

    This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level implementation of kernel engineering, focusing on the fundamental construction of an OS from the hardware level up. The system is distinguished by its comprehensive approach to ARM64 processor control, featuring a red-black tree task scheduler and a hierarchical page table system for virtual memory management. It implements a sophisticated privilege model that handles transitions between kernel and user modes, ensuring process isolation through address space splitting and exception level m

    Carmarmv8assembler
    View on GitHub↗13,854
  • rust-embedded/rust-raspi3-os-tutorialsrust-embedded avatar

    rust-embedded/rust-raspi3-OS-tutorials

    14,682View on GitHub↗

    This project is a tutorial and framework for building a low-level, bare-metal operating system from scratch using the Rust language. It focuses on ARMv8 kernel development specifically for the Raspberry Pi 3, providing the resources necessary to implement a monolithic kernel that runs directly on hardware without an underlying operating system. The project distinguishes itself by providing a complete embedded cross-compilation suite within a containerized environment to ensure consistent builds. It includes a dedicated kernel deployer that uses a serial interface and chainloader to load and b

    Rust
    View on GitHub↗14,682
See all 30 alternatives to X86 Bare Metal Examples→

Frequently asked questions

What does cirosantilli/x86-bare-metal-examples do?

This project is a collection of minimal operating systems, bootloaders, and hardware drivers used to demonstrate low-level x86 system programming and hardware interfacing. It serves as a kernel development toolkit and a system programming lab designed for testing architecture concepts and hardware behavior within a system emulator.

What are the main features of cirosantilli/x86-bare-metal-examples?

The main features of cirosantilli/x86-bare-metal-examples are: Bare-Metal Runtimes, System Programming Labs, Hardware Exception Handlers, BIOS Firmware Interfaces, Boot Sector Loaders, Multi-Stage Loading, Bootable Image Generation, CPU Register Initialization.

What are some open-source alternatives to cirosantilli/x86-bare-metal-examples?

Open-source alternatives to cirosantilli/x86-bare-metal-examples include: mit-pdos/xv6-public — xv6 is a Unix-like educational operating system designed for teaching kernel concepts. It is implemented as an… yourtion/30daymakeos — 30dayMakeOS is an educational hobby operating system project designed for the x86 architecture. It implements a… s-matyukevich/raspberry-pi-os — This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level… rust-embedded/rust-raspi3-os-tutorials — This project is a tutorial and framework for building a low-level, bare-metal operating system from scratch using the… tinygo-org/tinygo — TinyGo is a specialized compiler and development toolkit designed to bring the Go programming language to… intermezzos/kernel — Kernel is an educational hobby operating system and low-level systems programming project written in Rust. Designed…