Coreboot: Difference between revisions
imported>Milahu build toolchain only for x64 |
imported>Milahu m make menuconfig -> dark mode |
||
Line 17: | Line 17: | ||
#gnatboot # gnat1 | #gnatboot # gnat1 | ||
ncurses # make menuconfig | ncurses # make menuconfig | ||
#bison # | #flex bison # Generate flashmap descriptor parser | ||
#clang | #clang | ||
zlib | zlib | ||
Line 42: | Line 41: | ||
# configure | # configure | ||
# set mainboard, | # set mainboard model, chip size, ... | ||
make menuconfig | make menuconfig MENUCONFIG_COLOR=blackbg | ||
# build toolchain | # build toolchain |
Revision as of 16:34, 26 October 2021
Building in nix-shell
To build your own coreboot bios:
Create a shell.nix
, and run nix-shell
# shell.nix
# NOTE we need mkShellNoCC
# mkShell would add the regular gcc, which has no ada (gnat)
# https://github.com/NixOS/nixpkgs/issues/142943
with import <nixpkgs> { };
mkShellNoCC {
buildInputs = [
gnat11 # gcc with ada
#gnatboot # gnat1
ncurses # make menuconfig
#flex bison # Generate flashmap descriptor parser
#clang
zlib
#acpica-tools # iasl
pkgconfig
qemu # test the image
];
shellHook = ''
# TODO remove?
NIX_LDFLAGS="$NIX_LDFLAGS -lncurses"
'';
}
Now we can build coreboot:
git clone https://review.coreboot.org/coreboot.git --depth 1
cd coreboot
du -sh . # 200 MByte
git submodule update --init --checkout --depth 1
du -sh . # 700 MByte
# configure
# set mainboard model, chip size, ...
make menuconfig MENUCONFIG_COLOR=blackbg
# build toolchain
# this can take some hours
# list all targets: make help
make crossgcc-x64 CPUS=$(nproc)
# build firmware
make
# 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.