The most standard approach to upgrading FreeBSD between versions has always been to update the /usr/src tree (usually using cvsup) and run the "buildworld", "buildkernel", "installkernel", and "installworld" steps. Since unnecessary compilation is undesireable, I decided to put together a step-by-step guide to upgrading to FreeBSD 4.11 using the published ISO image. Of course, this is only useful if you are happy with a GENERIC kernel.
What follows are the steps I used to upgrade my FreeBSD 4.8-RELEASE-p27 box to FreeBSD 4.11-RELEASE; I can't guarantee that they'll work for everyone, but this should be at least a good starting point.
N.B. I only install the "bin", "crypto", "dict", "doc", and "manpages" distributions here -- I don't want the "catpages", compat, "games", "info", "ports", "proflibs", or "src" distributions. If you want a different set of distributions, change the lists in steps 6, 9, and 10.
cd /usr/ports/security/freebsd-update && make install clean cp /usr/local/etc/freebsd-update.conf.sample /usr/local/etc/freebsd-update.conf
freebsd-update -v IDS | tail +8 | grep . | lam -s '.' - > /root/base-modified
ee /root/base-modified(or use vi or any other text editor you have installed.)
cut -f 1 -d '$' /usr/local/freebsd-update/work/md5all | uniq | while read X; do if [ -f $X ]; then echo $X; fi; done | sort > /root/base-old
fetch -o /usr/miniinst.iso \ ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/4.11/4.11-RELEASE-i386-miniinst.iso vnconfig -c /dev/vn0 /usr/miniinst.iso mount -t cd9660 -o ro /dev/vn0 /mnt
mkdir /usr/release for dist in bin crypto dict doc manpages; do cat /mnt/${dist}/${dist}.?? | tar -xpzf - -I /root/base-modified -C /usr/release done 2>/dev/null
diff -u /etc/group /usr/release/etc/group diff -u /etc/ttys /usr/release/etc/ttys etc.
xargs chflags noschg < /root/base-old
for dist in bin crypto dict doc manpages; do cat /mnt/${dist}/${dist}.?? | tar -xpzf - -X /root/base-modified -C / done
( for dist in bin crypto dict doc manpages; do cat /mnt/${dist}/${dist}.?? | tar -tzf - done; cat /root/base-modified ) | sort | uniq | cut -c 2- > /root/base-new comm -13 base-new base-old | xargs rm
ln /kernel.GENERIC /kernel
umount /mnt vnconfig -u vn0c rm -r /usr/release rm /usr/miniinst.iso rm /root/base-modified /root/base-old /root/base-new
shutdown -r now