Coreboot: Difference between revisions
Appearance
Make the shell cross compatible |
Coreboot comes with a nix-shell expression. |
||
Line 4: | Line 4: | ||
== Building in nix-shell == | == Building in nix-shell == | ||
Coreboot as of 24.02 comes with a Nix shell expression for x86 at <code>util/nixshell//devshell-i386.nix</code>. | |||
</ | |||
<syntaxHighlight lang=bash> | <syntaxHighlight lang=bash> | ||
Line 66: | Line 17: | ||
git submodule update --init --checkout --depth 1 | git submodule update --init --checkout --depth 1 | ||
du -sh . # ~700 MByte | du -sh . # ~700 MByte | ||
nix-shell --pure util/nixshell/devshell-i386.nix | |||
# configure | # configure | ||
# set mainboard model, chip size, ... | # set mainboard model, chip size, ... | ||
make menuconfig MENUCONFIG_COLOR=blackbg # blackbg = dark mode | make menuconfig MENUCONFIG_COLOR=blackbg # blackbg = dark mode | ||
# build firmware | # build firmware |
Latest revision as of 11:42, 20 May 2025
Building as Nix Derivation
There is a commented example of building Coreboot as Nix derivation at blitz/nix-coreboot on Github.
Building in nix-shell
Coreboot as of 24.02 comes with a Nix shell expression for x86 at util/nixshell//devshell-i386.nix
.
# clone coreboot git repository (latest master)
git clone https://review.coreboot.org/coreboot.git --depth 1
# or for a specific coreboot version (I.E. version 4.15)
git clone --branch 4.15 https://review.coreboot.org/coreboot.git --depth 1
# get 3rd party submodules in coreboot repository
cd coreboot
du -sh . # ~200 MByte
git submodule update --init --checkout --depth 1
du -sh . # ~700 MByte
nix-shell --pure util/nixshell/devshell-i386.nix
# configure
# set mainboard model, chip size, ...
make menuconfig MENUCONFIG_COLOR=blackbg # blackbg = dark mode
# build firmware
make CPUS=$(nproc)
# test firmware
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio
Skip building toolchain
We can use our system toolchain to build coreboot firmware, but this is not recommended per coreboot docs:
you can possibly use your system toolchain, but the results are not reproducible, and may have issues, so this is not recommended
To use the system toolchain, in make menuconfig
, enable General Setup > Allow building with any toolchain
Building as derivation
coreboot is pretty picky about the toolchain it is built with and thus using the toolchain it comes with is the easiest path to success. There are commented Nix expressions that build coreboot here.