[FAQ Index] | [6.3 -> 6.4] [6.5 -> 6.6]
Upgrades are only supported from one release to the release immediately following it. Read through and understand this process before attempting it. For critical or physically remote machines, test it on an identical, local system first.Start by performing the pre-upgrade steps. Next, boot from the install kernel, bsd.rd: use bootable install media, or place the 6.5 version of
bsd.rd in the root of your filesystem and instruct the boot
loader to boot this kernel.
Once this kernel is booted, choose the (U)pgrade option and follow the
prompts.
Apply the configuration changes and
remove the old files.
Finish up by upgrading the packages: pkg_add -u.
Alternatively, you can use the manual upgrade process.
You may wish to check the errata page or upgrade to the stable branch to get any post-release fixes.
bsd.rd.
  Download the ramdisk kernel and the cryptographically signed checksum file
  for your architecture.
  
bsd.rdSHA256.sigVerify them using signify(1):
$ signify -C -p /etc/signify/openbsd-65-base.pub -x SHA256.sig bsd.rd Signature Verified bsd.rd: OK
announce keyword was deprecated in
  bgpd.conf(5).
  It has now been removed and must be replaced with export.
  
rdomain sections in bgpd.conf need to be replaced with
  vpn "description" on mpeX sections.
  Both descr and depend on mpeX need to be removed
  from the VPN configuration.
  A possible configuration is now:
  
  vpn "description" on mpe1 {
	rd 65002:1
	import-target rt 65002:42
	export-target rt 65002:42
	network 192.168.1/24
  }
  
curve25519 in
  iked.conf(5)
  (it is not the default), switch to another group before updating.
  Configure the responder to allow both curve25519 and another PFS group, e.g.
  
  ...
    ikesa enc aes-256 prf hmac-sha2-256 auth hmac-sha2-256 group curve25519 \
    ikesa enc aes-256 prf hmac-sha2-256 auth hmac-sha2-256 group brainpool512 \
  ...
  Then switch the initiators to the other group, then upgrade and switch
  back as wanted.
  
/etc/malloc.conf
  symbolic link.
  Instead, the new
  sysctl(8)
  variable vm.malloc_conf is used.
  This makes processes no longer dependent on the file system for their malloc
  options.
  Set it at boot time by adding a line such as:
  vm.malloc_conf=CFto your
/etc/sysctl.conf, or at runtime with
  sysctl(8).
  
kern.witnesswatch sysctl variable has been renamed
  to kern.witness.watch.
  
An old configuration might look like this:
set-window-option -g window-status-fg color244 set-window-option -g window-status-bg color222 set-window-option -g window-status-attr boldThe new format uses a standard variable name ending with -style and takes a list of attributes and values. The updated version of the previous example would look like this:
set-window-option -g window-status-style "fg=color244 bg=color222 bold"
link0 flag with txprio.
  Forcing the priority field in the
  vlan(4) and svlan(4)
  protocol headers is now configured with the
  ifconfig(8)
  txprio configuration option.
  This replaces the use of the link0 flag which used the
  llprio in the packet priority field instead.
  
Xorg binary is no longer installed setuid,
  so startx(1)
  can no longer be used by non-root users.
  The xenodm(1)
  display manager has to be used instead.
  To set it up:
# rcctl enable xenodm # rcctl start xenodmIf you wish to customize X you need to create an executable
.xsession file.
/usr/include/openssl/asn1_mac.h.
  rm /usr/include/openssl/asn1_mac.h
rm /usr/bin/c2ph \ /usr/bin/pstruct \ /usr/libdata/perl5/Locale/Codes/API.pod \ /usr/libdata/perl5/Module/CoreList/TieHashDelta.pm \ /usr/libdata/perl5/Unicode/Collate/Locale/bg.pl \ /usr/libdata/perl5/Unicode/Collate/Locale/fr.pl \ /usr/libdata/perl5/Unicode/Collate/Locale/ru.pl \ /usr/libdata/perl5/unicore/lib/Sc/Cham.pl \ /usr/libdata/perl5/unicore/lib/Sc/Ethi.pl \ /usr/libdata/perl5/unicore/lib/Sc/Hebr.pl \ /usr/libdata/perl5/unicore/lib/Sc/Hmng.pl \ /usr/libdata/perl5/unicore/lib/Sc/Khar.pl \ /usr/libdata/perl5/unicore/lib/Sc/Khmr.pl \ /usr/libdata/perl5/unicore/lib/Sc/Lana.pl \ /usr/libdata/perl5/unicore/lib/Sc/Lao.pl \ /usr/libdata/perl5/unicore/lib/Sc/Talu.pl \ /usr/libdata/perl5/unicore/lib/Sc/Tibt.pl \ /usr/libdata/perl5/unicore/lib/Sc/Xsux.pl \ /usr/libdata/perl5/unicore/lib/Sc/Zzzz.pl \ /usr/share/man/man1/c2ph.1 \ /usr/share/man/man1/pstruct.1 \ /usr/share/man/man3p/Locale::Codes::API.3p
pg_upgrade as described in the
  postgresql-server pkg-readme
  or do a dump/restore.
  
