Coreboot: Difference between revisions

imported>Milahu
build toolchain only for x64
Ehmry (talk | contribs)
Coreboot comes with a nix-shell expression.
 
(7 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== Building in nix-shell ==
== Building as Nix Derivation ==
To build your own coreboot bios:


Create a <code>shell.nix</code>, and run <code>nix-shell</code>
There is a commented example of building Coreboot as Nix derivation at [https://github.com/blitz/nix-coreboot blitz/nix-coreboot] on Github.


<syntaxhighlight lang="nix">
== Building in nix-shell ==
# shell.nix
Coreboot as of 24.02 comes with a Nix shell expression for x86 at <code>util/nixshell//devshell-i386.nix</code>.
 
# 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"
  '';
}
</syntaxhighlight>
 
Now we can build coreboot:


<syntaxHighlight lang=bash>
<syntaxHighlight lang=bash>
# clone coreboot git repository (latest master)
git clone https://review.coreboot.org/coreboot.git --depth 1
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
cd coreboot
du -sh . # 200 MByte
du -sh . # ~200 MByte
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, flash size, ...
# set mainboard model, chip size, ...
make menuconfig
make menuconfig MENUCONFIG_COLOR=blackbg # blackbg = dark mode
 
# build toolchain
# this can take some hours
# list all targets: make help
make crossgcc-x64 CPUS=$(nproc)


# build firmware
# build firmware
make
make CPUS=$(nproc)


# test firmware
# test firmware
Line 78: Line 52:
* https://wiki.gentoo.org/wiki/Coreboot
* https://wiki.gentoo.org/wiki/Coreboot
* flashing the new bios image
* flashing the new bios image
** https://doc.coreboot.org/flash_tutorial/
** https://doc.coreboot.org/tutorial/flashing_firmware/index.html
** https://libreboot.org/docs/install/spi.html
** https://libreboot.org/docs/install/spi.html
[[Category:Booting]]