+Starting from 14.0-RELEASE, the FreeBSD project has published a set of packages of the kernel and base system, using man:pkg[8]. These can be used in the same convenient way that users are used to, for adding and upgrading ported software, but for the kernel and userland itself. The packages, and usage thereof,
+are often referred to as pkgbase.
+
+Packages have been available since link:https://lists.freebsd.org/archives/freebsd-pkgbase/2023-October/000221.html[October 2023], considered experimental for FreeBSD's 14 Release.
+
+Starting from 15.0-RELEASE, Base System packages will be the default and officially supported way to both install new FreeBSD instances, and also to update and upgrade between minor and major releases.
+
+[NOTE]
+====
+From 15.0-RELEASE onwards, the long-running man:freebsd-update[8] tool will only be supported on the earlier 13 and 14 release branches.
+====
+
+Base System Packages replace:
+
+* tarball distribution sets, such as `base.txz` or `kernel.txz`, which are historically used for installation of the OS with man:bsdinstall[8]
+* man:freebsd-update[8] for updates to the OS.
+
+Base System packages complement crossref:cutting-edge[makeworld,"building and installing from source"], which is still available for those who wish to build their own custom kernels or userland. It is also possible to build custom base system packages from local sources, as well as just relying on officially provided packages.
+
+=== Converting a Host to use pkgbase
+
+Systems installed with FreeBSD 14.0-RELEASE or later can be converted to use Base System packages. For earlier versions, it is recommended to first upgrade to 14.0-RELEASE, and then convert.
+
+The FreeBSD Foundation has sponsored development of a tool called link:https://github.com/FreeBSDFoundation/pkgbasify[pkgbasify], which for most users, will be the easiest and safest way to convert systems to use Base System packages.
+
+[WARNING]
+====
+Note that this migration requires up to 5GiB additional free space, to download, unpack, and relocate any conflicting files. The pkgbasify does not check for this and it is the responsibility of the user to ensure that enough space is available before running the migration.
+====
+
+man:pkgbasify[8] (or whatever outcome link:https://reviews.freebsd.org/D51594[D51594] or link:https://wiki.freebsd.org/WantedPorts#O-P[port request] will have) performs 6 main tasks:
+
+* Creates a backup boot environment (ZFS only) with man:bectl[8]
+* Creates the new package repository config files
+* Upgrades existing system components such as base, kernel, lib32, debug
+Check out the branch for the release to build packages for
+[source,shell]
+....
+# git checkout releng/14.3
+....
+
+Start the building process, depending on the resources available this could take some while.
+Set the parallel processes according to the cpu core count.
+This example is written for an 8 core CPU:
+[source,shell]
+....
+# make -j8 buildworld && make -j8 buildkernel && make -j8 packages
+....
+
+When building frequently, consider using package:devel/ccache[] to speed up subsequent builds from the cache.
+
+After building, the packages will get saved into `/usr/obj/usr/src/repo/FreeBSD:14:amd64/14.3p2` or something like that, depending on the version build.
+
+To publish these packages to the network set up a nginx service and use this location in the http server configuration:
+[.programlisting]
+....
+ location /FreeBSD:14:amd64 {
+ alias /usr/obj/usr/src/repo/FreeBSD:14:amd64/;
+ autoindex on;
+ }
+....
+And reload the nginx service.
+
+When not using https, use a small configuration file on the clients to target the pkgbase version just built by editing `/usr/local/etc/pkg/repos/upgrade.conf`
+and use it as written above (but use -r upgrade instead of FreeBSD-base).
+
[[small-lan]]
== Tracking for Multiple Machines
-When multiple machines need to track the same source tree,
-it is a waste of disk space, network bandwidth,
-and CPU cycles to have each system download the sources and rebuild everything.
+When multiple machines need to track the same source tree, it is a waste of disk space, network bandwidth, and CPU cycles to have each system download the sources and rebuild everything.
The solution is to have one machine do most of the work, while the rest of the machines mount that work via NFS.
This section outlines a method of doing so.
For more information about using NFS, refer to crossref:network-servers[network-nfs,"Network File System (NFS)"].