MrChromebox.techMrChromebox.tech
Donate via Paypal
Give via Patreon
Get Help on the Forums
Github Repos
Donate via Paypal
Give via Patreon
Get Help on the Forums
Github Repos
  • News & Updates
  • Getting Started
  • FAQ
  • Known Issues
  • Glossary
  • Supported Devices
  • Firmware Utility Script
  • ChromeOS Boot Modes
    • Normal Mode
    • Recovery Mode
    • Developer Mode
    • Legacy Boot Mode (aka AltFw)
  • Firmware 101
    • Firmware Types
    • Firmware Write Protect
      • Disabling FW WP
    • Flashing Firmware
    • Updating Firmware
    • Flashing Manually
    • Booting Your OS
  • Reverting to ChromeOS
    • Flashing Stock Firmware
    • ChromeOS Recovery USB
  • Help and Support
    • Making a Bootable USB
    • Debugging / Getting Help
    • Compiling Your Own Firmware
    • Unbricking
      • With a ch341a USB Programmer
      • With a Suzy-Q Cable
  • Documentation Sitemap
  • Contributing

Compiling Your Own Firmware

Caution

Building and flashing your own firmware has the potential to brick your device. Do not do this unless you are sure you know what you're doing and have a way to recover from a bad flash. Some level of knowledge with using the Linux command line is required.

  1. Install tools and libraries needed for coreboot/edk2:

    • Debian/Ubuntu based distros: sudo apt install -y bison build-essential curl flex git gnat imagemagick libncurses5-dev m4 nasm python-is-python3 uuid-dev zlib1g-dev libssl-dev
    • Arch based distros: sudo pacman --needed -S base-devel curl git gcc-ada ncurses zlib nasm imagemagick
    • Redhat based distros: sudo dnf install git make gcc-gnat flex bison xz bzip2 gcc g++ ncurses-devel wget zlib-devel patch openssl libuuid-devel nasm texinfo
  2. Clone the repository:

    • git clone https://github.com/mrchromebox/coreboot.git
  3. Clone the submodules:

    • cd coreboot
    • git submodule update --init --checkout --recursive
  4. Build the coreboot toolchain

    • make crossgcc-i386 CPUS=$(nproc)
  5. Make changes now, if needed.

    • Common changes include:
      • Replacing the default logo (Documentation/coreboot_logo.bmp)
      • Enabling serial debug output (CONFIG_CONSOLE_SERIAL=y)
  6. Build the firmware

    • ./build-uefi.sh <boardname>
      • For example, ./build-uefi.sh panther
      • If successful, the compiled image will be found in ~/dev/roms
  7. See Flashing Manually to flash

Related Documentation

  • Manual Flashing - How to flash your custom firmware
  • MrChromebox coreboot Repository - Firmware source code
  • MrChromebox edk2 Repository - UEFI payload source
  • coreboot Documentation - Upstream coreboot documentation
  • Contributing - How to contribute firmware improvements
  • Unbricking - Recovery from bad flash
Last Updated:: 11/25/25, 10:22 PM
Prev
Debugging / Getting Help
Next
Unbricking