Coreboot: Difference between revisions
imported>Milahu fix nix-shell with mkShellNoCC |
imported>Milahu m configure: set mainboard, flash size, ... |
||
Line 42: | Line 42: | ||
# configure | # configure | ||
# set mainboard, flash size, ... | |||
make menuconfig | make menuconfig | ||
Revision as of 12:17, 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
#bison # generate parsers
#flex
#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, flash size, ...
make menuconfig
# build toolchain
# this can take some hours
make crossgcc CPUS=$(nproc)
# build firmware
make
# test firmware
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio
Compiler version
gcc
(provided by clang
) and gnat
(the GNU Ada compiler) must have the same version
gcc --version
gnat --version
For example, both have version 10.3.0
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.