This pages contains information about self-hosting on ARM devices.
General configuration
- Adding swap space over NFS may cause instability and deadlocks
Source: https://lists.freebsd.org/pipermail/freebsd-arm/2019-June/019930.html
Checking out source
- SD cards are not suitable for heavy I/O and certain operations may take an excessive amount of time such as checking out source via SVN or GIT. This can however heavily depend on your SD card's performance; faster rating doesn't necessarily translate into better random write and read speed.
svnlite checkout svn://svn.freebsd.org/base/head /usr/src --> 10h58m28.12s real 5m32.95s user 16m11.79s sys
Also worth considering is that they have a very limited amount of writes compared to a HDD and SSD.
Building world/kernel
Default tmpfs size (50MByte) may be too small to successfully build world and kernel with default settings. 96Mbyte is reported to be large enough to sucessfully complete a build.
Source: https://lists.freebsd.org/pipermail/freebsd-arm/2019-June/019930.html
After import of LLVM/Clang 9 tmpfs needs to be 128Mbyte for build and installworld to complete successfully.Compiling LLVM/Clang will roughly use 500-700MByte of memory per process at some stages which may cause your device to run out of memory. Adding a swap (1Gbyte is usually enough) will mitigate this issue but you most likely also want to limit jobs to 1 per 512Mbyte of total available memory. Compiling world and kernel takes more than a day using 2 jobs on armv7 or arm64.
You may want to set CPUTYPE?= in /etc/make.conf
For valid options see /usr/share/examples/etc/make.conf as of r349291
Using ports
If your device has less than 2Gbyte of RAM (see above) you can force number of jobs by setting MAKE_JOBS_NUMBER in /etc/make.conf to avoid excessive usage of swap and out of memory issues.
MAKE_JOBS_NUMBER=n
Where n corrensponds to the number of jobs.