FreeBSD/i386 6.1-RELEASE Release Notes

The FreeBSD Project

$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.883.2.15.2.7 2006/05/05 17:07:14 hrs Exp $

FreeBSD is a registered trademark of the FreeBSD Foundation.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both.

IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Sparc, Sparc64, SPARCEngine, and UltraSPARC are trademarks of SPARC International, Inc in the United States and other countries. Products bearing SPARC trademarks are based upon architecture developed by Sun Microsystems, Inc.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.

The release notes for FreeBSD 6.1-RELEASE contain a summary of the changes made to the FreeBSD base system on the 6.1-STABLE development line. This document lists applicable security advisories that were issued since the last release, as well as significant changes to the FreeBSD kernel and userland. Some brief remarks on upgrading are also presented.


Table of Contents
1 Introduction
2 What's New
2.1 Security Advisories
2.2 Kernel Changes
2.2.1 Boot Loader Changes
2.2.2 Hardware Support
2.2.3 Network Protocols
2.2.4 Disks and Storage
2.2.5 File Systems
2.2.6 Contributed Software
2.3 Userland Changes
2.3.1 /etc/rc.d Scripts
2.4 Contributed Software
2.5 Ports/Packages Collection Infrastructure
2.6 Release Engineering and Integration
2.7 Documentation
3 Upgrading from previous releases of FreeBSD

1 Introduction

This document contains the release notes for FreeBSD 6.1-RELEASE on the i386 hardware platform. It describes recently added, changed, or deleted features of FreeBSD. It also provides some notes on upgrading from previous versions of FreeBSD.

This distribution of FreeBSD 6.1-RELEASE is a snapshot distribution. It can be found at http://www.FreeBSD.org/snapshots/ or any of its mirrors. More information on obtaining this (or other) snapshot distributions of FreeBSD can be found in the “Obtaining FreeBSD” appendix to the FreeBSD Handbook.

All users are encouraged to consult the release errata before installing FreeBSD. The errata document is updated with “late-breaking” information discovered late in the release cycle or after the release. Typically, it contains information on known bugs, security advisories, and corrections to documentation. An up-to-date copy of the errata for FreeBSD 6.1-RELEASE can be found on the FreeBSD Web site.


2 What's New

This section describes the most user-visible new or changed features in FreeBSD since 6.0-RELEASE.

Typical release note items document recent security advisories issued after 6.0-RELEASE, new drivers or hardware support, new commands or options, major bug fixes, or contributed software upgrades. They may also list changes to major ports/packages or release engineering practices. Clearly the release notes cannot list every single change made to FreeBSD between releases; this document focuses primarily on security advisories, user-visible changes, and major architectural improvements.


2.1 Security Advisories

A temporary file vulnerability in texindex(1), which could allow a local attacker to overwrite files in the context of a user running the texindex(1) utility, has been fixed. For more details see security advisory FreeBSD-SA-06:01.texindex.

A temporary file vulnerability in the ee(1) text editor, which could allow a local attacker to overwrite files in the context of a user running ee(1), has been fixed. For more details see security advisory FreeBSD-SA-06:02.ee.

Several vulnerabilities in the cpio(1) utility have been corrected. For more details see security advisory FreeBSD-SA-06:03.cpio.

An error in ipfw(4) IP fragment handling, which could cause a crash, has been fixed. For more details see security advisory FreeBSD-SA-06:04.ipfw.

A potential buffer overflow in the IEEE 802.11 scanning code has been corrected. For more details see security advisory FreeBSD-SA-06:05.80211.

Two instances in which portions of kernel memory could be disclosed to users have been fixed. For more details see security advisory FreeBSD-SA-06:06.kmem.

A logic bug in the IP fragment handling in pf(4), which could cause a crash under certain circumstances, has been fixed. For more details see security advisory FreeBSD-SA-06:07.pf.

A logic bug in the NFS server code, which could cause a crash when the server received a message with a zero-length payload, has been fixed. For more details see security advisory FreeBSD-SA-06:10.nfs.

A programming error in the fast_ipsec(4) implementation results in the sequence number associated with a Security Association not being updated, allowing packets to unconditionally pass sequence number verification checks, has been fixed. For more details see security advisory FreeBSD-SA-06:11.ipsec.

