Compiling Custom Firmware

Cloning & Building ROMs


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/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:
  • Debian 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
  1. Clone the repository:
    • git clone
  2. cd to the coreboot folder, then build the coreboot toolchain
    • make crossgcc-i386 CPUS=$(nproc)
  3. Make changes now, if needed.
    • Common changes include:
      • Replacing the default logo (Documentation/coreboot_logo.bmp)
      • Changing version string (CONFIG_LOCALVERSION)
  4. Build the ROM
    • create build dir: mkdir -p ~/dev/firmware
    • ./ <boardname>
      • For example, ./ careena
    • Roms will be stored in ~/dev/firmware
  5. Continue onto Flashing Manually to flash
Last Updated: