OpenBSD Following -current and using snapshots [FAQ Index]


Active OpenBSD development is known as the -current branch. These sources are frequently compiled into releases known as snapshots. Active development sometimes pushes aggressive changes, and complications can arise when building the latest code from a previous point in time. Some of the shortcuts for getting over these hurdles are explained on this page. In general, it's far better to use the OpenBSD upgrade procedure with a newer snapshot, as developers will have gone through the trouble for you already.

Make sure you've read and understand how to build the system from source before using -current and the instructions below.

You should always use a snapshot as the starting point for running -current. Upgrading by compiling your own source code is not supported.

Most of these changes will have to be performed as root.

2017/04/17 - build infrastructure change

The build infrastructure has been changed to allow building clang alongside gcc. This requires an update of the make "include" files:
# cd /usr/src/share/mk && make install

2017/04/19 - clang enabled for amd64 and i386

The clang compiler is now built alongside gcc on the amd64 and i386 architectures. It is recommended that you upgrade using a snapshot.

If you build your own releases, note that make release now needs more than 2G space on /usr/obj. Increasing the size to 3G is recommended.

If you wish to upgrade from source, you need to bootstrap clang:

# pkg_add g++
# cd /usr/src/gnu/usr.bin/clang
# make obj
# make BOOTSTRAP_CLANG=yes
# make install
Compile libcompiler_rt:
# cd /usr/src/lib/libcompiler_rt
# make obj
# make depend
# make
# make install
Then do a regular make build and make release.

2017/04/27 - [ports] beats updated

filebeat and packetbeat were updated to 5.3.1 which significantly changed the configuration file layout from 1.x to 5.x. Please refer to the upstream documentation for migrating your configuration. Also take note of the breaking changes when upgrading to 5.3.1.
topbeat has been merged into metricbeat, a migration path is available.

2017/05/07 - amd64: argument printing in ddb stack traces

On amd64, ddb(4) now supports printing of arguments in stack traces. This relies on the new -msave-args compiler option. If your last upgrade predates Apr 28, you need to build a new cc(1) before you can build a new kernel:
# cd /usr/src/gnu/usr.bin/cc
# make obj
# make depend
# make
# make install

2017/05/15 - breaking change for nvme(4) users with GPT

If you are booting from an nvme(4) drive with a GPT disk layout, you are affected by an off-by-one in the driver with the consequence that the sector count in your partition table may be incorrect. The only way to fix this is to re-initialize the partition table. Backup your data to another disk before you upgrade. In the new bsd.rd, drop to a shell and re-initialize the GPT:
# fdisk -iy -g -b 960 sdN
Then do a fresh install and restore the data from the backup.

2017/05/29 - ksh plaintext history file

The ksh(1) history file (used when $HISTFILE is set) changed from a binary file format to plaintext. If you wish to retain your current ksh history, create a plaintext version of it before upgrading:
$ fc -ln 1 | cut -f2- > ~/ksh_hist.txt
After the upgrade, you can use ksh_hist.txt as your history file.

If you upgrade from source, note that the old ksh recklessly truncates a history file that it doesn't understand, so be careful not to run interactive sessions of the old and new ksh in parallel. A reboot after the build is recommended.

2017/05/30 - IPv6 stateless address auto configuration moved to userland

Sending of router solicitations and processing of router advertisements has been disabled in the kernel. This task is now handled by slaacd(8). If you upgrade by building from source, make sure that kernel and userland are kept in sync to avoid losing IPv6 stateless address auto configuration.

2017/05/31 - pf blocks IPv6 options header

IPv6 packets that have a hop-by-hop options header or a destination options header are now blocked by pf(4). Thus, IPv6 options are handled like their counterparts in IPv4. Add allow-opts to your rule if you want to pass IP packets with options.

2017/06/03 - slaacd(8) moved to /sbin

There were a few snapshots that had slaacd(8) in /usr/sbin. The old binary can be removed if the new one in /sbin is present:
# rm /usr/sbin/slaacd

2017/06/22 - KARL: link-kit transition

If you upgrade from source, you need to compile and install a new config(8) binary before building a new kernel:
# cd /usr/src/usr.sbin/config
# make obj
# make && make install
In any kernel directory, you must issue make config:
# cd /sys/arch/$(machine)/compile/GENERIC.MP
# make obj
# make config
# make && make install
The make install step will also enable the kernel relinking on each boot. Therefore, installing kernels with make install is recommended. Developers can deactivate the kernel relinking at reboot time by installing kernels with cp obj/bsd /bsd and reactivate the automatic process using make install.


$OpenBSD: current.html,v 1.832 2017/06/22 16:16:56 tj Exp $