Recently I updated my workstation to FreeBSD 9.1-RELEASE-p1. Since my laptop runs the same OS, I wanted to update it without rebuilding the world and kernel locally. I used the folowing steps to accomplish that.
- Using netcat in combination with tar, the directories
/usr/objwere transferred to the second machine.
- Copy the
/etc/src.conffile from the first to the second machine. This is important. If they are not identical on both machines, the install might fail because it might go and look for a piece of software that wasn’t built!
- On the second machine, login as root, go to
make installkernel. Then reboot into single user mode. Mount the necessary partitions:
# mount -u -w / # mount /usr # mount /tmp # mount /var
Run mergemaster to prepare for the installworld step:
# mergemaster -p
Install the OS:
# cd /usr/src # make installworld
Install new and updated configuration files. Anything that is in my private repository is skipped here and updated from there:
Next I install my own configuration files. This uses an install program that I built myself.
Clean up old files from the previous version. These command will ask you to confirm to delete files.
# cd /usr/src # make delete-old # make delete-old-libs
Reboot into the upgraded OS, log in as root and start the
rsync(1)daemon on the second machine.
Using rsync on the first machine, I then copy all the updated ports from the first machine to the second. You should replace
TARGETwith the hostname of the second machine, and
/usr/local/etc/rsyncd.confshould be set up on the second machine to recognize the path
# rsync -av --delete /usr/local/ TARGET::local
The previous step will have copied some configuration files in
/usr/local/etcfrom the first machine (unless they’ve been excluded). Refresh them as necessary.