da0c2850ec82c96298be1679bee35104a933ef03
[ikiwiki.git] / release24 / index.mdwn
1 # DragonFly Release 2.4
2 # 16 September 2009
3
4 The DragonFly 2.4 release is here!
5
6 Three release options are now available:  Our bare-bones CD ISO, a DVD ISO which includes a fully operational X environment, and a bare-bones bootable USB disk-key image (1G disk keys recommended).
7
8 In addition we will for the first time be shipping a 64-bit ISO.  64-bit support is stable but there will only be limited
9 pkgsrc support in this release.
10
11 ## Availability
12
13 The release ISO images should be available on most of the [[mirrors|mirrors]]. If the ISO is not available on a certain mirror, please try another one or download it from the DragonFly FTP server.
14
15 ### MD5 sums
16
17 * MD5 (dfly-2.4.0_REL.img.gz) = d879282c1ed9d1b36282c4b55aa13b83
18 * MD5 (dfly-2.4.0_REL.iso.gz) = 1a7d1980671e96564d74e9c128d80009
19 * MD5 (dfly-amd64-2.4.0_REL.iso.gz) = 226139fe8127b406d1bf8239eef420eb
20 * MD5 (dfly-gui-2.4.0_REL.iso.gz) = 219eb1f640d2b8034b685a74645fef23
21 * MD5 (dfly-2.4.0_REL.img) = 2ac933f712a9138af1fba712c21cc80a
22 * MD5 (dfly-2.4.0_REL.iso) = 495183dfe161af066935f6ffa8093556
23 * MD5 (dfly-amd64-2.4.0_REL.iso) = f06135a066ef8e5b8d413d65371d98c8
24 * MD5 (dfly-gui-2.4.0_REL.iso) = 191fc66f6822af04eff9b3fd0693dbfc
25
26 ### pkgsrc packages
27
28 We offer over 6000 pre-built [pkgsrc](http://www.pkgsrc.org) packages for this release.   The [pkg_radd(1)](http://leaf.dragonflybsd.org/cgi/web-man?command=pkg_radd&section=ANY) utility may be used to download pre-built binary packages.  By default this script will query the main package site for a random redirect to one of our mirrors.  The path can be overridden by setting BINPKG_SITES in `/etc/settings.conf`.
29
30 To get a list of all packages, let [pkg_search(1)](http://leaf.dragonflybsd.org/cgi/web-man?command=pkg_search&section=ANY) download the summary file for that release:
31
32     # pkg_search -d
33
34 We supply a Makefile in /usr to track the pkgsrc tree.  We also supply a GIT mirror of the NetBSD pkgsrc CVS repo as
35 well as the pkgsrc/wip (work in progress) repo at git://git.dragonflybsd.org/pkgsrc.git and we recommend that
36 users use it instead of pulling from NetBSD with CVS.  Our GIT mirror is updated four times a day.
37
38 ## DragonFly 2.4.0 Special Installation and Upgrade Notes
39
40 2.4.0 is a bigger release than normal.  The single most invasive change is the introduction of DEVFS.
41 The /dev filesystem is now mounted by the kernel after it mounts the root filesystem.  All major and
42 minor numbers have changed and the old /dev is no longer meaningful.  People who use jails or chroots
43 will need to adjust their scripts to either mount_null /dev into their jails and chroots or to make
44 independent DEVFS mounts via mount_devfs into their jails and chroots.
45
46 Within DEVFS the entire tty/pty scheme has changed.  Users upgrading from 2.2 need to be absolutely
47 sure to upgrade their world and kernel at the same time or fireworks may ensue.
48
49 With this release the libc major number has also been bumpedfrom 6 to 7.  Applications should remain
50 fairly compatible across the upgrade but we recommend that all applications be recompiled and/or
51 fresh binary packages be loaded from pkgsrc.
52
53 With this release our new native AHCI driver is now standard.  If your system is AHCI-capable and
54 AHCI-enabled the new driver will take over from NATA and drives may wind up being renamed due to
55 this. For example, ad6 might become da0.  Any legacy ATA ports will continue to be probed by the NATA
56 driver but their drives may be named differently.  USB mass storage devices will also be numbered starting
57 at 8, for example da8, to avoid conflicting with lower-numbered da* devices.
58
59 DEVFS now probes serial numbers.  The serial numbers for all ATA, SATA, and SCSI devices will be
60 recorded by DEVFS in /dev/serno/<SERIALNUMBER>.  USB mass storage devices are more problematic
61 as the on-device controllers typically do not implement serial number reporting.  Users are
62 encouraged to use /dev/serno/<SERIALNUMBER> paths in their /etc/fstab and /etc/rc.conf, and
63 to even specify the root mount in /boot/loader.conf using a devfs-relative serial number
64 path such as: vfs.root.mountfrom="hammer:serno/AB34394.s1d".  The use of serial numbers to
65 specify the location of mass storage devices allows you to attach those devices in virtually any
66 manner without confusing the system.  This is particularly important as SATA Port Multiplier
67 enclosures and systems with large numbers of SATA and E-SATA connectors become prevalent.
68
69 The installer now installs (and we recommend) a BOOT+HAMMER setup by default.  The installer will
70 also reference mount points by serial numbers.
71
72 We expect there will be numerous little issues with this release and we intend to roll a 2.4.1
73 out in about a month to address what comes up.
74
75 So upgrading to 2.4.x will certainly be a bit painful for users of 2.2.x or earlier releases.  We
76 believe the pain will be well worth the effort.
77
78 ## DragonFly 2.4.0 Release Notes
79
80 ### Release Improvements
81
82 > ### Kernel changes
83
84  * acpi(4): Import acpica-unix-20090521.
85  * acpi(4): Improved power & frequency management for cpus.
86  * acpi(4): Significantly improved APIC support.
87  * **buf/bio: New read-prioritizing bioq sort algorithm.**  The new algorithm does a much better job
88    prioritizing reads over writes and also contains features to avoid starving-out writes.  It
89    works best with CAM based drivers but NATA uses some of its functionality too.
90  * buf/bio: Make biowait(), getpbuf(), and most other buf/bio functions MPSAFE.
91  * buffer-cache: Improved pipe-lining for writes.
92  * **devfs(5): Replaced the static /dev directory with a dynamic device file system written by Alex Hornung during the Google Summer of Code 2009.**
93   * All block devices now auto-probe their slices and partitions.
94   * All block devices now auto-probe serial numbers and may be mounted and otherwise referenced by serial number.
95   * loader.conf now supports specifying the root device by serial number.
96   * Autocloning support for cloning devices such as VN.
97  * ddb(4): Fix an IPI messaging lockup which can occur while in ddb(4).
98  * **disklabel64(5): Add UFS + HAMMER boot support** (was previously just HAMMER boot support).
99  * drm(4): Sync code with latest from FreeBSD.
100  * ext2fs: Support variable inode size (from FreeBSD).
101  * mountctl/mount -v: New infrastructure for reporting mount flags.
102  * NFS
103   * **The client-side RPC code has been rewritten.**  Two kernel threads are now created
104     for each NFS mount.  One handles reading from the socket and the other handles
105     writing to the socket.  A virtually unlimited number of RPCs may be in-flight
106     at any given moment.  The days of multiplicative threads each running synchronous
107     RPCs are over!
108   * **Use TCP mounts by default as the new RPC architecture can now trivally blow
109     out UDP sockbufs.**
110   * **Hugely improved client-side performance.**
111   * Fixed fsx test regressions.
112   * Fixed Linux compatibility issues (fix bugs in readdirplus)
113  * msdos(5): Fixed a number of bugs.
114  * pci(4): Sync code with FreeBSD 7.2.
115  * Bring iscsi_initiator(4) from FreeBSD. 
116  * pipe(2): Pipes are now 100% MPSAFE.
117  * Add new cred/privilege infrastructure for jail and general use.
118  * Consolidate VOP access tests in vop_helper_access().
119  * usched_set: Add USCHED_CPU_GET for retrieving the current CPU.
120  * revoke(2): Reimplemented the revoke code.
121  * pty: Add Unix98 ptys (/dev/ptmx and /dev/pts/*).
122  * sound: add autocloning support for dsp devices.
123  * tcp: Fixed a reestablishment bug for TCP connections if one side reboots without
124    closing the connection.  A port pair could wind up becoming unusable for
125    upwards of an hour or longer.
126  * tcp: Improve performance by implementing an automatic high-water mark when
127    it is not otherwise specified, allowing hysteresis between the kernel and
128    the tcp protocol stack.
129  * tsleep: New tsleep interlock mechanics implemented to fix races.
130  * vkernel(7)
131   * Fixed entry into ddb(4) when running a SMP vkernel.  Fixes stop/cont.
132   * Fixed startup race with I/O cothread support.
133   * Fixed some issues - enable ithread preemption, races, and more.
134   * Fixed races in stopsig() and ipisig().
135   * libkvm now understands live vkernels.
136   * libkvm: Add support for accessing a running vkernel's memory by reading its `/proc/$pid/mem` file.
137  * vn(4): Add autocloning support
138  * Fixed permissions check for utimes() - owner can call even if u-w.
139  * Replace the old BSD malloc code with a port of our slab allocator.
140  * Fix various clang compile issues
141  * Add HPET cputimer.
142  * Add lapic timer and enable it by default.
143  * Add kernel-layer support for chflags checks, remove (most) from the VFS layer.
144
145 > ### HAMMER changes
146
147  * Return shorter-form softlinks "@@-1:%05d" when appropriate.
148  * Add a B-Tree rebalancing feature (hammer rebalance).
149  * Fixed improper cred checks for utimes().
150  * Fixed edge case in mirroring code.
151  * **Fixed nohistory mounts and a rare lost inode issue.**
152  * Fixed sticky bit directory handling for deletions.
153  * Break-up initial mirroring batch so restarts do not start from scratch.
154  * Better CRC handling, bad-file handling.
155  * Refactor merged search function to try to avoid missed entries.
156  * Limit recursion for long directory chains, update mtime/ctime.
157  * Improve performance for large write loads.
158  * Improve directory layout (in-place upgrade to version 2).
159  * Allow hammer -b to specify bytes per second if no suffix is supplied.
160  * Extract PFS null mounts from anywhere in the filesystem, instead of just from the `/pfs` subdirectory.
161  * Add hammer info directive which prints useful info about a hammer filesystem.
162
163 > ### Hardware changes (non-networking)
164
165  * ath(4): Add open source HAL code (from FreeBSD) and make it possible to build it into the kernel.
166  * cxm(4): Add new driver for Hauppauge PVR-250/350 video capture cards (from FreeBSD).
167  * kbdmux(4): Add multiple keyboards on the console via keyboard multiplexer (from FreeBSD).
168  * mpi(4): Sync the driver with the latest version from FreeBSD.
169  * mpt(4): Sync the driver with the latest version from FreeBSD.
170  * **ahci(4): Implement a native AHCI driver with full hot-plug and port multiplier support.**
171    Also implement ATA pass-through.  Uses CAM.
172  * **sili(4): Implement a native Silicon Image 3132 driver with full hot-plug and port multiplier support.**
173    Also implement ATA pass-through.  Uses CAM.
174
175 > ### Hardware changes (networking)
176
177  * ae(4): Add driver for Attansic/Atheros L2 FastEthernet (from FreeBSD).
178  * bpf(4): Add autocloning support
179  * em(4): Synced with Intel's em-6.9.6 (from FreeBSD).
180  * emx(4): Copy of em(4) which supports only 8257{1,2,3} parts.
181  * iwi(4): Upgrade to use 3.0 firmware and use firmware(9) API to load firmware.
182  * mxge(4): Add driver for mxge 10GigE (from FreeBSD + minor adjustments)
183  * tap(4): Add ifclone support and autoclone support.
184  * vke(4): Convert from kqueue API to cothread API.
185  * Turn on adaptive MPSAFE for network threads, and MPSAFE for IP and ARP.
186  * RSS: Add Toeplitz hash function.
187  * Split ifnet serializer.
188  * Add ifpoll, which support hardware TX/RX queues based polling.
189
190 > ### Userland changes
191
192  * Fixed a huge number of compiler warnings for various userland utilities.
193  * battd(8): Fix some errors and improve the man page
194  * compilers.conf(5): This file allows to configure ''external'' compilers (e.g. LLVM/clang) for usage with the DragonFly build(7) system.
195  * cpdup(1): Allow uid/gid/flags changes to fail if running as user.
196  * env(1): unbreak build of 2.2 release branch under HEAD.
197  * expr(1): Add support for -- as required by POSIX.
198  * fetch(1): Synced with FreeBSD.
199  * devtab: As devfs(5) support access to devices via serial numbers, `/etc/devtab` can be used to map serial number to human readable labels.
200  * devfsctl(1): New utility to add/remove/control devfs(5) rules.
201  * **dma(1): The DragonFly Mail Agent is now more robust and reliable.**
202  * ifconfig(8): Add static ARP support.
203  * installer: Fix the bug when used from console with the LiveDVD.
204  * installer: Fixed various bugs and cleaned the code.
205  * iscontrol(8): Brought from FreeBSD.
206  * libc
207   * Synced various parts with FreeBSD and NetBSD.
208   * Add some new system calls.
209   * Add locale support for static binaries.
210   * Apply FreeBSD-SA-09:07.libc - fix information leak in db(3).
211   * **Version bump to libc.so.7**
212  * libfetch(3): Synced with FreeBSD.
213  * libiconv: Add support for static binaries.
214  * libm
215   * Imported complex arithmetic functions from {Net,Free}BSD.
216   * Imported maximum, minimum, and positive difference functions from FreeBSD.
217  * magic(3): Fix program name extraction from core dumps.
218  * mount_msdos(8): Add UTF8 support.
219  * mount_ntfs(8): Add UTF8 support.
220  * ncal(1): Highlight current day (from FreeBSD).
221  * pax(1): Add a -O option: force one volume (from NetBSD).
222  * pkgsrc: pkgsrc GIT repo now shipped instead of CVS repo.
223  * telnetd(8): Apply FreeBSD-SA-09:05.telnet - fix environment based code execution vulnerability.
224  * window(1): Synced with NetBSD.
225  * vkentd(8): Add features, allow IP address to be set in unsecure mode, allow address 0.
226  * smbfs(8): Add UTF8 support.
227  * syslogd(8): Sync with FreeBSD.
228  * telnet(1): Autologin is now disabled by default.
229  * undo(1)
230   * Fixed @@ formatting used by undo -ad and fix duplicate test
231   * Use a Red-Black tree to track HAMMER transaction IDs.
232   * It can now detect all prior replacements of a file.
233   * Add an indexing feature to the -t option.
234  * unix98 ptys
235   * Implement posix_openpt, ptsname, grantpt, unlockpt
236   * Change openpty(3) to use unix98 ptys by default and let it fall back to bsd ptys if any problem occurs.
237  * vinum(8): Support for geometries larger than 2 TB was added.
238  * A pkgsrc git repo is now available on the CD.  You can copy it to /usr/pkgsrc and then use
239    standard GIT commands to do an incremental update to the latest pkgsrc.
240
241 > ### amd64 related changes
242
243  * From Jordan Gordeev's Google Summer of Code 2009 project.
244  * Kernel can now map 512G if KVA space.
245  * Kernel now supports the entire user VM space.
246  * Signal stacks, handlers, dynamic binaries, compiler warnings, etc.
247  * Misc fixes for cross-building amd64.
248  * Add a build system for amd64 build/test environments.
249  * Both cross-build and native world/kernel builds work.
250  * Pkgsrc builds are ramping up.
251  * Load testing using parallel pkgsrc bulk builds succeeded!
252  * SMP now works!
253
254 > ### Removals
255
256  * GNU cpio(1) was removed. The BSD licensed rewrite based on libarchive(3) is now default.
257  * GNU GCC 3.4 was removed. GCC 4.1.2 and 4.4.1 remain in base.
258  * Kerberos/heimdal was removed. Use the version from pkgsrc (`security/heimdal`).
259  * iwicontrol(8) was removed. The iwi(4) firmware is now loaded automatically.
260
261 > ### Contributed Software
262
263  * Update file to version 5.03.
264  * GCC 4.4.1 was added to base, but is not enabled by default.
265  * Update less to version 429.
266  * Update OpenSSH to version 5.2p1.
267  * Update OpenSSL to version 0.9.8k.
268  * Sync zoneinfo database with tzdata2009l.