I have two DragonFly BSD boxes that I want to upgrade to the latest rev. At the moment, they’re running:
$ uname -a
DragonFly screw.lodden.com 2.10-RELEASE DragonFly v220.127.116.11.gf7ba0-RELEASE #1: Mon Apr 25 19:48:10 UTC 2011 email@example.com:/usr/obj/usr/src/sys/GENERIC i386
Unlike most other BSDs, DragonFly uses git for source code management. DragonFly provides
make wrappers to git updates, however. If you don’t have the source code already installed, get it with:
$ cd /usr
$ make src-create
mkdir -p /usr/src
cd /usr/src && git init
Initialized empty Git repository in /usr/src/.git/
cd /usr/src && git remote add origin git://git.dragonflybsd.org/dragonfly.git
Walk away for a little while, and you’ll come back to see:
Checking out files: 100% (31175/31175), done.
Already on 'master'
cd /usr/src && git pull
This will get you the latest DragonFly BSD source code.
Before going any further, look at /usr/src/UPDATING. This contains warnings and instructions for avoiding bumps in the upgrade process. For example, as I write this the post-2.10 UPDATING notes list several ISA-only device drivers that have been removed from the system. If I was running on an ISA system, I’d care about that. But I’m not, so I don’t. On to building the system!
$ cd /usr/src
$ make buildworld
Once your world is built, follow up with:
$ make kernel
$ make installworld
Those of us from other BSDs would expect an etcmerge or mergemaster here, but DragonFly replaces that with:
$ make upgrade
make upgrade process is much faster and less interactive than any merge tool.
After this is done, reboot. Log back in and you’ll find:
$ uname -a
DragonFly mwltest2.lodden.com 2.13-DEVELOPMENT DragonFly v18.104.22.168.gf6ce8-DEVELOPMENT #0: Tue Oct 18 10:51:40 EDT 2011 firstname.lastname@example.org:/usr/obj/usr/src/sys/GENERIC i386
My next task is to build a few jails and make them usable. But that’s for another post.