Setting up a FreeBSD Update Server for FreeBSD 7.0

Check out a copy of the freebsd-update-server code from CVS:

# cvs -d anoncvs@anoncvs1.freebsd.org:/home/ncvs co projects/freebsd-update-server

Create the patches/7.0-RELEASE directory:

# cd patches
# mkdir 7.0-RELEASE
# cd 7.0-RELEASE

Fetch the patches needed:

fetch -o 1-SA-08:05.openssh http://security.FreeBSD.org/patches/SA-08:05/openssh.patch
fetch -o 2-SA-08:02.tcp http://security.FreeBSD.org/patches/EN-08:02/tcp.patch
fetch -o 3-SA-08:06.bind7 http://security.FreeBSD.org/patches/SA-08:06/bind7.patch
fetch -o 4-SA-08:07.amd64 http://security.FreeBSD.org/patches/SA-08:07/amd64.patch
fetch -o 5-SA-08:08.nmount http://security.FreeBSD.org/patches/SA-08:08/nmount.patch
fetch -o 6-SA-08:09.icmp6 http://security.FreeBSD.org/patches/SA-08:09/icmp6.patch
fetch -o 7-SA-08:10.nd6 http://security.FreeBSD.org/patches/SA-08:10/nd6-7.patch
fetch -o 8-SA-08:11.arc4random http://security.FreeBSD.org/patches/SA-08:11/arc4random.patch
fetch -o 9-SA-08:12.ftpd http://security.FreeBSD.org/patches/SA-08:12/ftpd.patch
fetch -o 10-SA-08:13.protosw http://security.FreeBSD.org/patches/SA-08:13/protosw.patch
fetch -o 11-SA-09:01.lukemftpd http://security.FreeBSD.org/patches/SA-09:01/lukemftpd.patch
fetch -o 12-SA-09:02.openssl http://security.FreeBSD.org/patches/SA-09:02/openssl.patch
fetch -o 13-SA-09:03.ntpd http://security.FreeBSD.org/patches/SA-09:03/ntpd63.patch
fetch -o 14-SA-09:04.bind http://security.FreeBSD.org/patches/SA-09:04/bind.patch
fetch -o 15-SA-09:05.telnetd http://security.FreeBSD.org/patches/SA-09:05/telnetd.patch
fetch -o 16-SA-09:06.ktimer http://security.FreeBSD.org/patches/SA-09:06/ktimer.patch
fetch -o 17-SA-09:07.libc http://security.FreeBSD.org/patches/SA-09:07/libc.patch
fetch -o 18-SA-09:08.openssl http://security.FreeBSD.org/patches/SA-09:08/openssl.patch

Make the local path where freebsd-update-server can find the ISO, I'm using my home dir:

# mkdir -p ~/amd64/ISO-IMAGES/7.0/

Grab the FreeBSD 7.0 amd64 ISO and stuff it into the local path:

# fetch ftp://freebsd.isc.org/pub/FreeBSD/ISO-IMAGES-amd64/7.0/7.0-RELEASE-amd64-disc1.iso

Edit scripts/build.conf appropriately. This is what mine looks like:

# $FreeBSD: projects/freebsd-update-server/scripts/build.conf,v 1.1 2006/08/31 07:48:40 cperciva Exp $

# 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
export FTP=/home/brd

# Host platform
export HOSTPLATFORM=`uname -m`

# Host name to use inside jails
#export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net
export BUILDHOSTNAME=denbuild01.so14k.com

# Location of SSH key
#export SSHKEY=/root/.ssh/id_dsa
export SSHKEY=/root/.ssh/id_rsa

# SSH account into which files are uploaded
#MASTERACCT=builder@wadham.daemonology.net
MASTERACCT=builder@densec01.so14k.com

# Directory into which files are uploaded
#MASTERDIR=update-master.freebsd.org
MASTERDIR=updates

Update the scripts/7.0-RELEASE/amd64 with the following:

# $FreeBSD: projects/freebsd-update-server/scripts/6.2-RELEASE/i386/build.conf,v 1.1 2007/01/14 21:42:03 cperciva Exp $

# SHA256 hash of RELEASE disc1.iso image.
export RELH=d3b206eb74df7559041dd9054de7352b9a67d4f350e75f433c7fb001bf4b5c6f

# Components of the world, source, and kernels
export WORLDPARTS="base catpages dict doc games lib32 info manpages proflibs"
export SOURCEPARTS="base bin cddl compat contrib crypto etc games gnu include krb5      \
                lib libexec release rescue sbin secure share sys tools  \
                ubin usbin"
export KERNELPARTS="generic"

# EOL date (my personal EoL date (May 6th, 2010)
export EOL=1273125600

Run scripts/make.sh and populate with the key and a passphrase.

Run `scripts/init.sh amd64 7.0-RELEASE'.