csi and csc have been renamed
  to chicken-csi and chicken-csc to avoid conflicts
  with lang/mono.
  
/etc/dnscrypt-proxy.toml
  fits their needs.
  
/usr/local/share/doc/opendnssec/MIGRATION after the update.
  
py3-netaddr
  for the ipaddr filter) and to review the potential uses of
  ansible_python_interpreter.
  
/etc/gitea/conf/app.ini to /etc/gitea/app.ini
  and the GITEA_CUSTOM directory location has changed from
  /etc/gitea to /var/gitea/custom.
  Gitea's ROOT_PATH for logs has changed from
  /var/gitea/log to /var/log/gitea.
  When upgrading, move /etc/gitea to the new location:
  # mv /etc/gitea/conf/app.ini /etc/gitea/app.inichange the
ROOT_PATH location in [log] section of
  /etc/gitea/conf/app.ini:
  [log] ROOT_PATH = /var/log/giteaand move custom files from
/etc/gitea to
  /var/gitea/custom, if any.
  
~/.goaccessrc or /etc/goaccess.conf) to include
  one or the other of the following two lines:
  geoip-database /var/db/GeoIP/GeoLite2-Country.mmdb # installed by default geoip-database /var/db/GeoIP/GeoLite2-City.mmdb # requires "geolite2-city"
Sometimes, you need to do an upgrade of a machine for which the normal upgrade process is not possible. The most common case is a machine in a remote location and there is no easy access to the system console.
softdep mount option in
    /etc/fstab and rebooting before undertaking a manual upgrade.
    Having at least 500MB free on /usr would be recommended.
  
sd0 is your boot disk:
    
    installboot sd0
If using the multiprocessor kernel:
    cd /usr/rel    # where you put the release files
    ln -f /bsd /obsd && cp bsd.mp /nbsd && mv /nbsd /bsd
    cp bsd.rd /
    cp bsd /bsd.sp
    If using the single processor kernel:
    
    cd /usr/rel    # where you put the release files
    ln -f /bsd /obsd && cp bsd /nbsd && mv /nbsd /bsd
    cp bsd.rd bsd.mp /    # may give a harmless warning
  
    sha256 -h /var/db/kernel.SHA256 /bsd 
  base65.tgz last, because the new base system,
    in particular tar(1),
    gzip(1) and
    reboot(8),
    will not work with the old kernel.
    Either untar the needed filesets manually
    
    cp /sbin/reboot /sbin/oreboot
    tar -C / -xzphf xshare65.tgz
    tar -C / -xzphf xserv65.tgz
    tar -C / -xzphf xfont65.tgz
    tar -C / -xzphf xbase65.tgz
    tar -C / -xzphf man65.tgz
    tar -C / -xzphf game65.tgz
    tar -C / -xzphf comp65.tgz
    tar -C / -xzphf base65.tgz    # Install last!
    /sbin/oreboot
    or, if you use
    ksh(1), you can do
    
    cp /sbin/reboot /sbin/oreboot
    for _f in [!b]*65.tgz base65.tgz; do tar -C / -xzphf "$_f" || break; done
    /sbin/oreboot
    Note that tar(1)
    can expand only one archive per invocation, so a simple glob won't work.
  
/dev.
    Run
    MAKEDEV(8):
    
    cd /dev
    ./MAKEDEV all
  sd0 is your boot disk:
    
    installboot sd0
  
    sysmerge
  
    fw_update
  dmesg -s)
    and correct any failures as necessary.
    All the steps following configuration changes
    above also apply to manual upgrades.
    Finally, remove /sbin/oreboot and update packages:
    pkg_add -u.
    Reboot once more to make sure you run on your own kernel generated by KARL.
[FAQ Index] | [6.3 -> 6.4] [6.5 -> 6.6]