A logic bug that could cause opiepasswd(1) to allow an unprivileged user to configure OPIE authentication for the root user under certain circumstances, has been fixed. For more details see security advisory FreeBSD-SA-06:12.opie.

An asynchronous signal handling vulnerability in sendmail(8), which could allow a remote attacker to execute arbitrary code with the privileges of the user running sendmail, typically root, has been fixed. For more details see security advisory FreeBSD-SA-06:13.sendmail.

An information disclosure issue found in the FreeBSD kernel running on 7th- and 8th-generation AMD processors has been fixed. For more details see security advisory FreeBSD-SA-06:14.fpu.


2.2 Kernel Changes

The ddb(4) debugger now supports the show lock command. If the argument has a valid lock class, this displays various information about the lock and calls a new function pointer in lock_class (lc_ddb_show) to dump class-specific information about the lock as well (such as the owner of a mutex or xlock'ed sx lock).

DEFAULTS kernel configuration files for each platform have been added.

The firmware(9) subsystem has been added. This allows to load binary data into the kernel via a specially crafted module.

The random(4) entropy device driver is now MPSAFE.

A new sysctl variable security.mac.biba.interfaces_equal which makes all network interfaces be created with the label biba/equal(equal-equal), has been added. This is useful where programs such as dhclient(8) and ppp(8). which initialize network interfaces do not have any labeling support. This variable is set as 0(disabled) by default.


2.2.1 Boot Loader Changes

A new loader tunable comconsole_speed to change the serial console speed has been added. If the previous stage boot loader requested a serial console then the default speed is determined from the current serial port speed, and otherwise it is set to 9600 or the value of the kernel option BOOT_COMCONSOLE_SPEED at compile time.


2.2.2 Hardware Support

The acpi_thermal(4) driver now supports passive cooling.

The ce(4) driver, which supports Cronyx Tau-PCI/32 adapters, has been added.

The kbdmux(4) driver has been integrated into syscons(4) and the kbd device driver. By default syscons(4) will look for the kbdmux(4) keyboard first, and then, if not found, look for any keyboard. Switching to kbdmux(4) can be done at boot time by loading the kbdmux kernel module via loader(8), or at runtime via kldload(8) and releasing the active keyboard.

The kbdmux(4) driver has been included in the GENERIC kernel by default. Also, the “Boot FreeBSD with USB keyboard” menu item in the boot loader menu has been removed since this fixes USB keyboard probing problems.


2.2.2.1 Multimedia Support

The agp(4) driver now supports ATI IGP chipsets.

The sound(4) driver has been updated in various aspects including fixing lock-related bugs that could cause system panics in the previous releases and some performance improvements. Also this driver now supports wider range sampling rate, multiple precisions choice, and 24/32-bit PCM format conversion.

The snd_atiixp(4) driver has been added. This supports ATI IXP 200/300/400 series audio controllers.

The snd_als4000(4) driver is now MPSAFE.

The snd_es137x(4) driver is now MPSAFE.

The snd_ich(4) driver is now MPSAFE.

The snd_solo(4) driver is now MPSAFE.

The snd_via8233(4) driver is now MPSAFE.

The snd_via82c686(4) driver is now MPSAFE.


2.2.2.2 Network Interface Support

The ath(4) driver has been updated to version 0.9.16.16.

The bce(4) driver, which supports Broadcom NetXtreme II (BCM5706/BCM5708) PCI/PCIe Gigabit Ethernet controllers, has been added. For more details, see bce(4).

A bug which prevents the bfe(4) driver from working on a system with over 1GB RAM has been fixed.

The bge(4) driver now supports polling(4) mode.

The em(4) driver now supports big-endian architectures such as sparc64.

The le(4) driver, which supports AMD Am7900 LANCE and Am79C9xx PCnet NICs and is based on NetBSD's implementation, has been added. While the lnc(4) driver also supports these NICs, this driver has several advantages over it such as MPSAFE, ALTQ, VLAN_MTU, ifmedia, and 32-bit DMA for PCI variants.

The lge(4) driver is now MPSAFE.


2.2.3 Network Protocols

The arp(8) retransmission algorithm has been rewritten as that ARP requests are retransmitted without suppression, while there is demand for such ARP entry. Due to this change, a sysctl variable net.link.ether.inet.host_down_time has been removed.

The arp(8) now supports a sysctl variable net.link.ether.inet.log_arp_permanent_modify to suppress logging of attempts to modify permanent ARP entries.

The if_bridge(4) bridge driver now supports creating span ports, which transmit a copy of every frame received by the bridge. This feature can be enabled by using ifconfig(8).

The if_bridge(4) bridge driver now supports RFC 3378 EtherIP. This change makes it possible to add gif(4) interfaces to bridges, which will then send and receive IP protocol 97 packets. Packets are Ethernet frames with an EtherIP header prepended.

The ipfw(4) IP packet filter now supports IPv6. The ip6fw(8) packet filter is deprecated and will be removed in the future releases.

The ipfw(4) now supports substitution of the action argument with the value obtained from table lookup, which allows some optimization of rulesets. This is now applicable only to pipe, queue, divert, tee, netgraph, and ngtee rules. For example, the following rules will throw different packets to different pipes:

pipe 1000 config bw 1000Kbyte/s
pipe 4000 config bw 4000Kbyte/s
table 1 add x.x.x.x 1000
table 1 add x.x.x.y 4000
pipe tablearg ip from table(1) to any

A bug has been fixed in which NFS over TCP would not reconnect when the server sent a FIN. This problem had occurred with Solaris NFS servers.

The ng_iface(4) Netgraph node now supports altq(4).

The path MTU discovery for multicast packets in the FreeBSD ip6(4) stack has been disabled by default because notifying path MTU by a lot of routers in multicast can be a kind of distributed Denial-of-Service attack to a router. This feature can be re-enabled by using a new sysctl variable net.inet6.ip6.mcast_pmtu.

The TCP bandwidth-delay product limiting feature has been disabled when the RTT is below a certain threshold. This optimization does not make sense on a LAN as it has trouble figuring out the maximal bandwidth due to the coarse tick granularity. A new sysctl variable net.inet.tcp.inflight.rttthresh specifies the threshold in milliseconds below which this feature will disengage. It defaults to 10ms.


2.2.4 Disks and Storage

The amr(4) driver has been improved on its performance and now supports full 64-bit DMA. While this feature is enabled by default, this can be forced off by setting the hw.amr.force_sg32 loader tunable for debugging purpose.

The amr(4) driver now supports ioctl(2) requests necessary for Linux LSI MegaRaid tools on FreeBSD's Linux emulation environment.

The ata(4) driver now supports a workaround for some controllers whose DMA does not work properly in 48bit mode. For the suspicious controllers the PIO mode will be used for access to over 137GB areas.

The ata(4) driver now supports the ITE IT8211F IDE controller, and Promise PDC40718 and PDC40719 chip found in Promise Fasttrak TX4300.

The ata(4) driver now supports DMA for kernel crash dump and crash dumping to ataraid(4) device.

The ataraid(4) driver now supports JMicron ATA RAID metadata.

The GEOM_LABEL class now supports Ext2FS, NTFS, and ReiserFS.

The GEOM_MIRROR class now supports kernel crash dump to the GEOM providers.

The GEOM_MIRROR and GEOM_RAID3 classes now support sysctl variables kern.geom.mirror.disconnect_on_failure and kern.geom.graid3.disconnect_on_failure to control whether failed components will be disconnected or not. The default value is 1 to preserve the current behavior, and if it is set to 0 such components are not disconnected and the kernel will try to still use them (only first error will be logged). This is helpful for the case of multiple broken components (in different places), so actually all data is available. The broken components will be visible in gmirror list or graid3 list output with flag BROKEN.

The GEOM_MIRROR and GEOM_RAID3 classes now use parallel I/O request for synchronization to improve the performance. New sysctl variables kern.geom.mirror.sync_requests and kern.geom.raid3.sync_requests define how many parallel I/O requests should be used. Also, sysctl variables kern.geom.mirror.reqs_per_sync, kern.geom.mirror.syncs_per_sec, kern.geom.raid3.reqs_per_sync, and kern.geom.raid3.syncs_per_sec are deprecated and have been removed.

A new GEOM class GEOM_ZERO has been added. It creates very huge provider (41PB) /dev/gzero and mainly for performance testing. On BIO_READ request it zero-fills bio_data and on BIO_WRITE it does nothing.

The twa(4) driver has been updated to the 9.3.0.1 release on the 3ware Web site.

The geli(8) now supports loading keyfiles before root file system is mounted. For example, the following entries can be used in /boot/loader.conf to enable it:

geli_da0_keyfile0_load="YES"
geli_da0_keyfile0_type="da0:geli_keyfile0"
geli_da0_keyfile0_name="/boot/keys/da0.key0"
geli_da0_keyfile1_load="YES"
geli_da0_keyfile1_type="da0:geli_keyfile1"
geli_da0_keyfile1_name="/boot/keys/da0.key1"
geli_da0_keyfile2_load="YES"
geli_da0_keyfile2_type="da0:geli_keyfile2"
geli_da0_keyfile2_name="/boot/keys/da0.key2"

geli_da1s3a_keyfile0_load="YES"
geli_da1s3a_keyfile0_type="da1s3a:geli_keyfile0"
geli_da1s3a_keyfile0_name="/boot/keys/da1s3a.key"

The mfi(4) driver, which supports the LSI MegaRAID SAS controller family, has been added.

The rr232x(4) driver, which supports HighPoint's RocketRAID 232x series of RAID controllers, has been added.


2.2.6 Contributed Software

DRM has been updated to a snapshot from DRI CVS as of 20051202.


2.3 Userland Changes

The bsnmpd(1) utility now supports the Host Resources MIB described in RFC 2790.

The config(8) utility now supports the nocpu directive, which cancels the effect of a previous cpu directive.

The config(8) utility now reads DEFAULTS kernel configuration file if it exists in the current directory before the specified configuration file.

The csh(1) utility now supports NLS catalog. Note that this requires installing the shells/tcsh_nls port.

The devd(8) utility now supports a -f option to specify a configuration file.

The ln(1) utility now supports an -F flag which allows to delete existing empty directories, when creating symbolic links.

The locate(1) utility now supports a -0 flag to make this utility interoperable with xargs(1)'s -0 flag.

The ls(1) utility now supports an -I flag to disable the automatic -A flag for the superuser.

The ftpd(8) utility now creates a PID file /var/run/ftpd.pid even when no -p option is specified.

The getfacl(1) utility now supports a -q flag to suppress the per-file header comment listing the file name, owner, and group.

The gvinum(8) utility now supports commands to rename objects and to move a subdisk from one drive to another.

The jail(8) utility supports a -J jid_file option to write out a JidFile, similar to a PidFile, containing the jailid, path, hostname, IP and the command used to start the jail.

The kdump(1) utility now supports a -H flag, which causes kdump to print an additional field holding the threadid.

The kdump(1) program now supports a -s flag to suppress the display of I/O data.

The mergemaster(8) utility now supports an -A option to explicitly specify an architecture to pass through to the underlying makefiles.

The moused(8) daemon now supports an -H flag to enable horizontal virtual scrolling similar to a -V flag for vertical virtual scrolling.

The netstat(1) utility now supports printing ipsec(4) protocol statistics if the kernel was compiled with FAST_IPSEC rather than the KAME IPSEC stack. Note that the output of netstat -s -p ipsec differs depending on which stack is compiled into the kernel since they each keep different statistics.

The periodic(8) daily script now supports display of the status of gmirror(8), graid3(8), gstripe(8), and gconcat(8) devices. Note that these are disabled by default.

A new function, pidfile(3), which provides reliable pidfiles handling, has been implemented in libutil.

The rfcomm_sppd(1) now supports service name in addition to -c option with channel number. The supported names are: DUN (Dial-Up Networking), FAX (Fax), LAN (LAN Access Using PPP), and SP (Serial Port).

The snapinfo(8) utility, which shows snapshot locations on UFS filesystems, has been added.

The strtonum(3) library function has been implemented based on OpenBSD's implementation. This is an improved version of strtoll(3).

A bug in the ypwhich(1) utility which causes the -m option to produce an incorrect list of available named maps has been fixed.


2.3.1 /etc/rc.d Scripts

The bluetooth script has been added. This script will be called from devd(8) in response to device attachment/detachment events and to stop/start particular device without unplugging it by hand. The configuration parameters are in /etc/defaults/bluetooth.device.conf, and can be overridden by using /etc/bluetooth/$device.conf (where $device is ubt0, btcc0, and so on.) For more details, see bluetooth.conf(5).

The hcsecd and sdpd scripts have been added for hcsecd(8) and sdpd(8) daemons. These daemons can run even if no Bluetooth devices are attached to the system, but both daemons depend on Bluetooth socket layer and thus disabled by default. Bluetooth sockets layer must be either loaded as a module or compiled into kernel before the daemons can run.

The hostapd script for hostapd(8) has been added.

The jail script now supports the jail_interface option and the jail_jid_interface option which create an IP alias on the given interface.

The netif script now supports ipv4_addrs_ifn, which adds one or more IPv4 address from a ranged list in CIRD notation. For example:

ipv4_addrs_ed0="192.168.0.1/24 192.168.1.1-5/28"

The ppp-user script has been renamed to ppp.


2.4 Contributed Software

BIND has been updated from 9.3.1 to 9.3.2.

hostapd has been updated from version 0.3.9 to version 0.4.8.

GNU Troff has been updated from version 1.19 to version 1.19.2.

sendmail has been updated from 8.13.4 to 8.13.6.

The timezone database has been updated from the tzdata2005l release to the tzdata2005r release.

WPA Supplicant has been updated from version 0.3.9 to version 0.4.8.


2.5 Ports/Packages Collection Infrastructure

The pkg_add(1) command now supports an -P flag, which is the same as the -p flag except that the given prefix is also used recursively for the dependency packages if any.

The pkg_add(1) and pkg_create(1) utilities now support a -K flag to save packages to the current directory (or PKGDIR if defined) by default.

The pkg_create(1) program now supports an -x flag to support basic regular expressions for package name, an -E flag for extended regular expressions, and a -G for exact matching.

The pkg_version(1) utility now supports an -o flag to show the origin recorded on package generation instead of the package name, and an -O flag to list packages whose registered origin is origin only.

The portsnap(8) utility (sysutils/portsnap) has been added into the FreeBSD base system. This is a secure, easy to use, fast, lightweight, and generally good way for users to keep their ports trees up to date.

A incorrect handling of HTTP_PROXY_AUTH in the portsnap(8) utility has been fixed.

The startup scripts from the local_startup directory now evaluated by using rcorder(8) with scripts in the base system.

The suffix of startup scripts from the Ports Collection has been removed. This means foo.sh is renamed to foo, and now scripts whose name is something like foo.ORG will also be invoked. You are recommended to reinstall packages which install such scripts and remove extra files in the local_startup directory.

New rc.conf variables, ldconfig_local_dirs and ldconfig_local32_dirs have been added. These hold lists of local ldconfig(8) directories.

The @cwd command in pkg-plist now allows no directory argument. If no directory argument is given, it will set current working directory to the first prefix given by the @cwd command.


2.6 Release Engineering and Integration

The /var/audit directory and audit group have been added. These are for the TrustedBSD OpenBSM distribution, which will be imported in the future releases.

The supported version of the GNOME desktop environment (x11/gnome2) has been updated from 2.10.2 to 2.12.3.

The supported version of the KDE desktop environment (x11/kde2) has been updated from 3.4.2 to 3.5.1.

The supported version of the Perl interpreter (lang/perl5.8) has been updated from 5.8.7 to 5.8.8.

The supported version of the Xorg windowing system (x11/xorg) has been updated from 6.8.2 to 6.9.0.


3 Upgrading from previous releases of FreeBSD

Source upgrades to FreeBSD 6.1-RELEASE are only supported from FreeBSD 5.3-RELEASE or later. Users of older systems wanting to upgrade 6.1-RELEASE will need to update to FreeBSD 5.3 or newer first, then to FreeBSD 6.1-RELEASE.

Important: Upgrading FreeBSD should, of course, only be attempted after backing up all data and configuration files.


This file, and other release-related documents, can be downloaded from http://www.FreeBSD.org/snapshots/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.

For questions about this documentation, e-mail <doc@FreeBSD.org>.