release54


  • Version 5.4.0 released 03 December 2018

DragonFly version 5.4 brings a new system compiler in GCC 8, improved NUMA support, a large of number network and virtual machine driver updates, and updates to video support. This release is 64-bit only, as with previous releases.

The details of all commits between the 5.2 and 5.4 branches are available in the associated commit messages for 5.4.0rc and 5.4.0.

Big-ticket items

  • Better support for asymmetric NUMA (Non-Uniform Memory Access) configurations. In particular, both the memory subsystem and the scheduler now understand the Threadripper 2990WX's architecture. The scheduler will prioritize CPU nodes with direct-attached memory and the memory subsystem will normalize memory queues for CPU nodes without direct-attached memory (which improves cache locality on those CPUs).

  • Incremental performance work. DragonFly as a whole is very SMP friendly. The type of performance work we are doing now mostly revolves around improving fairness for shared-vs-exclusive lock clashes, reducing cache ping-ponging due to non-contending SMP locks (i.e. massive use of shared locks on shared resources), and so forth.

  • Major updates to dports brings us to within a week or two of FreeBSD's ports as of this writing, in particular major updates to chromium, and making the whole mess work with gcc-8.

GCC 8

  • DragonFly now ships with GCC 8.0, and runs as the default compiler. It is also now used for building dports.

  • GCC 4.7.4 and GCC 5.4.1 are still installed. 4.7.4 is our backup compiler, and 5.4.1 is still there to ensure a smooth transition, but should generally not be used. buildworld builds all three by default to ensure maximum compatibility.

HAMMER2

  • Bug fixing has continued. HAMMER2 is recommended as the default root filesystem in non-clustered mode.
  • Clustered support is not yet available.

Driver updates

  • A number of drivers of use when running DragonFly as a guest VM have been added or updated, including ena, if_vtnet, virtio_balloon, and virtio_pci.
  • Improvements for DRM and radeon.
  • Serial-output-only installs are now possible.

Network updates

  • dhcpcd has been added to the base system, and will replace dhclient and rtsold - though not in this release.
  • A number of network device drivers have been added.
  • A couple of edge-case panics have been fixed.
  • wpa_supplicant is installed via dports, by default, to override the default version in base. The base version remains so that a mass pkg deletion doesn't accidentally remove the ability to get online.

Details

Checksums

MD5 (dfly-x86_64-5.4.0_REL.img) = 7277d7cffc92837c7d1c5dd11a11b98f
MD5 (dfly-x86_64-5.4.0_REL.iso) = 6da7abf036fe9267479837b3c3078408
MD5 (dfly-x86_64-5.4.0_REL.img.bz2) = a77a072c864f4b72fd56b4250c983ff1
MD5 (dfly-x86_64-5.4.0_REL.iso.bz2) = 4dbfec6ccfc1d59c5049455db914d499

Upgrading

If you have an existing 5.2.x system and are running a generic kernel, the normal upgrade process, described below, will work.

Change your local /usr/src to 5.4:

cd /usr/src
git fetch origin
git branch DragonFly_RELEASE_5_4 origin/DragonFly_RELEASE_5_4
git checkout DragonFly_RELEASE_5_4
git pull

And then rebuild: (in /usr/src )

make buildworld
make buildkernel
make installkernel
make installworld
make upgrade (reboot your system) make initrd 

'make initrd' is optional for systems with unencrypted disks, and has been possible for several releases; it's mentioned here for completeness. Look at the initrd(7) man page for details on what it does.

Don't forget to upgrade your existing packages. 5.4 packages have already been built and are immediately available.

pkg update
pkg upgrade

All changes since DragonFly 5.2

Kernel

  • drm has been updated to match Linux kernel 4.7.10 in a number of locations.
  • The radeon driver has been updated; currently matches Linux 3.18.
  • CVE-2018-8897 mitigated.
  • x2apic timer support added.
  • various updates to autofs

Networking

  • The network tunnel driver, tun(4), has been cleaned up and updated. It's now clonable for anyone building VPN links.
  • The tap(4) and interface cloning have also received related updates and fixes.
  • Interface groups are now supported in the kernel and pf(4). They can be configured with ifconfig(8)
  • DragonFly now can use dhcpcd(8) for DHCP, for both IPv4 and IPv6. See the announcement for details. The existing utilities dhclient(8) and rtsold(8) are still supported, so no configuration change is required yet.
  • The ena (Elastic Network Adapter) network driver has been added.
  • if_iwm has had multiple updates.
  • if_vtnet, the virtual I/O Ethernet driver, has been updated.

Other drivers

  • The virtio_balloon memory driver has been added.
  • /dev/sndstat can now be opened multiple times by the same device.
  • mpr(4) driver for LSI Fusion-MPT 3/3.5 SAS controllers added.
  • MosChip PCIe serial communications now supported.

Userland

Boot

  • The initrd has had significant improvement and now forms a much more complete rescue system, with over 70 tools added via crunchgen(1). See the initrd(7) man page for details.

Various tools have been upgraded in the base system:

  • dhcpcd 7.0.8 imported.
  • openresolv 3.9.0 imported, installed as resolvconf(8).
  • ip6addrctl(8) together with a rc script imported from FreeBSD.
  • DHCP server for network installs updated to net/isc-dhcp44-server.
  • OpenSSH updated to 7.6p1.
  • ACPICA updated to 20181031.
  • Time zone data updated to tzdata2018g.
  • Compiler - see next section

Compiler status

  • gcc 8.0 is the default compiler, for kernel, world, and dports. GCC versions 4 and 5 are still installed and built if needed.

Package updates

  • A full set of new binary packages has been built for 5.4, available through the pkg tool.
  • There's a number of options now for running a web browser on DragonFly; check the browser documentation page for a full list.
  • wpa_supplicant is installed as a package by default; delete if your system does not use wireless. The version in base remains as a safety measure in case the dports version is deleted.