Following document describes release process for new versions of firmware for PC Engines APU2, APU3, APU4 and APU5 platform. It is intended for developers who want to create fully featured binaries and test those with various versions of sortbootorder, SeaBIOS, memtest86+ or iPXE.
For releases v4.0.17 and v4.6.10 or newer please use pce-fw-builder
Please note that flashing without recovery procedure is not recommended and we are not responsible for any damage that inexperienced person can do to the system.
Use repo tool to initialize set of repositories
mkdir apu2_fw_rel cd apu2_fw_rel repo init -u email@example.com:pcengines/release_manifests.git -b refs/tags/<tag_release> # or repo init -u firstname.lastname@example.org:pcengines/release_manifests.git -b <branch_name> repo sync --force-sync
<tag_release> - is the release version number (e.g.
<branch_name> - is the release branch (i.e.
coreboot-4.0.x for legacy,
coreboot-4.6.x for mainline
You can look-up changes, available branches and release tags on this github repository.
This is to avoid impact of system on build results:
docker build -t pcengines/apu2 apu2/apu2-documentation
This step could be omitted, if there was build done before (container already exists).
Assuming you initialized the repo with mainline release:
If config file was not created yet, the menuconfig will pop up.
Mainboard -> Mainboard vendor -> PC Engines Mainboard -> Mainboard model -> APU2 or Mainboard -> Mainboard model -> APU3 or Mainboard -> Mainboard model -> APU4 or Mainboard -> Mainboard model -> APU5
All other pieces will be set according to recent release configuration. coreboot image will start to build after exiting menu.
For legacy release you can use this command:
There are also additional commands like:
# menuconfig ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build-ml menuconfig # or for legacy ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build menuconfig # distclean ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build-ml distclean # or for legacy ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build distclean # rm -rf .config* ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build-ml cfgclean # or for legacy ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build cfgclean # custom make parameters ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build-ml custom <param> # or for legacy ./apu2/apu2-documentation/scripts/apu2_fw_rel.sh build custom <param>
After successful build, you can flash target device.
Note that below script assume that you have ssh enabled connection with target
device and destination OS or other distro that have working
PATH. Without keys added you will see question about password couple times
./apu2/apu2-documentation/scripts/apu2_fw_rel.sh flash <user>@<ip_address>
For forcing the flash (board identification mismatch):
./apu2/apu2-documentation/scripts/apu2_fw_rel.sh flash-force <user>@<ip_address>
Best way is to use
<user> because it can have no problem with low
Please do not hesitate with providing feedback or contributing fixes.
using repo with coreboot show errors like:
fatal: Not a git repository (or any parent up to mount point /coreboot) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Since it use
git commands to create build timestamp.
flashing doesn't work
[21:51:53] pietrushnic:apu2_fw_rel $ ../apu2-documentation/scripts/apu2_fw_rel.sh flash email@example.com flash firstname.lastname@example.org The authenticity of host '192.168.0.103 (192.168.0.103)' can't be established. (...) Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.103' (ECDSA) to the list of known hosts. bash: remountrw: command not found coreboot.rom 100% 8192KB 8.0MB/s 00:00 sudo: no tty present and no askpass program specified sudo: no tty present and no askpass program specified
scripts finish with error
If you see something like this:
dirname: missing operand Try 'dirname --help' for more information. dirname: missing operand Try 'dirname --help' for more information. docker: Error response from daemon: Invalid volume spec ":": Invalid volume specification: ':'. See 'docker run --help'.
Try to run:
eval $(ssh-agent) ssh-add