Transition to Git is in progress

As of r364891 the release script only supports Git and subsequently rendering the following instructions not working as intended however some functionality is still not implemented therefore this page wont be updated until they are.

A tutorial on how to build images for arm devices using FreeBSD's release building infrastructure.

Download source

svnlite checkout https://svn.freebsd.org/base/head /usr/src

Note: it's preferred that you keep /usr/src and the version you're trying to build in sync. To checkout a specific revision use -rXXX where XXX is the revision
Requirement: The host needs to run a version equal or greater to what you're building.

Remove debugging, profiling and tests (optional)

Create a directory which will contain make.conf and src.conf

mkdir /etc/release-confs

Populate /etc/release-confs/make.conf

WITHOUT_DEBUG=YES
MK_PROFILE=no

See man 5 make.conf and /usr/src/UPDATING for more information

Populate /etc/release-confs/src.conf

WITHOUT_DEBUG_FILES=1
WITHOUT_KERNEL_SYMBOLS=yes
WITHOUT_TESTS=yes
WITHOUT_PROFILE=yes
WITHOUT_LLVM_ASSERTIONS=yes
WITH_MALLOC_PRODUCTION=yes

By removing symbols and debugging information you're limiting the ability to debug crashes severely.

See man 5 src.conf for more information

These files needs to be referenced in the configuration file for your target using the variables MAKE_CONF and SRC_CONF as mentioned in man 7 release.

Add board specific configuration (if needed)

This example is for Orange Pi PC as this board has support but doesn't have a configuration. In many cases you can use another board's configuration as template as long as it uses the same SoC.

Copy BANANAPI.conf to a new location

cd /usr/src/release
cp -Rp arm/BANANAPI.conf arm/ORANGEPI-PC.conf

Change EMBEDDEDPORTS path to corresponding u-boot port

EMBEDDEDPORTS="sysutils/u-boot-bananapi" --> EMBEDDEDPORTS="sysutils/u-boot-orangepi-pc"

Change kernel to GENERIC-NODEBUG if you want to disable kernel debugging

KERNEL="GENERIC" --> KERNEL="GENERIC-NODEBUG"

BOARDNAME variable sets filename of generated image file.

export BOARDNAME="BANANAPI" --> export BOARDNAME="ORANGEPI-PC"

Add SRCBRANCH="base/head@rXXX" where XXX is the revision number (optional)

SRCBRANCH="base/head@r349025"

Change UBOOT_DIR to corresponding u-boot install path (u-boot-orangepi-pc)

UBOOT_DIR="/usr/local/share/u-boot/u-boot-bananapi" --> UBOOT_DIR="/usr/local/share/u-boot/u-boot-orangepi-pc"

Begin compilation

sh release.sh -c arm/ORANGEPI-PC.conf

The release script will automatically set amount of jobs (see man 7 release for more information). The compiled image will be placed in /scratch/R .

Sanitize image

If you want to distribute your image after doing modifications and/or installing packages on a "live" system you first need to clear out system specific files. Mount your / partition, remove the following directories and files before making a copy and don't forget to touch /firstboot .

See also

notes about the prebuilt images


CategoryHowTo

arm/Build_image_using_release_building_infrastructure (last edited 2021-03-22T06:57:41+0000 by DanielEngberg)