This pages contains information about self-hosting on ARM devices.

  • 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.

  • 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
  • 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.

  • arm/self-hosting.txt
  • Last modified: 2019/11/15 16:24
  • by DanielEngberg