::: danger 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. :::
-
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
- Debian/Ubuntu based distros:
-
Clone the repository:
git clone https://github.com/mrchromebox/coreboot.git
-
Clone the submodules:
cd corebootgit submodule update --init --checkout --recursive
-
Build the coreboot toolchain
make crossgcc-i386 CPUS=$(nproc)
-
Make changes now, if needed.
- Common changes include:
- Replacing the default logo (
Documentation/coreboot_logo.bmp) - Enabling serial debug output (
CONFIG_CONSOLE_SERIAL=y)
- Replacing the default logo (
- Common changes include:
-
Build the firmware
./build-uefi.sh <boardname>- For example,
./build-uefi.sh panther - If successful, the compiled image will be found in
~/dev/roms
- For example,
-
See Flashing Manually to flash
- 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