UPDATING revision 285206
1139776SimpUpdating Information for FreeBSD current users
222521Sdyson
322521SdysonThis file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4164829SrodrigcSee end of file for further details.  For commonly done items, please see the
5234867SdaichiCOMMON ITEMS: section later in the file.  These instructions assume that you
6234867Sdaichibasically know what you are doing.  If not, then please consult the FreeBSD
7164829Srodrigchandbook:
81541Srgrimes
91541Srgrimes    http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
101541Srgrimes
111541SrgrimesItems affecting the ports and packages system can be found in
121541Srgrimes/usr/ports/UPDATING.  Please read that file before running portupgrade.
131541Srgrimes
141541SrgrimesNOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping
151541Srgrimesfrom older versions of FreeBSD, try WITHOUT_CLANG to bootstrap to the tip of
161541Srgrimesstable/10, and then rebuild without this option. The bootstrap process from
171541Srgrimesolder version of current is a bit fragile.
181541Srgrimes
191541Srgrimes20150703:
201541Srgrimes	The default Unbound configuration now enables remote control
211541Srgrimes	using a local socket.  Users who have already enabled the
221541Srgrimes	local_unbound service should regenerate their configuration
231541Srgrimes	by running "service local_unbound setup" as root.
241541Srgrimes
251541Srgrimes20150624:
261541Srgrimes	An additional fix for the issue described in the 20150614 sendmail
271541Srgrimes	entry below has been been committed in revision 284786.
281541Srgrimes
291541Srgrimes20150615:
301541Srgrimes	The fix for the issue described in the 20150614 sendmail entry
311541Srgrimes	below has been been committed in revision 284485.  The work
321541Srgrimes	around described in that entry is no longer needed unless the
331541Srgrimes	default setting is overridden by a confDH_PARAMETERS configuration
341541Srgrimes	setting of '5' or pointing to a 512 bit DH parameter file.
351541Srgrimes
3622521Sdyson20150614:
3750477Speter	The import of openssl to address the FreeBSD-SA-15:10.openssl
38164829Srodrigc	security advisory includes a change which rejects handshakes
391541Srgrimes	with DH parameters below 768 bits.  sendmail releases prior
401541Srgrimes	to 8.15.2 (not yet released), defaulted to a 512 bit
411541Srgrimes	DH parameter setting for client connections.  To work around
421541Srgrimes	this interoperability, sendmail can be configured to use a
43164829Srodrigc	2048 bit DH parameter by:
4422594Sbde
45164829Srodrigc	1. Edit /etc/mail/`hostname`.mc 
46164829Srodrigc	2. If a setting for confDH_PARAMETERS does not exist or
471541Srgrimes	   exists and is set to a string beginning with '5',
48164829Srodrigc	   replace it with '2'.
491541Srgrimes	3. If a setting for confDH_PARAMETERS exists and is set to
5051688Sdillon	   a file path, create a new file with:
51164829Srodrigc		openssl dhparam -out /path/to/file 2048
52164829Srodrigc	4. Rebuild the .cf file:
53164829Srodrigc		cd /etc/mail/; make; make install
54164829Srodrigc	5. Restart sendmail:
55164829Srodrigc		cd /etc/mail/; make restart
56164829Srodrigc
57164836Srodrigc	A sendmail patch is coming, at which time this file will be
58164836Srodrigc	updated.
59164829Srodrigc
6077031Sru20150601:
611541Srgrimes	chmod, chflags, chown and chgrp now affect symlinks in -R mode as
6251688Sdillon	defined in symlink(7); previously symlinks were silently ignored.
63164829Srodrigc
64164829Srodrigc20150430:
6551688Sdillon	The const qualifier has been removed from iconv(3) to comply with
661541Srgrimes	POSIX.  The ports tree is aware of this from r384038 onwards.
67164829Srodrigc
68164829Srodrigc20141215:
69164829Srodrigc	At svn r275807, The default linux compat kernel ABI has been adjusted
7051688Sdillon	to 2.6.18 in support of the linux-c6 compat ports infrastructure
71164829Srodrigc	update.  If you wish to continue using the linux-f10 compat ports,
7251688Sdillon	add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
7351688Sdillon	encouraged to update their linux-compat packages to linux-c6 during
74185283Sdaichi	their next update cycle.
75185283Sdaichi	
76185283Sdaichi	See ports/UPDATING 20141209 and 20141215 on migration to CentOS 6 ports.
77185283Sdaichi
78164829Srodrigc20141205:
79172637Sdaichi	pjdfstest has been integrated into kyua as an opt-in test suite.
8051688Sdillon	Please see share/doc/pjdfstest/README for a more details on how to
81164829Srodrigc	execute it.
82164829Srodrigc
83164829Srodrigc20141118:
84164829Srodrigc	10.1-RELEASE.
85164829Srodrigc
86164829Srodrigc20140904:
87164829Srodrigc	The ofwfb driver, used to provide a graphics console on PowerPC when
88164829Srodrigc	using vt(4), no longer allows mmap() of all of physical memory. This
89164829Srodrigc	will prevent Xorg on PowerPC with some ATI graphics cards from
90164829Srodrigc	initializing properly unless x11-servers/xorg-server is updated to
9151688Sdillon	1.12.4_8 or newer.
92164829Srodrigc
93164829Srodrigc20140831:
94164829Srodrigc	The libatf-c and libatf-c++ major versions were downgraded to 0 and
95164829Srodrigc	1 respectively to match the upstream numbers.  They were out of
96164829Srodrigc	sync because, when they were originally added to FreeBSD, the
97164829Srodrigc	upstream versions were not respected.  These libraries are private
98164829Srodrigc	and not yet built by default, so renumbering them should be a
99164829Srodrigc	non-issue.  However, unclean source trees will yield broken test
100164829Srodrigc	programs once the operator executes "make delete-old-libs" after a
101164829Srodrigc	"make installworld".
102164829Srodrigc
103164829Srodrigc	Additionally, the atf-sh binary was made private by moving it into
104164829Srodrigc	/usr/libexec/.  Already-built shell test programs will keep the
10551688Sdillon	path to the old binary so they will break after "make delete-old"
106164829Srodrigc	is run.
10751688Sdillon
108164829Srodrigc	If you are using WITH_TESTS=yes (not the default), wipe the object
109164829Srodrigc	tree and rebuild from scratch to prevent spurious test failures.
11051688Sdillon	This is only needed once: the misnumbered libraries and misplaced
1111541Srgrimes	binaries have been added to OptionalObsoleteFiles.inc so they will
112164829Srodrigc	be removed during a clean upgrade.
1131541Srgrimes
114164829Srodrigc20140814:
115164829Srodrigc	The ixgbe tunables now match their sysctl counterparts, for example:
116164829Srodrigc	hw.ixgbe.enable_aim => hw.ix.enable_aim
117164829Srodrigc	Anyone using ixgbe tunables should ensure they update /boot/loader.conf.
1181541Srgrimes
11951688Sdillon20140801:
120164829Srodrigc	The NFSv4.1 server committed by r269398 changes the internal
12151688Sdillon	function call interfaces used between the NFS and krpc modules.
122164829Srodrigc	As such, __FreeBSD_version was bumped.
123164829Srodrigc
124164829Srodrigc20140729:
12551688Sdillon	The default unbound configuration has been modified to address
126164829Srodrigc	issues with reverse lookups on networks that use private
127164829Srodrigc	address ranges.  If you use the local_unbound service, run
128164829Srodrigc	"service local_unbound setup" as root to regenerate your
129234867Sdaichi	configuration, then "service local_unbound reload" to load the
130164829Srodrigc	new configuration.
131164829Srodrigc
132164829Srodrigc20140717:
13351688Sdillon	It is no longer necessary to include the dwarf version in your DEBUG
134164829Srodrigc	options in your kernel config file. The bug that required it to be
13551688Sdillon	placed in the config file has bene fixed. DEBUG should now just
136164829Srodrigc	contain -g. The build system will automatically update things
137234867Sdaichi	to do the right thing.
138175202Sattilio
139164829Srodrigc20140715:
1401541Srgrimes	Several ABI breaking changes were merged to CTL and new iSCSI code.
141164829Srodrigc	All CTL and iSCSI-related tools, such as ctladm, ctld, iscsid and
142164829Srodrigc	iscsictl need to be rebuilt to work with a new kernel.
143164829Srodrigc
144164829Srodrigc20140708:
145164829Srodrigc	The WITHOUT_VT_SUPPORT kernel config knob has been renamed
146164829Srodrigc	WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
147164829Srodrigc	which differs from the behaviour controlled by this knob.)
148164829Srodrigc
149234867Sdaichi20140608:
150164829Srodrigc	On i386 and amd64 systems, the onifconsole flag is now set by default
15151688Sdillon	in /etc/ttys for ttyu0. This causes ttyu0 to be automatically enabled
152234867Sdaichi	as a login TTY if it is set in the bootloader as an active kernel
153164829Srodrigc	console. No changes in behavior should result otherwise. To revert to
154164829Srodrigc	the previous behavior, set ttyu0 to "off" in /etc/ttys.
1551541Srgrimes
156164829Srodrigc20140512:
157175202Sattilio	Clang and llvm have been upgraded to 3.4.1 release.
158164829Srodrigc
159175202Sattilio20140321:
160175202Sattilio	Clang and llvm have been upgraded to 3.4 release.
16151688Sdillon
162175202Sattilio20140306:
163276500Skib	If a Makefile in a tests/ directory was auto-generating a Kyuafile
164172637Sdaichi	instead of providing an explicit one, this would prevent such
1651541Srgrimes	Makefile from providing its own Kyuafile in the future during
166164829Srodrigc	NO_CLEAN builds.  This has been fixed in the Makefiles but manual
1671541Srgrimes	intervention is needed to clean an objdir if you use NO_CLEAN:
168164829Srodrigc	  # find /usr/obj -name Kyuafile | xargs rm -f
16922521Sdyson
17022521Sdyson20140303:
17151688Sdillon	OpenSSH will now ignore errors caused by kernel lacking of Capsicum
172164829Srodrigc	capability mode support.  Please note that enabling the feature in
17351688Sdillon	kernel is still highly recommended.
174164829Srodrigc
175164829Srodrigc20140227:
1761541Srgrimes	OpenSSH is now built with sandbox support, and will use sandbox as
177164829Srodrigc	the default privilege separation method.  This requires Capsicum
178164829Srodrigc	capability mode support in kernel.
179164829Srodrigc
180164829Srodrigc20140216:
181164829Srodrigc	The nve(4) driver for NVIDIA nForce MCP Ethernet adapters has
1821541Srgrimes	been deprecated and will not be part of FreeBSD 11.0 and later
183164829Srodrigc	releases.  If you use this driver, please consider switching to
18432598Skato	the nfe(4) driver instead.
185164829Srodrigc
18651688Sdillon20140120:
187164829Srodrigc	10.0-RELEASE.
188164829Srodrigc
189234867Sdaichi20131216:
1901541Srgrimes	The behavior of gss_pseudo_random() for the krb5 mechanism
19151688Sdillon	has changed, for applications requesting a longer random string
192164829Srodrigc	than produced by the underlying enctype's pseudo-random() function.
193164829Srodrigc	In particular, the random string produced from a session key of
194164829Srodrigc	enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
195164829Srodrigc	be different at the 17th octet and later, after this change.
196164829Srodrigc	The counter used in the PRF+ construction is now encoded as a
197182371Sattilio	big-endian integer in accordance with RFC 4402.
198164829Srodrigc	__FreeBSD_version is bumped to 1000701.
199164829Srodrigc
200164829Srodrigc20131108:
201164829Srodrigc	The WITHOUT_ATF build knob has been removed and its functionality
202164829Srodrigc	has been subsumed into the more generic WITHOUT_TESTS.  If you were
2031541Srgrimes	using the former to disable the build of the ATF libraries, you
2041541Srgrimes	should change your settings to use the latter.
2051541Srgrimes
206164829Srodrigc20131031:
2071541Srgrimes	The default version of mtree is nmtree which is obtained from
208164829Srodrigc	NetBSD.  The output is generally the same, but may vary
209164829Srodrigc	slightly.  If you found you need identical output adding
210164829Srodrigc	"-F freebsd9" to the command line should do the trick.  For the
211164829Srodrigc	time being, the old mtree is available as fmtree.
212164829Srodrigc
21351688Sdillon20131014:
214164829Srodrigc	libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
2151541Srgrimes	This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
216164829Srodrigc	1.1.4_8 and verify bsdyml not linked in, before running "make
217164829Srodrigc	delete-old-libs":
218164829Srodrigc	  # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
2191541Srgrimes	  or
220164829Srodrigc	  # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
221164829Srodrigc
222164829Srodrigc20131010:
223164829Srodrigc	The rc.d/jail script has been updated to support jail(8)
224164829Srodrigc	configuration file.  The "jail_<jname>_*" rc.conf(5) variables
225164829Srodrigc	for per-jail configuration are automatically converted to
226164829Srodrigc	/var/run/jail.<jname>.conf before the jail(8) utility is invoked.
22751688Sdillon	This is transparently backward compatible.  See below about some
228164829Srodrigc	incompatibilities and rc.conf(5) manual page for more details.
22951688Sdillon
230164829Srodrigc	These variables are now deprecated in favor of jail(8) configuration
2311541Srgrimes	file.  One can use "rc.d/jail config <jname>" command to generate
232164829Srodrigc	a jail(8) configuration file in /var/run/jail.<jname>.conf without
233234867Sdaichi	running the jail(8) utility.   The default pathname of the
2341541Srgrimes	configuration file is /etc/jail.conf and can be specified by
2351541Srgrimes	using $jail_conf or $jail_<jname>_conf variables.
2361541Srgrimes
2371541Srgrimes	Please note that jail_devfs_ruleset accepts an integer at
238164829Srodrigc	this moment.  Please consider to rewrite the ruleset name
2391541Srgrimes	with an integer.
240164829Srodrigc
241164829Srodrigc20130930:
242164829Srodrigc	BIND has been removed from the base system.  If all you need
243164829Srodrigc	is a local resolver, simply enable and start the local_unbound
244164829Srodrigc	service instead.  Otherwise, several versions of BIND are
2451541Srgrimes	available in the ports tree.   The dns/bind99 port is one example.
246164829Srodrigc
247164829Srodrigc	With this change, nslookup(1) and dig(1) are no longer in the base
248164829Srodrigc	system.  Users should instead use host(1) and drill(1) which are
249164829Srodrigc	in the base system.  Alternatively, nslookup and dig can
250164829Srodrigc	be obtained by installing the dns/bind-tools port.
251164829Srodrigc
2521541Srgrimes20130916:
2531541Srgrimes	With the addition of unbound(8), a new unbound user is now
254164829Srodrigc	required during installworld.  "mergemaster -p" can be used to
255164829Srodrigc	add the user prior to installworld, as documented in the handbook.
256164829Srodrigc
257164829Srodrigc20130911:
258164829Srodrigc	OpenSSH is now built with DNSSEC support, and will by default
259164829Srodrigc	silently trust signed SSHFP records.  This can be controlled with
260164829Srodrigc	the VerifyHostKeyDNS client configuration setting.  DNSSEC support
261164829Srodrigc	can be disabled entirely with the WITHOUT_LDNS option in src.conf.
262164829Srodrigc
263164829Srodrigc20130906:
264164829Srodrigc	The GNU Compiler Collection and C++ standard library (libstdc++)
265164829Srodrigc	are no longer built by default on platforms where clang is the system
266164829Srodrigc	compiler.  You can enable them with the WITH_GCC and WITH_GNUCXX
267164829Srodrigc	options in src.conf.  
268234867Sdaichi
269176559Sattilio20130905:
270175202Sattilio	The PROCDESC kernel option is now part of the GENERIC kernel
271164829Srodrigc	configuration and is required for the rwhod(8) to work.
2721541Srgrimes	If you are using custom kernel configuration, you should include
273164829Srodrigc	'options PROCDESC'.
274164829Srodrigc
275164829Srodrigc20130905:
276234867Sdaichi	The API and ABI related to the Capsicum framework was modified
277164829Srodrigc	in backward incompatible way. The userland libraries and programs
278164829Srodrigc	have to be recompiled to work with the new kernel. This includes the
279164829Srodrigc	following libraries and programs, but the whole buildworld is
280164829Srodrigc	advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
281164829Srodrigc	kdump, procstat, rwho, rwhod, uniq.
282164829Srodrigc
283164829Srodrigc20130903:
284164829Srodrigc	AES-NI intrinsic support has been added to gcc.  The AES-NI module
285164829Srodrigc	has been updated to use this support.  A new gcc is required to build
286175202Sattilio	the aesni module on both i386 and amd64.
2871541Srgrimes
28851688Sdillon20130821:
289164829Srodrigc	The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
29051688Sdillon	Thus "device padlock_rng" and "device rdrand_rng" should be
291164829Srodrigc	used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
292164829Srodrigc
293164829Srodrigc20130813:
294164829Srodrigc	WITH_ICONV has been split into two feature sets.  WITH_ICONV now
295164829Srodrigc	enables just the iconv* functionality and is now on by default.
296164829Srodrigc	WITH_LIBICONV_COMPAT enables the libiconv api and link time
297164829Srodrigc	compatability.  Set WITHOUT_ICONV to build the old way.
298185283Sdaichi	If you have been using WITH_ICONV before, you will very likely
299185283Sdaichi	need to turn on WITH_LIBICONV_COMPAT.
300185283Sdaichi
301185283Sdaichi20130806:
302185283Sdaichi	INVARIANTS option now enables DEBUG for code with OpenSolaris and
303185283Sdaichi	Illumos origin, including ZFS.  If you have INVARIANTS in your
304185283Sdaichi	kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
305185283Sdaichi	explicitly.
306185283Sdaichi	DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
307185283Sdaichi	locks if WITNESS option was set.  Because that generated a lot of
308185283Sdaichi	witness(9) reports and all of them were believed to be false
309185283Sdaichi	positives, this is no longer done.  New option OPENSOLARIS_WITNESS
310185283Sdaichi	can be used to achieve the previous behavior.
311185283Sdaichi
312185283Sdaichi20130806:
313185283Sdaichi	Timer values in IPv6 data structures now use time_uptime instead
314185283Sdaichi	of time_second.  Although this is not a user-visible functional
315185283Sdaichi	change, userland utilities which directly use them---ndp(8),
316185283Sdaichi	rtadvd(8), and rtsold(8) in the base system---need to be updated
317185283Sdaichi	to r253970 or later.
318185283Sdaichi
319164829Srodrigc20130802:
320164829Srodrigc	find -delete can now delete the pathnames given as arguments,
321164829Srodrigc	instead of only files found below them or if the pathname did
322164829Srodrigc	not contain any slashes. Formerly, the following error message
323164829Srodrigc	would result:
324164829Srodrigc
325175202Sattilio	find: -delete: <path>: relative path potentially not safe
326164829Srodrigc
32751688Sdillon	Deleting the pathnames given as arguments can be prevented
328164829Srodrigc	without error messages using -mindepth 1 or by changing
3291541Srgrimes	directory and passing "." as argument to find. This works in the
330185283Sdaichi	old as well as the new version of find.
331172637Sdaichi
332172637Sdaichi20130726:
333164829Srodrigc	Behavior of devfs rules path matching has been changed.
334164829Srodrigc	Pattern is now always matched against fully qualified devfs
335164829Srodrigc	path and slash characters must be explicitly matched by
336164829Srodrigc	slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
337164829Srodrigc	subdirectories must be reviewed.
3381541Srgrimes
339276500Skib20130716:
340172637Sdaichi	The default ARM ABI has changed to the ARM EABI. The old ABI is
341172637Sdaichi	incompatible with the ARM EABI and all programs and modules will
342164829Srodrigc	need to be rebuilt to work with a new kernel.
34351688Sdillon
344164829Srodrigc	To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
345164829Srodrigc
34651688Sdillon	NOTE: Support for the old ABI will be removed in the future and
347164829Srodrigc	users are advised to upgrade.
348164829Srodrigc
349164829Srodrigc20130709:
350164829Srodrigc	pkg_install has been disconnected from the build if you really need it
351164829Srodrigc	you should add WITH_PKGTOOLS in your src.conf(5).
352164829Srodrigc
353164829Srodrigc20130709:
354164829Srodrigc	Most of network statistics structures were changed to be able
35551688Sdillon	keep 64-bits counters. Thus all tools, that work with networking
356164829Srodrigc	statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
357164829Srodrigc
358185283Sdaichi20130629:
359185283Sdaichi	Fix targets that run multiple make's to use && rather than ;
360164829Srodrigc	so that subsequent steps depend on success of previous.
361164829Srodrigc
362164829Srodrigc	NOTE: if building 'universe' with -j* on stable/8 or stable/9
363164829Srodrigc	it would be better to start the build using bmake, to avoid
364164829Srodrigc	overloading the machine.
365164829Srodrigc
366185283Sdaichi20130618:
367185283Sdaichi	Fix a bug that allowed a tracing process (e.g. gdb) to write
368185283Sdaichi	to a memory-mapped file in the traced process's address space
369185283Sdaichi	even if neither the traced process nor the tracing process had
370185283Sdaichi	write access to that file.
371185283Sdaichi
372185283Sdaichi20130615:
373234867Sdaichi	CVS has been removed from the base system.  An exact copy
374164829Srodrigc	of the code is available from the devel/cvs port.
375175294Sattilio
376164829Srodrigc20130613:
377164829Srodrigc	Some people report the following error after the switch to bmake:
37851688Sdillon
37951688Sdillon		make: illegal option -- J
380185283Sdaichi		usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
381164829Srodrigc			...
38251688Sdillon		*** [buildworld] Error code 2
383164829Srodrigc
384164829Srodrigc	this likely due to an old instance of make in
38551688Sdillon	${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
386164829Srodrigc	which src/Makefile will use that blindly, if it exists, so if
387164829Srodrigc	you see the above error:
388164829Srodrigc
389164829Srodrigc		rm -rf `make -V MAKEPATH`
390164829Srodrigc
391164829Srodrigc	should resolve it.
392164829Srodrigc
39351688Sdillon20130516:
394164829Srodrigc	Use bmake by default.
395164829Srodrigc	Whereas before one could choose to build with bmake via
396185283Sdaichi	-DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
397185283Sdaichi	make. The goal is to remove these knobs for 10-RELEASE.
398164829Srodrigc
399164829Srodrigc	It is worth noting that bmake (like gmake) treats the command
400164829Srodrigc	line as the unit of failure, rather than statements within the
401164829Srodrigc	command line.  Thus '(cd some/where && dosomething)' is safer
402164829Srodrigc	than 'cd some/where; dosomething'. The '()' allows consistent
403164829Srodrigc	behavior in parallel build.
404164829Srodrigc
405164829Srodrigc20130429:
406164829Srodrigc        Fix a bug that allows NFS clients to issue READDIR on files.
407164829Srodrigc
408164829Srodrigc20130426:
409164829Srodrigc	The WITHOUT_IDEA option has been removed because
410164829Srodrigc	the IDEA patent expired.
411164829Srodrigc
412164829Srodrigc20130426:
41328233Skato	The sysctl which controls TRIM support under ZFS has been renamed
4141541Srgrimes	from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
4151541Srgrimes	enabled by default.
416164829Srodrigc
417164829Srodrigc20130425:
4181541Srgrimes	The mergemaster command now uses the default MAKEOBJDIRPREFIX
4191541Srgrimes	rather than creating it's own in the temporary directory in
4201541Srgrimes	order allow access to bootstrapped versions of tools such as
42125535Skato	install and mtree.  When upgrading from version of FreeBSD where
422164829Srodrigc	the install command does not support -l, you will need to
4231541Srgrimes	install a new mergemaster command if mergemaster -p is required.
424164829Srodrigc	This can be accomplished with the command (cd src/usr.sbin/mergemaster
425164829Srodrigc	&& make install).
426164829Srodrigc
427164829Srodrigc20130404:
428164829Srodrigc	Legacy ATA stack, disabled and replaced by new CAM-based one since
4291541Srgrimes	FreeBSD 9.0, completely removed from the sources.  Kernel modules
430164829Srodrigc	atadisk and atapi*, user-level tools atacontrol and burncd are
4311541Srgrimes	removed.  Kernel option `options ATA_CAM` is now permanently enabled
432185283Sdaichi	and removed.
433185283Sdaichi
434164829Srodrigc20130319:
435164829Srodrigc	SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
436164829Srodrigc	and socketpair(2). Software, in particular Kerberos, may
437164829Srodrigc	automatically detect and use these during building. The resulting
438164829Srodrigc	binaries will not work on older kernels.
439164829Srodrigc
440185283Sdaichi20130308:
441185283Sdaichi	CTL_DISABLE has also been added to the sparc64 GENERIC (for further
442185283Sdaichi	information, see the respective 20130304 entry).
443185283Sdaichi
444185283Sdaichi20130304:
445185283Sdaichi	Recent commits to callout(9) changed the size of struct callout,
446185283Sdaichi	so the KBI is probably heavily disturbed. Also, some functions
447234867Sdaichi	in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
448164829Srodrigc	by macros. Every kernel module using it won't load, so rebuild
449175294Sattilio	is requested.
450164829Srodrigc
45135823Smsmith	The ctl device has been re-enabled in GENERIC for i386 and amd64,
4521541Srgrimes	but does not initialize by default (because of the new CTL_DISABLE
453164829Srodrigc	option) to save memory.  To re-enable it, remove the CTL_DISABLE
454185283Sdaichi	option from the kernel config file or set kern.cam.ctl.disable=0
455164829Srodrigc	in /boot/loader.conf.
456164829Srodrigc
45751688Sdillon20130301:
4581541Srgrimes	The ctl device has been disabled in GENERIC for i386 and amd64.
4591541Srgrimes	This was done due to the extra memory being allocated at system
46025535Skato	initialisation time by the ctl driver which was only used if
461164829Srodrigc	a CAM target device was created.  This makes a FreeBSD system
46222521Sdyson	unusable on 128MB or less of RAM.
463164829Srodrigc
464164829Srodrigc20130208:
465164829Srodrigc	A new compression method (lz4) has been merged to -HEAD.  Please
466164829Srodrigc	refer to zpool-features(7) for more information.
467164829Srodrigc
468164829Srodrigc	Please refer to the "ZFS notes" section of this file for information
469164829Srodrigc	on upgrading boot ZFS pools.
470164829Srodrigc
47122521Sdyson20130129:
472164829Srodrigc	A BSD-licensed patch(1) variant has been added and is installed
473164829Srodrigc	as bsdpatch, being the GNU version the default patch.
474185283Sdaichi	To inverse the logic and use the BSD-licensed one as default,
475185283Sdaichi	while having the GNU version installed as gnupatch, rebuild
476164829Srodrigc	and install world with the WITH_BSD_PATCH knob set.
477164829Srodrigc
478164829Srodrigc20130121:
479164829Srodrigc	Due to the use of the new -l option to install(1) during build
480164829Srodrigc	and install, you must take care not to directly set the INSTALL
481164829Srodrigc	make variable in your /etc/make.conf, /etc/src.conf, or on the
482164829Srodrigc	command line.  If you wish to use the -C flag for all installs
483164829Srodrigc	you may be able to add INSTALL+=-C to /etc/make.conf or
484164829Srodrigc	/etc/src.conf.
485164829Srodrigc
486164829Srodrigc20130118:
487164829Srodrigc	The install(1) option -M has changed meaning and now takes an
488164829Srodrigc	argument that is a file or path to append logs to.  In the
489164829Srodrigc	unlikely event that -M was the last option on the command line
490164829Srodrigc	and the command line contained at least two files and a target
491164829Srodrigc	directory the first file will have logs appended to it.  The -M
492164829Srodrigc	option served little practical purpose in the last decade so its
493164829Srodrigc	use is expected to be extremely rare.
494164829Srodrigc
495164829Srodrigc20121223:
496164829Srodrigc	After switching to Clang as the default compiler some users of ZFS
497164829Srodrigc	on i386 systems started to experience stack overflow kernel panics.
498164829Srodrigc	Please consider using 'options KSTACK_PAGES=4' in such configurations.
499164829Srodrigc
500164829Srodrigc20121222:
501164829Srodrigc	GEOM_LABEL now mangles label names read from file system metadata.
502164829Srodrigc	Mangling affect labels containing spaces, non-printable characters,
503164829Srodrigc	'%' or '"'. Device names in /etc/fstab and other places may need to
504164829Srodrigc	be updated.
505164829Srodrigc
506164829Srodrigc20121217:
507116366Sdas	By default, only the 10 most recent kernel dumps will be saved.  To
508164829Srodrigc	restore the previous behaviour (no limit on the number of kernel dumps
509116366Sdas	stored in the dump directory) add the following line to /etc/rc.conf:
510164829Srodrigc
511170152Skib		savecore_flags=""
512164829Srodrigc
513164829Srodrigc20121201:
514164829Srodrigc	With the addition of auditdistd(8), a new auditdistd user is now
515164829Srodrigc	required during installworld.  "mergemaster -p" can be used to
516164829Srodrigc	add the user prior to installworld, as documented in the handbook.
517170152Skib
518164829Srodrigc20121117:
519164829Srodrigc	The sin6_scope_id member variable in struct sockaddr_in6 is now
520164829Srodrigc	filled by the kernel before passing the structure to the userland via
521164829Srodrigc	sysctl or routing socket.  This means the KAME-specific embedded scope
522164829Srodrigc	id in sin6_addr.s6_addr[2] is always cleared in userland application.
523164829Srodrigc	This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
524164829Srodrigc	__FreeBSD_version is bumped to 1000025.
525164829Srodrigc
526164829Srodrigc20121105:
527164829Srodrigc	On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
528164829Srodrigc	This means that the world and kernel will be compiled with clang
529164829Srodrigc	and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
530164829Srodrigc	and /usr/bin/cpp.  To disable this behavior and revert to building
531164829Srodrigc	with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
532164829Srodrigc	of current may need to bootstrap WITHOUT_CLANG first if the clang
533164829Srodrigc	build fails (its compatibility window doesn't extend to the 9 stable
534164829Srodrigc	branch point).
535178491Sdaichi
536164829Srodrigc20121102:
537164829Srodrigc	The IPFIREWALL_FORWARD kernel option has been removed. Its
538164829Srodrigc	functionality now turned on by default.
539116366Sdas
54022521Sdyson20121023:
54122521Sdyson	The ZERO_COPY_SOCKET kernel option has been removed and
54225535Skato	split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
543164829Srodrigc	NB: SOCKET_SEND_COW uses the VM page based copy-on-write
5441541Srgrimes	mechanism which is not safe and may result in kernel crashes.
545164829Srodrigc	NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
546164829Srodrigc	driver supports disposeable external page sized mbuf storage.
547164829Srodrigc	Proper replacements for both zero-copy mechanisms are under
548164829Srodrigc	consideration and will eventually lead to complete removal
549164829Srodrigc	of the two kernel options.
550164829Srodrigc
551234867Sdaichi20121023:
552164829Srodrigc	The IPv4 network stack has been converted to network byte
5531541Srgrimes	order. The following modules need to be recompiled together
554164829Srodrigc	with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
555164829Srodrigc	pf(4), ipfw(4), ng_ipfw(4), stf(4).
556185283Sdaichi
557185283Sdaichi20121022:
558164829Srodrigc	Support for non-MPSAFE filesystems was removed from VFS. The
559234867Sdaichi	VFS_VERSION was bumped, all filesystem modules shall be
560234867Sdaichi	recompiled.
561164829Srodrigc
562164829Srodrigc20121018:
563164829Srodrigc	All the non-MPSAFE filesystems have been disconnected from
564234867Sdaichi	the build. The full list includes: codafs, hpfs, ntfs, nwfs,
565234867Sdaichi	portalfs, smbfs, xfs.
566234867Sdaichi
567164829Srodrigc20121016:
5681541Srgrimes	The interface cloning API and ABI has changed. The following
569164829Srodrigc	modules need to be recompiled together with kernel:
5701541Srgrimes	ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
571164829Srodrigc	vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
572164829Srodrigc	faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
573164829Srodrigc
574164829Srodrigc20121015:
575164829Srodrigc	The sdhci driver was split in two parts: sdhci (generic SD Host
576164829Srodrigc	Controller logic) and sdhci_pci (actual hardware driver).
577164829Srodrigc	No kernel config modifications are required, but if you
578164829Srodrigc	load sdhc as a module you must switch to sdhci_pci instead.
579164829Srodrigc
580164829Srodrigc20121014:
581164829Srodrigc	Import the FUSE kernel and userland support into base system.
582164829Srodrigc
58351688Sdillon20121013:
584164829Srodrigc	The GNU sort(1) program has been removed since the BSD-licensed
5851541Srgrimes	sort(1) has been the default for quite some time and no serious
586164829Srodrigc	problems have been reported.  The corresponding WITH_GNU_SORT
587164829Srodrigc	knob has also gone.
588164829Srodrigc
589234867Sdaichi20121006:
590164829Srodrigc	The pfil(9) API/ABI for AF_INET family has been changed. Packet
591164829Srodrigc	filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
592164829Srodrigc	with new kernel.
593164829Srodrigc
594164829Srodrigc20121001:
595164829Srodrigc	The net80211(4) ABI has been changed to allow for improved driver
596164829Srodrigc	PS-POLL and power-save support.  All wireless drivers need to be
597164829Srodrigc	recompiled to work with the new kernel.
598164829Srodrigc
599164829Srodrigc20120913:
600234867Sdaichi	The random(4) support for the VIA hardware random number
6011541Srgrimes	generator (`PADLOCK') is no longer enabled unconditionally.
602164829Srodrigc	Add the padlock_rng device in the custom kernel config if
603164829Srodrigc	needed.  The GENERIC kernels on i386 and amd64 do include the
6041541Srgrimes	device, so the change only affects the custom kernel
605164829Srodrigc	configurations.
606178491Sdaichi
60751688Sdillon20120908:
608164829Srodrigc	The pf(4) packet filter ABI has been changed. pfctl(8) and
609234867Sdaichi	snmp_pf module need to be recompiled to work with new kernel.
610164829Srodrigc
611164829Srodrigc20120828:
612164829Srodrigc	A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
6131541Srgrimes	to -HEAD. Pools that have empty_bpobj in active state can not be
6141541Srgrimes	imported read-write with ZFS implementations that do not support
6151541Srgrimes	this feature. For more information read the zpool-features(5)
61651688Sdillon	manual page.
617164829Srodrigc
61851688Sdillon20120727:
61925535Skato	The sparc64 ZFS loader has been changed to no longer try to auto-
620184413Strasz	detect ZFS providers based on diskN aliases but now requires these
621164829Srodrigc	to be explicitly listed in the OFW boot-device environment variable. 
622164829Srodrigc
6231541Srgrimes20120712:
624164829Srodrigc	The OpenSSL has been upgraded to 1.0.1c.  Any binaries requiring
625164829Srodrigc	libcrypto.so.6 or libssl.so.6 must be recompiled.  Also, there are
626164829Srodrigc	configuration changes.  Make sure to merge /etc/ssl/openssl.cnf.
627164829Srodrigc
628164829Srodrigc20120712:
6291541Srgrimes	The following sysctls and tunables have been renamed for consistency
630164829Srodrigc	with other variables:
631164829Srodrigc	  kern.cam.da.da_send_ordered   -> kern.cam.da.send_ordered
632164829Srodrigc	  kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
633164829Srodrigc
634164829Srodrigc20120628:
635164829Srodrigc	The sort utility has been replaced with BSD sort.  For now, GNU sort
636164829Srodrigc	is also available as "gnusort" or the default can be set back to
637184413Strasz	GNU sort by setting WITH_GNU_SORT.  In this case, BSD sort will be
638164829Srodrigc	installed as "bsdsort".
639184413Strasz
640164829Srodrigc20120611:
641184413Strasz	A new version of ZFS (pool version 5000) has been merged to -HEAD.
642164829Srodrigc	Starting with this version the old system of ZFS pool versioning
643164829Srodrigc	is superseded by "feature flags". This concept enables forward
6441541Srgrimes	compatibility against certain future changes in functionality of ZFS
645164829Srodrigc	pools. The first read-only compatible "feature flag" for ZFS pools
646164829Srodrigc	is named "com.delphix:async_destroy". For more information
647164829Srodrigc	read the new zpool-features(5) manual page.
648194498Sbrooks	Please refer to the "ZFS notes" section of this file for information
649194498Sbrooks	on upgrading boot ZFS pools.
650194498Sbrooks
651194498Sbrooks20120417:
652194498Sbrooks	The malloc(3) implementation embedded in libc now uses sources imported
653194498Sbrooks	as contrib/jemalloc.  The most disruptive API change is to
654194498Sbrooks	/etc/malloc.conf.  If your system has an old-style /etc/malloc.conf,
655194498Sbrooks	delete it prior to installworld, and optionally re-create it using the
656164829Srodrigc	new format after rebooting.  See malloc.conf(5) for details
657164829Srodrigc	(specifically the TUNING section and the "opt.*" entries in the MALLCTL
658164829Srodrigc	NAMESPACE section).
659184413Strasz
660164829Srodrigc20120328:
661184413Strasz	Big-endian MIPS TARGET_ARCH values no longer end in "eb".  mips64eb
662164829Srodrigc	is now spelled mips64.  mipsn32eb is now spelled mipsn32.  mipseb is
663184413Strasz	now spelled mips.  This is to aid compatibility with third-party
664164829Srodrigc	software that expects this naming scheme in uname(3).  Little-endian
665164829Srodrigc	settings are unchanged. If you are updating a big-endian mips64 machine
666164829Srodrigc	from before this change, you may need to set MACHINE_ARCH=mips64 in
6671541Srgrimes	your environment before the new build system will recognize your machine.
6681541Srgrimes
66925535Skato20120306:
670164829Srodrigc	Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
6711541Srgrimes	platforms.
672164829Srodrigc
673164829Srodrigc20120229:
674164829Srodrigc	Now unix domain sockets behave "as expected" on	nullfs(5). Previously
675164829Srodrigc	nullfs(5) did not pass through all behaviours to the underlying layer,
676164829Srodrigc	as a result if we bound to a socket on the lower layer we could connect
677164829Srodrigc	only to the lower path; if we bound to the upper layer we could connect
678184413Strasz	only to	the upper path. The new behavior is one can connect to both the
679164829Srodrigc	lower and the upper paths regardless what layer path one binds to.
6801541Srgrimes
681164829Srodrigc20120211:
682164829Srodrigc	The getifaddrs upgrade path broken with 20111215 has been restored.
683185283Sdaichi	If you have upgraded in between 20111215 and 20120209 you need to
684185283Sdaichi	recompile libc again with your kernel.  You still need to recompile
685164829Srodrigc	world to be able to configure CARP but this restriction already
686164829Srodrigc	comes from 20111215.
687164829Srodrigc
688164829Srodrigc20120114:
689164829Srodrigc	The set_rcvar() function has been removed from /etc/rc.subr.  All
690184413Strasz	base and ports rc.d scripts have been updated, so if you have a
691164829Srodrigc	port installed with a script in /usr/local/etc/rc.d you can either
692164829Srodrigc	hand-edit the rcvar= line, or reinstall the port.
693184413Strasz
69451688Sdillon	An easy way to handle the mass-update of /etc/rc.d:
69529084Skato	rm /etc/rc.d/* && mergemaster -i
696164829Srodrigc
69743305Sdillon20120109:
69843305Sdillon	panic(9) now stops other CPUs in the SMP systems, disables interrupts
69929084Skato	on the current CPU and prevents other threads from running.
70043305Sdillon	This behavior can be reverted using the kern.stop_scheduler_on_panic
70143305Sdillon	tunable/sysctl.
70229084Skato	The new behavior can be incompatible with kern.sync_on_panic.
70329084Skato
70451688Sdillon20111215:
705164829Srodrigc	The carp(4) facility has been changed significantly. Configuration
706184413Strasz	of the CARP protocol via ifconfig(8) has changed, as well as format
7071541Srgrimes	of CARP events submitted to devd(8) has changed. See manual pages
708164829Srodrigc	for more information. The arpbalance feature of carp(4) is currently
70951688Sdillon	not supported anymore.
710164829Srodrigc
711164829Srodrigc	Size of struct in_aliasreq, struct in6_aliasreq has changed. User
71251688Sdillon	utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
713164829Srodrigc	need to be recompiled.
714184413Strasz
715164829Srodrigc20111122:
716164829Srodrigc	The acpi_wmi(4) status device /dev/wmistat has been renamed to
717164829Srodrigc	/dev/wmistat0.
718164829Srodrigc
719164829Srodrigc20111108:
720164829Srodrigc	The option VFS_ALLOW_NONMPSAFE option has been added in order to
721164829Srodrigc	explicitely support non-MPSAFE filesystems.
722164829Srodrigc	It is on by default for all supported platform at this present
723164829Srodrigc	time.
724164829Srodrigc
725164829Srodrigc20111101:
726164829Srodrigc	The broken amd(4) driver has been replaced with esp(4) in the amd64,
727164829Srodrigc	i386 and pc98 GENERIC kernel configuration files.
728164829Srodrigc
729164829Srodrigc20110930:
730164829Srodrigc	sysinstall has been removed
7311541Srgrimes
732164829Srodrigc20110923:
733184413Strasz	The stable/9 branch created in subversion.  This corresponds to the
734164829Srodrigc	RELENG_9 branch in CVS.
735164829Srodrigc
736164829Srodrigc20110913:
73722521Sdyson	This commit modifies vfs_register() so that it uses a hash
738226234Strasz	calculation to set vfc_typenum, which is enabled by default.
739184413Strasz	The first time a system is booted after this change, the
7401541Srgrimes	vfc_typenum values will change for all file systems. The
741184413Strasz	main effect of this is a change to the NFS server file handles
7421541Srgrimes	for file systems that use vfc_typenum in their fsid, such as ZFS.
743164829Srodrigc	It will, however, prevent vfc_typenum from changing when file
744164829Srodrigc	systems are loaded in a different order for subsequent reboots.
745164829Srodrigc	To disable this, you can set vfs.typenumhash=0 in /boot/loader.conf
746164829Srodrigc	until you are ready to remount all NFS clients after a reboot.
7471541Srgrimes
7481541Srgrimes20110828:
74925535Skato	Bump the shared library version numbers for libraries that
750164829Srodrigc	do not use symbol versioning, have changed the ABI compared
7511541Srgrimes	to stable/8 and which shared library version was not bumped.
752164829Srodrigc	Done as part of 9.0-RELEASE cycle.
753164829Srodrigc
754164829Srodrigc20110815:
755164829Srodrigc	During the merge of Capsicum features, the fget(9) KPI was modified.
756164829Srodrigc	This may require the rebuilding of out-of-tree device drivers --
757164829Srodrigc	issues have been reported specifically with the nVidia device driver.
758164829Srodrigc	__FreeBSD_version is bumped to 900041.
7591541Srgrimes
760164829Srodrigc	Also, there is a period between 20110811 and 20110814 where the
7611541Srgrimes	special devices /dev/{stdin,stdout,stderr} did not work correctly.
762185283Sdaichi	Building world from a kernel during that window may not work.
763185283Sdaichi
764164829Srodrigc20110628:
765164829Srodrigc	The packet filter (pf) code has been updated to OpenBSD 4.5.
766164829Srodrigc	You need to update userland tools to be in sync with kernel.
767164829Srodrigc	This update breaks backward compatibility with earlier pfsync(4)
768182371Sattilio	versions.  Care must be taken when updating redundant firewall setups.
7691541Srgrimes
770164829Srodrigc20110608:
771182371Sattilio	The following sysctls and tunables are retired on x86 platforms:
772164829Srodrigc		machdep.hlt_cpus
7731541Srgrimes		machdep.hlt_logical_cpus
774164829Srodrigc	The following sysctl is retired:
775164829Srodrigc		machdep.hyperthreading_allowed
776164829Srodrigc	The sysctls were supposed to provide a way to dynamically offline and
777164829Srodrigc	online selected CPUs on x86 platforms, but the implementation has not
778164829Srodrigc	been reliable especially with SCHED_ULE scheduler.
7791541Srgrimes	machdep.hyperthreading_allowed tunable is still available to ignore
7801541Srgrimes	hyperthreading CPUs at OS level.
781182371Sattilio	Individual CPUs can be disabled using hint.lapic.X.disabled tunable,
782164829Srodrigc	where X is an APIC ID of a CPU.  Be advised, though, that disabling
783164829Srodrigc	CPUs in non-uniform fashion will result in non-uniform topology and
784164829Srodrigc	may lead to sub-optimal system performance with SCHED_ULE, which is
785164829Srodrigc	a default scheduler.
786164829Srodrigc
787164829Srodrigc20110607:
788164829Srodrigc	cpumask_t type is retired and cpuset_t is used in order to describe
789164829Srodrigc	a mask of CPUs.
790164829Srodrigc
7911541Srgrimes20110531:
7921541Srgrimes	Changes to ifconfig(8) for dynamic address family detection mandate
793164829Srodrigc	that you are running a kernel of 20110525 or later.  Make sure to
794136146Stakawata	follow the update procedure to boot a new kernel before installing
795136060Stakawata	world.
796164829Srodrigc
797164829Srodrigc20110513:
798164829Srodrigc	Support for sun4v architecture is officially dropped
799164829Srodrigc
8001541Srgrimes20110503:
8011541Srgrimes	Several KPI breaking changes have been committed to the mii(4) layer,
80225535Skato	the PHY drivers and consequently some Ethernet drivers using mii(4).
803164829Srodrigc	This means that miibus.ko and the modules of the affected Ethernet
8041541Srgrimes	drivers need to be recompiled.
805164829Srodrigc
806164829Srodrigc	Note to kernel developers: Given that the OUI bit reversion problem
807164829Srodrigc	was fixed as part of these changes all mii(4) commits related to OUIs,
808164829Srodrigc	i.e. to sys/dev/mii/miidevs, PHY driver probing and vendor specific
809164829Srodrigc	handling, no longer can be merged verbatim to stable/8 and previous
810164829Srodrigc	branches.
8111541Srgrimes
812164829Srodrigc20110430:
813164829Srodrigc	Users of the Atheros AR71xx SoC code now need to add 'device ar71xx_pci'
814185283Sdaichi	into their kernel configurations along with 'device pci'.
815185283Sdaichi
816164829Srodrigc20110427:
817164829Srodrigc	The default NFS client is now the new NFS client, so fstype "newnfs"
818164829Srodrigc	is now "nfs" and the regular/old NFS client is now fstype "oldnfs".
819164829Srodrigc	Although mounts via fstype "nfs" will usually work without userland
820182371Sattilio	changes, it is recommended that the mount(8) and mount_nfs(8)
821164829Srodrigc	commands be rebuilt from sources and that a link to mount_nfs called
822164829Srodrigc	mount_oldnfs be created. The new client is compiled into the
82329084Skato	kernel with "options NFSCL" and this is needed for diskless root
82451688Sdillon	file systems. The GENERIC kernel configs have been changed to use
82551688Sdillon	NFSCL and NFSD (the new server) instead of NFSCLIENT and NFSSERVER.
826164829Srodrigc	To use the regular/old client, you can "mount -t oldnfs ...". For
82729084Skato	a diskless root file system, you must also include a line like:
82829084Skato	
829164829Srodrigc	vfs.root.mountfrom="oldnfs:"
830164829Srodrigc
831164829Srodrigc	in the boot/loader.conf on the root fs on the NFS server to make
832164829Srodrigc	a diskless root fs use the old client.
8331541Srgrimes
834164829Srodrigc20110424:
8351541Srgrimes	The GENERIC kernels for all architectures now default to the new
8361541Srgrimes	CAM-based ATA stack. It means that all legacy ATA drivers were
837164829Srodrigc	removed and replaced by respective CAM drivers. If you are using
838182371Sattilio	ATA device names in /etc/fstab or other places, make sure to update
839164829Srodrigc	them respectively (adX -> adaY, acdX -> cdY, afdX -> daY, astX -> saY,
840164829Srodrigc	where 'Y's are the sequential numbers starting from zero for each type
841164829Srodrigc	in order of detection, unless configured otherwise with tunables,
8421541Srgrimes	see cam(4)). There will be symbolic links created in /dev/ to map
8431541Srgrimes	old adX devices to the respective adaY. They should provide basic
8441541Srgrimes	compatibility for file systems mounting in most cases, but they do
84525535Skato	not support old user-level APIs and do not have respective providers
846164829Srodrigc	in GEOM. Consider using updated management tools with new device names.
8471541Srgrimes
848164829Srodrigc	It is possible to load devices ahci, ata, siis and mvs as modules,
849164829Srodrigc	but option ATA_CAM should remain in kernel configuration to make ata
850164829Srodrigc	module work as CAM driver supporting legacy ATA controllers. Device ata
8511541Srgrimes	still can be used in modular fashion (atacore + ...). Modules atadisk
852164829Srodrigc	and atapi* are not used and won't affect operation in ATA_CAM mode.
8531541Srgrimes	Note that to use CAM-based ATA kernel should include CAM devices
854185283Sdaichi	scbus, pass, da (or explicitly ada), cd and optionally others. All of
855185283Sdaichi	them are parts of the cam module.
856164829Srodrigc
857164829Srodrigc	ataraid(4) functionality is now supported by the RAID GEOM class.
85851688Sdillon	To use it you can load geom_raid kernel module and use graid(8) tool
859164829Srodrigc	for management. Instead of /dev/arX device names, use /dev/raid/rX.
86022521Sdyson
861164829Srodrigc	No kernel config options or code have been removed, so if a problem
862164829Srodrigc	arises, please report it and optionally revert to the old ATA stack.
8631541Srgrimes	In order to do it you can remove from the kernel config:
8641541Srgrimes	    options        ATA_CAM
8651541Srgrimes	    device         ahci
86625535Skato	    device         mvs
867164829Srodrigc	    device         siis
8681541Srgrimes	, and instead add back:
869164829Srodrigc	    device         atadisk         # ATA disk drives
870164829Srodrigc	    device         ataraid         # ATA RAID drives
871164829Srodrigc	    device         atapicd         # ATAPI CDROM drives
8721541Srgrimes	    device         atapifd         # ATAPI floppy drives
873164829Srodrigc	    device         atapist         # ATAPI tape drives
87422521Sdyson
875185283Sdaichi20110423:
876185283Sdaichi	The default NFS server has been changed to the new server, which
877164829Srodrigc	was referred to as the experimental server. If you need to switch
878164829Srodrigc	back to the old NFS server, you must now put the "-o" option on
87951688Sdillon	both the mountd and nfsd commands. This can be done using the
880164829Srodrigc	mountd_flags and nfs_server_flags rc.conf variables until an
88122521Sdyson	update to the rc scripts is committed, which is coming soon.
882164829Srodrigc
883164829Srodrigc20110418:
8841541Srgrimes	The GNU Objective-C runtime library (libobjc), and other Objective-C
8851541Srgrimes	related components have been removed from the base system.  If you
8861541Srgrimes	require an Objective-C library, please use one of the available ports.
88725535Skato
888164829Srodrigc20110331:
8891541Srgrimes	ath(4) has been split into bus- and device- modules. if_ath contains
890164829Srodrigc	the HAL, the TX rate control and the network device code. if_ath_pci
891164829Srodrigc	contains the PCI bus glue. For Atheros MIPS embedded systems, if_ath_ahb
892164829Srodrigc	contains the AHB glue. Users need to load both if_ath_pci and if_ath
893164829Srodrigc	in order to use ath on everything else.
8941541Srgrimes
895164829Srodrigc	TO REPEAT: if_ath_ahb is not needed for normal users. Normal users only
896164829Srodrigc	need to load if_ath and if_ath_pci for ath(4) operation.
897185283Sdaichi
898185283Sdaichi20110314:
899175202Sattilio	As part of the replacement of sysinstall, the process of building
900164829Srodrigc	release media has changed significantly. For details, please re-read
901164829Srodrigc	release(7), which has been updated to reflect the new build process.
902164829Srodrigc
903178491Sdaichi20110218:
904234867Sdaichi	GNU binutils 2.17.50 (as of 2007-07-03) has been merged to -HEAD.  This
905164829Srodrigc	is the last available version under GPLv2.  It brings a number of new
906164829Srodrigc	features, such as support for newer x86 CPU's (with SSE-3, SSSE-3, SSE
907164829Srodrigc	4.1 and SSE 4.2), better support for powerpc64, a number of new
908164829Srodrigc	directives, and lots of other small improvements.  See the ChangeLog
909164829Srodrigc	file in contrib/binutils for the full details.
910164829Srodrigc
911164829Srodrigc20110218:
912190888Srwatson	IPsec's HMAC_SHA256-512 support has been fixed to be RFC4868
913164829Srodrigc	compliant, and will now use half of hash for authentication.
914164829Srodrigc	This will break interoperability with all stacks (including all
9151541Srgrimes	actual FreeBSD versions) who implement
9161541Srgrimes	draft-ietf-ipsec-ciph-sha-256-00 (they use 96 bits of hash for
91725535Skato	authentication).
918164829Srodrigc	The only workaround with such peers is to use another HMAC
9191541Srgrimes	algorithm for IPsec ("phase 2") authentication.
920164829Srodrigc
921164829Srodrigc20110207:
922164829Srodrigc	Remove the uio_yield prototype and symbol.  This function has
9231541Srgrimes	been misnamed since it was introduced and should not be
924185283Sdaichi	globally exposed with this name.  The equivalent functionality
925185283Sdaichi	is now available using kern_yield(curthread->td_user_pri).
926175202Sattilio	The function remains undocumented.
927164829Srodrigc
928164829Srodrigc20110112:
929164829Srodrigc	A SYSCTL_[ADD_]UQUAD was added for unsigned uint64_t pointers,
930178491Sdaichi	symmetric with the existing SYSCTL_[ADD_]QUAD.  Type checking
931234867Sdaichi	for scalar sysctls is defined but disabled.  Code that needs
932164829Srodrigc	UQUAD to pass the type checking that must compile on older
933164829Srodrigc	systems where the define is not present can check against
934164829Srodrigc	__FreeBSD_version >= 900030.
935164829Srodrigc
936164829Srodrigc	The system dialog(1) has been replaced with a new version previously
9371541Srgrimes	in ports as devel/cdialog. dialog(1) is mostly command-line compatible
9381541Srgrimes	with the previous version, but the libdialog associated with it has
93925535Skato	a largely incompatible API. As such, the original version of libdialog
940164829Srodrigc	will be kept temporarily as libodialog, until its base system consumers
9411541Srgrimes	are replaced or updated. Bump __FreeBSD_version to 900030.
942164829Srodrigc
943164829Srodrigc20110103:
944164829Srodrigc	If you are trying to run make universe on a -stable system, and you get
9451541Srgrimes	the following warning:
946185283Sdaichi	"Makefile", line 356: "Target architecture for i386/conf/GENERIC 
947185283Sdaichi	unknown.  config(8) likely too old."
948164829Srodrigc	or something similar to it, then you must upgrade your -stable system
949164829Srodrigc	to 8.2-Release or newer (really, any time after r210146 7/15/2010 in
950164829Srodrigc	stable/8) or build the config from the latest stable/8 branch and
951178491Sdaichi	install it on your system.
9521541Srgrimes
953164829Srodrigc	Prior to this date, building a current universe on 8-stable system from
954164829Srodrigc	between 7/15/2010 and 1/2/2011 would result in a weird shell parsing
955164829Srodrigc	error in the first kernel build phase.  A new config on those old 
956164829Srodrigc	systems will fix that problem for older versions of -current.
9571541Srgrimes
9581541Srgrimes20101228:
95925535Skato	The TCP stack has been modified to allow Khelp modules to interact with
960164829Srodrigc	it via helper hook points and store per-connection data in the TCP
9611541Srgrimes	control block. Bump __FreeBSD_version to 900029. User space tools that
962164829Srodrigc	rely on the size of struct tcpcb in tcp_var.h (e.g. sockstat) need to
963185283Sdaichi	be recompiled.
964164829Srodrigc
965164829Srodrigc20101114:
966172643Sdaichi	Generic IEEE 802.3 annex 31B full duplex flow control support has been
967164829Srodrigc	added to mii(4) and bge(4), bce(4), msk(4), nfe(4) and stge(4) along
968164829Srodrigc	with brgphy(4), e1000phy(4) as well as ip1000phy() have been converted
969164829Srodrigc	to take advantage of it instead of using custom implementations.  This
970185283Sdaichi	means that these drivers now no longer unconditionally advertise
971164829Srodrigc	support for flow control but only do so if flow control is a selected
972185283Sdaichi	media option.  This was implemented in the generic support that way in
973164829Srodrigc	order to allow flow control to be switched on and off via ifconfig(8)
9741541Srgrimes	with the PHY specific default to typically off in order to protect
975164829Srodrigc	from unwanted effects.  Consequently, if you used flow control with
97622521Sdyson	one of the above mentioned drivers you now need to explicitly enable
977185283Sdaichi	it, for example via:
978185283Sdaichi		ifconfig bge0 media auto mediaopt flowcontrol
979164829Srodrigc
980164829Srodrigc	Along with the above mentioned changes generic support for setting
981164829Srodrigc	1000baseT master mode also has been added and brgphy(4), ciphy(4),
982164829Srodrigc	e1000phy(4) as well as ip1000phy(4) have been converted to take
983164829Srodrigc	advantage of it.  This means that these drivers now no longer take the
984164829Srodrigc	link0 parameter for selecting master mode but the master media option
985185283Sdaichi	has to be used instead, for example like in the following:
986185283Sdaichi		ifconfig bge0 media 1000baseT mediaopt full-duplex,master
987185283Sdaichi
988185283Sdaichi	Selection of master mode now is also available with all other PHY
989185283Sdaichi	drivers supporting 1000baseT.
990185283Sdaichi
991234867Sdaichi20101111:
992185283Sdaichi	The TCP stack has received a significant update to add support for
993185283Sdaichi	modularised congestion control and generally improve the clarity of
994185283Sdaichi	congestion control decisions. Bump __FreeBSD_version to 900025. User
995185283Sdaichi	space tools that rely on the size of struct tcpcb in tcp_var.h (e.g.
996185283Sdaichi	sockstat) need to be recompiled.
997185283Sdaichi
998185283Sdaichi20101002:
999185283Sdaichi	The man(1) utility has been replaced by a new version that no longer
1000185283Sdaichi	uses /etc/manpath.config. Please consult man.conf(5) for how to
1001185283Sdaichi	migrate local entries to the new format.
1002185283Sdaichi
1003185283Sdaichi20100928:
1004185283Sdaichi	The copyright strings printed by login(1) and sshd(8) at the time of a
1005185283Sdaichi	new connection have been removed to follow other operating systems and
1006185283Sdaichi	upstream sshd.
1007185283Sdaichi
1008185283Sdaichi20100915:
1009185283Sdaichi	A workaround for a fixed ld bug has been removed in kernel code,
1010185283Sdaichi	so make sure that your system ld is built from sources after
1011185283Sdaichi	revision 210245 from 2010-07-19 (r211583 if building head kernel
1012185283Sdaichi	on stable/8, r211584 for stable/7; both from 2010-08-21).
1013185283Sdaichi	A symptom of incorrect ld version is different addresses for
1014185283Sdaichi	set_pcpu section and __start_set_pcpu symbol in kernel and/or modules.
1015185283Sdaichi
1016185283Sdaichi20100913:
1017185283Sdaichi	The $ipv6_prefer variable in rc.conf(5) has been split into
1018185283Sdaichi	$ip6addrctl_policy and $ipv6_activate_all_interfaces.
1019185283Sdaichi
1020185283Sdaichi	The $ip6addrctl_policy is a variable to choose a pre-defined
1021185283Sdaichi	address selection policy set by ip6addrctl(8).  A value
1022185283Sdaichi	"ipv4_prefer", "ipv6_prefer" or "AUTO" can be specified.  The
1023185283Sdaichi	default is "AUTO".
1024164829Srodrigc
1025164829Srodrigc	The $ipv6_activate_all_interfaces specifies whether IFDISABLED
1026164829Srodrigc	flag (see an entry of 20090926) is set on an interface with no
1027164829Srodrigc	corresponding $ifconfig_IF_ipv6 line.  The default is "NO" for
1028185283Sdaichi	security reason.  If you want IPv6 link-local address on all
1029185283Sdaichi	interfaces by default, set this to "YES".
1030185283Sdaichi
1031185283Sdaichi	The old ipv6_prefer="YES" is equivalent to
1032185283Sdaichi	ipv6_activate_all_interfaces="YES" and
1033185283Sdaichi	ip6addrctl_policy="ipv6_prefer".
1034172643Sdaichi
1035164829Srodrigc20100913:
1036164829Srodrigc	DTrace has grown support for userland tracing. Due to this, DTrace is
1037185283Sdaichi	now i386 and amd64 only.
1038164829Srodrigc	dtruss(1) is now installed by default on those systems and a new
1039164829Srodrigc	kernel module is needed for userland tracing: fasttrap.
1040164829Srodrigc	No changes to your kernel config file are necessary to enable
10411541Srgrimes	userland tracing, but you might consider adding 'STRIP=' and
10421541Srgrimes	'CFLAGS+=-fno-omit-frame-pointer' to your make.conf if you want
10431541Srgrimes	to have informative userland stack traces in DTrace (ustack).
104425535Skato
1045164829Srodrigc20100725:
10461541Srgrimes	The acpi_aiboost(4) driver has been removed in favor of the new
1047164829Srodrigc	aibs(4) driver. You should update your kernel configuration file.
1048164829Srodrigc
1049164829Srodrigc20100722:
1050164829Srodrigc	BSD grep has been imported to the base system and it is built by
1051164829Srodrigc	default.  It is completely BSD licensed, highly GNU-compatible, uses
1052164829Srodrigc	less memory than its GNU counterpart and has a small codebase.
1053164829Srodrigc	However, it is slower than its GNU counterpart, which is mostly
1054164829Srodrigc	noticeable for larger searches, for smaller ones it is measurable
10551541Srgrimes	but not significant.  The reason is complex, the most important factor
1056164829Srodrigc	is that we lack a modern and efficient regex library and GNU
105751688Sdillon	overcomes this by optimizing the searches internally.  Future work
1058185283Sdaichi	on improving the regex performance is planned, for the meantime,
1059185283Sdaichi	users that need better performance, can build GNU grep instead by
1060185283Sdaichi	setting the WITH_GNU_GREP knob.
1061164829Srodrigc
1062164829Srodrigc20100713:
1063164829Srodrigc	Due to the import of powerpc64 support, all existing powerpc kernel
1064164829Srodrigc	configuration files must be updated with a machine directive like this:
1065164829Srodrigc	    machine powerpc powerpc
1066164829Srodrigc
1067164829Srodrigc	In addition, an updated config(8) is required to build powerpc kernels
1068164829Srodrigc	after this change.
1069164829Srodrigc
1070164829Srodrigc20100713:
1071164829Srodrigc	A new version of ZFS (version 15) has been merged to -HEAD.
1072164829Srodrigc	This version uses a python library for the following subcommands:
1073164829Srodrigc	zfs allow, zfs unallow, zfs groupspace, zfs userspace.
1074164829Srodrigc	For full functionality of these commands the following port must
1075164829Srodrigc	be installed: sysutils/py-zfs
1076164829Srodrigc
1077164829Srodrigc20100429:
1078164829Srodrigc	'vm_page's are now hashed by physical address to an array of mutexes.
1079164829Srodrigc	Currently this is only used to serialize access to hold_count. Over 
1080164829Srodrigc	time the page queue mutex will be peeled away. This changes the size
1081164829Srodrigc	of pmap on every architecture. And requires all callers of vm_page_hold
1082164829Srodrigc	and vm_page_unhold to be updated. 
1083164829Srodrigc 
1084103636Struckman20100402:
1085164829Srodrigc	WITH_CTF can now be specified in src.conf (not recommended, there
108622521Sdyson	are some problems with static executables), make.conf (would also
1087164829Srodrigc	affect ports which do not use GNU make and do not override the
108822521Sdyson	compile targets) or in the kernel config (via "makeoptions
10891541Srgrimes	WITH_CTF=yes").
1090164829Srodrigc	When WITH_CTF was specified there before this was silently ignored,
1091164829Srodrigc	so make sure that WITH_CTF is not used in places which could lead
109222521Sdyson	to unwanted behavior.
1093164829Srodrigc
1094164829Srodrigc20100311:
109535823Smsmith	The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32
1096164829Srodrigc	to allow 32-bit compatibility on non-x86 platforms. All kernel
109735823Smsmith	configurations on amd64 and ia64 platforms using these options must
109835823Smsmith	be modified accordingly.
10991541Srgrimes
11001541Srgrimes20100113:
110125535Skato	The utmp user accounting database has been replaced with utmpx,
1102164829Srodrigc	the user accounting interface standardized by POSIX.
11031541Srgrimes	Unfortunately the semantics of utmp and utmpx don't match,
1104164829Srodrigc	making it practically impossible to support both interfaces.
1105164829Srodrigc	The user accounting database is used by tools like finger(1),
1106164829Srodrigc	last(1), talk(1), w(1) and ac(8).
1107164829Srodrigc
1108164829Srodrigc	All applications in the base system use utmpx.  This means only
1109164829Srodrigc	local binaries (e.g. from the ports tree) may still use these
1110164829Srodrigc	utmp database files.  These applications must be rebuilt to make
1111164829Srodrigc	use of utmpx.
1112164829Srodrigc
1113164829Srodrigc	After the system has been upgraded, it is safe to remove the old
11141541Srgrimes	log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*),
1115164829Srodrigc	assuming their contents is of no importance anymore.  Old wtmp
1116164829Srodrigc	databases can only be used by last(1) and ac(8) after they have
1117164829Srodrigc	been converted to the new format using wtmpcvt(1).
1118164829Srodrigc
1119164829Srodrigc20100108:
112051688Sdillon	Introduce the kernel thread "deadlock resolver" (which can be enabled
1121164829Srodrigc	via the DEADLKRES option, see NOTES for more details) and the
1122164829Srodrigc	sleepq_type() function for sleepqueues.
1123164829Srodrigc
1124164829Srodrigc20091202:
1125164829Srodrigc	The rc.firewall and rc.firewall6 were unified, and
1126164829Srodrigc	rc.firewall6 and rc.d/ip6fw were removed.
1127164829Srodrigc	According to the removal of rc.d/ip6fw, ipv6_firewall_* rc
1128164829Srodrigc	variables are obsoleted.  Instead, the following new rc
1129164829Srodrigc	variables are added to rc.d/ipfw:
1130164829Srodrigc
1131164829Srodrigc		firewall_client_net_ipv6, firewall_simple_iif_ipv6,
1132164829Srodrigc		firewall_simple_inet_ipv6, firewall_simple_oif_ipv6,
1133164829Srodrigc		firewall_simple_onet_ipv6, firewall_trusted_ipv6
1134164829Srodrigc
1135164829Srodrigc	The meanings correspond to the relevant IPv4 variables.
1136164829Srodrigc
1137164829Srodrigc20091125:
1138164829Srodrigc	8.0-RELEASE.
1139164829Srodrigc
1140164829Srodrigc20091113:
1141164829Srodrigc	The default terminal emulation for syscons(4) has been changed
1142164829Srodrigc	from cons25 to xterm on all platforms except pc98.  This means
1143164829Srodrigc	that the /etc/ttys file needs to be updated to ensure correct
1144164829Srodrigc	operation of applications on the console.
1145164829Srodrigc
1146164829Srodrigc	The terminal emulation style can be toggled per window by using
1147164829Srodrigc	vidcontrol(1)'s -T flag.  The TEKEN_CONS25 kernel configuration
1148164829Srodrigc	options can be used to change the compile-time default back to
1149164829Srodrigc	cons25.
1150164829Srodrigc
1151185283Sdaichi	To prevent graphical artifacts, make sure the TERM environment
1152185283Sdaichi	variable is set to match the terminal emulation that is being
1153185283Sdaichi	performed by syscons(4).
1154185283Sdaichi
1155164829Srodrigc20091109:
11561541Srgrimes	The layout of the structure ieee80211req_scan_result has changed.
11571541Srgrimes	Applications that require wireless scan results (e.g. ifconfig(8))
1158164829Srodrigc	from net80211 need to be recompiled.
1159164829Srodrigc
1160164829Srodrigc	Applications such as wpa_supplicant(8) may require a full world
1161164829Srodrigc	build without using NO_CLEAN in order to get synchronized with the
116251688Sdillon	new structure.
1163164829Srodrigc
116451688Sdillon20091025:
116551688Sdillon	The iwn(4) driver has been updated to support the 5000 and 5150 series.
1166185283Sdaichi	There's one kernel module for each firmware. Adding "device iwnfw"
1167185283Sdaichi	to the kernel configuration file means including all three firmware
1168185283Sdaichi	images inside the kernel. If you want to include just the one for
1169185283Sdaichi	your wireless card, use the devices iwn4965fw, iwn5000fw or
1170185283Sdaichi	iwn5150fw.
1171185283Sdaichi
1172164829Srodrigc20090926:
1173164829Srodrigc	The rc.d/network_ipv6, IPv6 configuration script has been integrated
1174164829Srodrigc	into rc.d/netif.  The changes are the following:
117551688Sdillon
1176164829Srodrigc	1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF
1177164829Srodrigc	   for IPv4.  For aliases, $ifconfig_IF_aliasN should be used.
1178164829Srodrigc	   Note that both variables need the "inet6" keyword at the head.
1179164829Srodrigc
1180164829Srodrigc	   Do not set $ipv6_network_interfaces manually if you do not
1181164829Srodrigc	   understand what you are doing.  It is not needed in most cases. 
118251688Sdillon
1183164829Srodrigc	   $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but
1184164829Srodrigc	   they are obsolete.
1185164829Srodrigc
118651688Sdillon	2. $ipv6_enable is obsolete.  Use $ipv6_prefer and
1187164829Srodrigc	   "inet6 accept_rtadv" keyword in ifconfig(8) instead.
1188164829Srodrigc
1189164829Srodrigc	   If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and
1190164829Srodrigc	   all configured interfaces have "inet6 accept_rtadv" in the
1191175202Sattilio	   $ifconfig_IF_ipv6.  These are for backward compatibility.
1192164829Srodrigc
1193164829Srodrigc	3. A new variable $ipv6_prefer has been added.  If NO, IPv6
1194234867Sdaichi	   functionality of interfaces with no corresponding
1195164829Srodrigc	   $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag,
1196164829Srodrigc	   and the default address selection policy of ip6addrctl(8) 
1197164829Srodrigc	   is the IPv4-preferred one (see rc.d/ip6addrctl for more details).
1198164829Srodrigc	   Note that if you want to configure IPv6 functionality on the
1199175202Sattilio	   disabled interfaces after boot, first you need to clear the flag by
1200164829Srodrigc	   using ifconfig(8) like:
1201164829Srodrigc
1202234867Sdaichi		ifconfig em0 inet6 -ifdisabled
1203164829Srodrigc
1204164829Srodrigc	   If YES, the default address selection policy is set as
1205164829Srodrigc	   IPv6-preferred.
1206164829Srodrigc
1207164829Srodrigc	   The default value of $ipv6_prefer is NO.
1208164829Srodrigc
12091541Srgrimes	4. If your system need to receive Router Advertisement messages,
12101541Srgrimes	   define "inet6 accept_rtadv" in $ifconfig_IF_ipv6.  The rc(8)
1211164829Srodrigc	   scripts automatically invoke rtsol(8) when the interface becomes
12121541Srgrimes	   UP.  The Router Advertisement messages are used for SLAAC
12131541Srgrimes	   (State-Less Address AutoConfiguration).
1214164829Srodrigc
1215164829Srodrigc20090922:
1216164829Srodrigc	802.11s D3.03 support was committed. This is incompatible with the
1217164829Srodrigc	previous code, which was based on D3.0.
121851688Sdillon
1219164829Srodrigc20090912:
1220164829Srodrigc	A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value
1221164829Srodrigc	of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to
1222164829Srodrigc	control whether accepting Router Advertisement messages or not.
1223164829Srodrigc	Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and
1224164829Srodrigc	a sysctl variable net.inet6.ip6.auto_linklocal is its default value.
1225164829Srodrigc	The ifconfig(8) utility now supports these flags.
1226164829Srodrigc
1227164829Srodrigc20090910:
1228164829Srodrigc	ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for
1229164829Srodrigc	mount(8) and -a option for df(1) to see them.
123051688Sdillon
1231164829Srodrigc20090825:
1232164829Srodrigc	The old tunable hw.bus.devctl_disable has been superseded by
1233164829Srodrigc	hw.bus.devctl_queue.  hw.bus.devctl_disable=1 in loader.conf should be
1234164829Srodrigc	replaced by hw.bus.devctl_queue=0.  The default for this new tunable
1235164829Srodrigc	is 1000.
1236164829Srodrigc
1237164829Srodrigc20090813:
1238164829Srodrigc	Remove the option STOP_NMI.  The default action is now to use NMI only
1239164829Srodrigc	for KDB via the newly introduced function stop_cpus_hard() and
1240164829Srodrigc	maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64.
1241164829Srodrigc
1242164829Srodrigc20090803:
1243164829Srodrigc	The stable/8 branch created in subversion.  This corresponds to the
1244164829Srodrigc	RELENG_8 branch in CVS.
1245164829Srodrigc
1246164829Srodrigc20090719:
1247164829Srodrigc	Bump the shared library version numbers for all libraries that do not
1248164829Srodrigc	use symbol versioning as part of the 8.0-RELEASE cycle.  Bump
12491541Srgrimes	__FreeBSD_version to 800105.
1250164829Srodrigc
12511541Srgrimes20090714:
1252178484Sdaichi	Due to changes in the implementation of virtual network stack support,
1253178484Sdaichi	all network-related kernel modules must be recompiled.  As this change
1254178484Sdaichi	breaks the ABI, bump __FreeBSD_version to 800104.
1255164829Srodrigc
1256175202Sattilio20090713:
1257164829Srodrigc	The TOE interface to the TCP syncache has been modified to remove
1258164829Srodrigc	struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack.
1259234867Sdaichi	The cxgb driver is the only TOE consumer affected by this change, and
1260164829Srodrigc	needs to be recompiled along with the kernel. As this change breaks
1261164829Srodrigc	the ABI, bump __FreeBSD_version to 800103.
1262164829Srodrigc
1263164829Srodrigc20090712: 
1264164829Srodrigc	Padding has been added to struct tcpcb, sackhint and tcpstat in
1265234867Sdaichi	<netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst
1266164829Srodrigc	maintaining the ABI. However, this change breaks the ABI, so bump
1267164829Srodrigc	__FreeBSD_version to 800102. User space tools that rely on the size of
1268175202Sattilio	any of these structs (e.g. sockstat) need to be recompiled.
1269164829Srodrigc
1270164829Srodrigc20090630:
12711541Srgrimes	The NFS_LEGACYRPC option has been removed along with the old kernel
12721541Srgrimes	RPC implementation that this option selected. Kernel configurations
1273164829Srodrigc	may need to be adjusted.
127451688Sdillon
1275172637Sdaichi20090629:
1276172637Sdaichi	The network interface device nodes at /dev/net/<interface> have been
1277172637Sdaichi	removed.  All ioctl operations can be performed the normal way using
1278172637Sdaichi	routing sockets.  The kqueue functionality can generally be replaced
1279172637Sdaichi	with routing sockets.
1280172637Sdaichi
1281172637Sdaichi20090628:
1282172638Sdaichi	The documentation from the FreeBSD Documentation Project (Handbook,
1283234867Sdaichi	FAQ, etc.) is now installed via packages by sysinstall(8) and under
1284164829Srodrigc	the /usr/local/share/doc/freebsd directory instead of /usr/share/doc.
1285164829Srodrigc
1286172638Sdaichi20090624:
1287234867Sdaichi	The ABI of various structures related to the SYSV IPC API have been
1288164829Srodrigc	changed.  As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel
1289164829Srodrigc	options now all require COMPAT_FREEBSD7.  Bump __FreeBSD_version to
1290164829Srodrigc	800100.
1291164829Srodrigc
1292164829Srodrigc20090622:
12931541Srgrimes	Layout of struct vnet has changed as routing related variables were
1294178484Sdaichi	moved to their own Vimage module. Modules need to be recompiled.  Bump
1295178484Sdaichi	__FreeBSD_version to 800099.
1296178484Sdaichi
1297178484Sdaichi20090619:
12981541Srgrimes	NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024
1299164829Srodrigc	respectively.  As long as no more than 16 groups per process are used,
130051688Sdillon	no changes should be visible.  When more than 16 groups are used, old
1301164829Srodrigc	binaries may fail if they call getgroups() or getgrouplist() with
13021541Srgrimes	statically sized storage.  Recompiling will work around this, but
1303164829Srodrigc	applications should be modified to use dynamically allocated storage
1304178484Sdaichi	for group arrays as POSIX.1-2008 does not cap an implementation's
1305164829Srodrigc	number of supported groups at NGROUPS_MAX+1 as previous versions did.
1306164829Srodrigc
130751688Sdillon	NFS and portalfs mounts may also be affected as the list of groups is
1308164829Srodrigc	truncated to 16.  Users of NFS who use more than 16 groups, should
130951688Sdillon	take care that negative group permissions are not used on the exported
131051688Sdillon	file systems as they will not be reliable unless a GSSAPI based
131151688Sdillon	authentication method is used.
131251688Sdillon
1313178484Sdaichi20090616: 
1314178484Sdaichi	The compiling option ADAPTIVE_LOCKMGRS has been introduced.  This
1315178484Sdaichi	option compiles in the support for adaptive spinning for lockmgrs
1316178484Sdaichi	which want to enable it.  The lockinit() function now accepts the flag
1317178484Sdaichi	LK_ADAPTIVE in order to make the lock object subject to adaptive
1318178484Sdaichi	spinning when both held in write and read mode.
1319164829Srodrigc
1320164829Srodrigc20090613:
1321164829Srodrigc	The layout of the structure returned by IEEE80211_IOC_STA_INFO has
1322164829Srodrigc	changed.  User applications that use this ioctl need to be rebuilt.
1323164829Srodrigc
13241541Srgrimes20090611:
13251541Srgrimes	The layout of struct thread has changed.  Kernel and modules need to
13261541Srgrimes	be rebuilt.
132725535Skato
1328164829Srodrigc20090608:
13291541Srgrimes	The layout of structs ifnet, domain, protosw and vnet_net has changed.
1330164829Srodrigc	Kernel modules need to be rebuilt.  Bump __FreeBSD_version to 800097.
1331165785Srodrigc
1332164829Srodrigc20090602:
1333164829Srodrigc	window(1) has been removed from the base system. It can now be
1334164829Srodrigc	installed from ports. The port is called misc/window.
1335164829Srodrigc
1336164829Srodrigc20090601:
1337164829Srodrigc	The way we are storing and accessing `routing table' entries has
13381541Srgrimes	changed. Programs reading the FIB, like netstat, need to be
1339164829Srodrigc	re-compiled.
13401541Srgrimes
1341185283Sdaichi20090601:
1342185283Sdaichi	A new netisr implementation has been added for FreeBSD 8.  Network
1343164829Srodrigc	file system modules, such as igmp, ipdivert, and others, should be
1344164829Srodrigc	rebuilt.
1345164829Srodrigc	Bump __FreeBSD_version to 800096.
1346165785Srodrigc
1347164829Srodrigc20090530:
1348164829Srodrigc	Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no
134951688Sdillon	more valid.
1350164829Srodrigc
1351164829Srodrigc20090530:
1352164829Srodrigc	Add VOP_ACCESSX(9).  File system modules need to be rebuilt.
1353182371Sattilio	Bump __FreeBSD_version to 800094.
1354164829Srodrigc
1355164829Srodrigc20090529:
1356164829Srodrigc	Add mnt_xflag field to 'struct mount'.  File system modules need to be
1357164829Srodrigc	rebuilt.
135822521Sdyson	Bump __FreeBSD_version to 800093.
1359164829Srodrigc
1360164829Srodrigc20090528:
1361234867Sdaichi	The compiling option ADAPTIVE_SX has been retired while it has been
1362165785Srodrigc	introduced the option NO_ADAPTIVE_SX which handles the reversed logic.
1363164829Srodrigc	The KPI for sx_init_flags() changes as accepting flags:
1364164829Srodrigc	SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has
1365165785Srodrigc	been introduced in order to handle the reversed logic.
1366164829Srodrigc	Bump __FreeBSD_version to 800092.
1367164829Srodrigc
13681541Srgrimes20090527:
1369164829Srodrigc	Add support for hierarchical jails.  Remove global securelevel.
1370164829Srodrigc	Bump __FreeBSD_version to 800091.
1371164829Srodrigc
137251688Sdillon20090523:
13731541Srgrimes	The layout of struct vnet_net has changed, therefore modules
13741541Srgrimes	need to be rebuilt.
137525535Skato	Bump __FreeBSD_version to 800090.
1376164829Srodrigc
13771541Srgrimes20090523:
1378164829Srodrigc	The newly imported zic(8) produces a new format in the output. Please
1379164829Srodrigc	run tzsetup(8) to install the newly created data to /etc/localtime.
1380164829Srodrigc
1381172643Sdaichi20090520:
1382164829Srodrigc	The sysctl tree for the usb stack has renamed from hw.usb2.* to
1383164829Srodrigc	hw.usb.* and is now consistent again with previous releases.
1384164829Srodrigc
1385164829Srodrigc20090520:
1386164829Srodrigc	802.11 monitor mode support was revised and driver api's were changed.
13871541Srgrimes	Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead
1388164829Srodrigc	of DLT_IEEE802_11.  No user-visible data structures were changed but
138922521Sdyson	applications that use DLT_IEEE802_11 may require changes.
1390185283Sdaichi	Bump __FreeBSD_version to 800088.
1391185283Sdaichi
1392185283Sdaichi20090430:
1393164829Srodrigc	The layout of the following structs has changed: sysctl_oid,
1394164829Srodrigc	socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet,
1395164829Srodrigc	vnet_inet6 and vnet_ipfw.  Most modules need to be rebuild or
1396164829Srodrigc	panics may be experienced.  World rebuild is required for
1397164829Srodrigc	correctly checking networking state from userland.
1398164829Srodrigc	Bump __FreeBSD_version to 800085.
1399164829Srodrigc
1400164829Srodrigc20090429:
1401164829Srodrigc	MLDv2 and Source-Specific Multicast (SSM) have been merged
1402164829Srodrigc	to the IPv6 stack. VIMAGE hooks are in but not yet used.
1403164829Srodrigc	The implementation of SSM within FreeBSD's IPv6 stack closely
1404164829Srodrigc	follows the IPv4 implementation.
1405164829Srodrigc
1406164829Srodrigc	For kernel developers:
1407164829Srodrigc
1408164829Srodrigc	* The most important changes are that the ip6_output() and
1409164829Srodrigc	  ip6_input() paths no longer take the IN6_MULTI_LOCK,
1410164829Srodrigc	  and this lock has been downgraded to a non-recursive mutex.
1411164829Srodrigc
1412164829Srodrigc	* As with the changes to the IPv4 stack to support SSM, filtering
1413164829Srodrigc	  of inbound multicast traffic must now be performed by transport
1414172643Sdaichi	  protocols within the IPv6 stack. This does not apply to TCP and
1415172643Sdaichi	  SCTP, however, it does apply to UDP in IPv6 and raw IPv6.
1416172643Sdaichi
1417234867Sdaichi	* The KPIs used by IPv6 multicast are similar to those used by
1418234867Sdaichi	  the IPv4 stack, with the following differences:
1419234867Sdaichi	   * im6o_mc_filter() is analogous to imo_multicast_filter().
14201541Srgrimes	   * The legacy KAME entry points in6_joingroup and in6_leavegroup()
1421164829Srodrigc	     are shimmed to in6_mc_join() and in6_mc_leave() respectively.
1422164829Srodrigc	   * IN6_LOOKUP_MULTI() has been deprecated and removed.
1423164829Srodrigc	   * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs
1424172637Sdaichi	     for MLDv1 have an additional 'timer' argument which is used to
1425172637Sdaichi	     jitter the initial membership report for the solicited-node
1426172637Sdaichi	     multicast membership on-link.
1427172637Sdaichi	   * This is not strictly needed for MLDv2, which already jitters
1428172637Sdaichi	     its report transmissions.  However, the 'timer' argument is
1429164829Srodrigc	     preserved in case MLDv1 is active on the interface.
1430164829Srodrigc
14311541Srgrimes	* The KAME linked-list based IPv6 membership implementation has
14321541Srgrimes	  been refactored to use a vector similar to that used by the IPv4
14331541Srgrimes	  stack.
143425535Skato	  Code which maintains a list of its own multicast memberships
1435164829Srodrigc	  internally, e.g. carp, has been updated to reflect the new
14361541Srgrimes	  semantics.
1437164829Srodrigc
1438165785Srodrigc	* There is a known Lock Order Reversal (LOR) due to in6_setscope()
1439164829Srodrigc	  acquiring the IF_AFDATA_LOCK and being called within ip6_output().
1440164829Srodrigc	  Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an
1441164829Srodrigc	  implementation constraint which needs to be addressed in HEAD.
1442164829Srodrigc
1443164829Srodrigc	For application developers:
14441541Srgrimes
1445164829Srodrigc	* The changes are broadly similar to those made for the IPv4
1446164829Srodrigc	  stack.
1447185283Sdaichi
1448185283Sdaichi	* The use of IPv4 and IPv6 multicast socket options on the same
1449164829Srodrigc	  socket, using mapped addresses, HAS NOT been tested or supported.
1450164829Srodrigc
1451164829Srodrigc	* There are a number of issues with the implementation of various
1452165785Srodrigc	  IPv6 multicast APIs which need to be resolved in the API surface
1453164829Srodrigc	  before the implementation is fully compatible with KAME userland
1454164829Srodrigc	  use, and these are mostly to do with interface index treatment.
1455164829Srodrigc
1456164829Srodrigc	* The literature available discusses the use of either the delta / ASM
1457164829Srodrigc	  API with setsockopt(2)/getsockopt(2), or the full-state / ASM API
1458164829Srodrigc	  using setsourcefilter(3)/getsourcefilter(3). For more information
1459234867Sdaichi	  please refer to RFC 3768, 'Socket Interface Extensions for
1460165785Srodrigc	  Multicast Source Filters'.
1461164829Srodrigc
1462164829Srodrigc	* Applications which use the published RFC 3678 APIs should be fine.
1463165785Srodrigc
1464164829Srodrigc	For systems administrators:
1465164829Srodrigc
14661541Srgrimes	* The mtest(8) utility has been refactored to support IPv6, in
1467164829Srodrigc	  addition to IPv4. Interface addresses are no longer accepted
1468164829Srodrigc	  as arguments, their names must be used instead. The utility
1469164829Srodrigc	  will map the interface name to its first IPv4 address as
147051688Sdillon	  returned by getifaddrs(3).
14711541Srgrimes
14721541Srgrimes	* The ifmcstat(8) utility has also been updated to print the MLDv2
147325535Skato	  endpoint state and source filter lists via sysctl(3).
1474164829Srodrigc
14751541Srgrimes	* The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable
1476164829Srodrigc	  loopback of IPv6 multicast datagrams by default; it defaults to 1
1477164829Srodrigc	  to preserve the existing behaviour. Disabling multicast loopback is
1478165785Srodrigc	  recommended for optimal system performance.
1479234867Sdaichi
1480164829Srodrigc	* The IPv6 MROUTING code has been changed to examine this sysctl
1481164829Srodrigc	  instead of attempting to perform a group lookup before looping
1482164829Srodrigc	  back forwarded datagrams.
1483234867Sdaichi
1484164829Srodrigc	Bump __FreeBSD_version to 800084.
1485164829Srodrigc
1486164829Srodrigc20090422:
1487164829Srodrigc	Implement low-level Bluetooth HCI API.
14881541Srgrimes	Bump __FreeBSD_version to 800083.
1489164829Srodrigc
1490164829Srodrigc20090419:
1491164829Srodrigc	The layout of struct malloc_type, used by modules to register new
1492164829Srodrigc	memory allocation types, has changed.  Most modules will need to
1493164829Srodrigc	be rebuilt or panics may be experienced.
1494185283Sdaichi	Bump __FreeBSD_version to 800081.
1495185283Sdaichi
1496164829Srodrigc20090415:
1497164829Srodrigc	Anticipate overflowing inp_flags - add inp_flags2.
1498165785Srodrigc	This changes most offsets in inpcb, so checking v4 connection
1499234867Sdaichi	state will require a world rebuild.
1500164829Srodrigc	Bump __FreeBSD_version to 800080.
1501234867Sdaichi
1502234867Sdaichi20090415:
1503164829Srodrigc	Add an llentry to struct route and struct route_in6. Modules
1504164829Srodrigc	embedding a struct route will need to be recompiled.
1505164829Srodrigc	Bump __FreeBSD_version to 800079.
1506164829Srodrigc
1507234867Sdaichi20090414:
1508234867Sdaichi	The size of rt_metrics_lite and by extension rtentry has changed.
1509164829Srodrigc	Networking administration apps will need to be recompiled.
1510164829Srodrigc	The route command now supports show as an alias for get, weighting
1511234867Sdaichi	of routes, sticky and nostick flags to alter the behavior of stateful
1512234867Sdaichi	load balancing.
1513234867Sdaichi	Bump __FreeBSD_version to 800078.
1514234867Sdaichi
1515234867Sdaichi20090408:
1516234867Sdaichi	Do not use Giant for kbdmux(4) locking. This is wrong and
1517234867Sdaichi	apparently causing more problems than it solves. This will
1518234867Sdaichi	re-open the issue where interrupt handlers may race with
1519234867Sdaichi	kbdmux(4) in polling mode. Typical symptoms include (but
1520234867Sdaichi	not limited to) duplicated and/or missing characters when
1521234867Sdaichi	low level console functions (such as gets) are used while
1522234867Sdaichi	interrupts are enabled (for example geli password prompt,
1523234867Sdaichi	mountroot prompt etc.). Disabling kbdmux(4) may help.
1524234867Sdaichi
1525234867Sdaichi20090407:
1526234867Sdaichi	The size of structs vnet_net, vnet_inet and vnet_ipfw has changed;
1527234867Sdaichi	kernel modules referencing any of the above need to be recompiled.
1528234867Sdaichi	Bump __FreeBSD_version to 800075.
1529234867Sdaichi
1530234867Sdaichi20090320:
1531234867Sdaichi	GEOM_PART has become the default partition slicer for storage devices,
1532234867Sdaichi	replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
1533234867Sdaichi	introduces some changes:
1534234867Sdaichi
1535164829Srodrigc	MSDOS/EBR: the devices created from MSDOS extended partition entries
1536164829Srodrigc	(EBR) can be named differently than with GEOM_MBR and are now symlinks
1537182371Sattilio	to devices with offset-based names. fstabs may need to be modified.
1538172636Sdaichi
1539164829Srodrigc	BSD: the "geometry does not match label" warning is harmless in most
1540164829Srodrigc	cases but it points to problems in file system misalignment with
154151688Sdillon	disk geometry. The "c" partition is now implicit, covers the whole
1542164829Srodrigc	top-level drive and cannot be (mis)used by users.
1543164829Srodrigc
1544164829Srodrigc	General: Kernel dumps are now not allowed to be written to devices
1545172636Sdaichi	whose partition types indicate they are meant to be used for file
1546172636Sdaichi	systems (or, in case of MSDOS partitions, as something else than
1547172636Sdaichi	the "386BSD" type).
1548164829Srodrigc
1549164829Srodrigc	Most of these changes date approximately from 200812.
1550164829Srodrigc
1551164829Srodrigc20090319:
1552164829Srodrigc	The uscanner(4) driver has been removed from the kernel. This follows
1553164829Srodrigc	Linux removing theirs in 2.6 and making libusb the default interface
1554172636Sdaichi	(supported by sane).
1555172636Sdaichi
1556172636Sdaichi20090319:
1557164829Srodrigc	The multicast forwarding code has been cleaned up. netstat(1)
1558164829Srodrigc	only relies on KVM now for printing bandwidth upcall meters.
1559164829Srodrigc	The IPv4 and IPv6 modules are split into ip_mroute_mod and
1560164829Srodrigc	ip6_mroute_mod respectively. The config(5) options for statically
1561164829Srodrigc	compiling this code remain the same, i.e. 'options MROUTING'.
1562164829Srodrigc
1563164829Srodrigc20090315:
1564172640Sdaichi	Support for the IFF_NEEDSGIANT network interface flag has been
1565172640Sdaichi	removed, which means that non-MPSAFE network device drivers are no
1566164829Srodrigc	longer supported.  In particular, if_ar, if_sr, and network device
1567164829Srodrigc	drivers from the old (legacy) USB stack can no longer be built or
1568164829Srodrigc	used.
1569164829Srodrigc
1570164829Srodrigc20090313:
1571164829Srodrigc	POSIX.1 Native Language Support (NLS) has been enabled in libc and
1572164829Srodrigc	a bunch of new language catalog files have also been added.
1573164829Srodrigc	This means that some common libc messages are now localized and
1574172636Sdaichi	they depend on the LC_MESSAGES environmental variable.
1575172636Sdaichi
1576164829Srodrigc20090313:
1577164829Srodrigc	The k8temp(4) driver has been renamed to amdtemp(4) since
1578164829Srodrigc	support for Family 10 and Family 11 CPU families was added.
1579234867Sdaichi
1580164829Srodrigc20090309:
1581164829Srodrigc	IGMPv3 and Source-Specific Multicast (SSM) have been merged
1582164829Srodrigc	to the IPv4 stack. VIMAGE hooks are in but not yet used.
1583164829Srodrigc
1584172636Sdaichi	For kernel developers, the most important changes are that the
1585172636Sdaichi	ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
1586164829Srodrigc	and this lock has been downgraded to a non-recursive mutex.
1587164829Srodrigc
1588234867Sdaichi	Transport protocols (UDP, Raw IP) are now responsible for filtering
1589164829Srodrigc	inbound multicast traffic according to group membership and source
1590164829Srodrigc	filters. The imo_multicast_filter() KPI exists for this purpose.
1591164829Srodrigc	Transports which do not use multicast (SCTP, TCP) already reject
1592164829Srodrigc	multicast by default. Forwarding and receive performance may improve
1593164829Srodrigc	as a mutex acquisition is no longer needed in the ip_input()
1594164829Srodrigc	low-level input path.  in_addmulti() and in_delmulti() are shimmed
1595164829Srodrigc	to new KPIs which exist to support SSM in-kernel.
1596164829Srodrigc
1597164829Srodrigc	For application developers, it is recommended that loopback of
1598164829Srodrigc	multicast datagrams be disabled for best performance, as this
1599164829Srodrigc	will still cause the lock to be taken for each looped-back
1600164829Srodrigc	datagram transmission. The net.inet.ip.mcast.loop sysctl may
1601164829Srodrigc	be tuned to 0 to disable loopback by default; it defaults to 1
1602164829Srodrigc	to preserve the existing behaviour.
1603164829Srodrigc
1604234867Sdaichi	For systems administrators, to obtain best performance with
1605234867Sdaichi	multicast reception and multiple groups, it is always recommended
1606234867Sdaichi	that a card with a suitably precise hash filter is used. Hash
1607234867Sdaichi	collisions will still result in the lock being taken within the
1608234867Sdaichi	transport protocol input path to check group membership.
1609164829Srodrigc
1610164829Srodrigc	If deploying FreeBSD in an environment with IGMP snooping switches,
1611164829Srodrigc	it is recommended that the net.inet.igmp.sendlocal sysctl remain
1612165034Srodrigc	enabled; this forces 224.0.0.0/24 group membership to be announced
1613165034Srodrigc	via IGMP.
1614165034Srodrigc
1615165034Srodrigc	The size of 'struct igmpstat' has changed; netstat needs to be
1616164829Srodrigc	recompiled to reflect this.
1617164829Srodrigc	Bump __FreeBSD_version to 800070.
1618164829Srodrigc
1619164829Srodrigc20090309:
1620234867Sdaichi	libusb20.so.1 is now installed as libusb.so.1 and the ports system
1621234867Sdaichi	updated to use it. This requires a buildworld/installworld in order to
1622234867Sdaichi	update the library and dependencies (usbconfig, etc). Its advisable to
1623234867Sdaichi	rebuild all ports which uses libusb. More specific directions are given
1624234867Sdaichi	in the ports collection UPDATING file. Any /etc/libmap.conf entries for
1625234867Sdaichi	libusb are no longer required and can be removed.
1626234867Sdaichi
1627234867Sdaichi20090302:
1628234867Sdaichi	A workaround is committed to allow the creation of System V shared
1629234867Sdaichi	memory segment of size > 2 GB on the 64-bit architectures.
1630234867Sdaichi	Due to a limitation of the existing ABI, the shm_segsz member
1631234867Sdaichi	of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
1632234867Sdaichi	wrong for large segments. Note that limits must be explicitly
1633164829Srodrigc	raised to allow such segments to be created.
1634164829Srodrigc
1635164829Srodrigc20090301:
1636164829Srodrigc	The layout of struct ifnet has changed, requiring a rebuild of all
1637164829Srodrigc	network device driver modules.
1638164829Srodrigc
1639164829Srodrigc20090227:
1640164829Srodrigc	The /dev handling for the new USB stack has changed, a
1641164829Srodrigc	buildworld/installworld is required for libusb20.
1642164829Srodrigc
1643164829Srodrigc20090223:
1644234944Sdaichi	The new USB2 stack has now been permanently moved in and all kernel and
1645164829Srodrigc	module names reverted to their previous values (eg, usb, ehci, ohci,
1646164829Srodrigc	ums, ...).  The old usb stack can be compiled in by prefixing the name
1647164829Srodrigc	with the letter 'o', the old usb modules have been removed.
1648164829Srodrigc	Updating entry 20090216 for xorg and 20090215 for libmap may still
1649164829Srodrigc	apply.
1650164829Srodrigc
1651164829Srodrigc20090217:
1652164829Srodrigc	The rc.conf(5) option if_up_delay has been renamed to
1653172636Sdaichi	defaultroute_delay to better reflect its purpose. If you have
1654172636Sdaichi	customized this setting in /etc/rc.conf you need to update it to
1655172636Sdaichi	use the new name.
1656164829Srodrigc
1657164829Srodrigc20090216:
1658164829Srodrigc	xorg 7.4 wants to configure its input devices via hald which does not
16591541Srgrimes	yet work with USB2. If the keyboard/mouse does not work in xorg then
16601541Srgrimes	add
166125535Skato		Option "AllowEmptyInput" "off"
1662164829Srodrigc	to your ServerLayout section.  This will cause X to use the configured
16631541Srgrimes	kbd and mouse sections from your xorg.conf.
16641541Srgrimes
1665164829Srodrigc20090215:
1666164829Srodrigc	The GENERIC kernels for all architectures now default to the new USB2
16671541Srgrimes	stack. No kernel config options or code have been removed so if a
1668164829Srodrigc	problem arises please report it and optionally revert to the old USB
166951688Sdillon	stack. If you are loading USB kernel modules or have a custom kernel
1670185283Sdaichi	that includes GENERIC then ensure that usb names are also changed over,
1671185283Sdaichi	eg uftdi -> usb2_serial_ftdi.
1672164829Srodrigc
1673164829Srodrigc	Older programs linked against the ports libusb 0.1 need to be
16741541Srgrimes	redirected to the new stack's libusb20.  /etc/libmap.conf can
1675164829Srodrigc	be used for this:
1676164829Srodrigc		# Map old usb library to new one for usb2 stack
1677164829Srodrigc		libusb-0.1.so.8	libusb20.so.1
1678164829Srodrigc
16791541Srgrimes20090209:
16801541Srgrimes	All USB ethernet devices now attach as interfaces under the name ueN
16811541Srgrimes	(eg. ue0). This is to provide a predictable name as vendors often
168262976Smckusick	change usb chipsets in a product without notice.
1683164829Srodrigc
168462976Smckusick20090203:
1685164829Srodrigc	The ichsmb(4) driver has been changed to require SMBus slave
1686164829Srodrigc	addresses be left-justified (xxxxxxx0b) rather than right-justified.
1687164829Srodrigc	All of the other SMBus controller drivers require left-justified
168862976Smckusick	slave addresses, so this change makes all the drivers provide the
1689164829Srodrigc	same interface.
1690164829Srodrigc
1691164829Srodrigc20090201:
1692164829Srodrigc	INET6 statistics (struct ip6stat) was updated.
1693164829Srodrigc	netstat(1) needs to be recompiled.
1694164829Srodrigc
1695164829Srodrigc20090119:
1696164829Srodrigc	NTFS has been removed from GENERIC kernel on amd64 to match
1697185283Sdaichi	GENERIC on i386. Should not cause any issues since mount_ntfs(8)
1698185283Sdaichi	will load ntfs.ko module automatically when NTFS support is
1699164829Srodrigc	actually needed, unless ntfs.ko is not installed or security
1700164829Srodrigc	level prohibits loading kernel modules. If either is the case,
1701164829Srodrigc	"options NTFS" has to be added into kernel config.
1702164829Srodrigc
1703164829Srodrigc20090115:
1704164829Srodrigc	TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
1705164829Srodrigc	New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
170676718Sbp	800061. User space tools that rely on the size of struct tcpcb in
1707164829Srodrigc	tcp_var.h (e.g. sockstat) need to be recompiled.
1708164829Srodrigc
1709164829Srodrigc20081225:
1710164829Srodrigc	ng_tty(4) module updated to match the new TTY subsystem.
171176718Sbp	Due to API change, user-level applications must be updated.
171276718Sbp	New API support added to mpd5 CVS and expected to be present
1713164829Srodrigc	in next mpd5.3 release.
1714164829Srodrigc
1715164829Srodrigc20081219:
1716164829Srodrigc	With __FreeBSD_version 800060 the makefs tool is part of
171762976Smckusick	the base system (it was a port).
171862976Smckusick
171925535Skato20081216:
1720164829Srodrigc	The afdata and ifnet locks have been changed from mutexes to
17211541Srgrimes	rwlocks, network modules will need to be re-compiled.
1722172637Sdaichi
1723234607Strasz20081214:
1724164829Srodrigc	__FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
1725164829Srodrigc	RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
172651688Sdillon	The new code reduced struct rtentry{} by 16 bytes on 32-bit
1727164829Srodrigc	architecture and 40 bytes on 64-bit architecture. The userland
1728164829Srodrigc	applications "arp" and "ndp" have been updated accordingly.
1729164829Srodrigc	The output from "netstat -r" shows only routing entries and
1730164829Srodrigc	none of the L2 information.
173122521Sdyson
1732172637Sdaichi20081130:
1733164829Srodrigc	__FreeBSD_version 800057 marks the switchover from the
1734164829Srodrigc	binary ath hal to source code. Users must add the line:
1735164829Srodrigc
17361541Srgrimes	options	AH_SUPPORT_AR5416
17371541Srgrimes
17381541Srgrimes	to their kernel config files when specifying:
173925535Skato
1740164829Srodrigc	device	ath_hal
17411541Srgrimes
1742164829Srodrigc	The ath_hal module no longer exists; the code is now compiled
1743164829Srodrigc	together with the driver in the ath module.  It is now
17441541Srgrimes	possible to tailor chip support (i.e. reduce the set of chips
1745164829Srodrigc	and thereby the code size); consult ath_hal(4) for details.
1746164829Srodrigc
1747164829Srodrigc20081121:
1748164829Srodrigc	__FreeBSD_version 800054 adds memory barriers to
1749164829Srodrigc	<machine/atomic.h>, new interfaces to ifnet to facilitate
1750164829Srodrigc	multiple hardware transmit queues for cards that support
1751164829Srodrigc	them, and a lock-less ring-buffer implementation to
1752164829Srodrigc	enable drivers to more efficiently manage queueing of
1753164829Srodrigc	packets.
1754164829Srodrigc
1755164829Srodrigc20081117:
1756164829Srodrigc	A new version of ZFS (version 13) has been merged to -HEAD.
1757164829Srodrigc	This version has zpool attribute "listsnapshots" off by
1758164829Srodrigc	default, which means "zfs list" does not show snapshots,
1759164829Srodrigc	and is the same as Solaris behavior.
17601541Srgrimes
17611541Srgrimes20081028:
17621541Srgrimes	dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
176376716Sbp
1764234867Sdaichi20081009:
17651541Srgrimes	The uhci, ohci, ehci and slhci USB Host controller drivers have
1766234867Sdaichi	been put into separate modules. If you load the usb module
17671541Srgrimes	separately through loader.conf you will need to load the
1768234867Sdaichi	appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
1769234867Sdaichi	controller add the following to loader.conf:
1770234867Sdaichi
1771234867Sdaichi		uhci_load="YES"
1772234867Sdaichi		ehci_load="YES"
1773234867Sdaichi
1774234867Sdaichi20081009:
1775234867Sdaichi	The ABI used by the PMC toolset has changed.  Please keep
1776234867Sdaichi	userland (libpmc(3)) and the kernel module (hwpmc(4)) in
1777234867Sdaichi	sync.
1778234867Sdaichi
1779234867Sdaichi20081009:
1780234867Sdaichi	atapci kernel module now includes only generic PCI ATA
1781234867Sdaichi	driver. AHCI driver moved to ataahci kernel module.
1782234867Sdaichi	All vendor-specific code moved into separate kernel modules:
1783234867Sdaichi	ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
1784234867Sdaichi	atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
1785234867Sdaichi	atamarvell, atamicron, atanational, atanetcell, atanvidia,
1786234867Sdaichi	atapromise, ataserverworks, atasiliconimage, atasis, atavia
1787234867Sdaichi
1788234867Sdaichi20080820:
1789234867Sdaichi	The TTY subsystem of the kernel has been replaced by a new
1790234867Sdaichi	implementation, which provides better scalability and an
1791234867Sdaichi	improved driver model. Most common drivers have been migrated to
1792234867Sdaichi	the new TTY subsystem, while others have not. The following
1793234867Sdaichi	drivers have not yet been ported to the new TTY layer:
1794234867Sdaichi
1795234867Sdaichi	PCI/ISA:
1796234867Sdaichi		cy, digi, rc, rp, sio
1797234867Sdaichi
1798234867Sdaichi	USB:
1799234867Sdaichi		ubser, ucycom
1800234867Sdaichi
1801234867Sdaichi	Line disciplines:
1802234867Sdaichi		ng_h4, ng_tty, ppp, sl, snp
1803234867Sdaichi
1804164829Srodrigc	Adding these drivers to your kernel configuration file shall
180522521Sdyson	cause compilation to fail.
1806234867Sdaichi
18071541Srgrimes20080818:
18081541Srgrimes	ntpd has been upgraded to 4.2.4p5.
1809234867Sdaichi
1810234867Sdaichi20080801:
1811234867Sdaichi	OpenSSH has been upgraded to 5.1p1.
1812234867Sdaichi
1813234867Sdaichi	For many years, FreeBSD's version of OpenSSH preferred DSA
1814234867Sdaichi	over RSA for host and user authentication keys.  With this
1815234867Sdaichi	upgrade, we've switched to the vendor's default of RSA over
1816234867Sdaichi	DSA.  This may cause upgraded clients to warn about unknown
1817234867Sdaichi	host keys even for previously known hosts.  Users should
1818234867Sdaichi	follow the usual procedure for verifying host keys before
1819234867Sdaichi	accepting the RSA key.
1820234867Sdaichi
1821234867Sdaichi	This can be circumvented by setting the "HostKeyAlgorithms"
1822234867Sdaichi	option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
1823234867Sdaichi	command line.
1824234867Sdaichi
1825234867Sdaichi	Please note that the sequence of keys offered for
182625535Skato	authentication has been changed as well.  You may want to
1827169671Skib	specify IdentityFile in a different order to revert this
18281541Srgrimes	behavior.
1829164829Srodrigc
1830164829Srodrigc20080713:
1831164829Srodrigc	The sio(4) driver has been removed from the i386 and amd64
1832234867Sdaichi	kernel configuration files. This means uart(4) is now the
1833164829Srodrigc	default serial port driver on those platforms as well.
1834172639Sdaichi
1835164829Srodrigc	To prevent collisions with the sio(4) driver, the uart(4) driver
1836164829Srodrigc	uses different names for its device nodes. This means the
1837164829Srodrigc	onboard serial port will now most likely be called "ttyu0"
1838164829Srodrigc	instead of "ttyd0". You may need to reconfigure applications to
1839164829Srodrigc	use the new device names.
18401541Srgrimes
1841185283Sdaichi	When using the serial port as a boot console, be sure to update
1842185283Sdaichi	/boot/device.hints and /etc/ttys before booting the new kernel.
1843164829Srodrigc	If you forget to do so, you can still manually specify the hints
1844234867Sdaichi	at the loader prompt:
1845164829Srodrigc
1846164829Srodrigc		set hint.uart.0.at="isa"
1847164829Srodrigc		set hint.uart.0.port="0x3F8"
184851688Sdillon		set hint.uart.0.flags="0x10"
1849164829Srodrigc		set hint.uart.0.irq="4"
1850234867Sdaichi		boot -s
18511541Srgrimes
1852172639Sdaichi20080609:
1853164829Srodrigc	The gpt(8) utility has been removed. Use gpart(8) to partition
1854164829Srodrigc	disks instead.
1855172639Sdaichi
1856172639Sdaichi20080603:
1857172639Sdaichi	The version that Linuxulator emulates was changed from 2.4.2
1858172639Sdaichi	to 2.6.16. If you experience any problems with Linux binaries
1859172639Sdaichi	please try to set sysctl compat.linux.osrelease to 2.4.2 and
1860164829Srodrigc	if it fixes the problem contact emulation mailing list.
1861172639Sdaichi
1862164829Srodrigc20080525:
1863164829Srodrigc	ISDN4BSD (I4B) was removed from the src tree. You may need to
1864164829Srodrigc	update a your kernel configuration and remove relevant entries.
1865164829Srodrigc
1866234867Sdaichi20080509:
1867234867Sdaichi	I have checked in code to support multiple routing tables.
1868234867Sdaichi	See the man pages setfib(1) and setfib(2).
1869242833Sattilio	This is a hopefully backwards compatible version,
1870172639Sdaichi	but to make use of it you need to compile your kernel
1871172639Sdaichi	with options ROUTETABLES=2 (or more up to 16).
1872164829Srodrigc
1873164829Srodrigc20080420:
1874164829Srodrigc	The 802.11 wireless support was redone to enable multi-bss
1875164829Srodrigc	operation on devices that are capable.  The underlying device
1876164829Srodrigc	is no longer used directly but instead wlanX devices are
1877164829Srodrigc	cloned with ifconfig.  This requires changes to rc.conf files.
1878164829Srodrigc	For example, change:
1879164829Srodrigc		ifconfig_ath0="WPA DHCP"
1880164829Srodrigc	to
1881234867Sdaichi		wlans_ath0=wlan0
1882234867Sdaichi		ifconfig_wlan0="WPA DHCP"
1883234867Sdaichi	see rc.conf(5) for more details.  In addition, mergemaster of
1884234867Sdaichi	/etc/rc.d is highly recommended.  Simultaneous update of userland
1885234867Sdaichi	and kernel wouldn't hurt either.
1886234867Sdaichi
1887234867Sdaichi	As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
1888234867Sdaichi	modules were merged into the base wlan module.  All references
1889234867Sdaichi	to these modules (e.g. in kernel config files) must be removed.
1890234867Sdaichi
1891234867Sdaichi20080408:
1892234867Sdaichi	psm(4) has gained write(2) support in native operation level.
1893234867Sdaichi	Arbitrary commands can be written to /dev/psm%d and status can
1894234867Sdaichi	be read back from it.  Therefore, an application is responsible
1895234867Sdaichi	for status validation and error recovery.  It is a no-op in
1896234867Sdaichi	other operation levels.
1897234867Sdaichi
1898164829Srodrigc20080312:
1899164829Srodrigc	Support for KSE threading has been removed from the kernel.  To
1900164829Srodrigc	run legacy applications linked against KSE libmap.conf may
1901164829Srodrigc	be used.  The following libmap.conf may be used to ensure
1902164829Srodrigc	compatibility with any prior release:
1903164829Srodrigc
1904164829Srodrigc	libpthread.so.1 libthr.so.1
1905175294Sattilio	libpthread.so.2 libthr.so.2
1906164829Srodrigc	libkse.so.3 libthr.so.3
1907164829Srodrigc
1908164829Srodrigc20080301:
1909164829Srodrigc	The layout of struct vmspace has changed. This affects libkvm
1910234867Sdaichi	and any executables that link against libkvm and use the
1911172639Sdaichi	kvm_getprocs() function. In particular, but not exclusively,
1912172639Sdaichi	it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
1913234867Sdaichi	The effects are minimal, but it's advisable to upgrade world
1914164829Srodrigc	nonetheless.
1915234867Sdaichi
1916234867Sdaichi20080229:
1917164829Srodrigc	The latest em driver no longer has support in it for the
1918164829Srodrigc	82575 adapter, this is now moved to the igb driver. The
1919164829Srodrigc	split was done to make new features that are incompatible
1920164829Srodrigc	with older hardware easier to do.
1921164829Srodrigc
1922234867Sdaichi20080220:
1923234867Sdaichi	The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
1924234867Sdaichi	likewise the kernel option is now GEOM_LINUX_LVM.
1925234867Sdaichi
1926164829Srodrigc20080211:
1927164829Srodrigc	The default NFS mount mode has changed from UDP to TCP for
1928234867Sdaichi	increased reliability.  If you rely on (insecurely) NFS
1929234867Sdaichi	mounting across a firewall you may need to update your
1930234867Sdaichi	firewall rules.
1931234867Sdaichi
1932164829Srodrigc20080208:
1933164829Srodrigc	Belatedly note the addition of m_collapse for compacting
1934164829Srodrigc	mbuf chains.
1935164829Srodrigc
1936175294Sattilio20080126:
1937164829Srodrigc	The fts(3) structures have been changed to use adequate
1938164829Srodrigc	integer types for their members and so to be able to cope
1939164829Srodrigc	with huge file trees.  The old fts(3) ABI is preserved
1940164829Srodrigc	through symbol versioning in libc, so third-party binaries
1941234867Sdaichi	using fts(3) should still work, although they will not take
1942172639Sdaichi	advantage of the extended types.  At the same time, some
1943234867Sdaichi	third-party software might fail to build after this change
1944234867Sdaichi	due to unportable assumptions made in its source code about
1945234867Sdaichi	fts(3) structure members.  Such software should be fixed
1946234867Sdaichi	by its vendor or, in the worst case, in the ports tree.
1947234867Sdaichi	FreeBSD_version 800015 marks this change for the unlikely
1948234867Sdaichi	case that a portable fix is impossible.
1949164829Srodrigc
1950164829Srodrigc20080123:
1951164829Srodrigc	To upgrade to -current after this date, you must be running
1952172639Sdaichi	FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
1953234867Sdaichi	from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
1954172639Sdaichi
1955234867Sdaichi20071128:
1956234867Sdaichi	The ADAPTIVE_GIANT kernel option has been retired because its
1957172639Sdaichi	functionality is the default now.
1958164829Srodrigc
1959164829Srodrigc20071118:
1960234867Sdaichi	The AT keyboard emulation of sunkbd(4) has been turned on
1961234867Sdaichi	by default. In order to make the special symbols of the Sun
1962164829Srodrigc	keyboards driven by sunkbd(4) work under X these now have
1963164829Srodrigc	to be configured the same way as Sun USB keyboards driven
1964164829Srodrigc	by ukbd(4) (which also does AT keyboard emulation), f.e.:
1965164829Srodrigc
1966164829Srodrigc	Option	"XkbLayout" "us"
19671541Srgrimes	Option	"XkbRules" "xorg"
1968164829Srodrigc	Option	"XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
1969164829Srodrigc
1970164829Srodrigc20071024:
1971164829Srodrigc	It has been decided that it is desirable to provide ABI
19721541Srgrimes	backwards compatibility to the FreeBSD 4/5/6 versions of the
19731541Srgrimes	PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
197425535Skato	broken with the introduction of PCI domain support (see the
1975164829Srodrigc	20070930 entry). Unfortunately, this required the ABI of
19761541Srgrimes	PCIOCGETCONF to be broken again in order to be able to
1977164829Srodrigc	provide backwards compatibility to the old version of that
1978164829Srodrigc	IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
1979164829Srodrigc	again. As for prominent ports this affects neither pciutils
1980164829Srodrigc	nor xorg-server this time, the hal port needs to be rebuilt
1981164829Srodrigc	however.
1982164829Srodrigc
1983164829Srodrigc20071020:
1984164829Srodrigc	The misnamed kthread_create() and friends have been renamed
19851541Srgrimes	to kproc_create() etc. Many of the callers already
1986185283Sdaichi	used kproc_start()..
1987185283Sdaichi	I will return kthread_create() and friends in a while
1988164829Srodrigc	with implementations that actually create threads, not procs.
1989164829Srodrigc	Renaming corresponds with version 800002.
1990164829Srodrigc
1991164829Srodrigc20071010:
1992164829Srodrigc	RELENG_7 branched.
1993164829Srodrigc
1994172639SdaichiCOMMON ITEMS:
1995164829Srodrigc
1996164829Srodrigc	General Notes
1997164829Srodrigc	-------------
1998164829Srodrigc	Avoid using make -j when upgrading.  While generally safe, there are
1999164829Srodrigc	sometimes problems using -j to upgrade.  If your upgrade fails with
2000164829Srodrigc	-j, please try again without -j.  From time to time in the past there
2001164829Srodrigc	have been problems using -j with buildworld and/or installworld.  This
2002164829Srodrigc	is especially true when upgrading between "distant" versions (eg one
2003164829Srodrigc	that cross a major release boundary or several minor releases, or when
2004164829Srodrigc	several months have passed on the -current branch).
2005164829Srodrigc
2006164829Srodrigc	Sometimes, obscure build problems are the result of environment
2007164829Srodrigc	poisoning.  This can happen because the make utility reads its
2008164829Srodrigc	environment when searching for values for global variables.  To run
2009164829Srodrigc	your build attempts in an "environmental clean room", prefix all make
2010164829Srodrigc	commands with 'env -i '.  See the env(1) manual page for more details.
2011164829Srodrigc
2012164829Srodrigc	When upgrading from one major version to another it is generally best
2013164829Srodrigc	to upgrade to the latest code in the currently installed branch first,
2014164829Srodrigc	then do an upgrade to the new branch. This is the best-tested upgrade
2015175294Sattilio	path, and has the highest probability of being successful.  Please try
2016164829Srodrigc	this approach before reporting problems with a major version upgrade.
2017164829Srodrigc
2018164829Srodrigc	When upgrading a live system, having a root shell around before
2019164829Srodrigc	installing anything can help undo problems. Not having a root shell
2020164829Srodrigc	around can lead to problems if pam has changed too much from your
2021164829Srodrigc	starting point to allow continued authentication after the upgrade.
2022164829Srodrigc
2023164829Srodrigc	ZFS notes
2024164829Srodrigc	---------
2025164829Srodrigc	When upgrading the boot ZFS pool to a new version, always follow
2026164829Srodrigc	these two steps:
2027164829Srodrigc
2028164829Srodrigc	1.) recompile and reinstall the ZFS boot loader and boot block
2029175294Sattilio	(this is part of "make buildworld" and "make installworld")
2030164829Srodrigc
2031164829Srodrigc	2.) update the ZFS boot block on your boot drive
2032164829Srodrigc
2033164829Srodrigc	The following example updates the ZFS boot block on the first
2034164829Srodrigc	partition (freebsd-boot) of a GPT partitioned drive ad0:
2035164829Srodrigc	"gpart bootcode -p /boot/gptzfsboot -i 1 ad0"
2036164829Srodrigc
2037164829Srodrigc	Non-boot pools do not need these updates.
2038164829Srodrigc
2039164829Srodrigc	To build a kernel
2040164829Srodrigc	-----------------
2041164829Srodrigc	If you are updating from a prior version of FreeBSD (even one just
2042164829Srodrigc	a few days old), you should follow this procedure.  It is the most
2043164829Srodrigc	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
2044164829Srodrigc
2045164829Srodrigc	make kernel-toolchain
2046164829Srodrigc	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
2047164829Srodrigc	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
20481541Srgrimes
20491541Srgrimes	To test a kernel once
2050164829Srodrigc	---------------------
2051164829Srodrigc	If you just want to boot a kernel once (because you are not sure
2052164829Srodrigc	if it works, or if you want to boot a known bad kernel to provide
2053164829Srodrigc	debugging information) run
2054164829Srodrigc	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
20551541Srgrimes	nextboot -k testkernel
2056185283Sdaichi
2057185283Sdaichi	To just build a kernel when you know that it won't mess you up
2058164829Srodrigc	--------------------------------------------------------------
2059164829Srodrigc	This assumes you are already running a CURRENT system.  Replace
2060164829Srodrigc	${arch} with the architecture of your machine (e.g. "i386",
2061164829Srodrigc	"arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
2062164829Srodrigc
2063164829Srodrigc	cd src/sys/${arch}/conf
206425535Skato	config KERNEL_NAME_HERE
2065164829Srodrigc	cd ../compile/KERNEL_NAME_HERE
20661541Srgrimes	make depend
2067164829Srodrigc	make
2068164829Srodrigc	make install
2069164829Srodrigc
2070164829Srodrigc	If this fails, go to the "To build a kernel" section.
2071164829Srodrigc
2072164829Srodrigc	To rebuild everything and install it on the current system.
20731541Srgrimes	-----------------------------------------------------------
2074164829Srodrigc	# Note: sometimes if you are running current you gotta do more than
2075164829Srodrigc	# is listed here if you are upgrading from a really old current.
2076185283Sdaichi
2077185283Sdaichi	<make sure you have good level 0 dumps>
2078164829Srodrigc	make buildworld
2079164829Srodrigc	make kernel KERNCONF=YOUR_KERNEL_HERE
2080164829Srodrigc							[1]
2081175202Sattilio	<reboot in single user>				[3]
2082164829Srodrigc	mergemaster -p					[5]
2083164829Srodrigc	make installworld
2084164829Srodrigc	mergemaster -i					[4]
2085164829Srodrigc	make delete-old					[6]
2086164829Srodrigc	<reboot>
2087164829Srodrigc
2088164829Srodrigc	To cross-install current onto a separate partition
2089164829Srodrigc	--------------------------------------------------
2090164829Srodrigc	# In this approach we use a separate partition to hold
2091164829Srodrigc	# current's root, 'usr', and 'var' directories.   A partition
2092164829Srodrigc	# holding "/", "/usr" and "/var" should be about 2GB in
2093164829Srodrigc	# size.
2094164829Srodrigc
2095170152Skib	<make sure you have good level 0 dumps>
2096170152Skib	<boot into -stable>
2097164829Srodrigc	make buildworld
2098164829Srodrigc	make buildkernel KERNCONF=YOUR_KERNEL_HERE
2099164829Srodrigc	<maybe newfs current's root partition>
2100164829Srodrigc	<mount current's root partition on directory ${CURRENT_ROOT}>
2101164829Srodrigc	make installworld DESTDIR=${CURRENT_ROOT}
2102172635Sdaichi	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
2103178491Sdaichi	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
2104164829Srodrigc	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
2105164829Srodrigc	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
2106234867Sdaichi	<reboot into current>
2107164829Srodrigc	<do a "native" rebuild/install as described in the previous section>
2108164829Srodrigc	<maybe install compatibility libraries from ports/misc/compat*>
2109164829Srodrigc	<reboot>
2110164829Srodrigc
2111164829Srodrigc
2112164829Srodrigc	To upgrade in-place from stable to current
2113164829Srodrigc	----------------------------------------------
2114164829Srodrigc	<make sure you have good level 0 dumps>
2115234867Sdaichi	make buildworld					[9]
2116164829Srodrigc	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
2117164829Srodrigc							[1]
2118164829Srodrigc	<reboot in single user>				[3]
2119164829Srodrigc	mergemaster -p					[5]
2120164829Srodrigc	make installworld
2121164829Srodrigc	mergemaster -i					[4]
2122164829Srodrigc	make delete-old					[6]
2123164829Srodrigc	<reboot>
2124164829Srodrigc
2125164829Srodrigc	Make sure that you've read the UPDATING file to understand the
2126164829Srodrigc	tweaks to various things you need.  At this point in the life
2127164829Srodrigc	cycle of current, things change often and you are on your own
2128185283Sdaichi	to cope.  The defaults can also change, so please read ALL of
2129185283Sdaichi	the UPDATING entries.
2130164829Srodrigc
2131164829Srodrigc	Also, if you are tracking -current, you must be subscribed to
2132164829Srodrigc	freebsd-current@freebsd.org.  Make sure that before you update
21331541Srgrimes	your sources that you have read and understood all the recent
2134164829Srodrigc	messages there.  If in doubt, please track -stable which has
2135164829Srodrigc	much fewer pitfalls.
2136164829Srodrigc
2137164829Srodrigc	[1] If you have third party modules, such as vmware, you
2138164829Srodrigc	should disable them at this point so they don't crash your
21391541Srgrimes	system on reboot.
2140164829Srodrigc
2141164829Srodrigc	[3] From the bootblocks, boot -s, and then do
21421541Srgrimes		fsck -p
21431541Srgrimes		mount -u /
2144124090Stjr		mount -a
2145164829Srodrigc		cd src
2146124090Stjr		adjkerntz -i		# if CMOS is wall time
2147164829Srodrigc	Also, when doing a major release upgrade, it is required that
2148164829Srodrigc	you boot into single user mode to do the installworld.
2149164829Srodrigc
2150124090Stjr	[4] Note: This step is non-optional.  Failure to do this step
2151185283Sdaichi	can result in a significant reduction in the functionality of the
2152185283Sdaichi	system.  Attempting to do it by hand is not recommended and those
2153164829Srodrigc	that pursue this avenue should read this file carefully, as well
2154164829Srodrigc	as the archives of freebsd-current and freebsd-hackers mailing lists
2155124090Stjr	for potential gotchas.  The -U option is also useful to consider.
2156164829Srodrigc	See mergemaster(8) for more information.
2157164829Srodrigc
2158164829Srodrigc	[5] Usually this step is a noop.  However, from time to time
2159164829Srodrigc	you may need to do this if you get unknown user in the following
2160164829Srodrigc	step.  It never hurts to do it all the time.  You may need to
2161164829Srodrigc	install a new mergemaster (cd src/usr.sbin/mergemaster && make
2162124090Stjr	install) after the buildworld before this step if you last updated
2163124090Stjr	from current before 20130425 or from -stable before 20130430.
2164124090Stjr
2165124090Stjr	[6] This only deletes old files and directories. Old libraries
2166164829Srodrigc	can be deleted by "make delete-old-libs", but you have to make
2167124090Stjr	sure that no program is using those libraries anymore.
2168164829Srodrigc
2169164829Srodrigc	[8] In order to have a kernel that can run the 4.x binaries needed to
2170164829Srodrigc	do an installworld, you must include the COMPAT_FREEBSD4 option in
2171164829Srodrigc	your kernel.  Failure to do so may leave you with a system that is
2172164829Srodrigc	hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
2173124090Stjr	required to run the 5.x binaries on more recent kernels.  And so on
2174164829Srodrigc	for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
2175124090Stjr
2176185283Sdaichi	Make sure that you merge any new devices from GENERIC since the
2177185283Sdaichi	last time you updated your kernel config file.
2178164829Srodrigc
2179164829Srodrigc	[9] When checking out sources, you must include the -P flag to have
2180164829Srodrigc	cvs prune empty directories.
2181164829Srodrigc
2182164829Srodrigc	If CPUTYPE is defined in your /etc/make.conf, make sure to use the
2183164829Srodrigc	"?=" instead of the "=" assignment operator, so that buildworld can
2184164829Srodrigc	override the CPUTYPE if it needs to.
2185164829Srodrigc
2186164829Srodrigc	MAKEOBJDIRPREFIX must be defined in an environment variable, and
2187164829Srodrigc	not on the command line, or in /etc/make.conf.  buildworld will
2188164829Srodrigc	warn if it is improperly defined.
2189164829SrodrigcFORMAT:
2190164829Srodrigc
2191164829SrodrigcThis file contains a list, in reverse chronological order, of major
2192164829Srodrigcbreakages in tracking -current.  It is not guaranteed to be a complete
2193164829Srodrigclist of such breakages, and only contains entries since October 10, 2007.
2194164829SrodrigcIf you need to see UPDATING entries from before that date, you will need
2195164829Srodrigcto fetch an UPDATING file from an older FreeBSD release.
2196164829Srodrigc
2197164829SrodrigcCopyright information:
2198124090Stjr
2199124090StjrCopyright 1998-2009 M. Warner Losh.  All Rights Reserved.
2200124090Stjr
2201124090StjrRedistribution, publication, translation and use, with or without
2202164829Srodrigcmodification, in full or in part, in any form or format of this
2203124090Stjrdocument are permitted without further permission from the author.
2204164829Srodrigc
2205164829SrodrigcTHIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
2206164829SrodrigcIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2207124090StjrWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2208164829SrodrigcDISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
2209164829SrodrigcINDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2210185283Sdaichi(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2211185283SdaichiSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2212164829SrodrigcHOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2213164829SrodrigcSTRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
2214164829SrodrigcIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2215164829SrodrigcPOSSIBILITY OF SUCH DAMAGE.
2216164829Srodrigc
2217164829SrodrigcContact Warner Losh if you have any questions about your use of
2218164829Srodrigcthis document.
2219164829Srodrigc
2220124090Stjr$FreeBSD: stable/10/UPDATING 285206 2015-07-06 13:23:27Z des $
2221124090Stjr