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|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|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 [[https://svnweb.freebsd.org/base/head/share/examples/etc/make.conf?revision=349291|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.