Obtaining DragonFly 1.6.x for your system
1.6.0 ISO Images for CDs
DragonFly CDs are 'live', which means that the CD will boot your system
and let you log in as root (no password). You can use this feature to
check for hardware compatibility and play with DragonFly a little before
actually installing it on your hard drive.
The CD includes an installer that can be run at the console, or
(experimentally) via a web browser. Make sure you read the
file for more information. To activate the installer, boot the CD and
login as 'installer'.
The installer has a Netboot server option. You can
boot the CD on one machine, enable the feature via the installer, and
then PXEBoot other systems and do a network based install. System
operators should be aware that running the netboot server hardwires
a 10.1.0.X network and runs a DHCP server which might interfere with
other DHCP servers on your LAN.
See the 'Download Site' list below for a list of download locations.
The MD5 for the release is:
MD5 (dfly-1.6.0_REL.iso.gz) = ebbcc2f4af5f7ee1e5a4cbf6f3f75bf8
1.6.x Release Errata
DragonFly releases are meant to be stable, dependable entities. We
backport compatible bug fixes from current development into release
branches but we do not generally backport new features.
The release CD is always a '.0', e.g. 1.6.0. The most common way to
track a release is to use cvsup to track the release sources and then
build and install a new world and kernel to keep your system updated.
We do not always get every last little fix into a release. Please
be sure to read the errata page for the release CD!
1.6.x Release Sites
(try to find another site first)|
Release Notes for DragonFly 1.6.0
1.6 is our fourth major DragonFly release. DragonFly's policy is to
only commit bug fixes to release branches.
The biggest user-visible changes in this release are a new random number
generator, a massive reorganization of the 802.11 (wireless) framework,
and extensive bug fixes in the kernel. We also made significant progress
in pushing the big giant lock inward and made extensive modifications to
the kernel infrastructure with an eye towards DragonFly's main clustering
and userland VFS goals. We consider 1.6 to be more stable then 1.4.
- Continued work on LWP/PROC separation.
- Continued pkgsrc integration.
- Fix refcount bugs in the kernel module loader and unloader.
- Lots of netif and serializer cleanups and fixes.
- Lots of softupdates, filesystem, and buffer cache related fixes.
- Remove more of the old ports-related infrastructure.
- Major documentation cleanups.
- Major code cleanups, ansification.
- Change the system #include topology so that each include file
is responsible for #include'ing any dependant include files.
- Fix a bug in the PF fragment cache.
- Random number generator: Instead of generating entropy from
selected interrupts (and none by default), we now generate
entropy from all interrupts by default and rate limit it to
not interfere with high performance interrupts.
- Random number generator: Completely replace the algorithms,
remove limitations on returned bytes from /dev/random (which
only served to cause programs to not use /dev/random due to its
lack of dependability). Add the ability to seed the RNG.
Do some automatic initial seeding at boot.
- Adjust ssh to find the pkgsrc X11BASE instead of the old ports
- Fix some compatibility issues in /bin/sh.
- Fix a small number of critical section enter/exit mismatches.
- Bring in a bunch of new malloc() features from OpenBSD
(guard pages, free page protection, pointer guard, etc).
- Clean up the DragonFly build system's automatic .patch handling.
- Bring in openssh 4.3p2.
- Retire libmsun. It was replaced by NetBSD's libm.
- Fix a bug in the NFS timer/retry code.
- Fix issues related to wide-char support.
- Fix a number of private TSS bugs related to threaded programs.
- Completely rewrite the user process scheduler and usched APIs.
- Add system calls that allow a blocking/non-blocking flag to be
passed independant of the O_NONBLOCK state of the descriptor.
- Remove all fcntl(... O_NONBLOCK) calls from libc_r, use the
new system calls instead. This solves numerous problems with
file descriptors shared between threaded and non-threaded
programs getting their non-blocking flag set, and then blowing
up the non-threaded program.
- Add additional red-black (RB) tree function support for ranged
- Get rid of gdb -k, replace with a separately built kgdb, and
build a separate libgdb as well.
- Implement a VM load heuristic. Remove the full-process SWAP
code which never worked well and replace with page-fault
rate-limiting code based on the VM load.
- Fix a serious bug in adjtime()'s microseconds calculation.
- Fix a serious bug in libc's strnstr() function. The function
was testing one byte beyond the specified length limit. This
can cause a seg-fault when, e.g. using strnstr() on a memory
mapped file whos last byte abuts the end of the VM page.
- Bring in sendmail 8.13.7.
- Bring in SHA256 support from FreeBSD.
- Implement a hardlink-mirroring option (-H) in cpdup.
- Add missing code needed to detect IPSEC packet replays.
- Enable TCP wrappers in sshd.
- Restrict recursive DNS queries to localhost by default.
- Massive reorganization and rewrite of the 802_11 subsystem,
with many pieces taken from FreeBSD.
- Fix a number of issues with user-supplied directory offsets
blowing up readdir/getdirentries for NFS and UFS.
- Normalize internal kernel I/O byte lengths to 'int' and remove
a ton of crazy casts to and from unsigned int or size_t.
- Remove NQNFS support. The mechanisms are too crude to co-exist
with upcoming cache coherency management work and the original
implementation hacked up the NFS code pretty severely.
- Remove VOP_GETVOBJECT, VOP_DESTROYVOBJECT, and VOP_CREATEVOBJECT.
They never lived up to their billing and DragonFly doesn't
need them since DragonFly is capable of aliasing vnodes via
the namecache. Rearrange the VFS code such that VOP_OPEN is
now responsible for assocating a VM object with a vnode.
- Formalize open/close counting for the vnode and assert that
they are correct.
- Remove the thread_t argument from most VOP and VFS calls.
Remove the thread_t argument from many other kernel procedures.
- Integrate FreeBSD's new ifconfig(8) utility.
- Fix a race condition in the floating point fault code that
could sometimes result in a kernel assertion.
- Fix a crash in the TCP code when the MTU is too small to
support required TCP/IP/IPSEC options and headers.
- Separate EXT2 conditionals from the UFS code, copying the files
in question to the EXT2 directory instead of trying to
conditionalize them. Also remove function hooks and other code
mess that had been implemented to allow the UFS code to be
used by EXT2.
- Greatly simplify the lockmgr() API. Remove LK_DRAIN,
LK_INTERLOCK, and many other flags. Remove the interlock
- Fix a bug in the POSIX locking code (lockf). Actually, completely
rewrite the POSIX locking code. The previous code was too
complex and mostly unreadable.
- Do a major clean up of all *read*() and *write*() system calls,
and iovec handling.
- Replace many instances where LWKT tokens are used with spinlocks.
- Make spinlocks panic-friendly. Properly handle the detection
of indefinite waits and other deadlock issues.
- Improve network performance by embedding the netmsg directly in
the mbuf instead of allocating a separate netmsg structure for
- Implement both shared and exclusive spinlocks.
Implement a much faster shared spinlock. Cache the shared
state such that no locked bus cycle operation is required in
the common case.
- Implement msleep(). Use a novel approach to handling the
interlock that greatly improves performance over other
- Add cpu-binding support to the scheduler and add a system call
to access it. A user process can be bound to a subset of cpus.
- Prefix all syscall functions in the kernel with 'sys_'
to reduce function prototype pollution and incompatibilities,
and to eventually support virtualized kernels running in
- Port the enhanced SpeedStep driver (EST) for cpu frequency control.
- Remove the asynchronous syscall interface. It was an idea before
its time. However, keep the formalization of the syscall
- Add a facility which statistically records and dumps program
counter tracking data for the kernel.
- Improve kernel SSE2-based bcopies by calling fnclex instead of
- Major BUF/BIO work - make the entire BUF/BIO subsystem BIO
- Major BUF/BIO work - get rid of block numbers, use 64 bit
byte offsets only.
- Major BUF/BIO work - Clean up structures and compartmentalize
driver-specific private fields. Rewrite and simplify device
and vnode strategy APIs.
- Major BUF/BIO work - Remove B_PHYS. There is no longer any
differentiation between physical and non-physical I/O at
the strategy layer.
- Major BUF/BIO work - Replace the global buffer cache hash table
with a per-vnode RB tree. Add sanity checks. Require that all
vnode-based buffers be VMIO backed.
- MPSAFE work - Implement the parallel route table algorithm.
- MPSAFE work - Make the user process scheduler MPSAFE.
- MPSAFE work - File descriptor access is now MPSAFE. Many
fd related functions, like dup(), close(), etc, are either MPSAFE
or mostly MPSAFE.
- MPSAFE work - Push the BGL deeper into the kernel call stack
for many system calls.
- MPSAFE work - Make the process list MPSAFE.
- MPSAFE work - Make all cred functions MPSAFE.
- NRELEASE - compilable kernel sources are now included on the ISO.