xref: /freebsd/UPDATING (revision 298022457a9a016cbdda4e22d751abb5cd91c919)
1Updating Information for FreeBSD current users.
2
3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4See end of file for further details.  For commonly done items, please see the
5COMMON ITEMS: section later in the file.  These instructions assume that you
6basically know what you are doing.  If not, then please consult the FreeBSD
7handbook:
8
9    http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
10
11Items affecting the ports and packages system can be found in
12/usr/ports/UPDATING.  Please read that file before running portupgrade.
13
14NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping
15from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
16the tip of head, and then rebuild without this option. The bootstrap process from
17older version of current across the gcc/clang cutover is a bit fragile.
18
19NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
20	FreeBSD 11.x has many debugging features turned on, in both the kernel
21	and userland.  These features attempt to detect incorrect use of
22	system primitives, and encourage loud failure through extra sanity
23	checking and fail stop semantics.  They also substantially impact
24	system performance.  If you want to do performance measurement,
25	benchmarking, and optimization, you'll want to turn them off.  This
26	includes various WITNESS- related kernel options, INVARIANTS, malloc
27	debugging flags in userland, and various verbose features in the
28	kernel.  Many developers choose to disable these features on build
29	machines to maximize performance.  (To completely disable malloc
30	debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
31	disable the most expensive debugging functionality run
32	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
33
3420150616:
35	/etc/make.conf now included earlier.
36	sys.mk now includes /etc/make.conf and {local,src}.sys.mk earlier
37	than previously.
38	This makes it simple to interpose external toolchains etc.
39	However it may cause problems for users who have things like::
40
41		INSTALL+= something
42
43	in /etc/make.conf, since INSTALL is not yet defined.
44	A safe fix for that is to have::
45
46		INSTALL?= install
47		INSTALL+= something
48
49	which is equivalent to previous behavior.
50
5120150616:
52	FreeBSD's old make (fmake) has been removed from the system. It is
53	available as the devel/fmake port or via pkg install fmake.
54
5520150615:
56	The fix for the issue described in the 20150614 sendmail entry
57	below has been been committed in revision 284436.  The work
58	around described in that entry is no longer needed unless the
59	default setting is overridden by a confDH_PARAMETERS configuration
60	setting of '5' or pointing to a 512 bit DH parameter file.
61
6220150614:
63	ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
64	atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
65	and devel/kyua to version 0.20+ and adjust any calling code to work
66	with Kyuafile and kyua.
67
6820150614:
69	The import of openssl to address the FreeBSD-SA-15:10.openssl
70	security advisory includes a change which rejects handshakes
71	with DH parameters below 768 bits.  sendmail releases prior
72	to 8.15.2 (not yet released), defaulted to a 512 bit
73	DH parameter setting for client connections.  To work around
74	this interoperability, sendmail can be configured to use a
75	2048 bit DH parameter by:
76
77	1. Edit /etc/mail/`hostname`.mc
78	2. If a setting for confDH_PARAMETERS does not exist or
79	   exists and is set to a string beginning with '5',
80	   replace it with '2'.
81	3. If a setting for confDH_PARAMETERS exists and is set to
82	   a file path, create a new file with:
83		openssl dhparam -out /path/to/file 2048
84	4. Rebuild the .cf file:
85		cd /etc/mail/; make; make install
86	5. Restart sendmail:
87		cd /etc/mail/; make restart
88
89	A sendmail patch is coming, at which time this file will be
90	updated.
91
9220150604:
93	Generation of legacy formatted entries have been disabled by default
94	in pwd_mkdb(8), as all base system consumers of the legacy formatted
95	entries were converted to use the new format by default when the new,
96	machine independent format have been added and supported since FreeBSD
97	5.x.
98
99	Please see the pwd_mkdb(8) manual page for further details.
100
10120150525:
102	Clang and llvm have been upgraded to 3.6.1 release.  Please see the
103	20141231 entry below for information about prerequisites and upgrading,
104	if you are not already using 3.5.0 or higher.
105
10620150521:
107	TI platform code switched to using vendor DTS files and this update
108	may break existing systems running on Beaglebone, Beaglebone Black,
109	and Pandaboard:
110
111	- dtb files should be regenerated/reinstalled. Filenames are the
112	  same but content is different now
113	- GPIO addressing was changed, now each GPIO bank (32 pins per bank)
114	  has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
115	  addressing scheme is now pin 25 on /dev/gpioc3.
116	- Pandaboard: /etc/ttys should be updated, serial console device is
117	  now /dev/ttyu2, not /dev/ttyu0
118
11920150501:
120	soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
121	If you need the GNU extension from groff soelim(1), install groff
122	from package: pkg install groff, or via ports: textproc/groff.
123
12420150423:
125	chmod, chflags, chown and chgrp now affect symlinks in -R mode as
126	defined in symlink(7); previously symlinks were silently ignored.
127
12820150415:
129	The const qualifier has been removed from iconv(3) to comply with
130	POSIX.  The ports tree is aware of this from r384038 onwards.
131
13220150416:
133	Libraries specified by LIBADD in Makefiles must have a corresponding
134	DPADD_<lib> variable to ensure correct dependencies.  This is now
135	enforced in src.libnames.mk.
136
13720150324:
138	From legacy ata(4) driver was removed support for SATA controllers
139	supported by more functional drivers ahci(4), siis(4) and mvs(4).
140	Kernel modules ataahci and ataadaptec were removed completely,
141	replaced by ahci and mvs modules respectively.
142
14320150315:
144	Clang, llvm and lldb have been upgraded to 3.6.0 release.  Please see
145	the 20141231 entry below for information about prerequisites and
146	upgrading, if you are not already using 3.5.0 or higher.
147
14820150307:
149	The 32-bit PowerPC kernel has been changed to a position-independent
150	executable. This can only be booted with a version of loader(8)
151	newer than January 31, 2015, so make sure to update both world and
152	kernel before rebooting.
153
15420150217:
155	If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
156	but before r278950, the RNG was not seeded properly.  Immediately
157	upgrade the kernel to r278950 or later and regenerate any keys (e.g.
158	ssh keys or openssl keys) that were generated w/ a kernel from that
159	range.  This does not affect programs that directly used /dev/random
160	or /dev/urandom.  All userland uses of arc4random(3) are affected.
161
16220150210:
163	The autofs(4) ABI was changed in order to restore binary compatibility
164	with 10.1-RELEASE.  The automountd(8) daemon needs to be rebuilt to work
165	with the new kernel.
166
16720150131:
168	The powerpc64 kernel has been changed to a position-independent
169	executable. This can only be booted with a new version of loader(8),
170	so make sure to update both world and kernel before rebooting.
171
17220150118:
173	Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
174	only release, no new features have been added.  Please see the 20141231
175	entry below for information about prerequisites and upgrading, if you
176	are not already using 3.5.0.
177
17820150107:
179	ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
180	taken from the ELF Tool Chain project rather than GNU binutils. They
181	should be drop-in replacements, with the addition of arm64 support.
182	The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
183	binutils tools, if necessary.
184
18520150105:
186	The default Unbound configuration now enables remote control
187	using a local socket.  Users who have already enabled the
188	local_unbound service should regenerate their configuration
189	by running "service local_unbound setup" as root.
190
19120150102:
192	The GNU texinfo and GNU info pages have been removed.
193	To be able to view GNU info pages please install texinfo from ports.
194
19520141231:
196	Clang, llvm and lldb have been upgraded to 3.5.0 release.
197
198	As of this release, a prerequisite for building clang, llvm and lldb is
199	a C++11 capable compiler and C++11 standard library.  This means that to
200	be able to successfully build the cross-tools stage of buildworld, with
201	clang as the bootstrap compiler, your system compiler or cross compiler
202	should either be clang 3.3 or later, or gcc 4.8 or later, and your
203	system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
204	later.
205
206	On any standard FreeBSD 10.x or 11.x installation, where clang and
207	libc++ are on by default (that is, on x86 or arm), this should work out
208	of the box.
209
210	On 9.x installations where clang is enabled by default, e.g. on x86 and
211	powerpc, libc++ will not be enabled by default, so libc++ should be
212	built (with clang) and installed first.  If both clang and libc++ are
213	missing, build clang first, then use it to build libc++.
214
215	On 8.x and earlier installations, upgrade to 9.x first, and then follow
216	the instructions for 9.x above.
217
218	Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
219	default, and do not build clang.
220
221	Many embedded systems are resource constrained, and will not be able to
222	build clang in a reasonable time, or in some cases at all.  In those
223	cases, cross building bootable systems on amd64 is a workaround.
224
225	This new version of clang introduces a number of new warnings, of which
226	the following are most likely to appear:
227
228	-Wabsolute-value
229
230	This warns in two cases, for both C and C++:
231	* When the code is trying to take the absolute value of an unsigned
232	  quantity, which is effectively a no-op, and almost never what was
233	  intended.  The code should be fixed, if at all possible.  If you are
234	  sure that the unsigned quantity can be safely cast to signed, without
235	  loss of information or undefined behavior, you can add an explicit
236	  cast, or disable the warning.
237
238	* When the code is trying to take an absolute value, but the called
239	  abs() variant is for the wrong type, which can lead to truncation.
240	  If you want to disable the warning instead of fixing the code, please
241	  make sure that truncation will not occur, or it might lead to unwanted
242	  side-effects.
243
244	-Wtautological-undefined-compare and
245	-Wundefined-bool-conversion
246
247	These warn when C++ code is trying to compare 'this' against NULL, while
248	'this' should never be NULL in well-defined C++ code.  However, there is
249	some legacy (pre C++11) code out there, which actively abuses this
250	feature, which was less strictly defined in previous C++ versions.
251
252	Squid and openjdk do this, for example.  The warning can be turned off
253	for C++98 and earlier, but compiling the code in C++11 mode might result
254	in unexpected behavior; for example, the parts of the program that are
255	unreachable could be optimized away.
256
25720141222:
258	The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
259	kernel sources have been removed. The .h files remain, since some
260	utilities include them. This will need to be fixed later.
261	If "mount -t oldnfs ..." is attempted, it will fail.
262	If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
263	the utilities will report errors.
264
26520141121:
266	The handling of LOCAL_LIB_DIRS has been altered to skip addition of
267	directories to top level SUBDIR variable when their parent
268	directory is included in LOCAL_DIRS.  Users with build systems with
269	such hierarchies and without SUBDIR entries in the parent
270	directory Makefiles should add them or add the directories to
271	LOCAL_DIRS.
272
27320141109:
274	faith(4) and faithd(8) have been removed from the base system. Faith
275	has been obsolete for a very long time.
276
27720141104:
278	vt(4), the new console driver, is enabled by default. It brings
279	support for Unicode and double-width characters, as well as
280	support for UEFI and integration with the KMS kernel video
281	drivers.
282
283	You may need to update your console settings in /etc/rc.conf,
284	most probably the keymap. During boot, /etc/rc.d/syscons will
285	indicate what you need to do.
286
287	vt(4) still has issues and lacks some features compared to
288	syscons(4). See the wiki for up-to-date information:
289	  https://wiki.freebsd.org/Newcons
290
291	If you want to keep using syscons(4), you can do so by adding
292	the following line to /boot/loader.conf:
293	  kern.vty=sc
294
29520141102:
296	pjdfstest has been integrated into kyua as an opt-in test suite.
297	Please see share/doc/pjdfstest/README for more details on how to
298	execute it.
299
30020141009:
301	gperf has been removed from the base system for architectures
302	that use clang. Ports that require gperf will obtain it from the
303	devel/gperf port.
304
30520140923:
306	pjdfstest has been moved from tools/regression/pjdfstest to
307	contrib/pjdfstest .
308
30920140922:
310	At svn r271982, The default linux compat kernel ABI has been adjusted
311	to 2.6.18 in support of the linux-c6 compat ports infrastructure
312	update.  If you wish to continue using the linux-f10 compat ports,
313	add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
314	encouraged to update their linux-compat packages to linux-c6 during
315	their next update cycle.
316
31720140729:
318	The ofwfb driver, used to provide a graphics console on PowerPC when
319	using vt(4), no longer allows mmap() of all physical memory. This
320	will prevent Xorg on PowerPC with some ATI graphics cards from
321	initializing properly unless x11-servers/xorg-server is updated to
322	1.12.4_8 or newer.
323
32420140723:
325	The xdev targets have been converted to using TARGET and
326	TARGET_ARCH instead of XDEV and XDEV_ARCH.
327
32820140719:
329	The default unbound configuration has been modified to address
330	issues with reverse lookups on networks that use private
331	address ranges.  If you use the local_unbound service, run
332	"service local_unbound setup" as root to regenerate your
333	configuration, then "service local_unbound reload" to load the
334	new configuration.
335
33620140709:
337	The GNU texinfo and GNU info pages are not built and installed
338	anymore, WITH_INFO knob has been added to allow to built and install
339	them again.
340	UPDATE: see 20150102 entry on texinfo's removal
341
34220140708:
343	The GNU readline library is now an INTERNALLIB - that is, it is
344	statically linked into consumers (GDB and variants) in the base
345	system, and the shared library is no longer installed.  The
346	devel/readline port is available for third party software that
347	requires readline.
348
34920140702:
350	The Itanium architecture (ia64) has been removed from the list of
351	known architectures. This is the first step in the removal of the
352	architecture.
353
35420140701:
355	Commit r268115 has added NFSv4.1 server support, merged from
356	projects/nfsv4.1-server.  Since this includes changes to the
357	internal interfaces between the NFS related modules, a full
358	build of the kernel and modules will be necessary.
359	__FreeBSD_version has been bumped.
360
36120140629:
362	The WITHOUT_VT_SUPPORT kernel config knob has been renamed
363	WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
364	which differs from the behaviour controlled by this knob.)
365
36620140619:
367	Maximal length of the serial number in CTL was increased from 16 to
368	64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
369	and ctld, need to be rebuilt to work with a new kernel.
370
37120140606:
372	The libatf-c and libatf-c++ major versions were downgraded to 0 and
373	1 respectively to match the upstream numbers.  They were out of
374	sync because, when they were originally added to FreeBSD, the
375	upstream versions were not respected.  These libraries are private
376	and not yet built by default, so renumbering them should be a
377	non-issue.  However, unclean source trees will yield broken test
378	programs once the operator executes "make delete-old-libs" after a
379	"make installworld".
380
381	Additionally, the atf-sh binary was made private by moving it into
382	/usr/libexec/.  Already-built shell test programs will keep the
383	path to the old binary so they will break after "make delete-old"
384	is run.
385
386	If you are using WITH_TESTS=yes (not the default), wipe the object
387	tree and rebuild from scratch to prevent spurious test failures.
388	This is only needed once: the misnumbered libraries and misplaced
389	binaries have been added to OptionalObsoleteFiles.inc so they will
390	be removed during a clean upgrade.
391
39220140512:
393	Clang and llvm have been upgraded to 3.4.1 release.
394
39520140508:
396	We bogusly installed src.opts.mk in /usr/share/mk. This file should
397	be removed to avoid issues in the future (and has been added to
398	ObsoleteFiles.inc).
399
40020140505:
401	/etc/src.conf now affects only builds of the FreeBSD src tree. In the
402	past, it affected all builds that used the bsd.*.mk files. The old
403	behavior was a bug, but people may have relied upon it. To get this
404	behavior back, you can .include /etc/src.conf from /etc/make.conf
405	(which is still global and isn't changed). This also changes the
406	behavior of incremental builds inside the tree of individual
407	directories. Set MAKESYSPATH to ".../share/mk" to do that.
408	Although this has survived make universe and some upgrade scenarios,
409	other upgrade scenarios may have broken. At least one form of
410	temporary breakage was fixed with MAKESYSPATH settings for buildworld
411	as well... In cases where MAKESYSPATH isn't working with this
412	setting, you'll need to set it to the full path to your tree.
413
414	One side effect of all this cleaning up is that bsd.compiler.mk
415	is no longer implicitly included by bsd.own.mk. If you wish to
416	use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
417	as well.
418
41920140430:
420	The lindev device has been removed since /dev/full has been made a
421	standard device.  __FreeBSD_version has been bumped.
422
42320140424:
424	The knob WITHOUT_VI was added to the base system, which controls
425	building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
426	in order to reorder files share/termcap and didn't build ex(1) as a
427	build tool, so building/installing with WITH_VI is highly advised for
428	build hosts for older releases.
429
430	This issue has been fixed in stable/9 and stable/10 in r277022 and
431	r276991, respectively.
432
43320140418:
434	The YES_HESIOD knob has been removed. It has been obsolete for
435	a decade. Please move to using WITH_HESIOD instead or your builds
436	will silently lack HESIOD.
437
43820140405:
439	The uart(4) driver has been changed with respect to its handling
440	of the low-level console. Previously the uart(4) driver prevented
441	any process from changing the baudrate or the CLOCAL and HUPCL
442	control flags. By removing the restrictions, operators can make
443	changes to the serial console port without having to reboot.
444	However, when getty(8) is started on the serial device that is
445	associated with the low-level console, a misconfigured terminal
446	line in /etc/ttys will now have a real impact.
447	Before upgrading the kernel, make sure that /etc/ttys has the
448	serial console device configured as 3wire without baudrate to
449	preserve the previous behaviour. E.g:
450	    ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
451
45220140306:
453	Support for libwrap (TCP wrappers) in rpcbind was disabled by default
454	to improve performance.  To re-enable it, if needed, run rpcbind
455	with command line option -W.
456
45720140226:
458	Switched back to the GPL dtc compiler due to updates in the upstream
459	dts files not being supported by the BSDL dtc compiler. You will need
460	to rebuild your kernel toolchain to pick up the new compiler. Core dumps
461	may result while building dtb files during a kernel build if you fail
462	to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
463
46420140216:
465	Clang and llvm have been upgraded to 3.4 release.
466
46720140216:
468	The nve(4) driver has been removed.  Please use the nfe(4) driver
469	for NVIDIA nForce MCP Ethernet adapters instead.
470
47120140212:
472	An ABI incompatibility crept into the libc++ 3.4 import in r261283.
473	This could cause certain C++ applications using shared libraries built
474	against the previous version of libc++ to crash.  The incompatibility
475	has now been fixed, but any C++ applications or shared libraries built
476	between r261283 and r261801 should be recompiled.
477
47820140204:
479	OpenSSH will now ignore errors caused by kernel lacking of Capsicum
480	capability mode support.  Please note that enabling the feature in
481	kernel is still highly recommended.
482
48320140131:
484	OpenSSH is now built with sandbox support, and will use sandbox as
485	the default privilege separation method.  This requires Capsicum
486	capability mode support in kernel.
487
48820140128:
489	The libelf and libdwarf libraries have been updated to newer
490	versions from upstream. Shared library version numbers for
491	these two libraries were bumped. Any ports or binaries
492	requiring these two libraries should be recompiled.
493	__FreeBSD_version is bumped to 1100006.
494
49520140110:
496	If a Makefile in a tests/ directory was auto-generating a Kyuafile
497	instead of providing an explicit one, this would prevent such
498	Makefile from providing its own Kyuafile in the future during
499	NO_CLEAN builds.  This has been fixed in the Makefiles but manual
500	intervention is needed to clean an objdir if you use NO_CLEAN:
501	  # find /usr/obj -name Kyuafile | xargs rm -f
502
50320131213:
504	The behavior of gss_pseudo_random() for the krb5 mechanism
505	has changed, for applications requesting a longer random string
506	than produced by the underlying enctype's pseudo-random() function.
507	In particular, the random string produced from a session key of
508	enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
509	be different at the 17th octet and later, after this change.
510	The counter used in the PRF+ construction is now encoded as a
511	big-endian integer in accordance with RFC 4402.
512	__FreeBSD_version is bumped to 1100004.
513
51420131108:
515	The WITHOUT_ATF build knob has been removed and its functionality
516	has been subsumed into the more generic WITHOUT_TESTS.  If you were
517	using the former to disable the build of the ATF libraries, you
518	should change your settings to use the latter.
519
52020131025:
521	The default version of mtree is nmtree which is obtained from
522	NetBSD.  The output is generally the same, but may vary
523	slightly.  If you found you need identical output adding
524	"-F freebsd9" to the command line should do the trick.  For the
525	time being, the old mtree is available as fmtree.
526
52720131014:
528	libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
529	This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
530	1.1.4_8 and verify bsdyml not linked in, before running "make
531	delete-old-libs":
532	  # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
533	  or
534	  # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
535
53620131010:
537	The rc.d/jail script has been updated to support jail(8)
538	configuration file.  The "jail_<jname>_*" rc.conf(5) variables
539	for per-jail configuration are automatically converted to
540	/var/run/jail.<jname>.conf before the jail(8) utility is invoked.
541	This is transparently backward compatible.  See below about some
542	incompatibilities and rc.conf(5) manual page for more details.
543
544	These variables are now deprecated in favor of jail(8) configuration
545	file.  One can use "rc.d/jail config <jname>" command to generate
546	a jail(8) configuration file in /var/run/jail.<jname>.conf without
547	running the jail(8) utility.   The default pathname of the
548	configuration file is /etc/jail.conf and can be specified by
549	using $jail_conf or $jail_<jname>_conf variables.
550
551	Please note that jail_devfs_ruleset accepts an integer at
552	this moment.  Please consider to rewrite the ruleset name
553	with an integer.
554
55520130930:
556	BIND has been removed from the base system.  If all you need
557	is a local resolver, simply enable and start the local_unbound
558	service instead.  Otherwise, several versions of BIND are
559	available in the ports tree.   The dns/bind99 port is one example.
560
561	With this change, nslookup(1) and dig(1) are no longer in the base
562	system.  Users should instead use host(1) and drill(1) which are
563	in the base system.  Alternatively, nslookup and dig can
564	be obtained by installing the dns/bind-tools port.
565
56620130916:
567	With the addition of unbound(8), a new unbound user is now
568	required during installworld.  "mergemaster -p" can be used to
569	add the user prior to installworld, as documented in the handbook.
570
57120130911:
572	OpenSSH is now built with DNSSEC support, and will by default
573	silently trust signed SSHFP records.  This can be controlled with
574	the VerifyHostKeyDNS client configuration setting.  DNSSEC support
575	can be disabled entirely with the WITHOUT_LDNS option in src.conf.
576
57720130906:
578	The GNU Compiler Collection and C++ standard library (libstdc++)
579	are no longer built by default on platforms where clang is the system
580	compiler.  You can enable them with the WITH_GCC and WITH_GNUCXX
581	options in src.conf.
582
58320130905:
584	The PROCDESC kernel option is now part of the GENERIC kernel
585	configuration and is required for the rwhod(8) to work.
586	If you are using custom kernel configuration, you should include
587	'options PROCDESC'.
588
58920130905:
590	The API and ABI related to the Capsicum framework was modified
591	in backward incompatible way. The userland libraries and programs
592	have to be recompiled to work with the new kernel. This includes the
593	following libraries and programs, but the whole buildworld is
594	advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
595	kdump, procstat, rwho, rwhod, uniq.
596
59720130903:
598	AES-NI intrinsic support has been added to gcc.  The AES-NI module
599	has been updated to use this support.  A new gcc is required to build
600	the aesni module on both i386 and amd64.
601
60220130821:
603	The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
604	Thus "device padlock_rng" and "device rdrand_rng" should be
605	used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
606
60720130813:
608	WITH_ICONV has been split into two feature sets.  WITH_ICONV now
609	enables just the iconv* functionality and is now on by default.
610	WITH_LIBICONV_COMPAT enables the libiconv api and link time
611	compatability.  Set WITHOUT_ICONV to build the old way.
612	If you have been using WITH_ICONV before, you will very likely
613	need to turn on WITH_LIBICONV_COMPAT.
614
61520130806:
616	INVARIANTS option now enables DEBUG for code with OpenSolaris and
617	Illumos origin, including ZFS.  If you have INVARIANTS in your
618	kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
619	explicitly.
620	DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
621	locks if WITNESS option was set.  Because that generated a lot of
622	witness(9) reports and all of them were believed to be false
623	positives, this is no longer done.  New option OPENSOLARIS_WITNESS
624	can be used to achieve the previous behavior.
625
62620130806:
627	Timer values in IPv6 data structures now use time_uptime instead
628	of time_second.  Although this is not a user-visible functional
629	change, userland utilities which directly use them---ndp(8),
630	rtadvd(8), and rtsold(8) in the base system---need to be updated
631	to r253970 or later.
632
63320130802:
634	find -delete can now delete the pathnames given as arguments,
635	instead of only files found below them or if the pathname did
636	not contain any slashes. Formerly, the following error message
637	would result:
638
639	find: -delete: <path>: relative path potentially not safe
640
641	Deleting the pathnames given as arguments can be prevented
642	without error messages using -mindepth 1 or by changing
643	directory and passing "." as argument to find. This works in the
644	old as well as the new version of find.
645
64620130726:
647	Behavior of devfs rules path matching has been changed.
648	Pattern is now always matched against fully qualified devfs
649	path and slash characters must be explicitly matched by
650	slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
651	subdirectories must be reviewed.
652
65320130716:
654	The default ARM ABI has changed to the ARM EABI. The old ABI is
655	incompatible with the ARM EABI and all programs and modules will
656	need to be rebuilt to work with a new kernel.
657
658	To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
659
660	NOTE: Support for the old ABI will be removed in the future and
661	users are advised to upgrade.
662
66320130709:
664	pkg_install has been disconnected from the build if you really need it
665	you should add WITH_PKGTOOLS in your src.conf(5).
666
66720130709:
668	Most of network statistics structures were changed to be able
669	keep 64-bits counters. Thus all tools, that work with networking
670	statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
671
67220130629:
673	Fix targets that run multiple make's to use && rather than ;
674	so that subsequent steps depend on success of previous.
675
676	NOTE: if building 'universe' with -j* on stable/8 or stable/9
677	it would be better to start the build using bmake, to avoid
678	overloading the machine.
679
68020130618:
681	Fix a bug that allowed a tracing process (e.g. gdb) to write
682	to a memory-mapped file in the traced process's address space
683	even if neither the traced process nor the tracing process had
684	write access to that file.
685
68620130615:
687	CVS has been removed from the base system.  An exact copy
688	of the code is available from the devel/cvs port.
689
69020130613:
691	Some people report the following error after the switch to bmake:
692
693		make: illegal option -- J
694		usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
695			...
696		*** [buildworld] Error code 2
697
698	this likely due to an old instance of make in
699	${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
700	which src/Makefile will use that blindly, if it exists, so if
701	you see the above error:
702
703		rm -rf `make -V MAKEPATH`
704
705	should resolve it.
706
70720130516:
708	Use bmake by default.
709	Whereas before one could choose to build with bmake via
710	-DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
711	make. The goal is to remove these knobs for 10-RELEASE.
712
713	It is worth noting that bmake (like gmake) treats the command
714	line as the unit of failure, rather than statements within the
715	command line.  Thus '(cd some/where && dosomething)' is safer
716	than 'cd some/where; dosomething'. The '()' allows consistent
717	behavior in parallel build.
718
71920130429:
720        Fix a bug that allows NFS clients to issue READDIR on files.
721
72220130426:
723	The WITHOUT_IDEA option has been removed because
724	the IDEA patent expired.
725
72620130426:
727	The sysctl which controls TRIM support under ZFS has been renamed
728	from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
729	enabled by default.
730
73120130425:
732	The mergemaster command now uses the default MAKEOBJDIRPREFIX
733	rather than creating it's own in the temporary directory in
734	order allow access to bootstrapped versions of tools such as
735	install and mtree.  When upgrading from version of FreeBSD where
736	the install command does not support -l, you will need to
737	install a new mergemaster command if mergemaster -p is required.
738	This can be accomplished with the command (cd src/usr.sbin/mergemaster
739	&& make install).
740
74120130404:
742	Legacy ATA stack, disabled and replaced by new CAM-based one since
743	FreeBSD 9.0, completely removed from the sources.  Kernel modules
744	atadisk and atapi*, user-level tools atacontrol and burncd are
745	removed.  Kernel option `options ATA_CAM` is now permanently enabled
746	and removed.
747
74820130319:
749	SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
750	and socketpair(2). Software, in particular Kerberos, may
751	automatically detect and use these during building. The resulting
752	binaries will not work on older kernels.
753
75420130308:
755	CTL_DISABLE has also been added to the sparc64 GENERIC (for further
756	information, see the respective 20130304 entry).
757
75820130304:
759	Recent commits to callout(9) changed the size of struct callout,
760	so the KBI is probably heavily disturbed. Also, some functions
761	in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
762	by macros. Every kernel module using it won't load, so rebuild
763	is requested.
764
765	The ctl device has been re-enabled in GENERIC for i386 and amd64,
766	but does not initialize by default (because of the new CTL_DISABLE
767	option) to save memory.  To re-enable it, remove the CTL_DISABLE
768	option from the kernel config file or set kern.cam.ctl.disable=0
769	in /boot/loader.conf.
770
77120130301:
772	The ctl device has been disabled in GENERIC for i386 and amd64.
773	This was done due to the extra memory being allocated at system
774	initialisation time by the ctl driver which was only used if
775	a CAM target device was created.  This makes a FreeBSD system
776	unusable on 128MB or less of RAM.
777
77820130208:
779	A new compression method (lz4) has been merged to -HEAD.  Please
780	refer to zpool-features(7) for more information.
781
782	Please refer to the "ZFS notes" section of this file for information
783	on upgrading boot ZFS pools.
784
78520130129:
786	A BSD-licensed patch(1) variant has been added and is installed
787	as bsdpatch, being the GNU version the default patch.
788	To inverse the logic and use the BSD-licensed one as default,
789	while having the GNU version installed as gnupatch, rebuild
790	and install world with the WITH_BSD_PATCH knob set.
791
79220130121:
793	Due to the use of the new -l option to install(1) during build
794	and install, you must take care not to directly set the INSTALL
795	make variable in your /etc/make.conf, /etc/src.conf, or on the
796	command line.  If you wish to use the -C flag for all installs
797	you may be able to add INSTALL+=-C to /etc/make.conf or
798	/etc/src.conf.
799
80020130118:
801	The install(1) option -M has changed meaning and now takes an
802	argument that is a file or path to append logs to.  In the
803	unlikely event that -M was the last option on the command line
804	and the command line contained at least two files and a target
805	directory the first file will have logs appended to it.  The -M
806	option served little practical purpose in the last decade so its
807	use is expected to be extremely rare.
808
80920121223:
810	After switching to Clang as the default compiler some users of ZFS
811	on i386 systems started to experience stack overflow kernel panics.
812	Please consider using 'options KSTACK_PAGES=4' in such configurations.
813
81420121222:
815	GEOM_LABEL now mangles label names read from file system metadata.
816	Mangling affect labels containing spaces, non-printable characters,
817	'%' or '"'. Device names in /etc/fstab and other places may need to
818	be updated.
819
82020121217:
821	By default, only the 10 most recent kernel dumps will be saved.  To
822	restore the previous behaviour (no limit on the number of kernel dumps
823	stored in the dump directory) add the following line to /etc/rc.conf:
824
825		savecore_flags=""
826
82720121201:
828	With the addition of auditdistd(8), a new auditdistd user is now
829	required during installworld.  "mergemaster -p" can be used to
830	add the user prior to installworld, as documented in the handbook.
831
83220121117:
833	The sin6_scope_id member variable in struct sockaddr_in6 is now
834	filled by the kernel before passing the structure to the userland via
835	sysctl or routing socket.  This means the KAME-specific embedded scope
836	id in sin6_addr.s6_addr[2] is always cleared in userland application.
837	This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
838	__FreeBSD_version is bumped to 1000025.
839
84020121105:
841	On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
842	This means that the world and kernel will be compiled with clang
843	and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
844	and /usr/bin/cpp.  To disable this behavior and revert to building
845	with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
846	of current may need to bootstrap WITHOUT_CLANG first if the clang
847	build fails (its compatibility window doesn't extend to the 9 stable
848	branch point).
849
85020121102:
851	The IPFIREWALL_FORWARD kernel option has been removed. Its
852	functionality now turned on by default.
853
85420121023:
855	The ZERO_COPY_SOCKET kernel option has been removed and
856	split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
857	NB: SOCKET_SEND_COW uses the VM page based copy-on-write
858	mechanism which is not safe and may result in kernel crashes.
859	NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
860	driver supports disposeable external page sized mbuf storage.
861	Proper replacements for both zero-copy mechanisms are under
862	consideration and will eventually lead to complete removal
863	of the two kernel options.
864
86520121023:
866	The IPv4 network stack has been converted to network byte
867	order. The following modules need to be recompiled together
868	with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
869	pf(4), ipfw(4), ng_ipfw(4), stf(4).
870
87120121022:
872	Support for non-MPSAFE filesystems was removed from VFS. The
873	VFS_VERSION was bumped, all filesystem modules shall be
874	recompiled.
875
87620121018:
877	All the non-MPSAFE filesystems have been disconnected from
878	the build. The full list includes: codafs, hpfs, ntfs, nwfs,
879	portalfs, smbfs, xfs.
880
88120121016:
882	The interface cloning API and ABI has changed. The following
883	modules need to be recompiled together with kernel:
884	ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
885	vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
886	faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
887
88820121015:
889	The sdhci driver was split in two parts: sdhci (generic SD Host
890	Controller logic) and sdhci_pci (actual hardware driver).
891	No kernel config modifications are required, but if you
892	load sdhc as a module you must switch to sdhci_pci instead.
893
89420121014:
895	Import the FUSE kernel and userland support into base system.
896
89720121013:
898	The GNU sort(1) program has been removed since the BSD-licensed
899	sort(1) has been the default for quite some time and no serious
900	problems have been reported.  The corresponding WITH_GNU_SORT
901	knob has also gone.
902
90320121006:
904	The pfil(9) API/ABI for AF_INET family has been changed. Packet
905	filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
906	with new kernel.
907
90820121001:
909	The net80211(4) ABI has been changed to allow for improved driver
910	PS-POLL and power-save support.  All wireless drivers need to be
911	recompiled to work with the new kernel.
912
91320120913:
914	The random(4) support for the VIA hardware random number
915	generator (`PADLOCK') is no longer enabled unconditionally.
916	Add the padlock_rng device in the custom kernel config if
917	needed.  The GENERIC kernels on i386 and amd64 do include the
918	device, so the change only affects the custom kernel
919	configurations.
920
92120120908:
922	The pf(4) packet filter ABI has been changed. pfctl(8) and
923	snmp_pf module need to be recompiled to work with new kernel.
924
92520120828:
926	A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
927	to -HEAD. Pools that have empty_bpobj in active state can not be
928	imported read-write with ZFS implementations that do not support
929	this feature. For more information read the zpool-features(5)
930	manual page.
931
93220120727:
933	The sparc64 ZFS loader has been changed to no longer try to auto-
934	detect ZFS providers based on diskN aliases but now requires these
935	to be explicitly listed in the OFW boot-device environment variable.
936
93720120712:
938	The OpenSSL has been upgraded to 1.0.1c.  Any binaries requiring
939	libcrypto.so.6 or libssl.so.6 must be recompiled.  Also, there are
940	configuration changes.  Make sure to merge /etc/ssl/openssl.cnf.
941
94220120712:
943	The following sysctls and tunables have been renamed for consistency
944	with other variables:
945	  kern.cam.da.da_send_ordered   -> kern.cam.da.send_ordered
946	  kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
947
94820120628:
949	The sort utility has been replaced with BSD sort.  For now, GNU sort
950	is also available as "gnusort" or the default can be set back to
951	GNU sort by setting WITH_GNU_SORT.  In this case, BSD sort will be
952	installed as "bsdsort".
953
95420120611:
955	A new version of ZFS (pool version 5000) has been merged to -HEAD.
956	Starting with this version the old system of ZFS pool versioning
957	is superseded by "feature flags". This concept enables forward
958	compatibility against certain future changes in functionality of ZFS
959	pools. The first read-only compatible "feature flag" for ZFS pools
960	is named "com.delphix:async_destroy". For more information
961	read the new zpool-features(5) manual page.
962	Please refer to the "ZFS notes" section of this file for information
963	on upgrading boot ZFS pools.
964
96520120417:
966	The malloc(3) implementation embedded in libc now uses sources imported
967	as contrib/jemalloc.  The most disruptive API change is to
968	/etc/malloc.conf.  If your system has an old-style /etc/malloc.conf,
969	delete it prior to installworld, and optionally re-create it using the
970	new format after rebooting.  See malloc.conf(5) for details
971	(specifically the TUNING section and the "opt.*" entries in the MALLCTL
972	NAMESPACE section).
973
97420120328:
975	Big-endian MIPS TARGET_ARCH values no longer end in "eb".  mips64eb
976	is now spelled mips64.  mipsn32eb is now spelled mipsn32.  mipseb is
977	now spelled mips.  This is to aid compatibility with third-party
978	software that expects this naming scheme in uname(3).  Little-endian
979	settings are unchanged. If you are updating a big-endian mips64 machine
980	from before this change, you may need to set MACHINE_ARCH=mips64 in
981	your environment before the new build system will recognize your machine.
982
98320120306:
984	Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
985	platforms.
986
98720120229:
988	Now unix domain sockets behave "as expected" on	nullfs(5). Previously
989	nullfs(5) did not pass through all behaviours to the underlying layer,
990	as a result if we bound to a socket on the lower layer we could connect
991	only to the lower path; if we bound to the upper layer we could connect
992	only to	the upper path. The new behavior is one can connect to both the
993	lower and the upper paths regardless what layer path one binds to.
994
99520120211:
996	The getifaddrs upgrade path broken with 20111215 has been restored.
997	If you have upgraded in between 20111215 and 20120209 you need to
998	recompile libc again with your kernel.  You still need to recompile
999	world to be able to configure CARP but this restriction already
1000	comes from 20111215.
1001
100220120114:
1003	The set_rcvar() function has been removed from /etc/rc.subr.  All
1004	base and ports rc.d scripts have been updated, so if you have a
1005	port installed with a script in /usr/local/etc/rc.d you can either
1006	hand-edit the rcvar= line, or reinstall the port.
1007
1008	An easy way to handle the mass-update of /etc/rc.d:
1009	rm /etc/rc.d/* && mergemaster -i
1010
101120120109:
1012	panic(9) now stops other CPUs in the SMP systems, disables interrupts
1013	on the current CPU and prevents other threads from running.
1014	This behavior can be reverted using the kern.stop_scheduler_on_panic
1015	tunable/sysctl.
1016	The new behavior can be incompatible with kern.sync_on_panic.
1017
101820111215:
1019	The carp(4) facility has been changed significantly. Configuration
1020	of the CARP protocol via ifconfig(8) has changed, as well as format
1021	of CARP events submitted to devd(8) has changed. See manual pages
1022	for more information. The arpbalance feature of carp(4) is currently
1023	not supported anymore.
1024
1025	Size of struct in_aliasreq, struct in6_aliasreq has changed. User
1026	utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
1027	need to be recompiled.
1028
102920111122:
1030	The acpi_wmi(4) status device /dev/wmistat has been renamed to
1031	/dev/wmistat0.
1032
103320111108:
1034	The option VFS_ALLOW_NONMPSAFE option has been added in order to
1035	explicitely support non-MPSAFE filesystems.
1036	It is on by default for all supported platform at this present
1037	time.
1038
103920111101:
1040	The broken amd(4) driver has been replaced with esp(4) in the amd64,
1041	i386 and pc98 GENERIC kernel configuration files.
1042
104320110930:
1044	sysinstall has been removed
1045
104620110923:
1047	The stable/9 branch created in subversion.  This corresponds to the
1048	RELENG_9 branch in CVS.
1049
1050COMMON ITEMS:
1051
1052	General Notes
1053	-------------
1054	Avoid using make -j when upgrading.  While generally safe, there are
1055	sometimes problems using -j to upgrade.  If your upgrade fails with
1056	-j, please try again without -j.  From time to time in the past there
1057	have been problems using -j with buildworld and/or installworld.  This
1058	is especially true when upgrading between "distant" versions (eg one
1059	that cross a major release boundary or several minor releases, or when
1060	several months have passed on the -current branch).
1061
1062	Sometimes, obscure build problems are the result of environment
1063	poisoning.  This can happen because the make utility reads its
1064	environment when searching for values for global variables.  To run
1065	your build attempts in an "environmental clean room", prefix all make
1066	commands with 'env -i '.  See the env(1) manual page for more details.
1067
1068	When upgrading from one major version to another it is generally best
1069	to upgrade to the latest code in the currently installed branch first,
1070	then do an upgrade to the new branch. This is the best-tested upgrade
1071	path, and has the highest probability of being successful.  Please try
1072	this approach before reporting problems with a major version upgrade.
1073
1074	When upgrading a live system, having a root shell around before
1075	installing anything can help undo problems. Not having a root shell
1076	around can lead to problems if pam has changed too much from your
1077	starting point to allow continued authentication after the upgrade.
1078
1079	ZFS notes
1080	---------
1081	When upgrading the boot ZFS pool to a new version, always follow
1082	these two steps:
1083
1084	1.) recompile and reinstall the ZFS boot loader and boot block
1085	(this is part of "make buildworld" and "make installworld")
1086
1087	2.) update the ZFS boot block on your boot drive
1088
1089	The following example updates the ZFS boot block on the first
1090	partition (freebsd-boot) of a GPT partitioned drive ada0:
1091	"gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
1092
1093	Non-boot pools do not need these updates.
1094
1095	To build a kernel
1096	-----------------
1097	If you are updating from a prior version of FreeBSD (even one just
1098	a few days old), you should follow this procedure.  It is the most
1099	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1100
1101	make kernel-toolchain
1102	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1103	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1104
1105	To test a kernel once
1106	---------------------
1107	If you just want to boot a kernel once (because you are not sure
1108	if it works, or if you want to boot a known bad kernel to provide
1109	debugging information) run
1110	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1111	nextboot -k testkernel
1112
1113	To just build a kernel when you know that it won't mess you up
1114	--------------------------------------------------------------
1115	This assumes you are already running a CURRENT system.  Replace
1116	${arch} with the architecture of your machine (e.g. "i386",
1117	"arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
1118
1119	cd src/sys/${arch}/conf
1120	config KERNEL_NAME_HERE
1121	cd ../compile/KERNEL_NAME_HERE
1122	make depend
1123	make
1124	make install
1125
1126	If this fails, go to the "To build a kernel" section.
1127
1128	To rebuild everything and install it on the current system.
1129	-----------------------------------------------------------
1130	# Note: sometimes if you are running current you gotta do more than
1131	# is listed here if you are upgrading from a really old current.
1132
1133	<make sure you have good level 0 dumps>
1134	make buildworld
1135	make kernel KERNCONF=YOUR_KERNEL_HERE
1136							[1]
1137	<reboot in single user>				[3]
1138	mergemaster -Fp					[5]
1139	make installworld
1140	mergemaster -Fi					[4]
1141	make delete-old					[6]
1142	<reboot>
1143
1144	To cross-install current onto a separate partition
1145	--------------------------------------------------
1146	# In this approach we use a separate partition to hold
1147	# current's root, 'usr', and 'var' directories.   A partition
1148	# holding "/", "/usr" and "/var" should be about 2GB in
1149	# size.
1150
1151	<make sure you have good level 0 dumps>
1152	<boot into -stable>
1153	make buildworld
1154	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1155	<maybe newfs current's root partition>
1156	<mount current's root partition on directory ${CURRENT_ROOT}>
1157	make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
1158	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1159	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1160	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
1161	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1162	<reboot into current>
1163	<do a "native" rebuild/install as described in the previous section>
1164	<maybe install compatibility libraries from ports/misc/compat*>
1165	<reboot>
1166
1167
1168	To upgrade in-place from stable to current
1169	----------------------------------------------
1170	<make sure you have good level 0 dumps>
1171	make buildworld					[9]
1172	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
1173							[1]
1174	<reboot in single user>				[3]
1175	mergemaster -Fp					[5]
1176	make installworld
1177	mergemaster -Fi					[4]
1178	make delete-old					[6]
1179	<reboot>
1180
1181	Make sure that you've read the UPDATING file to understand the
1182	tweaks to various things you need.  At this point in the life
1183	cycle of current, things change often and you are on your own
1184	to cope.  The defaults can also change, so please read ALL of
1185	the UPDATING entries.
1186
1187	Also, if you are tracking -current, you must be subscribed to
1188	freebsd-current@freebsd.org.  Make sure that before you update
1189	your sources that you have read and understood all the recent
1190	messages there.  If in doubt, please track -stable which has
1191	much fewer pitfalls.
1192
1193	[1] If you have third party modules, such as vmware, you
1194	should disable them at this point so they don't crash your
1195	system on reboot.
1196
1197	[3] From the bootblocks, boot -s, and then do
1198		fsck -p
1199		mount -u /
1200		mount -a
1201		cd src
1202		adjkerntz -i		# if CMOS is wall time
1203	Also, when doing a major release upgrade, it is required that
1204	you boot into single user mode to do the installworld.
1205
1206	[4] Note: This step is non-optional.  Failure to do this step
1207	can result in a significant reduction in the functionality of the
1208	system.  Attempting to do it by hand is not recommended and those
1209	that pursue this avenue should read this file carefully, as well
1210	as the archives of freebsd-current and freebsd-hackers mailing lists
1211	for potential gotchas.  The -U option is also useful to consider.
1212	See mergemaster(8) for more information.
1213
1214	[5] Usually this step is a noop.  However, from time to time
1215	you may need to do this if you get unknown user in the following
1216	step.  It never hurts to do it all the time.  You may need to
1217	install a new mergemaster (cd src/usr.sbin/mergemaster && make
1218	install) after the buildworld before this step if you last updated
1219	from current before 20130425 or from -stable before 20130430.
1220
1221	[6] This only deletes old files and directories. Old libraries
1222	can be deleted by "make delete-old-libs", but you have to make
1223	sure that no program is using those libraries anymore.
1224
1225	[8] In order to have a kernel that can run the 4.x binaries needed to
1226	do an installworld, you must include the COMPAT_FREEBSD4 option in
1227	your kernel.  Failure to do so may leave you with a system that is
1228	hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1229	required to run the 5.x binaries on more recent kernels.  And so on
1230	for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1231
1232	Make sure that you merge any new devices from GENERIC since the
1233	last time you updated your kernel config file.
1234
1235	[9] When checking out sources, you must include the -P flag to have
1236	cvs prune empty directories.
1237
1238	If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1239	"?=" instead of the "=" assignment operator, so that buildworld can
1240	override the CPUTYPE if it needs to.
1241
1242	MAKEOBJDIRPREFIX must be defined in an environment variable, and
1243	not on the command line, or in /etc/make.conf.  buildworld will
1244	warn if it is improperly defined.
1245FORMAT:
1246
1247This file contains a list, in reverse chronological order, of major
1248breakages in tracking -current.  It is not guaranteed to be a complete
1249list of such breakages, and only contains entries since October 10, 2007.
1250If you need to see UPDATING entries from before that date, you will need
1251to fetch an UPDATING file from an older FreeBSD release.
1252
1253Copyright information:
1254
1255Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
1256
1257Redistribution, publication, translation and use, with or without
1258modification, in full or in part, in any form or format of this
1259document are permitted without further permission from the author.
1260
1261THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1262IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1263WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1264DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1265INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1266(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1267SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1268HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1269STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1270IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1271POSSIBILITY OF SUCH DAMAGE.
1272
1273Contact Warner Losh if you have any questions about your use of
1274this document.
1275
1276$FreeBSD$
1277