release60
DragonFly BSD 6.0
- Version 6.0.0 released 05 10 2021
- Version 6.0.1 released 10 12 2021
DragonFly version 6.0 is the next step from the 5.8 release series in 2020. This version has a revamped VFS caching system, various filesystem updates including HAMMER2, and a long list of userland updates. 6.0.1 adds a fix for an expired Let's Encrypt certificate that interfered with dports installs, plus some other minor fixes.
The details of all commits between the 5.8 and 6.0 branches are available in the associated commit messages for 6.0.0rc1, 6.0.0, and 6.0.1.
Big-ticket items
- Significant work on dsynth, for building packages.
- Many updates of contrib system software.
- HAMMER2 work continues, with updates from Tomohiro Kusumi.
- Major VM work for extent-based representation.
- Due to major changes to the VM system we had to remove the MAP_VPAGETABLE mmap() feature, and this also means that vkernels will not be supported in this release. Support may be re-added at a later time via HVM (but not in this release).
Details
Checksums
MD5 (dfly-x86_64-6.0.0_REL.img) = 56747f1b7a0178f46d1298ab2d8c723b
MD5 (dfly-x86_64-6.0.0_REL.iso) = 9a10a8935e2a74bffdb5d4a032bed635
MD5 (dfly-x86_64-6.0.0_REL.img.bz2) = 92b0f2d0cfcf6951be0e81ee692909d4
MD5 (dfly-x86_64-6.0.0_REL.iso.bz2) = 252fc700803dbadce1de928432373bbb
Upgrading
If you have an existing 5.x system and are running a generic kernel, the normal upgrade process, described below, will work.
Change your local /usr/src
to 6.0:
cd /usr/src
git fetch origin
git branch DragonFly_RELEASE_6_0 origin/DragonFly_RELEASE_6_0
git checkout DragonFly_RELEASE_6_0
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. 6.0 packages have already been built and are immediately available.
pkg update
pkg upgrade
If you get a lua error when upgrading pkg, copy over a new config file:
cp /usr/local/etc/pkg/repos/df-latest.conf.sample /usr/local/etc/pkg/repos/df-latest.conf
All other changes since prior release
Security Issues
- CVE-2016-3189 and CVE-2019-12900, fixed with an import of bzip2-1.0.8.
- Meltdown hardware is detected during boot on Intel.
Kernel
- vfs_cache updated.
- Memory paging improved.
- Callout API rewritten, and callout structure revamped.
- Optimizations for code paths, cache lines.
- Fix shared spin-lock starvation vs exclusive locks.
- refactor kern_kevent(), sysclock_t to 64 bit.
- Improved EFI framebuffer support.
- acpi_thinkpad updated.
- sysmouse has evdev support.
- machdep.hack_efifb_probe_early sysctl removed.
- clock_nanosleep(2), fexecve(2) added.
- Fix mptable search issue triggered by bhyve
- uname sysctl fixes (minor stack disclosure).
- Add fcntl(F_GETPATH).
- Add IP_SENDSRCADDR support
- Add SO_PASSCRED.
- Introduce kmalloc_obj facility to reduce memory fragmentation
- Implement existential locks and type-stable feature to kmalloc_obj
- Fix /dev/fd/N to clone the file pointer instead of sharing it, so seeks do not mess up the running process.
- Cleanup archaic dup*() code-paths.
- vkernel support disabled (see note at top)
- Fix an unintended pmap_remove() that caused extra page faults.
- Allow XSAVE support without AVX (some VMs do this)
- Improve clock_settime() portability.
- Fix an unintended memory disclosure in nanosleep().
- Fix atime field for PTYs ('w' program idle time reporting).
- finger - remove -T option and fix lastlogx logic, widen TTY field.
- Misc fstype adjustments.
- Fix a serious callout*() structural corruption bug.
- Fix an overflow in the non-EFI bootloader code.
- Fix a slow memory leak in the resource limit structure.
- Fix a bug that could cause excessive VM pageout flushes.
- Refactor ifsq_watchdog*() adding features to better-support queue flushes.
- Fix atomicy issue in APIC EOI() and enable_icus().
- Fix a multitude of rename races, particularly with directories.
- Bring amdsmn in from FreeBSD.
- Improve open() errno compatibility.
- Make the DMAP significantly larger to accomodate EFI frame-bufffers that have been mapped to very high physical addresses (recent intel HP laptops).
- Remove P_SWAPPEDOUT flag and non-functioning (non-applicable) code.
- Detect fixed Intel meltdown hardware.
- Bring in wsp(4) for Wellspring touchpads and Apple laptops.
- Adjust devd to automatically recognize wireless network adapters and create wlanX interfaces for them.
- Default serial port speed changed from 9600 to 115200. Long overdue.
- Refactor sysclock_t from 32 to 64 bits.
- Refactor kern_kevent() and fix a panic.
- Fix an efivar panic.
- Remove long-deprecated getdomainname(), setdomainname(), and uname() system calls. libc handles these a different way.
- Fix rare vm_map_entry exhaustion panic.
- Refactor vfs_timestamp() and change default to TSP_USEC.
- Allow the 8254 timer to be forced-on for machines which do not support the LAPIC timer during deep-sleep.
- Improve calculations for user/sys/intr/idle times.
- Implement sysctl kern.tls_extra to help the userland rtld deal with late library loads.
- Fix minor scheduler bugs.
- Optimize the system call code path.
- Major refactor of the vfs_cache code to improve performance and reliability.
- Improve cache_fullpath().
- Add raw flame_graph sampling support.
- Reduce SMP contention during low-memory stress.
- Recode the namecache mount transition cache to improve performance.
- Reduce excessive rdrand harveesting that was seriously impacting performance on some CPUs (rdrand is microcoded and concurrent per-cpu use does not fully scale on many CPUs).
- Major revamp of jail support and related options. Restructure the jail.* sysctl tree. Fix broken port-matching code, fix loopback interface handling.
- Major advancement of VM topology. Primarily change over to an extent-based representation and remove pv_entry's for terminal PTEs. Not yet extended to pmap_enter().
- Create new linker segments for e.g. read-mostly globals and other partitioning.
Filesystems
- HAMMER2 - multiple cleanups and fixes
- HAMMER2 - initial multi-volume support (multi-local disk, not networked multi-master)
- HAMMER2 - Fix rename over empty directory issue.
- HAMMER2 - Volume expansion support (hammer2 growfs directive added).
- HAMMER2 - Update ctime upon chmod().
- HAMMER2 - Fix a serious de-duplication bug.
- TMPFS - Significant performance enhancements.
- TMPFS - Fix two directory-entry races.
- TMPFS - Fix a file truncation bug.
- MSDOSFS: last sector read bug fixed.
- non-GPL ext2 filesystem support added.
- Refactor VOP_GETATTR_LITE() a bit for performance and portability.
Networking
- Support added for newer Intel I219 ethernet controllers.
- re(4) updated to Realtek's re-196.04, plus misc fixes.
- em/emx(4) updated to Intel's em-7.7.8 with support for I219 LM15~19 and I219 V15~19.
- bnx: Support 57764, 57767 and 57787.
- bnx: A multitude of fixes made.
- Add AF_ARP support.
- Fix panic after route purge.
- Fix numerous issues related to if_tap and if_tun cloning.
- Attempt to fix the TCP ISN generator in the face of very fast port reuse.
Graphics
- Multiple updates to the i915 driver.
- DRM system now matches Linux 4.10.17.
- Additional stability fixes to i915.
Driver updates
- Serial port default speed is changed from 9600 to 115200.
- amdsmn, amdtemp added.
Userland
- autofs - fix absolute path when creating a mountpoint.
- calendar - Rewrite to support Chinese and Julian calendars, various enhancements.
- cpdup - Now uses lchmod(), lutimes(), and lchflags() when available.
- cpdup - Use POSIX-defined timespec fields in a more portable manner.
- disklabel - Add -x and -xx label expansion options.
- ifconfig - Support filtering output by interface group.
- ifconfig - Add -f options
- ifconfig - Many miscellaneous enhancements.
- pkill(1): Add option -T.
- shutdown(8), reboot(8), printf(1), test(1), sh(1) updated to match FreeBSD.
- games ching, gomoku, monop, and cgram imported from NetBSD.
- Multiple ifconfig updates.
- talk and talkd updated.
- multiple updates to pciconf, ACPICA, and tzdata.
- mounttmpfs - Add utility to help support /tmp and /var/run tmpfs's.
- mountd - Turn on SO_REUSEADDR if a specific port is specified.
- sh - resynchronize /bin/sh from FreeBSD w/ many fixes.
- libefivar, efivar, uefisign synced with FreeBSD.
- efidp, efibootmgr imported.
- gpt - fix corruption in device_name string which caused gpt to sometimes fail.
- gpt - Add 'gpt expand' directive
- grdc - Improve scrolling timestamp precision.
- pciconf - implement -e and -B options
- od - Fix long double and long int format output and alignment.
- killall now handles -h and -? properly.
- top, vmstat, who, rwhod, uptime - fix uptime calculation.
- daemon(8) understands log rotation.
- stdbuf(1), getaddrinfo(1) and timeout(1) added.
Libraries
- pthreads - add support for pthread_getname_np() and other features.
- pthreads - reduce type pollution.
- pthreads - respect RLIMIT_STACK for the main thread's stack.
- c++ - Execute new atexit() destructors during _cxafinalize()
- libaura fixes
- libc - typeing fixes for ualarm() and usleep()
- libc - Add unlocked versions of stdio functions
- libc - Make signal names upper-case (posix compat).
- libc - Refactor printf() (from FreeBSD)
- libc - Provide __udivti3() for intermediate 128-bit calculations.
- libc - Fix serious bug in nmalloc (malloc implementation).
- libc - Use a fixed blocksize for the DB hash and btree methods, significantly improving performance.
- libstdbuf - Import from FreeBSD
- libutil - Add sockaddr_snprintf() from NetBSD
- terminfo - Drop repeat-character capability from 'xterm-new'. Fixes mis-generated output in some situations that can lead to output corruption in nvi.
Miscellaneous
- Many manual page fixes
- Make the initrd subsystem more termcap-friendly
- Remove the obsolete dev_mkdb()
- Many fixes to the nrelease build.
- Allow special characters in passwords created via the installer.
DSynth work
- dsynth now allows ports-mgmt/pkg to be explicitly specified
- dsynth now supports zstd
- Report additional information in the build output.
- Warn the user if the world and kernel are out of sync.
- Set OPSYS according to detection or the profile config.
- Now collects and presents meta-node statistics.
- Now deletes obsolete packages on 'prepare-system'.
- Log the portdir for all bulk-scan errors.
- Fix count mismatch issues and binary pkg deletion issues.
- dsynth now automatically runs itself at nice 10 by default.
- tune max_load and other heuristics to handle a wider range of machine capabilities automatically.
- retune the pkg dependency memory target heuristic.
- Get ccache support working.
- Fix a stack buffer in dequote() that was causing corruption.
Various tools have been upgraded in the base system:
- awk updated to 20200612.
- bmake updated to 20210206.
- cgram synced with NetBSD
- dhcpcd updated to 9.4.0.
- diffutils updated to 3.7.
- dma updated to 0.13+.
- dialog updated to 1.3-20200327.
- dsynth added support for zstd compression.
- file updated to 5.39.
- grep updated to 3.4.
- less updated to 551.
- less wrappers added for various compression types.
- ldns/drill updated to 1.7.1.
- libressl updated to 3.2.5.
- libedit updated to 2019-12-31.
- libpcap updated to 1.9.1.
- libarchive updated to 3.4.3.
- xz updated to 5.2.5.
- openssh updated to 8.3p1.
- ncurses updated to 6.2-20200212.
- nvi2 updated to 2.2.0.
- openresolv updated to 3.12.0.
- tcplay updated to 3.3.
- tcpdump updated to 4.9.3.
- tcsh updated to 6.22.02.
- uname - remove (never worked) varsym support.
- vmstat - make kmalloc zone display more readable (-m)
- wpa_supplicant updated to 2.9
- zstd 1.4.8 added to base.
- Prep work for -fno-common becoming a compiler default.
Compiler status
- Currently using GCC 8 by default, with GCC 4.7 built but not used as fallback.
- A multitude of header inclusion fixes to improve portability.
- Adjust C++ headers to survive -Wsystem-headers option.
Package updates
- A full set of new binary packages has been built for 6.0, available through the
pkg(8)
tool.