Wie denkt aan een BSD-gebaseerd besturingssysteem zal meteen denken aan één van de drie bekende BSD-varianten, FreeBSD, OpenBSD of NetBSD. Maar daarnaast zijn er nog verschillende andere BSD-varianten beschikbaar, zoals PC-BSD en DragonFly BSD. Deze laatste is een afsplitsing van FreeBSD 4.8 die rond juni 2003 is onstaan omdat Matthew Dillon, de project leider van DragonFly BSD, het destijds oneens was met de gekozen ontwikkelstrategie en aandachtsgebieden voor FreeBSD 5. Voor een overzicht van zijn doelstellingen voor DragonFly BSD kan je deze pagina volledig door spitten. DragonFly BSD 1.10.0 is sinds begin deze maand beschikbaar en bevat een aantal ingrijpende verbeteringen. De aankondiging en lijst met veranderingen zien er als volgt uit:
Version 1.10 is our sixth major DragonFly release. DragonFly's policy is to only commit bug fixes to release branches.
Several big-ticket items are present in this release. Our default ATA driver has been switched to NATA (ported from FreeBSD). NATAs big claim to fame is support for AHCI which is the native SATA protocol standard. It is far, far better than the old ATA/IDE protocol. DragonFly now has non-booting support for GPT partitioning and 64 bit disklabels. Non-booting means we don't have boot support for these formats yet. DragonFly's Light Weight Process abstraction is now finished and working via libthread_xu but the default threading library is not quite ready to be changed from libc_r yet. All threaded programs now link against an actual 'libpthread' which is a softlink to libc_r or libthread_xu, allowing the new threading library to be tested more fully.
In order to support a reasonable number of slices and partitions a certain degree of device renumbering has occured, so if you are upgrading from an older release be sure to run 'make upgrade' after installing the new world and kernel to properly update your /dev. Up to 250 or so slices and 127 partitions are now supported.
This release also contains a massive amount of new device support, particularly related to wireless networking, plus security updates and bug fixes.
A more complete list is included below. We consider 1.10 to be more stable then 1.8.
This release includes a Makefile in /usr that can be used to get the fill distribution source tree and to get the full PkgSrc tree. Just type 'make' in /usr for more information on available options.
- NATA is now the default ata driver.
- Major changes made to the disk abstraction layer.
- Significant changes made to disk device minor numbers in /dev.
- GPT and 64 bit disklabel support added (non booting).
- The LWP (Userland threading work) is now essentially done.
- Major work on vinum to remove its roll-your-own disklabel layer and to remove its assumptions about the device layer's DMA capabilities.
- Introduce libpthread as a softlink allowing libthread_xu or libc_r to be selected. All multithreaded programs are now linked against libpthread. libc_r is the default as there are still a few issues that need to be worked out with libthread_xu.
- Major improvements to wireless networking drivers.
- Many new USB and PCI devices added.
- Numerous new PCI drivers added, particularly w/ networking.
- Userland syslink API is now finished.
- Link state changes are now reported through the routing socket.
- Signal and proper stop/continue support added to LWPs
- Entire kernel is now LWP and thread centric instead of process and thread centric.
- Bind 9.3.4P1 integrated (including Jul/Aug-07 security fixes)
- GCC 4.1.2 integrated, selectable with CCVER. GCC-3 is still the default.
- Add an abstraction layer to vn_strategy() to hide DMA limitations of underlying devices.
- Fix symbol resolution issues with loaded modules.
- Both GCC-3 and GCC-4 are now built by default.
- Improve virtual kernel disk and networking support. Multiple disks and network interfaces are now supported.
- Implement SMP support for virtual kernels (mainly as a testbed).
- Many documentation updates.
- Enhance kinfo_proc to return LWP info.
- Enhance the virtual kernel's console.
- Replace gnu tar with BSD tar.
- Fix a single stepping bug that could lead to a panic.
- Allow multiple kernels to be supplied on the release ISO and supply a VKERNEL kernel in addition to the normal kernel.
- Get rid of the UAREA for good.
- Synchronize zoneinfo changes with recent standards changes.
- Fix a mbuf leak in sbappendcontrol().
- Fix an exec*() syscall memory leak that can lock a machine up when the exec temporary argument space becomes exhausted.
- Bring in the latest libarchive, bsdtar, sendmail, awk, ping, file, less, and openssh.
- Bring in binutils 2.17.
- Support MBs that do not have keyboard controllers by placing an upper limit on the keyboard controller probe timeout.
- Remove IPV6 type 0 router header support entirely.
- Implement SYSREF for the kernel - this structure and API implements MP-safe reference counting and also associates a unique 64 bit id with the structure allowing the structure to be referenced off-machine. SYSREF is part of the clustering work.
- Use SYSREF for struct vmspace and struct vnode, including doing a major revamping of the vnode reference handling code.
- Do a major reordering of many SYSINITs and a major reordering of where device configuration occurs in the boot sequence. Device configuration now occurs far later in the boot sequence and has access to most major subsystems including threading and major memory subsystems. Interrupts are now enabled during device configuration. This is somewhat experimental but works great in allowing us to locate ordering issues in various device init functions related to their interrupts.
- Implement asynchronous device attachment but default to disabled for 1.10.
- Reformulate disk management layer ioctls and remove data pollution. Do not store filesystem-specific data such as the fragment size in the disklabel any more.
- Expand the SCSI subsystem to handle 16-byte commands, allowing > 32 bit block addressing for devices that support it.
- Change the 'make upgrade' target to attempt to rebuild the devices found in /dev instead of just rebuilding base devices.
- Distributions now include a Makefile in /usr with easy-to-use targets for creating and synchronizing /usr/src and /usr/pkgsrc.
- Greatly simplify LWKT messaging within the kernel.
- Add virtual CDROM support to the virtual kernel.
- Add halt and reboot support to the virtual kernel.
- Fix a bug in bus_dmamap_load() that was not properly following boundary and maximum segment size limits.
- Save and restore a USB keyboard's translation mode, allowing the keyboard to be un-plugged and re-plugged.
- Remove the last source of major SMP TLB invalidations in the fork/exec/exit/wait critical paths, significantly reducing IPI traffic and improving fork/exec performance.
- ktrdump now has an option to loop waiting for new input.
- Fix mouse jumpiness when emergency interrupts are enabled by not polling PS/2 mouse interrupts.
- Fix numerous CAM/USB issues so we do not panic or crash if a USB mass storage device is pulled while still mounted. Make sure umount -f works on pulled devices.
- Synchronize the sound subsystem with FreeBSD.
- Timeout positive hits in the namecache as well as negative hits for NFS mounts. Otherwise rename-over's can result in a stale namecache that doesn't auto recover.
- Add MPLS support to traceroute and add a protocol entry in /etc/protocols for MPLS-in-ip.
- Bring in a number of math library fixes from FreeBSD.
- dntpd now properly handles DNS failures, supports DNS pools, and does a quorum consistency check when told to use more then one source.
- Fix a bug in the checkpointing code that was preventing a program from being re-checkpointed properly.
- Major USB code cleanup.
- Adjust dynamic objcache sizing to handle certain degenerate conditions.
- Synchronize with the Adaptec SCSI code from FreeBSD.
- Retire the original ports packaging tools.