There have been some changes in the FreeBSD update process. The csup program has been retired, source code updating is now done with subversion. Since I haven’t used that before, I’m documenting the steps that I took here.
I’m using source updates instead of freebsd-update because I tend to build a custom OS, leaving out things that I don’t use. This is done by modifying /etc/src.conf. Its manual documents which part of the system you can exclude.
Generally, I followed the steps as outlined in the relevant appendix of the handbook. I decided to check out the 9.1 release engineering branch, since a couple of security updates (1, 2) were made since FreeBSD 9.1 was released.
Retrieving the initial source:
# rm -rf /usr/src # svn checkout svn://svn0.us-east.FreeBSD.org/base/releng/9.1 /usr/src
This takes some time because it has to get all the files. However, as long as I stay on the same branch, updates should be quicker, like this:
# svn update /usr/src
For building the operating system, I first read through /usr/src/UPDATING (which didn’t point to anything requiring special attention), then emptied the /usr/obj directory, and made a complete backup. After that I used the more or less standard upgrade procedure:
# rm -rf /usr/obj/* # cd /usr/src # make buildworld # make buildkernel # make installkernel # reboot
Reboot into single user mode, then:
# mount /usr # mount /tmp # mergemaster -p # cd /usr/src # make installworld # mergemaster -i -U # reboot
After that I booted into the new system. There were some changes to the configuration files left in /var/tmp/temproot. I examined these and merged them into my config files. As a last step, I removed old files from my system:
# cd /usr/src # make delete-old # make delete-old-libs