Download the freebsd-update-server software as a tar archive, or use csup(1) and the projects-all collection.
Update scripts/build.conf appropriately. It is sourced during all build operations.
Here is the default build.conf, which should be modified to suit your environment.
# Main configuration file for FreeBSD Update builds. The # release-specific configuration data is lower down in # the scripts tree. # Location from which to fetch releases export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases # Host platform export HOSTPLATFORM=`uname -m` # Host name to use inside jails export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net # Location of SSH key export SSHKEY=/root/.ssh/id_dsa # SSH account into which files are uploaded MASTERACCT=builder@wadham.daemonology.net # Directory into which files are uploaded MASTERDIR=update-master.freebsd.org
Parameters for consideration would be:
fetchiso()
subroutine of scripts/build.subr). The location configured is not limited
to FTP URIs. Any URI scheme supported by standard fetch(1) utility
should work fine.Customizations to the fetchiso()
code can be
installed by copying the default build.subr script to the
release and architecture-specific area at scripts/RELEASE/ARCHITECTURE/build.subr and applying local
changes.
% uname -v
The ssh-keygen(1) manual page has more detailed information about SSH and the appropriate steps for creating and using one.
The default build.conf file shipped with the freebsd-update-server sources is suitable for building i386 releases of FreeBSD. As an example of building an update server for other architectures, the following steps outline the configuration changes needed for amd64:
Create a build environment for amd64:
Install a build.conf file in the newly created build directory. The build configuration options for FreeBSD 7.2-RELEASE on amd64 should be similar to:
# SHA256 hash of RELEASE disc1.iso image. export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5 # Components of the world, source, and kernels export WORLDPARTS="base catpages dict doc games info manpages proflibs lib32" export SOURCEPARTS="base bin contrib crypto etc games gnu include krb5 \ lib libexec release rescue sbin secure share sys tools \ ubin usbin cddl" export KERNELPARTS="generic" # EOL date export EOL=1275289200
% date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'