I’ve recently had reason to source upgrade a FreeBSD box from version 6.4 to 8.0. The safest way to do this is by upgrading first to version 7.2. Here are some basic instructions – they’re a bit abbreviated because I had the luxury of removing all installed packages on the machine and upgrading just the base OS, then reinstalling packages. I will soon be upgrading a production machine, and will either update this post or create a new one when I’m doing live port upgrades.
Here’s what I did.
- As noted above, I had the luxury of removing all packages, so first thing I did was remove them.
- Update /usr/src to RELENG_7_2 – I used csup, which is part of the base OS
- In /usr/src, run
make buildworld; make buildkernel– in my case I have a custom kernel configuration, so I run buildkernel with the additional flag
- Once built, install the kernel and OS –
make installkernel ; make installworld– again, in my case I added the
mergemaster, which upgrades all configuration files – be careful if you have any customized files, consult the documentation
- If you can, in /usr/src run
make check-oldand then
make delete-old– this removes all obsoleted files from the old version of the OS, don’t do it until later if you have old packages still installed that depend on those files
- Make sure your ports tree is updated – see portsnap
- Reinstall the following packages and dependencies: sudo, ruby, portupgrade
- If you are incautious, run
portupgrade -af– if more cautious, upgrade each package in turn and test
- Reboot and test
- Repeat every step above after upgrading /usr/src to RELENG_8_0
Update: one thing I forgot earlier, the -F flag to mergemaster is very useful, it automatically updates any files where only the VCS Id tag is different, which saves a lot of mindless approving of files.