release64
DragonFly BSD 6.4
- Version 6.4.0 released 2022 12 30
- Version 6.4.1 released 2025 04 30
DragonFly version 6.4 is the next step in the 6.x release series. This version has hardware support for type-2 hypervisors with NVMM, an amdgpu driver, the experimental ability to remote-mount HAMMER2 volumes, and many other changes.
The details of all commits between the 6.2 and 6.4 releases are available in the associated commit messages for 6.4.
Big-ticket items
6.4.1 fixes a number of small, long-standing issues, including:
- Fixed the issue that a pkg(8) update might delete the
df-latetest.conf
config file, which rendered pkg(8) unusable. - Updated the shipped
ca_root_nss
package so that the newer Let's Encrypt certificates are trusted and thus pkg(8) works with the Avalon HTTPS repo. - Fixed a memory leak in the legacy IDE/NATA driver that could easily lead to kernel panics.
- Expose SMBIOS entry point via kenv so dmidecode(8) works on UEFI-only systems.
Details
Checksums
MD5 (dfly-x86_64-6.4.1_REL.img) = 1c080fd708246db8588a4a1122e74db5
MD5 (dfly-x86_64-6.4.1_REL.iso) = 9b215c5aa97d297069ed52baea874761
MD5 (dfly-x86_64-6.4.1_REL.img.bz2) = f8e0b75dcc0af224c3aad1cb586314ea
MD5 (dfly-x86_64-6.4.1_REL.iso.bz2) = fb47aa23196c12186bb5eae8eee55751
Upgrading
If you have an existing 5.x or 6.x system and are running a generic kernel, the normal upgrade process, described below, will work.
Change your local /usr/src
to 6.4:
cd /usr/src
git fetch origin
git branch DragonFly_RELEASE_6_4 origin/DragonFly_RELEASE_6_4
git checkout DragonFly_RELEASE_6_4
git pull
And then rebuild: (in /usr/src
)
make build-all
make install-all
(reboot your system)
make initrd
make initrd
is optional for systems with unencrypted disks.
See the initrd(7) man page for details.
Don't forget to upgrade your existing packages. 6.4 packages have already been built and are immediately available.
pkg update
pkg upgrade
All other changes since prior release
Security Issues
- Recommend updating all systems, a locally-exploitable kernel vulnerability was fixed for this release.
Kernel
- Fix execvPe()s environment passing.
- Fix ktrace's handling of 'long' system call return values.
- Fix a sysv semaphore panic related to an exit race.
- Fix a namecache bloating issue related to dead entries that could slow systems down over time.
- Fix several namecache eviction issues which were interfering with nlookup*() operation.
- Fix a namecache issues that evicted too many resolved entries, causing unnecessary re-lookups.
- Critical section count mismatch panics are more verbose.
- Fix multiple issues with vnode recyclement which could result in a long-running system slowing down. Generally speaking, there were leaks in vnode state counts which could prevent vnlru from either running or from finding recycleable vnodes.
- Implement mlockall()'s MCL_CURRENT feature and generally match with linux-like expectations.
- Fix a lock order reversal and deadlock in cache_resolve_mp() which can get hit when concurrent path lookups cross mount boundaries.
- Add the gtaskqueue API from FreeBSD.
- nlookup*() now retries lookups on elements which only undergo modification races, and does not retry lookups on elements which are merely locked for access and then unlocked. Improves performance.
- KERN_PROC - Change behavior for process list retrievals to not include pure kernel threads by default.
- Do not panic if an IP packet with a non-atomic header in the first mbuf makes it to ip*_input().
- boot: Expose SMBIOS entry point via kenv (6.4.1)
- kernel - Improve umount -f operation (6.4.1)
Filesystems
- hammer2 - Fix run-away kernel memory allocations during bulkfree when operating on deep trees.
- hammer2 - Fix chain allocation tracking counter calculation.
- hammer2 - Fix panic related to USB stick pull of mounted H2 filesystem.
- hammer2 - Report critical bulkfree transitions that are not supposed to happen.
- hammer2 - Fix CHECK FAIL paths that might mangle an inode in-memory.
- hammer2 - Validate that inode number on-media against the inode number being looked up.
- hammer2 - FIX CRITICAL BULKFREE BUG when multiple PFSs are mounted that could corrupt a H2 filesystem.
- hammer2 - FIX ISSUE WHERE DELETED FILES SOMETIMES LINGER UNTIL UNMOUNT, which can leak dead inodes (leave them on the media), slowly filling up the filesystem under certain circumstances.
- hammer2 - Lots of syntax cleanups.
- hammer2 - Properly set the read-only flag for read-only mounts of PFSs.
- hammer2 - Fail the mount if the root volume is not specified.
- hammer2 - Fix a panic related to a PFS not being found on-mount.
- tmpfs - Fix heavily threaded readdir() races against deletions.
- tmpfs - Improve the performance if cookie seeks during directory scans. O(n) to n log n.
- msdosfs - Fix a case where a non-dot lookup returns the current directory during a path lookup.
- msdosfs - Generate an error instead of a panic when inusemap is inconsistent.
- msdosfs - Sanity-check sector count from BPB.
- msdosfs - Fix mounting when the device sector size is larger than 512 bytes.
- msdosfs - Add /dev prefix if necessary when looking up mount device.
- ext2fs - Do a more accurate check for the root inode and for directory entries.
- cd9660: Recognize IEEE_1282 and IEEE_P1282 as RockRidge identifiers (6.4.1)
Networking
- ipfw - Fix broken mixed network and host IP specifications in ip tables. The network prefix was improperly inherited from prior entries.
- pf - Fix 'set skip on' for interface groups.
- pf - Make ":0" (noalias) also ignore link-local IPV6 addresses.
- IPV6_V6ONLY now silently accepts any value for this socketopt, fixing certain bits of third-party code.
- if_bridge - Fix a broadcast issues that could sometimes cause ARPs to be lost.
- if_bridge - Distinguish between interfaces that are part of the same bonded set to allow explicit priorities to be set for backup interfaces. Round-robin operation may not be desired on all interfaces in the bonding set. See the manual page.
- urtwn - Add support for the Edimax EW-7811Un V2 (N150)
- jail - sysctl net_raw_sockets renamed to allow_raw_sockets.
Graphics
- drm - Retry page fault handler on buffer data in-transit, fixing an Xorg crash on certain monitor connect/disconnect events.
- evdev - Make adjustments for better compatibility with the latest X server code.
Driver updates
- amd - Add family 19h temperature sensor support, fix 17h support (6.4.1)
- Added support for Realtek E2600 (Killer Ethernet Adapter E2600). (6.4.1)
- urtwn(4): Add support for TP-Link TL-WN722N v2 (6.4.1)
- wifi - Add ID for Mercusys MW150US (6.4.1)
Userland
- date - Add the -I flag for ISO 8601 formatted output.
- lpr - Fix the '-i' option to allow an optional argument.
- last - Fix a seg-fault when time_t is out of range.
- man pages - Fix numerous bugs
- newfs_hammer2 - Fix "-V 1" option (not that anyone should ever use it).
- makefs - Add HAMMER2 support.
- makefs - Allocate extra inodes when leaving free space in UFS images.
- makefs - Fix the calculation of file sizes.
- makefs - Do not assume that daddr_t is 64 bits, cast to 64 bits prior to intermediate multiplications.
- /bin/sh - now supports writes to non-blocking descriptors instead of erroring out. In particular, this fixes issues related to writes to non-blocking pipes when the pipe buffer becomes temporarily full. /bin/sh does not necessarily have any control over whether its stdout and/or stderr descriptor is set to non-blocking. Previously, /bin/sh scripts run indirectly during a dsynth would sometimes fail if the dsynth front-end did not drain the pipe quickly enough.
- fetch - Fix the "-T timeout" option for additional cases that were not previously being timed-out.
- fetch - Fix alarm() races.
Libraries
- libc - Fix environment passing for posix_spawnp().
- libc - Increase the silly small opendir/readdir buffer from 4K to 16K.
- libc - Add strerror_l().
- libc - getopt() now recognizes 'option::' for optional argument (gnu extension)
- libc - printf() and scanf(), Make "ll" and "L" length modifiers equivalent (GCC).
- libc - Protect the dbm_*() API with a mutex, making the functions thread-safe
- libc - Make dbm_delete() and dbm_store() signal-safe (use sigblockall() / sigunblockall() for maximum performance).
- libc - Multiple minor cleanups to base64.c
- libc - Fix b64_pton() for some exact-sized buffer.
- libc - gmtime() and other time functions - properly set EOVERFLOW when an overflow occurs.
- libc - Fix bug in malloc_usable_size() support.
- libc - Correct the handling of non-hex sequences in strtol*() and related functions.
- libc_rtld - Reduce the amoutn of libc code compiled into libc_rtld.
- libkern - Import timingsafe_bcmp() from FreeBSD.
Miscellaneous
- pciconf updated from April 16 2022 snapshot.
- zoneinfo updated to tzdata2022a.
- Change the "@" symlink to 'dragonfly' in the build Makefiles to improve readability.
- nrelease - Copy /etc/ssl/cert.pem into ISOROOT, fixing the 'binpkg' build target.
- build - Fix buildworld bootstrapping from older systems.
- Bump CSTD to gnu11 for world and kernel.
- ttys: Add 'ifexists' option to enable ttys only if exists (6.4.1)
- world - Add /etc/rc.local.d to rcorder startup and shutdown ops (6.4.1)
DSynth work
- dsynth - Default meta-data version now 2.
- dsynth - Add the "fetch-only" directive.
- dsynth - Fix DBM race by protecting dbm_store() calls.
- dsynth - Increase the width of various fields from 5 to 6 digits due to the TR's performance.
- dsynth - Better error reporting for dependency parsing.
- dsynth - Add the "list-system" directive.
- dsynth - Add the 'Check_plist' configuration file option as an alternative to using -P.
- dsynth - Add the 'add' directive, allowing additional ports to be added to the build (causing another build pass) after the current pass ends. This way the developer can go to bed without interrupt the running dsynth with last-minute additions.
- dsynth - Do a better job preventing host-installed ports from interfering with dsynth builds.
Various tools have been upgraded in the base system:
- vendor/awk - Upgrade to 20220912
- vendor/bmake - Upgrade to 20220928
- vendor/byacc - Upgrade to 20221106
- vendor/dialog - Upgrade to 1.3-20220728
- vendor/expat - Upgrade to 2.5.0
- vendor/file - Upgrade to 5.43
- vendor/ldns - Upgrade to 1.8.3
- vendor/less - Upgrade to 608
- vendor/libarchive - Upgrade to 3.6.1
- vendor/libedit - Upgrade to 2022-10-30
- vendor/libpcap - Update to 1.10.1
- vendor/TCPDUMP - Update to 4.99.1
- vendor/LIBRESSL - Update to 3.6.1 + local modifications
- vendor/OPENSSH - Upgrade to 9.1p1
- vendor/TCSH - Upgrade to 6.24.02
- vendor/TNFTP - Upgrade to 20210827
- libarchive - 3.6.1 import + adjustments
- xargs - Sync with FreeBSD
Compiler status
- Currently using GCC 8 by default, with GCC 4.7 built but not used as fallback.
- Unchanged from 6.2.
Package updates
- A full set of new binary packages has been built for 6.4, available through the
pkg(8)
tool.