Build the release. # mkdir p /home/relmgr/basesrc # cd /home/relmgr/base-src # export CVSROOT=/home/ncvs/ # cvs co -r RELENG_6 -D Sat Sep 2 11:05:24 2006 UTC src # rm -fr /usr/src /usr/obj && tar cf src | tar xvf -C /usr # cd /usr/src # make -j 4 buildworld # cd /usr/src/release # make release BUILDNAME=6.1-BASE \ CHROOTDIR=/home/relmgr/base-release MAKE_ISOS=yes NODOC=yes NO_FLOPPIES=yes \ NOPORTS=yes NO_PREFETCHDISTFILES=YES EXTSRCDIR=/home/relmgr/base-src/src \ WORLD_FLAGS=-j4 CVSROOT=/home/ncvs KERNEL_FLAGS=-j4 And them create and populate the FTP area. # mkdir -p /home/ftp/pub/FreeBSD/releases/i386/6.1-BASE # cd /home/relmgr/base-release/R/ftp/ # tar cf - . | tar xvf - -C /home/ftp/pub/FreeBSD/releases/i386/6.1-BASE # mkdir -p /home/ftp/pub/FreeBSD/releases/i386/ISO-IMAGES/6.1 # cp -p /home/relmgr/base-release/R/cdrom/* /home/ftp/pub/FreeBSD/releases/i386/ISO-IMAGES/6.1 #pw add user ftp -d /home/ftp -s /sbin/nologin Uncomment FTP stuff in /etc/inetd.conf, enable it in /etc/rc.conf. Before starting it, enable tftp too: tftp dgram udp wait root /usr/libexec/tftpd \ tftpd -l -s /home/relmgr/base-release/R/cdrom/disc1/boot We have now our base release. Lets hack freebsd-update-server to support and alternative ISO file name. You can find patch here. Its dirty. FOLLOW_BRANCH is what is left from first idea of the patch. # mkdir /home/relmgr/dist && cd /home/relmgr/dist # fetch -o FreeBSD-update-server-2.0.tar.gz \ http://www.freebsd.org/cgi/cvsweb.cgi/projects/freebsd-update-server/freebsd-update-server.tar.gz?tarball=1 # tar zxvf FreeBSD-update-server-2.0.tar.gz -C .. # cd .. && fetch -o - http://www.cotds.org/~clement/patches/freebsd-update.patch | patch -p0 Refer to USAGE file to know how to configure freebsd-update. Add a pseudo release RELENG_6. # mkdir /home/relmgr/freebsd-update-server/patches/RELENG_6 # mkdir -p /home/relmgr/freebsd-update-server/scripts/RELENG_6/i386 # cp /home/relmgr/freebsd-update-server/scripts/6.1-RELEASE/i386/build.conf /home/relmgr/freebsd-update-server/scripts/RELENG_6/i386 edit this file (fix RELH) and add: FOLLOW_BRANCH=RELENG_6 BASE_ISO_REL=6.1-BASE edit scripts/build.conf to reflect your changes and run # sh scripts/make.sh # sh scripts/init.sh i386 RELENG_6 This will take some time, you can prepare your PXE stuff during the builds (see below). Once it gets built, approve and upload freebsd-update stuff. Now we create a patch from latest CVS version to the last second of september (for monthly update). and run diff.sh. # cd /home/relmgr/base-src/src # mkdir /home/relmgr/freebsd-update-server/patches/RELENG_6/ # cvs diff -jRELENG_6:"Sat Sep 2 11:05:25 2006 UTC" -jRELENG_6:"2006/09/30 23:59:59 UTC" -uRN > /home/relmgr/freebsd-update-server/patches/RELENG_6/1-update-to-20061001 # cd /home/relmgr/freebsd-update-server/ && sh scripts/diff.sh i386 RELENG_6 If all went well, approve and upload.Install and configure a NFS server, ISC DHCPd, apache (or any web server) and php. Ive set DocumentRoot to /home/www/update. Add this to your /etc/exports file: /home/relmgr/base-release/R/cdrom/disc1 -maproot=root:wheel This path is also the root-path of you dhcpd config file. Install and configure pflsa: # cd /home/relmgr/dist # fetch http://www.cotds.org/~clement/pflsa-0.0.1-alpha/pflsa-0.0.1.tar.gz # tar zxvf pflsa-0.0.1.tar.gz # cd pflsa-0.0.1 Copy www to a directory in your webroot (I use /home/www/update/pflsa). Edit pxe/loader.rc to make pxe.conf.url point to your pflsa.php location. Copy it to /home/relmgr/base-release/R/cdrom/disc1/boot. In plsa webroot edit configs/default.conf or configs/ to feet your needs. We can now prepare mfsroot. You have a very simple script in scripts/prepare-pxe.sh. Dont forget to move /usr/obj to /usr/obj.old to be sure crunch binary will b properly built. Make a backup of mfsroot, and run: ./prepare-pxe.sh /home/relmgr/base-release/R/cdrom/disc1/boot Check your installation: apache, ftp, dhcpd, and tftp. If its fine, boot on PXE and your server getsinstalled in few minutes. On the client: # vi /etc/freebsd-update.conf (set KeyPrint to `sha256 -q pub.ssl`) # cd # fetch http://www.cotds.org/~clement/patches/freebsd-update-client.patch # cd /usr/sbin # patch -p0 < /root/freebsd-update-client.patch # setenv FOLLOW_BRANCH=RELENG_6 # freebsd-update fetch # freebsd-update install # reboot and you're up-to-date :)