xref: /freebsd/UPDATING (revision 74ca7bf1d4c7173d5575ba168bc4b5f6d181ff5a)
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    https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.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
17from older version of current across the gcc/clang cutover is a bit fragile.
18
19NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
20	FreeBSD 12.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
34
35****************************** SPECIAL WARNING: ******************************
36
37	Due to a bug in some versions of clang that's very hard to workaround in
38	the upgrade process, to upgrade to -current you must first upgrade
39	either stable/9 after r286035 or stable/10 after r286033 (including
40	10.3-RELEASE) or current after r286007 (including stable/11 and
41	11.0-RELEASE). These revisions post-date the 10.2 and 9.3 releases, so
42	you'll need to take the unusual step of upgrading to the tip of the
43	stable branch before moving to 11 or -current via a source upgrade.
44	stable/11 and 11.0-RELEASE have working newer compiler. This differs
45	from the historical situation where one could upgrade from anywhere on
46	the last couple of stable branches, so be careful.
47
48	If you're running a hybrid system on 9.x or 10.x with an updated clang
49	compiler or are using an supported external toolchain, the build system
50	will allow the upgrade. Otherwise it will print a reminder.
51
52****************************** SPECIAL WARNING: ******************************
53
5420180328:
55	Support for token ring networks has been removed. If you
56	have "device token" in your kernel config you should remove
57	it. No device drivers supported token ring.
58
5920180323:
60	makefs was modified to be able to tag ISO9660 El Torito boot catalog
61	entries as EFI instead of overloading the i386 tag as done previously.
62	The amd64 mkisoimages.sh script used to build amd64 ISO images for
63	release was updated to use this. This may mean that makefs must be
64	updated before "make cdrom" can be run in the release directory. This
65	should be as simple as:
66
67		$ cd $SRCDIR/usr.sbin/makefs
68		$ make depend all install
69
7020180212:
71	FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for
72	now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf.
73	Co-existance for the transition period will come shortly. Booting is a
74	complex environment and test coverage for Lua-enabled loaders has been
75	thin, so it would be prudent to assume it might not work and make
76	provisions for backup boot methods.
77
7820180211:
79	devmatch functionality has been turned on in devd. It will automatically
80	load drivers for unattached devices. This may cause unexpected drivers to
81	be loaded. Please report any problems to current@ and imp@freebsd.org.
82
8320180114:
84	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
85	6.0.0.  Please see the 20141231 entry below for information about
86	prerequisites and upgrading, if you are not already using clang 3.5.0
87	or higher.
88
8920180110:
90	LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker.
91	This means it is used to link the kernel and userland libraries and
92	executables, but is not yet installed as /usr/bin/ld by default.
93
94	To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set
95        WITHOUT_LLD_BOOTSTRAP=yes
96
9720180110:
98	On i386, pmtimer has been removed. Its functionality has been folded
99	into apm. It was a no-op on ACPI in current for a while now (but was still
100	needed on i386 in FreeBSD 11 and earlier). Users may need to remove it
101	from kernel config files.
102
10320180104:
104	The use of RSS hash from the network card aka flowid has been
105	disabled by default for lagg(4) as it's currently incompatible with
106	the lacp and loadbalance protocols.
107
108	This can be re-enabled by setting the following in loader.conf:
109	net.link.lagg.default_use_flowid="1"
110
11120180102:
112	The SW_WATCHDOG option is no longer necessary to enable the
113	hardclock-based software watchdog if no hardware watchdog is
114	configured. As before, SW_WATCHDOG will cause the software
115	watchdog to be enabled even if a hardware watchdog is configured.
116
11720171215:
118	r326887 fixes the issue described in the 20171214 UPDATING entry.
119	r326888 flips the switch back to building GELI support always.
120
12120171214:
122	r362593 broke ZFS + GELI support for reasons unknown. However,
123	it also broke ZFS support generally, so GELI has been turned off
124	by default as the lesser evil in r326857. If you boot off ZFS and/or
125	GELI, it might not be a good time to update.
126
12720171125:
128	PowerPC users must update loader(8) by rebuilding world before
129	installing a new kernel, as the protocol connecting them has
130	changed. Without the update, loader metadata will not be passed
131	successfully to the kernel and users will have to enter their
132	root partition at the kernel mountroot prompt to continue booting.
133	Newer versions of loader can boot old kernels without issue.
134
13520171110:
136	The LOADER_FIREWIRE_SUPPORT build variable as been renamed to
137	WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed
138	to WITH/OUT_LOADER_GELI.
139
14020171106:
141	The naive and non-compliant support of posix_fallocate(2) in ZFS
142	has been removed as of r325320.  The system call now returns EINVAL
143	when used on a ZFS file.  Although the new behavior complies with the
144	standard, some consumers are not prepared to cope with it.
145	One known victim is lld prior to r325420.
146
14720171102:
148	Building in a FreeBSD src checkout will automatically create object
149	directories now rather than store files in the current directory if
150	'make obj' was not ran.  Calling 'make obj' is no longer necessary.
151	This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in
152	/etc/src-env.conf (not /etc/src.conf), or passing the option in the
153	environment.
154
15520171101:
156	The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native
157	builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified
158	/usr/obj/<srcdir>/<arch>.  This behavior can be changed to the old
159	format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf,
160	the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building.
161	The UNIFIED_OBJDIR option is a transitional feature that will be
162	removed for 12.0 release; please migrate to the new format for any
163	tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather
164	than hardcoding paths.
165
16620171028:
167	The native-xtools target no longer installs the files by default to the
168	OBJDIR.  Use the native-xtools-install target with a DESTDIR to install
169	to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin.
170
17120171021:
172	As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT
173	options are changing from controlling the build if defined / undefined
174	to controlling the build with explicit 'yes' or 'no' values. They will
175	shift to WITH/WITHOUT options to match other options in the system.
176
17720171010:
178	libstand has turned into a private library for sys/boot use only.
179	It is no longer supported as a public interface outside of sys/boot.
180
18120171005:
182	The arm port has split armv6 into armv6 and armv7. armv7 is now
183	a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system
184	and are running a kernel from before r324363, you will need to add
185	MACHINE_ARCH=armv7 to 'make buildworld' to do a native build.
186
18720171003:
188	When building multiple kernels using KERNCONF, non-existent KERNCONF
189	files will produce an error and buildkernel will fail. Previously
190	missing KERNCONF files silently failed giving no indication as to
191	why, only to subsequently discover during installkernel that the
192	desired kernel was never built in the first place.
193
19420170912:
195	The default serial number format for CTL LUNs has changed.  This will
196	affect users who use /dev/diskid/* device nodes, or whose FibreChannel
197	or iSCSI clients care about their LUNs' serial numbers.  Users who
198	require serial number stability should hardcode serial numbers in
199	/etc/ctl.conf .
200
20120170912:
202	For 32-bit arm compiled for hard-float support, soft-floating point
203	binaries now always get their shared libraries from
204	LD_SOFT_LIBRARY_PATH (in the past, this was only used if
205	/usr/libsoft also existed). Only users with a hard-float ld.so, but
206	soft-float everything else should be affected.
207
20820170826:
209	The geli password typed at boot is now hidden.  To restore the previous
210	behavior, see geli(8) for configuration options.
211
21220170825:
213	Move PMTUD blackhole counters to TCPSTATS and remove them from bare
214	sysctl values.  Minor nit, but requires a rebuild of both world/kernel
215	to complete.
216
21720170814:
218	"make check" behavior (made in ^/head@r295380) has been changed to
219	execute from a limited sandbox, as opposed to executing from
220	${TESTSDIR}.
221
222	Behavioral changes:
223	- The "beforecheck" and "aftercheck" targets are now specified.
224	- ${CHECKDIR} (added in commit noted above) has been removed.
225	- Legacy behavior can be enabled by setting
226	  WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment.
227
228	If the limited sandbox mode is enabled, "make check" will execute
229	"make distribution", then install, execute the tests, and clean up the
230	sandbox if successful.
231
232	The "make distribution" and "make install" targets are typically run as
233	root to set appropriate permissions and ownership at installation time.
234	The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the
235	environment if executing "make check" with limited sandbox mode using
236	an unprivileged user.
237
23820170808:
239	Since the switch to GPT disk labels, fsck for UFS/FFS has been
240	unable to automatically find alternate superblocks. As of r322297,
241	the information needed to find alternate superblocks has been
242	moved to the end of the area reserved for the boot block.
243	Filesystems created with a newfs of this vintage or later
244	will create the recovery information. If you have a filesystem
245	created prior to this change and wish to have a recovery block
246	created for your filesystem, you can do so by running fsck in
247	foreground mode (i.e., do not use the -p or -y options). As it
248	starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS''
249	to which you should answer yes.
250
25120170728:
252	As of r321665, an NFSv4 server configuration that services
253	Kerberos mounts or clients that do not support the uid/gid in
254	owner/owner_group string capability, must explicitly enable
255	the nfsuserd daemon by adding nfsuserd_enable="YES" to the
256	machine's /etc/rc.conf file.
257
25820170722:
259	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0.
260	Please see the 20141231 entry below for information about prerequisites
261	and upgrading, if you are not already using clang 3.5.0 or higher.
262
26320170701:
264	WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the
265	r-commands (rlogin, rsh, etc.) to be built with the base system.
266
26720170625:
268	The FreeBSD/powerpc platform now uses a 64-bit type for time_t.  This is
269	a very major ABI incompatible change, so users of FreeBSD/powerpc must
270	be careful when performing source upgrades.  It is best to run
271	'make installworld' from an alternate root system, either a live
272	CD/memory stick, or a temporary root partition.  Additionally, all ports
273	must be recompiled.  powerpc64 is largely unaffected, except in the case
274	of 32-bit compatibility.  All 32-bit binaries will be affected.
275
27620170623:
277	Forward compatibility for the "ino64" project have been committed. This
278	will allow most new binaries to run on older kernels in a limited
279	fashion.  This prevents many of the common foot-shooting actions in the
280	upgrade as well as the limited ability to roll back the kernel across
281	the ino64 upgrade. Complicated use cases may not work properly, though
282	enough simpler ones work to allow recovery in most situations.
283
28420170620:
285	Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC
286	if you require the GPL compiler.
287
28820170618:
289	The internal ABI used for communication between the NFS kernel modules
290	was changed by r320085, so __FreeBSD_version was bumped to
291	ensure all the NFS related modules are updated together.
292
29320170617:
294	The ABI of struct event was changed by extending the data
295	member to 64bit and adding ext fields.  For upgrade, same
296	precautions as for the entry 20170523 "ino64" must be
297	followed.
298
29920170531:
300	The GNU roff toolchain has been removed from base. To render manpages
301	which are not supported by mandoc(1), man(1) can fallback on GNU roff
302	from ports (and recommends to install it).
303	To render roff(7) documents, consider using GNU roff from ports or the
304	heirloom doctools roff toolchain from ports via pkg install groff or
305	via pkg install heirloom-doctools.
306
30720170524:
308	The ath(4) and ath_hal(4) modules now build piecemeal to allow for
309	smaller runtime footprint builds.  This is useful for embedded systems
310	which only require one chipset support.
311
312	If you load it as a module, make sure this is in /boot/loader.conf:
313
314	if_ath_load="YES"
315
316	This will load the HAL, all chip/RF backends and if_ath_pci.
317	If you have if_ath_pci in /boot/loader.conf, ensure it is after
318	if_ath or it will not load any HAL chipset support.
319
320	If you want to selectively load things (eg on ye cheape ARM/MIPS
321	platforms where RAM is at a premium) you should:
322
323	* load ath_hal
324	* load the chip modules in question
325	* load ath_rate, ath_dfs
326	* load ath_main
327	* load if_ath_pci and/or if_ath_ahb depending upon your particular
328	  bus bind type - this is where probe/attach is done.
329
330	For further comments/feedback, poke adrian@ .
331
33220170523:
333	The "ino64" 64-bit inode project has been committed, which extends
334	a number of types to 64 bits.  Upgrading in place requires care and
335	adherence to the documented upgrade procedure.
336
337	If using a custom kernel configuration ensure that the
338	COMPAT_FREEBSD11 option is included (as during the upgrade the
339	system will be running the ino64 kernel with the existing world).
340
341	For the safest in-place upgrade begin by removing previous build
342	artifacts via "rm -rf /usr/obj/*".   Then, carefully follow the
343	full procedure documented below under the heading "To rebuild
344	everything and install it on the current system."  Specifically,
345	a reboot is required after installing the new kernel before
346	installing world.
347
34820170424:
349	The NATM framework including the en(4), fatm(4), hatm(4), and
350	patm(4) devices has been removed.  Consumers should plan a
351	migration before the end-of-life date for FreeBSD 11.
352
35320170420:
354	GNU diff has been replaced by a BSD licensed diff. Some features of GNU
355	diff has not been implemented, if those are needed a newer version of
356	GNU diff is available via the diffutils package under the gdiff name.
357
35820170413:
359	As of r316810 for ipfilter, keep frags is no longer assumed when
360	keep state is specified in a rule. r316810 aligns ipfilter with
361	documentation in man pages separating keep frags from keep state.
362	This allows keep state to be specified without forcing keep frags
363	and allows keep frags to be specified independently of keep state.
364	To maintain previous behaviour, also specify keep frags with
365	keep state (as documented in ipf.conf.5).
366
36720170407:
368	arm64 builds now use the base system LLD 4.0.0 linker by default,
369	instead of requiring that the aarch64-binutils port or package be
370	installed. To continue using aarch64-binutils, set
371	CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin .
372
37320170405:
374	The UDP optimization in entry 20160818 that added the sysctl
375	net.inet.udp.require_l2_bcast has been reverted.  L2 broadcast
376	packets will no longer be treated as L3 broadcast packets.
377
37820170331:
379	Binds and sends to the loopback addresses, IPv6 and IPv4, will now
380	use any explicitly assigned loopback address available in the jail
381	instead of using the first assigned address of the jail.
382
38320170329:
384	The ctl.ko module no longer implements the iSCSI target frontend:
385	cfiscsi.ko does instead.
386
387	If building cfiscsi.ko as a kernel module, the module can be loaded
388	via one of the following methods:
389	- `cfiscsi_load="YES"` in loader.conf(5).
390	- Add `cfiscsi` to `$kld_list` in rc.conf(5).
391	- ctladm(8)/ctld(8), when compiled with iSCSI support
392	  (`WITH_ISCSI=yes` in src.conf(5))
393
394	Please see cfiscsi(4) for more details.
395
39620170316:
397	The mmcsd.ko module now additionally depends on geom_flashmap.ko.
398	Also, mmc.ko and mmcsd.ko need to be a matching pair built from the
399	same source (previously, the dependency of mmcsd.ko on mmc.ko was
400	missing, but mmcsd.ko now will refuse to load if it is incompatible
401	with mmc.ko).
402
40320170315:
404	The syntax of ipfw(8) named states was changed to avoid ambiguity.
405	If you have used named states in the firewall rules, you need to modify
406	them after installworld and before rebooting. Now named states must
407	be prefixed with colon.
408
40920170311:
410	The old drm (sys/dev/drm/) drivers for i915 and radeon have been
411	removed as the userland we provide cannot use them. The KMS version
412	(sys/dev/drm2) supports the same hardware.
413
41420170302:
415	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0.
416	Please see the 20141231 entry below for information about prerequisites
417	and upgrading, if you are not already using clang 3.5.0 or higher.
418
41920170221:
420	The code that provides support for ZFS .zfs/ directory functionality
421	has been reimplemented.  It's not possible now to create a snapshot
422	by mkdir under .zfs/snapshot/.  That should be the only user visible
423	change.
424
42520170216:
426	EISA bus support has been removed. The WITH_EISA option is no longer
427	valid.
428
42920170215:
430	MCA bus support has been removed.
431
43220170127:
433	The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed
434	WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC.
435
43620170112:
437	The EM_MULTIQUEUE kernel configuration option is deprecated now that
438	the em(4) driver conforms to iflib specifications.
439
44020170109:
441	The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
442	IFLIB.  If you have a custom kernel configuration that excludes em(4)
443	but you use igb(4), you need to re-add em(4) to your custom configuration.
444
44520161217:
446	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1.
447	Please see the 20141231 entry below for information about prerequisites
448	and upgrading, if you are not already using clang 3.5.0 or higher.
449
45020161124:
451	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0.
452	Please see the 20141231 entry below for information about prerequisites
453	and upgrading, if you are not already using clang 3.5.0 or higher.
454
45520161119:
456	The layout of the pmap structure has changed for powerpc to put the pmap
457	statistics at the front for all CPU variations.  libkvm(3) and all tools
458	that link against it need to be recompiled.
459
46020161030:
461	isl(4) and cyapa(4) drivers now require a new driver,
462	chromebook_platform(4), to work properly on Chromebook-class hardware.
463	On other types of hardware the drivers may need to be configured using
464	device hints.  Please see the corresponding manual pages for details.
465
46620161017:
467	The urtwn(4) driver was merged into rtwn(4) and now consists of
468	rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific
469	parts.
470	Also, firmware for RTL8188CE was renamed due to possible name
471	conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B))
472
47320161015:
474	GNU rcs has been removed from base.  It is available as packages:
475	- rcs: Latest GPLv3 GNU rcs version.
476	- rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was
477	removed from base.
478
47920161008:
480	Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control
481	modules now requires that the kernel configuration contain the
482	TCP_HHOOK option. (This option is included in the GENERIC kernel.)
483
48420161003:
485	The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired.
486	ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy.
487
48820160924:
489	Relocatable object files with the extension of .So have been renamed
490	to use an extension of .pico instead.  The purpose of this change is
491	to avoid a name clash with shared libraries on case-insensitive file
492	systems.  On those file systems, foo.So is the same file as foo.so.
493
49420160918:
495	GNU rcs has been turned off by default.  It can (temporarily) be built
496	again by adding WITH_RCS knob in src.conf.
497	Otherwise, GNU rcs is available from packages:
498	- rcs: Latest GPLv3 GNU rcs version.
499	- rcs57: Copy of the latest version of GNU rcs (GPLv2) from base.
500
50120160918:
502	The backup_uses_rcs functionality has been removed from rc.subr.
503
50420160908:
505	The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into
506	two separate components, QUEUE_MACRO_DEBUG_TRACE and
507	QUEUE_MACRO_DEBUG_TRASH.  Define both for the original
508	QUEUE_MACRO_DEBUG behavior.
509
51020160824:
511	r304787 changed some ioctl interfaces between the iSCSI userspace
512	programs and the kernel.  ctladm, ctld, iscsictl, and iscsid must be
513	rebuilt to work with new kernels.  __FreeBSD_version has been bumped
514	to 1200005.
515
51620160818:
517	The UDP receive code has been updated to only treat incoming UDP
518	packets that were addressed to an L2 broadcast address as L3
519	broadcast packets.  It is not expected that this will affect any
520	standards-conforming UDP application.  The new behaviour can be
521	disabled by setting the sysctl net.inet.udp.require_l2_bcast to
522	0.
523
52420160818:
525	Remove the openbsd_poll system call.
526	__FreeBSD_version has been bumped because of this.
527
52820160622:
529	The libc stub for the pipe(2) system call has been replaced with
530	a wrapper that calls the pipe2(2) system call and the pipe(2)
531	system call is now only implemented by the kernels that include
532	"options COMPAT_FREEBSD10" in their config file (this is the
533	default).  Users should ensure that this option is enabled in
534	their kernel or upgrade userspace to r302092 before upgrading their
535	kernel.
536
53720160527:
538	CAM will now strip leading spaces from SCSI disks' serial numbers.
539	This will affect users who create UFS filesystems on SCSI disks using
540	those disk's diskid device nodes.  For example, if /etc/fstab
541	previously contained a line like
542	"/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should
543	change it to "/dev/diskid/DISK-ABCDEFG0123456".  Users of geom
544	transforms like gmirror may also be affected.  ZFS users should
545	generally be fine.
546
54720160523:
548	The bitstring(3) API has been updated with new functionality and
549	improved performance.  But it is binary-incompatible with the old API.
550	Objects built with the new headers may not be linked against objects
551	built with the old headers.
552
55320160520:
554	The brk and sbrk functions have been removed from libc on arm64.
555	Binutils from ports has been updated to not link to these
556	functions and should be updated to the latest version before
557	installing a new libc.
558
55920160517:
560	The armv6 port now defaults to hard float ABI. Limited support
561	for running both hardfloat and soft float on the same system
562	is available using the libraries installed with -DWITH_LIBSOFT.
563	This has only been tested as an upgrade path for installworld
564	and packages may fail or need manual intervention to run. New
565	packages will be needed.
566
567	To update an existing self-hosted armv6hf system, you must add
568	TARGET_ARCH=armv6 on the make command line for both the build
569	and the install steps.
570
57120160510:
572	Kernel modules compiled outside of a kernel build now default to
573	installing to /boot/modules instead of /boot/kernel.  Many kernel
574	modules built this way (such as those in ports) already overrode
575	KMODDIR explicitly to install into /boot/modules.  However,
576	manually building and installing a module from /sys/modules will
577	now install to /boot/modules instead of /boot/kernel.
578
57920160414:
580	The CAM I/O scheduler has been committed to the kernel. There should be
581	no user visible impact. This does enable NCQ Trim on ada SSDs. While the
582	list of known rogues that claim support for this but actually corrupt
583	data is believed to be complete, be on the lookout for data
584	corruption. The known rogue list is believed to be complete:
585
586		o Crucial MX100, M550 drives with MU01 firmware.
587		o Micron M510 and M550 drives with MU01 firmware.
588		o Micron M500 prior to MU07 firmware
589		o Samsung 830, 840, and 850 all firmwares
590		o FCCT M500 all firmwares
591
592	Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware
593	with working NCQ TRIM. For Micron branded drives, see your sales rep for
594	updated firmware. Black listed drives will work correctly because these
595	drives work correctly so long as no NCQ TRIMs are sent to them. Given
596	this list is the same as found in Linux, it's believed there are no
597	other rogues in the market place. All other models from the above
598	vendors work.
599
600	To be safe, if you are at all concerned, you can quirk each of your
601	drives to prevent NCQ from being sent by setting:
602		kern.cam.ada.X.quirks="0x2"
603	in loader.conf. If the drive requires the 4k sector quirk, set the
604	quirks entry to 0x3.
605
60620160330:
607	The FAST_DEPEND build option has been removed and its functionality is
608	now the one true way.  The old mkdep(1) style of 'make depend' has
609	been removed.  See 20160311 for further details.
610
61120160317:
612	Resource range types have grown from unsigned long to uintmax_t.  All
613	drivers, and anything using libdevinfo, need to be recompiled.
614
61520160311:
616	WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree
617	builds.  It no longer runs mkdep(1) during 'make depend', and the
618	'make depend' stage can safely be skipped now as it is auto ran
619	when building 'make all' and will generate all SRCS and DPSRCS before
620	building anything else.  Dependencies are gathered at compile time with
621	-MF flags kept in separate .depend files per object file.  Users should
622	run 'make cleandepend' once if using -DNO_CLEAN to clean out older
623	stale .depend files.
624
62520160306:
626	On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into
627	kernel modules.  Therefore, if you load any kernel modules at boot time,
628	please install the boot loaders after you install the kernel, but before
629	rebooting, e.g.:
630
631	make buildworld
632	make buildkernel KERNCONF=YOUR_KERNEL_HERE
633	make installkernel KERNCONF=YOUR_KERNEL_HERE
634	make -C sys/boot install
635	<reboot in single user>
636
637	Then follow the usual steps, described in the General Notes section,
638	below.
639
64020160305:
641	Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0.  Please
642	see the 20141231 entry below for information about prerequisites and
643	upgrading, if you are not already using clang 3.5.0 or higher.
644
64520160301:
646	The AIO subsystem is now a standard part of the kernel.  The
647	VFS_AIO kernel option and aio.ko kernel module have been removed.
648	Due to stability concerns, asynchronous I/O requests are only
649	permitted on sockets and raw disks by default.  To enable
650	asynchronous I/O requests on all file types, set the
651	vfs.aio.enable_unsafe sysctl to a non-zero value.
652
65320160226:
654	The ELF object manipulation tool objcopy is now provided by the
655	ELF Tool Chain project rather than by GNU binutils. It should be a
656	drop-in replacement, with the addition of arm64 support. The
657	(temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
658	to obtain the GNU version if necessary.
659
66020160129:
661	Building ZFS pools on top of zvols is prohibited by default.  That
662	feature has never worked safely; it's always been prone to deadlocks.
663	Using a zvol as the backing store for a VM guest's virtual disk will
664	still work, even if the guest is using ZFS.  Legacy behavior can be
665	restored by setting vfs.zfs.vol.recursive=1.
666
66720160119:
668	The NONE and HPN patches has been removed from OpenSSH.  They are
669	still available in the security/openssh-portable port.
670
67120160113:
672	With the addition of ypldap(8), a new _ypldap user is now required
673	during installworld. "mergemaster -p" can be used to add the user
674	prior to installworld, as documented in the handbook.
675
67620151216:
677	The tftp loader (pxeboot) now uses the option root-path directive. As a
678	consequence it no longer looks for a pxeboot.4th file on the tftp
679	server. Instead it uses the regular /boot infrastructure as with the
680	other loaders.
681
68220151211:
683	The code to start recording plug and play data into the modules has
684	been committed. While the old tools will properly build a new kernel,
685	a number of warnings about "unknown metadata record 4" will be produced
686	for an older kldxref. To avoid such warnings, make sure to rebuild
687	the kernel toolchain (or world). Make sure that you have r292078 or
688	later when trying to build 292077 or later before rebuilding.
689
69020151207:
691	Debug data files are now built by default with 'make buildworld' and
692	installed with 'make installworld'. This facilitates debugging but
693	requires more disk space both during the build and for the installed
694	world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
695	in src.conf(5).
696
69720151130:
698	r291527 changed the internal interface between the nfsd.ko and
699	nfscommon.ko modules. As such, they must both be upgraded to-gether.
700	__FreeBSD_version has been bumped because of this.
701
70220151108:
703	Add support for unicode collation strings leads to a change of
704	order of files listed by ls(1) for example. To get back to the old
705	behaviour, set LC_COLLATE environment variable to "C".
706
707	Databases administrators will need to reindex their databases given
708	collation results will be different.
709
710	Due to a bug in install(1) it is recommended to remove the ancient
711	locales before running make installworld.
712
713	rm -rf /usr/share/locale/*
714
71520151030:
716	The OpenSSL has been upgraded to 1.0.2d.  Any binaries requiring
717	libcrypto.so.7 or libssl.so.7 must be recompiled.
718
71920151020:
720	Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
721	Kernel modules isp_2400_multi and isp_2500_multi were removed and
722	should be replaced with isp_2400 and isp_2500 modules respectively.
723
72420151017:
725	The build previously allowed using 'make -n' to not recurse into
726	sub-directories while showing what commands would be executed, and
727	'make -n -n' to recursively show commands.  Now 'make -n' will recurse
728	and 'make -N' will not.
729
73020151012:
731	If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
732	and etcupdate will now use this file. A custom sendmail.cf is now
733	updated via this mechanism rather than via installworld.  If you had
734	excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
735	want to remove the exclusion or change it to "always install".
736	/etc/mail/sendmail.cf is now managed the same way regardless of
737	whether SENDMAIL_MC/SENDMAIL_CF is used.  If you are not using
738	SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
739
74020151011:
741	Compatibility shims for legacy ATA device names have been removed.
742	It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
743	and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
744	environment variables, /dev/ad* and /dev/ar* symbolic links.
745
74620151006:
747	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
748	Please see the 20141231 entry below for information about prerequisites
749	and upgrading, if you are not already using clang 3.5.0 or higher.
750
75120150924:
752	Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
753	and renamed from .symbols to .debug. This reduces the size requirements
754	on the boot partition or file system and provides consistency with
755	userland debug files.
756
757	When using the supported kernel installation method the
758	/usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
759	as is done with /boot/kernel.
760
761	Developers wishing to maintain the historical behavior of installing
762	debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
763
76420150827:
765	The wireless drivers had undergone changes that remove the 'parent
766	interface' from the ifconfig -l output. The rc.d network scripts
767	used to check presence of a parent interface in the list, so old
768	scripts would fail to start wireless networking. Thus, etcupdate(3)
769	or mergemaster(8) run is required after kernel update, to update your
770	rc.d scripts in /etc.
771
77220150827:
773	pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
774	These configurations are now automatically interpreted as
775	'scrub fragment reassemble'.
776
77720150817:
778	Kernel-loadable modules for the random(4) device are back. To use
779	them, the kernel must have
780
781	device	random
782	options	RANDOM_LOADABLE
783
784	kldload(8) can then be used to load random_fortuna.ko
785	or random_yarrow.ko. Please note that due to the indirect
786	function calls that the loadable modules need to provide,
787	the build-in variants will be slightly more efficient.
788
789	The random(4) kernel option RANDOM_DUMMY has been retired due to
790	unpopularity. It was not all that useful anyway.
791
79220150813:
793	The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
794	Control over building the ELF Tool Chain tools is now provided by
795	the WITHOUT_TOOLCHAIN knob.
796
79720150810:
798	The polarity of Pulse Per Second (PPS) capture events with the
799	uart(4) driver has been corrected.  Prior to this change the PPS
800	"assert" event corresponded to the trailing edge of a positive PPS
801	pulse and the "clear" event was the leading edge of the next pulse.
802
803	As the width of a PPS pulse in a typical GPS receiver is on the
804	order of 1 millisecond, most users will not notice any significant
805	difference with this change.
806
807	Anyone who has compensated for the historical polarity reversal by
808	configuring a negative offset equal to the pulse width will need to
809	remove that workaround.
810
81120150809:
812	The default group assigned to /dev/dri entries has been changed
813	from 'wheel' to 'video' with the id of '44'. If you want to have
814	access to the dri devices please add yourself to the video group
815	with:
816
817	# pw groupmod video -m $USER
818
81920150806:
820	The menu.rc and loader.rc files will now be replaced during
821	upgrades. Please migrate local changes to menu.rc.local and
822	loader.rc.local instead.
823
82420150805:
825	GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
826	strings and strip have been removed. The src.conf(5) knob
827	WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
828
82920150728:
830	As ZFS requires more kernel stack pages than is the default on some
831	architectures e.g. i386, it now warns if KSTACK_PAGES is less than
832	ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
833
834	Please consider using 'options KSTACK_PAGES=X' where X is greater
835	than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
836
83720150706:
838	sendmail has been updated to 8.15.2.  Starting with FreeBSD 11.0
839	and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
840	default, i.e., they will not contain "::".  For example, instead
841	of ::1, it will be 0:0:0:0:0:0:0:1.  This permits a zero subnet
842	to have a more specific match, such as different map entries for
843	IPv6:0:0 vs IPv6:0.  This change requires that configuration
844	data (including maps, files, classes, custom ruleset, etc.) must
845	use the same format, so make certain such configuration data is
846	upgrading.  As a very simple check search for patterns like
847	'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'.  To return to the old
848	behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
849	the cf option UseCompressedIPv6Addresses.
850
85120150630:
852	The default kernel entropy-processing algorithm is now
853	Fortuna, replacing Yarrow.
854
855	Assuming you have 'device random' in your kernel config
856	file, the configurations allow a kernel option to override
857	this default. You may choose *ONE* of:
858
859	options	RANDOM_YARROW	# Legacy /dev/random algorithm.
860	options	RANDOM_DUMMY	# Blocking-only driver.
861
862	If you have neither, you get Fortuna.  For most people,
863	read no further, Fortuna will give a /dev/random that works
864	like it always used to, and the difference will be irrelevant.
865
866	If you remove 'device random', you get *NO* kernel-processed
867	entropy at all. This may be acceptable to folks building
868	embedded systems, but has complications. Carry on reading,
869	and it is assumed you know what you need.
870
871	*PLEASE* read random(4) and random(9) if you are in the
872	habit of tweaking kernel configs, and/or if you are a member
873	of the embedded community, wanting specific and not-usual
874	behaviour from your security subsystems.
875
876	NOTE!! If you use RANDOM_DUMMY and/or have no 'device
877	random', you will NOT have a functioning /dev/random, and
878	many cryptographic features will not work, including SSH.
879	You may also find strange behaviour from the random(3) set
880	of library functions, in particular sranddev(3), srandomdev(3)
881	and arc4random(3). The reason for this is that the KERN_ARND
882	sysctl only returns entropy if it thinks it has some to
883	share, and with RANDOM_DUMMY or no 'device random' this
884	will never happen.
885
88620150623:
887	An additional fix for the issue described in the 20150614 sendmail
888	entry below has been committed in revision 284717.
889
89020150616:
891	FreeBSD's old make (fmake) has been removed from the system. It is
892	available as the devel/fmake port or via pkg install fmake.
893
89420150615:
895	The fix for the issue described in the 20150614 sendmail entry
896	below has been committed in revision 284436.  The work
897	around described in that entry is no longer needed unless the
898	default setting is overridden by a confDH_PARAMETERS configuration
899	setting of '5' or pointing to a 512 bit DH parameter file.
900
90120150614:
902	ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
903	atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
904	and devel/kyua to version 0.20+ and adjust any calling code to work
905	with Kyuafile and kyua.
906
90720150614:
908	The import of openssl to address the FreeBSD-SA-15:10.openssl
909	security advisory includes a change which rejects handshakes
910	with DH parameters below 768 bits.  sendmail releases prior
911	to 8.15.2 (not yet released), defaulted to a 512 bit
912	DH parameter setting for client connections.  To work around
913	this interoperability, sendmail can be configured to use a
914	2048 bit DH parameter by:
915
916	1. Edit /etc/mail/`hostname`.mc
917	2. If a setting for confDH_PARAMETERS does not exist or
918	   exists and is set to a string beginning with '5',
919	   replace it with '2'.
920	3. If a setting for confDH_PARAMETERS exists and is set to
921	   a file path, create a new file with:
922		openssl dhparam -out /path/to/file 2048
923	4. Rebuild the .cf file:
924		cd /etc/mail/; make; make install
925	5. Restart sendmail:
926		cd /etc/mail/; make restart
927
928	A sendmail patch is coming, at which time this file will be
929	updated.
930
93120150604:
932	Generation of legacy formatted entries have been disabled by default
933	in pwd_mkdb(8), as all base system consumers of the legacy formatted
934	entries were converted to use the new format by default when the new,
935	machine independent format have been added and supported since FreeBSD
936	5.x.
937
938	Please see the pwd_mkdb(8) manual page for further details.
939
94020150525:
941	Clang and llvm have been upgraded to 3.6.1 release.  Please see the
942	20141231 entry below for information about prerequisites and upgrading,
943	if you are not already using 3.5.0 or higher.
944
94520150521:
946	TI platform code switched to using vendor DTS files and this update
947	may break existing systems running on Beaglebone, Beaglebone Black,
948	and Pandaboard:
949
950	- dtb files should be regenerated/reinstalled. Filenames are the
951	  same but content is different now
952	- GPIO addressing was changed, now each GPIO bank (32 pins per bank)
953	  has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
954	  addressing scheme is now pin 25 on /dev/gpioc3.
955	- Pandaboard: /etc/ttys should be updated, serial console device is
956	  now /dev/ttyu2, not /dev/ttyu0
957
95820150501:
959	soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
960	If you need the GNU extension from groff soelim(1), install groff
961	from package: pkg install groff, or via ports: textproc/groff.
962
96320150423:
964	chmod, chflags, chown and chgrp now affect symlinks in -R mode as
965	defined in symlink(7); previously symlinks were silently ignored.
966
96720150415:
968	The const qualifier has been removed from iconv(3) to comply with
969	POSIX.  The ports tree is aware of this from r384038 onwards.
970
97120150416:
972	Libraries specified by LIBADD in Makefiles must have a corresponding
973	DPADD_<lib> variable to ensure correct dependencies.  This is now
974	enforced in src.libnames.mk.
975
97620150324:
977	From legacy ata(4) driver was removed support for SATA controllers
978	supported by more functional drivers ahci(4), siis(4) and mvs(4).
979	Kernel modules ataahci and ataadaptec were removed completely,
980	replaced by ahci and mvs modules respectively.
981
98220150315:
983	Clang, llvm and lldb have been upgraded to 3.6.0 release.  Please see
984	the 20141231 entry below for information about prerequisites and
985	upgrading, if you are not already using 3.5.0 or higher.
986
98720150307:
988	The 32-bit PowerPC kernel has been changed to a position-independent
989	executable. This can only be booted with a version of loader(8)
990	newer than January 31, 2015, so make sure to update both world and
991	kernel before rebooting.
992
99320150217:
994	If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
995	but before r278950, the RNG was not seeded properly.  Immediately
996	upgrade the kernel to r278950 or later and regenerate any keys (e.g.
997	ssh keys or openssl keys) that were generated w/ a kernel from that
998	range.  This does not affect programs that directly used /dev/random
999	or /dev/urandom.  All userland uses of arc4random(3) are affected.
1000
100120150210:
1002	The autofs(4) ABI was changed in order to restore binary compatibility
1003	with 10.1-RELEASE.  The automountd(8) daemon needs to be rebuilt to work
1004	with the new kernel.
1005
100620150131:
1007	The powerpc64 kernel has been changed to a position-independent
1008	executable. This can only be booted with a new version of loader(8),
1009	so make sure to update both world and kernel before rebooting.
1010
101120150118:
1012	Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
1013	only release, no new features have been added.  Please see the 20141231
1014	entry below for information about prerequisites and upgrading, if you
1015	are not already using 3.5.0.
1016
101720150107:
1018	ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
1019	taken from the ELF Tool Chain project rather than GNU binutils. They
1020	should be drop-in replacements, with the addition of arm64 support.
1021	The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
1022	binutils tools, if necessary. See 20150805 for updated information.
1023
102420150105:
1025	The default Unbound configuration now enables remote control
1026	using a local socket.  Users who have already enabled the
1027	local_unbound service should regenerate their configuration
1028	by running "service local_unbound setup" as root.
1029
103020150102:
1031	The GNU texinfo and GNU info pages have been removed.
1032	To be able to view GNU info pages please install texinfo from ports.
1033
103420141231:
1035	Clang, llvm and lldb have been upgraded to 3.5.0 release.
1036
1037	As of this release, a prerequisite for building clang, llvm and lldb is
1038	a C++11 capable compiler and C++11 standard library.  This means that to
1039	be able to successfully build the cross-tools stage of buildworld, with
1040	clang as the bootstrap compiler, your system compiler or cross compiler
1041	should either be clang 3.3 or later, or gcc 4.8 or later, and your
1042	system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
1043	later.
1044
1045	On any standard FreeBSD 10.x or 11.x installation, where clang and
1046	libc++ are on by default (that is, on x86 or arm), this should work out
1047	of the box.
1048
1049	On 9.x installations where clang is enabled by default, e.g. on x86 and
1050	powerpc, libc++ will not be enabled by default, so libc++ should be
1051	built (with clang) and installed first.  If both clang and libc++ are
1052	missing, build clang first, then use it to build libc++.
1053
1054	On 8.x and earlier installations, upgrade to 9.x first, and then follow
1055	the instructions for 9.x above.
1056
1057	Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
1058	default, and do not build clang.
1059
1060	Many embedded systems are resource constrained, and will not be able to
1061	build clang in a reasonable time, or in some cases at all.  In those
1062	cases, cross building bootable systems on amd64 is a workaround.
1063
1064	This new version of clang introduces a number of new warnings, of which
1065	the following are most likely to appear:
1066
1067	-Wabsolute-value
1068
1069	This warns in two cases, for both C and C++:
1070	* When the code is trying to take the absolute value of an unsigned
1071	  quantity, which is effectively a no-op, and almost never what was
1072	  intended.  The code should be fixed, if at all possible.  If you are
1073	  sure that the unsigned quantity can be safely cast to signed, without
1074	  loss of information or undefined behavior, you can add an explicit
1075	  cast, or disable the warning.
1076
1077	* When the code is trying to take an absolute value, but the called
1078	  abs() variant is for the wrong type, which can lead to truncation.
1079	  If you want to disable the warning instead of fixing the code, please
1080	  make sure that truncation will not occur, or it might lead to unwanted
1081	  side-effects.
1082
1083	-Wtautological-undefined-compare and
1084	-Wundefined-bool-conversion
1085
1086	These warn when C++ code is trying to compare 'this' against NULL, while
1087	'this' should never be NULL in well-defined C++ code.  However, there is
1088	some legacy (pre C++11) code out there, which actively abuses this
1089	feature, which was less strictly defined in previous C++ versions.
1090
1091	Squid and openjdk do this, for example.  The warning can be turned off
1092	for C++98 and earlier, but compiling the code in C++11 mode might result
1093	in unexpected behavior; for example, the parts of the program that are
1094	unreachable could be optimized away.
1095
109620141222:
1097	The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
1098	kernel sources have been removed. The .h files remain, since some
1099	utilities include them. This will need to be fixed later.
1100	If "mount -t oldnfs ..." is attempted, it will fail.
1101	If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
1102	the utilities will report errors.
1103
110420141121:
1105	The handling of LOCAL_LIB_DIRS has been altered to skip addition of
1106	directories to top level SUBDIR variable when their parent
1107	directory is included in LOCAL_DIRS.  Users with build systems with
1108	such hierarchies and without SUBDIR entries in the parent
1109	directory Makefiles should add them or add the directories to
1110	LOCAL_DIRS.
1111
111220141109:
1113	faith(4) and faithd(8) have been removed from the base system. Faith
1114	has been obsolete for a very long time.
1115
111620141104:
1117	vt(4), the new console driver, is enabled by default. It brings
1118	support for Unicode and double-width characters, as well as
1119	support for UEFI and integration with the KMS kernel video
1120	drivers.
1121
1122	You may need to update your console settings in /etc/rc.conf,
1123	most probably the keymap. During boot, /etc/rc.d/syscons will
1124	indicate what you need to do.
1125
1126	vt(4) still has issues and lacks some features compared to
1127	syscons(4). See the wiki for up-to-date information:
1128	  https://wiki.freebsd.org/Newcons
1129
1130	If you want to keep using syscons(4), you can do so by adding
1131	the following line to /boot/loader.conf:
1132	  kern.vty=sc
1133
113420141102:
1135	pjdfstest has been integrated into kyua as an opt-in test suite.
1136	Please see share/doc/pjdfstest/README for more details on how to
1137	execute it.
1138
113920141009:
1140	gperf has been removed from the base system for architectures
1141	that use clang. Ports that require gperf will obtain it from the
1142	devel/gperf port.
1143
114420140923:
1145	pjdfstest has been moved from tools/regression/pjdfstest to
1146	contrib/pjdfstest .
1147
114820140922:
1149	At svn r271982, The default linux compat kernel ABI has been adjusted
1150	to 2.6.18 in support of the linux-c6 compat ports infrastructure
1151	update.  If you wish to continue using the linux-f10 compat ports,
1152	add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
1153	encouraged to update their linux-compat packages to linux-c6 during
1154	their next update cycle.
1155
115620140729:
1157	The ofwfb driver, used to provide a graphics console on PowerPC when
1158	using vt(4), no longer allows mmap() of all physical memory. This
1159	will prevent Xorg on PowerPC with some ATI graphics cards from
1160	initializing properly unless x11-servers/xorg-server is updated to
1161	1.12.4_8 or newer.
1162
116320140723:
1164	The xdev targets have been converted to using TARGET and
1165	TARGET_ARCH instead of XDEV and XDEV_ARCH.
1166
116720140719:
1168	The default unbound configuration has been modified to address
1169	issues with reverse lookups on networks that use private
1170	address ranges.  If you use the local_unbound service, run
1171	"service local_unbound setup" as root to regenerate your
1172	configuration, then "service local_unbound reload" to load the
1173	new configuration.
1174
117520140709:
1176	The GNU texinfo and GNU info pages are not built and installed
1177	anymore, WITH_INFO knob has been added to allow to built and install
1178	them again.
1179	UPDATE: see 20150102 entry on texinfo's removal
1180
118120140708:
1182	The GNU readline library is now an INTERNALLIB - that is, it is
1183	statically linked into consumers (GDB and variants) in the base
1184	system, and the shared library is no longer installed.  The
1185	devel/readline port is available for third party software that
1186	requires readline.
1187
118820140702:
1189	The Itanium architecture (ia64) has been removed from the list of
1190	known architectures. This is the first step in the removal of the
1191	architecture.
1192
119320140701:
1194	Commit r268115 has added NFSv4.1 server support, merged from
1195	projects/nfsv4.1-server.  Since this includes changes to the
1196	internal interfaces between the NFS related modules, a full
1197	build of the kernel and modules will be necessary.
1198	__FreeBSD_version has been bumped.
1199
120020140629:
1201	The WITHOUT_VT_SUPPORT kernel config knob has been renamed
1202	WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
1203	which differs from the behaviour controlled by this knob.)
1204
120520140619:
1206	Maximal length of the serial number in CTL was increased from 16 to
1207	64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
1208	and ctld, need to be rebuilt to work with a new kernel.
1209
121020140606:
1211	The libatf-c and libatf-c++ major versions were downgraded to 0 and
1212	1 respectively to match the upstream numbers.  They were out of
1213	sync because, when they were originally added to FreeBSD, the
1214	upstream versions were not respected.  These libraries are private
1215	and not yet built by default, so renumbering them should be a
1216	non-issue.  However, unclean source trees will yield broken test
1217	programs once the operator executes "make delete-old-libs" after a
1218	"make installworld".
1219
1220	Additionally, the atf-sh binary was made private by moving it into
1221	/usr/libexec/.  Already-built shell test programs will keep the
1222	path to the old binary so they will break after "make delete-old"
1223	is run.
1224
1225	If you are using WITH_TESTS=yes (not the default), wipe the object
1226	tree and rebuild from scratch to prevent spurious test failures.
1227	This is only needed once: the misnumbered libraries and misplaced
1228	binaries have been added to OptionalObsoleteFiles.inc so they will
1229	be removed during a clean upgrade.
1230
123120140512:
1232	Clang and llvm have been upgraded to 3.4.1 release.
1233
123420140508:
1235	We bogusly installed src.opts.mk in /usr/share/mk. This file should
1236	be removed to avoid issues in the future (and has been added to
1237	ObsoleteFiles.inc).
1238
123920140505:
1240	/etc/src.conf now affects only builds of the FreeBSD src tree. In the
1241	past, it affected all builds that used the bsd.*.mk files. The old
1242	behavior was a bug, but people may have relied upon it. To get this
1243	behavior back, you can .include /etc/src.conf from /etc/make.conf
1244	(which is still global and isn't changed). This also changes the
1245	behavior of incremental builds inside the tree of individual
1246	directories. Set MAKESYSPATH to ".../share/mk" to do that.
1247	Although this has survived make universe and some upgrade scenarios,
1248	other upgrade scenarios may have broken. At least one form of
1249	temporary breakage was fixed with MAKESYSPATH settings for buildworld
1250	as well... In cases where MAKESYSPATH isn't working with this
1251	setting, you'll need to set it to the full path to your tree.
1252
1253	One side effect of all this cleaning up is that bsd.compiler.mk
1254	is no longer implicitly included by bsd.own.mk. If you wish to
1255	use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
1256	as well.
1257
125820140430:
1259	The lindev device has been removed since /dev/full has been made a
1260	standard device.  __FreeBSD_version has been bumped.
1261
126220140424:
1263	The knob WITHOUT_VI was added to the base system, which controls
1264	building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
1265	in order to reorder files share/termcap and didn't build ex(1) as a
1266	build tool, so building/installing with WITH_VI is highly advised for
1267	build hosts for older releases.
1268
1269	This issue has been fixed in stable/9 and stable/10 in r277022 and
1270	r276991, respectively.
1271
127220140418:
1273	The YES_HESIOD knob has been removed. It has been obsolete for
1274	a decade. Please move to using WITH_HESIOD instead or your builds
1275	will silently lack HESIOD.
1276
127720140405:
1278	The uart(4) driver has been changed with respect to its handling
1279	of the low-level console. Previously the uart(4) driver prevented
1280	any process from changing the baudrate or the CLOCAL and HUPCL
1281	control flags. By removing the restrictions, operators can make
1282	changes to the serial console port without having to reboot.
1283	However, when getty(8) is started on the serial device that is
1284	associated with the low-level console, a misconfigured terminal
1285	line in /etc/ttys will now have a real impact.
1286	Before upgrading the kernel, make sure that /etc/ttys has the
1287	serial console device configured as 3wire without baudrate to
1288	preserve the previous behaviour. E.g:
1289	    ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
1290
129120140306:
1292	Support for libwrap (TCP wrappers) in rpcbind was disabled by default
1293	to improve performance.  To re-enable it, if needed, run rpcbind
1294	with command line option -W.
1295
129620140226:
1297	Switched back to the GPL dtc compiler due to updates in the upstream
1298	dts files not being supported by the BSDL dtc compiler. You will need
1299	to rebuild your kernel toolchain to pick up the new compiler. Core dumps
1300	may result while building dtb files during a kernel build if you fail
1301	to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
1302
130320140216:
1304	Clang and llvm have been upgraded to 3.4 release.
1305
130620140216:
1307	The nve(4) driver has been removed.  Please use the nfe(4) driver
1308	for NVIDIA nForce MCP Ethernet adapters instead.
1309
131020140212:
1311	An ABI incompatibility crept into the libc++ 3.4 import in r261283.
1312	This could cause certain C++ applications using shared libraries built
1313	against the previous version of libc++ to crash.  The incompatibility
1314	has now been fixed, but any C++ applications or shared libraries built
1315	between r261283 and r261801 should be recompiled.
1316
131720140204:
1318	OpenSSH will now ignore errors caused by kernel lacking of Capsicum
1319	capability mode support.  Please note that enabling the feature in
1320	kernel is still highly recommended.
1321
132220140131:
1323	OpenSSH is now built with sandbox support, and will use sandbox as
1324	the default privilege separation method.  This requires Capsicum
1325	capability mode support in kernel.
1326
132720140128:
1328	The libelf and libdwarf libraries have been updated to newer
1329	versions from upstream. Shared library version numbers for
1330	these two libraries were bumped. Any ports or binaries
1331	requiring these two libraries should be recompiled.
1332	__FreeBSD_version is bumped to 1100006.
1333
133420140110:
1335	If a Makefile in a tests/ directory was auto-generating a Kyuafile
1336	instead of providing an explicit one, this would prevent such
1337	Makefile from providing its own Kyuafile in the future during
1338	NO_CLEAN builds.  This has been fixed in the Makefiles but manual
1339	intervention is needed to clean an objdir if you use NO_CLEAN:
1340	  # find /usr/obj -name Kyuafile | xargs rm -f
1341
134220131213:
1343	The behavior of gss_pseudo_random() for the krb5 mechanism
1344	has changed, for applications requesting a longer random string
1345	than produced by the underlying enctype's pseudo-random() function.
1346	In particular, the random string produced from a session key of
1347	enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
1348	be different at the 17th octet and later, after this change.
1349	The counter used in the PRF+ construction is now encoded as a
1350	big-endian integer in accordance with RFC 4402.
1351	__FreeBSD_version is bumped to 1100004.
1352
135320131108:
1354	The WITHOUT_ATF build knob has been removed and its functionality
1355	has been subsumed into the more generic WITHOUT_TESTS.  If you were
1356	using the former to disable the build of the ATF libraries, you
1357	should change your settings to use the latter.
1358
135920131025:
1360	The default version of mtree is nmtree which is obtained from
1361	NetBSD.  The output is generally the same, but may vary
1362	slightly.  If you found you need identical output adding
1363	"-F freebsd9" to the command line should do the trick.  For the
1364	time being, the old mtree is available as fmtree.
1365
136620131014:
1367	libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
1368	This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
1369	1.1.4_8 and verify bsdyml not linked in, before running "make
1370	delete-old-libs":
1371	  # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
1372	  or
1373	  # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
1374
137520131010:
1376	The stable/10 branch has been created in subversion from head
1377	revision r256279.
1378
137920131010:
1380	The rc.d/jail script has been updated to support jail(8)
1381	configuration file.  The "jail_<jname>_*" rc.conf(5) variables
1382	for per-jail configuration are automatically converted to
1383	/var/run/jail.<jname>.conf before the jail(8) utility is invoked.
1384	This is transparently backward compatible.  See below about some
1385	incompatibilities and rc.conf(5) manual page for more details.
1386
1387	These variables are now deprecated in favor of jail(8) configuration
1388	file.  One can use "rc.d/jail config <jname>" command to generate
1389	a jail(8) configuration file in /var/run/jail.<jname>.conf without
1390	running the jail(8) utility.   The default pathname of the
1391	configuration file is /etc/jail.conf and can be specified by
1392	using $jail_conf or $jail_<jname>_conf variables.
1393
1394	Please note that jail_devfs_ruleset accepts an integer at
1395	this moment.  Please consider to rewrite the ruleset name
1396	with an integer.
1397
139820130930:
1399	BIND has been removed from the base system.  If all you need
1400	is a local resolver, simply enable and start the local_unbound
1401	service instead.  Otherwise, several versions of BIND are
1402	available in the ports tree.   The dns/bind99 port is one example.
1403
1404	With this change, nslookup(1) and dig(1) are no longer in the base
1405	system.  Users should instead use host(1) and drill(1) which are
1406	in the base system.  Alternatively, nslookup and dig can
1407	be obtained by installing the dns/bind-tools port.
1408
140920130916:
1410	With the addition of unbound(8), a new unbound user is now
1411	required during installworld.  "mergemaster -p" can be used to
1412	add the user prior to installworld, as documented in the handbook.
1413
141420130911:
1415	OpenSSH is now built with DNSSEC support, and will by default
1416	silently trust signed SSHFP records.  This can be controlled with
1417	the VerifyHostKeyDNS client configuration setting.  DNSSEC support
1418	can be disabled entirely with the WITHOUT_LDNS option in src.conf.
1419
142020130906:
1421	The GNU Compiler Collection and C++ standard library (libstdc++)
1422	are no longer built by default on platforms where clang is the system
1423	compiler.  You can enable them with the WITH_GCC and WITH_GNUCXX
1424	options in src.conf.
1425
142620130905:
1427	The PROCDESC kernel option is now part of the GENERIC kernel
1428	configuration and is required for the rwhod(8) to work.
1429	If you are using custom kernel configuration, you should include
1430	'options PROCDESC'.
1431
143220130905:
1433	The API and ABI related to the Capsicum framework was modified
1434	in backward incompatible way. The userland libraries and programs
1435	have to be recompiled to work with the new kernel. This includes the
1436	following libraries and programs, but the whole buildworld is
1437	advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
1438	kdump, procstat, rwho, rwhod, uniq.
1439
144020130903:
1441	AES-NI intrinsic support has been added to gcc.  The AES-NI module
1442	has been updated to use this support.  A new gcc is required to build
1443	the aesni module on both i386 and amd64.
1444
144520130821:
1446	The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
1447	Thus "device padlock_rng" and "device rdrand_rng" should be
1448	used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
1449
145020130813:
1451	WITH_ICONV has been split into two feature sets.  WITH_ICONV now
1452	enables just the iconv* functionality and is now on by default.
1453	WITH_LIBICONV_COMPAT enables the libiconv api and link time
1454	compatibility.  Set WITHOUT_ICONV to build the old way.
1455	If you have been using WITH_ICONV before, you will very likely
1456	need to turn on WITH_LIBICONV_COMPAT.
1457
145820130806:
1459	INVARIANTS option now enables DEBUG for code with OpenSolaris and
1460	Illumos origin, including ZFS.  If you have INVARIANTS in your
1461	kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
1462	explicitly.
1463	DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
1464	locks if WITNESS option was set.  Because that generated a lot of
1465	witness(9) reports and all of them were believed to be false
1466	positives, this is no longer done.  New option OPENSOLARIS_WITNESS
1467	can be used to achieve the previous behavior.
1468
146920130806:
1470	Timer values in IPv6 data structures now use time_uptime instead
1471	of time_second.  Although this is not a user-visible functional
1472	change, userland utilities which directly use them---ndp(8),
1473	rtadvd(8), and rtsold(8) in the base system---need to be updated
1474	to r253970 or later.
1475
147620130802:
1477	find -delete can now delete the pathnames given as arguments,
1478	instead of only files found below them or if the pathname did
1479	not contain any slashes. Formerly, the following error message
1480	would result:
1481
1482	find: -delete: <path>: relative path potentially not safe
1483
1484	Deleting the pathnames given as arguments can be prevented
1485	without error messages using -mindepth 1 or by changing
1486	directory and passing "." as argument to find. This works in the
1487	old as well as the new version of find.
1488
148920130726:
1490	Behavior of devfs rules path matching has been changed.
1491	Pattern is now always matched against fully qualified devfs
1492	path and slash characters must be explicitly matched by
1493	slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
1494	subdirectories must be reviewed.
1495
149620130716:
1497	The default ARM ABI has changed to the ARM EABI. The old ABI is
1498	incompatible with the ARM EABI and all programs and modules will
1499	need to be rebuilt to work with a new kernel.
1500
1501	To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
1502
1503	NOTE: Support for the old ABI will be removed in the future and
1504	users are advised to upgrade.
1505
150620130709:
1507	pkg_install has been disconnected from the build if you really need it
1508	you should add WITH_PKGTOOLS in your src.conf(5).
1509
151020130709:
1511	Most of network statistics structures were changed to be able
1512	keep 64-bits counters. Thus all tools, that work with networking
1513	statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
1514
151520130618:
1516	Fix a bug that allowed a tracing process (e.g. gdb) to write
1517	to a memory-mapped file in the traced process's address space
1518	even if neither the traced process nor the tracing process had
1519	write access to that file.
1520
152120130615:
1522	CVS has been removed from the base system.  An exact copy
1523	of the code is available from the devel/cvs port.
1524
152520130613:
1526	Some people report the following error after the switch to bmake:
1527
1528		make: illegal option -- J
1529		usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
1530			...
1531		*** [buildworld] Error code 2
1532
1533	this likely due to an old instance of make in
1534	${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
1535	which src/Makefile will use that blindly, if it exists, so if
1536	you see the above error:
1537
1538		rm -rf `make -V MAKEPATH`
1539
1540	should resolve it.
1541
154220130516:
1543	Use bmake by default.
1544	Whereas before one could choose to build with bmake via
1545	-DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
1546	make. The goal is to remove these knobs for 10-RELEASE.
1547
1548	It is worth noting that bmake (like gmake) treats the command
1549	line as the unit of failure, rather than statements within the
1550	command line.  Thus '(cd some/where && dosomething)' is safer
1551	than 'cd some/where; dosomething'. The '()' allows consistent
1552	behavior in parallel build.
1553
155420130429:
1555	Fix a bug that allows NFS clients to issue READDIR on files.
1556
155720130426:
1558	The WITHOUT_IDEA option has been removed because
1559	the IDEA patent expired.
1560
156120130426:
1562	The sysctl which controls TRIM support under ZFS has been renamed
1563	from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
1564	enabled by default.
1565
156620130425:
1567	The mergemaster command now uses the default MAKEOBJDIRPREFIX
1568	rather than creating it's own in the temporary directory in
1569	order allow access to bootstrapped versions of tools such as
1570	install and mtree.  When upgrading from version of FreeBSD where
1571	the install command does not support -l, you will need to
1572	install a new mergemaster command if mergemaster -p is required.
1573	This can be accomplished with the command (cd src/usr.sbin/mergemaster
1574	&& make install).
1575
157620130404:
1577	Legacy ATA stack, disabled and replaced by new CAM-based one since
1578	FreeBSD 9.0, completely removed from the sources.  Kernel modules
1579	atadisk and atapi*, user-level tools atacontrol and burncd are
1580	removed.  Kernel option `options ATA_CAM` is now permanently enabled
1581	and removed.
1582
158320130319:
1584	SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
1585	and socketpair(2). Software, in particular Kerberos, may
1586	automatically detect and use these during building. The resulting
1587	binaries will not work on older kernels.
1588
158920130308:
1590	CTL_DISABLE has also been added to the sparc64 GENERIC (for further
1591	information, see the respective 20130304 entry).
1592
159320130304:
1594	Recent commits to callout(9) changed the size of struct callout,
1595	so the KBI is probably heavily disturbed. Also, some functions
1596	in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
1597	by macros. Every kernel module using it won't load, so rebuild
1598	is requested.
1599
1600	The ctl device has been re-enabled in GENERIC for i386 and amd64,
1601	but does not initialize by default (because of the new CTL_DISABLE
1602	option) to save memory.  To re-enable it, remove the CTL_DISABLE
1603	option from the kernel config file or set kern.cam.ctl.disable=0
1604	in /boot/loader.conf.
1605
160620130301:
1607	The ctl device has been disabled in GENERIC for i386 and amd64.
1608	This was done due to the extra memory being allocated at system
1609	initialisation time by the ctl driver which was only used if
1610	a CAM target device was created.  This makes a FreeBSD system
1611	unusable on 128MB or less of RAM.
1612
161320130208:
1614	A new compression method (lz4) has been merged to -HEAD.  Please
1615	refer to zpool-features(7) for more information.
1616
1617	Please refer to the "ZFS notes" section of this file for information
1618	on upgrading boot ZFS pools.
1619
162020130129:
1621	A BSD-licensed patch(1) variant has been added and is installed
1622	as bsdpatch, being the GNU version the default patch.
1623	To inverse the logic and use the BSD-licensed one as default,
1624	while having the GNU version installed as gnupatch, rebuild
1625	and install world with the WITH_BSD_PATCH knob set.
1626
162720130121:
1628	Due to the use of the new -l option to install(1) during build
1629	and install, you must take care not to directly set the INSTALL
1630	make variable in your /etc/make.conf, /etc/src.conf, or on the
1631	command line.  If you wish to use the -C flag for all installs
1632	you may be able to add INSTALL+=-C to /etc/make.conf or
1633	/etc/src.conf.
1634
163520130118:
1636	The install(1) option -M has changed meaning and now takes an
1637	argument that is a file or path to append logs to.  In the
1638	unlikely event that -M was the last option on the command line
1639	and the command line contained at least two files and a target
1640	directory the first file will have logs appended to it.  The -M
1641	option served little practical purpose in the last decade so its
1642	use is expected to be extremely rare.
1643
164420121223:
1645	After switching to Clang as the default compiler some users of ZFS
1646	on i386 systems started to experience stack overflow kernel panics.
1647	Please consider using 'options KSTACK_PAGES=4' in such configurations.
1648
164920121222:
1650	GEOM_LABEL now mangles label names read from file system metadata.
1651	Mangling affect labels containing spaces, non-printable characters,
1652	'%' or '"'. Device names in /etc/fstab and other places may need to
1653	be updated.
1654
165520121217:
1656	By default, only the 10 most recent kernel dumps will be saved.  To
1657	restore the previous behaviour (no limit on the number of kernel dumps
1658	stored in the dump directory) add the following line to /etc/rc.conf:
1659
1660		savecore_flags=""
1661
166220121201:
1663	With the addition of auditdistd(8), a new auditdistd user is now
1664	required during installworld.  "mergemaster -p" can be used to
1665	add the user prior to installworld, as documented in the handbook.
1666
166720121117:
1668	The sin6_scope_id member variable in struct sockaddr_in6 is now
1669	filled by the kernel before passing the structure to the userland via
1670	sysctl or routing socket.  This means the KAME-specific embedded scope
1671	id in sin6_addr.s6_addr[2] is always cleared in userland application.
1672	This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
1673	__FreeBSD_version is bumped to 1000025.
1674
167520121105:
1676	On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
1677	This means that the world and kernel will be compiled with clang
1678	and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
1679	and /usr/bin/cpp.  To disable this behavior and revert to building
1680	with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
1681	of current may need to bootstrap WITHOUT_CLANG first if the clang
1682	build fails (its compatibility window doesn't extend to the 9 stable
1683	branch point).
1684
168520121102:
1686	The IPFIREWALL_FORWARD kernel option has been removed. Its
1687	functionality now turned on by default.
1688
168920121023:
1690	The ZERO_COPY_SOCKET kernel option has been removed and
1691	split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
1692	NB: SOCKET_SEND_COW uses the VM page based copy-on-write
1693	mechanism which is not safe and may result in kernel crashes.
1694	NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
1695	driver supports disposeable external page sized mbuf storage.
1696	Proper replacements for both zero-copy mechanisms are under
1697	consideration and will eventually lead to complete removal
1698	of the two kernel options.
1699
170020121023:
1701	The IPv4 network stack has been converted to network byte
1702	order. The following modules need to be recompiled together
1703	with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
1704	pf(4), ipfw(4), ng_ipfw(4), stf(4).
1705
170620121022:
1707	Support for non-MPSAFE filesystems was removed from VFS. The
1708	VFS_VERSION was bumped, all filesystem modules shall be
1709	recompiled.
1710
171120121018:
1712	All the non-MPSAFE filesystems have been disconnected from
1713	the build. The full list includes: codafs, hpfs, ntfs, nwfs,
1714	portalfs, smbfs, xfs.
1715
171620121016:
1717	The interface cloning API and ABI has changed. The following
1718	modules need to be recompiled together with kernel:
1719	ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
1720	vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
1721	faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
1722
172320121015:
1724	The sdhci driver was split in two parts: sdhci (generic SD Host
1725	Controller logic) and sdhci_pci (actual hardware driver).
1726	No kernel config modifications are required, but if you
1727	load sdhc as a module you must switch to sdhci_pci instead.
1728
172920121014:
1730	Import the FUSE kernel and userland support into base system.
1731
173220121013:
1733	The GNU sort(1) program has been removed since the BSD-licensed
1734	sort(1) has been the default for quite some time and no serious
1735	problems have been reported.  The corresponding WITH_GNU_SORT
1736	knob has also gone.
1737
173820121006:
1739	The pfil(9) API/ABI for AF_INET family has been changed. Packet
1740	filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
1741	with new kernel.
1742
174320121001:
1744	The net80211(4) ABI has been changed to allow for improved driver
1745	PS-POLL and power-save support.  All wireless drivers need to be
1746	recompiled to work with the new kernel.
1747
174820120913:
1749	The random(4) support for the VIA hardware random number
1750	generator (`PADLOCK') is no longer enabled unconditionally.
1751	Add the padlock_rng device in the custom kernel config if
1752	needed.  The GENERIC kernels on i386 and amd64 do include the
1753	device, so the change only affects the custom kernel
1754	configurations.
1755
175620120908:
1757	The pf(4) packet filter ABI has been changed. pfctl(8) and
1758	snmp_pf module need to be recompiled to work with new kernel.
1759
176020120828:
1761	A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
1762	to -HEAD. Pools that have empty_bpobj in active state can not be
1763	imported read-write with ZFS implementations that do not support
1764	this feature. For more information read the zpool-features(5)
1765	manual page.
1766
176720120727:
1768	The sparc64 ZFS loader has been changed to no longer try to auto-
1769	detect ZFS providers based on diskN aliases but now requires these
1770	to be explicitly listed in the OFW boot-device environment variable.
1771
177220120712:
1773	The OpenSSL has been upgraded to 1.0.1c.  Any binaries requiring
1774	libcrypto.so.6 or libssl.so.6 must be recompiled.  Also, there are
1775	configuration changes.  Make sure to merge /etc/ssl/openssl.cnf.
1776
177720120712:
1778	The following sysctls and tunables have been renamed for consistency
1779	with other variables:
1780	  kern.cam.da.da_send_ordered   -> kern.cam.da.send_ordered
1781	  kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
1782
178320120628:
1784	The sort utility has been replaced with BSD sort.  For now, GNU sort
1785	is also available as "gnusort" or the default can be set back to
1786	GNU sort by setting WITH_GNU_SORT.  In this case, BSD sort will be
1787	installed as "bsdsort".
1788
178920120611:
1790	A new version of ZFS (pool version 5000) has been merged to -HEAD.
1791	Starting with this version the old system of ZFS pool versioning
1792	is superseded by "feature flags". This concept enables forward
1793	compatibility against certain future changes in functionality of ZFS
1794	pools. The first read-only compatible "feature flag" for ZFS pools
1795	is named "com.delphix:async_destroy". For more information
1796	read the new zpool-features(5) manual page.
1797	Please refer to the "ZFS notes" section of this file for information
1798	on upgrading boot ZFS pools.
1799
180020120417:
1801	The malloc(3) implementation embedded in libc now uses sources imported
1802	as contrib/jemalloc.  The most disruptive API change is to
1803	/etc/malloc.conf.  If your system has an old-style /etc/malloc.conf,
1804	delete it prior to installworld, and optionally re-create it using the
1805	new format after rebooting.  See malloc.conf(5) for details
1806	(specifically the TUNING section and the "opt.*" entries in the MALLCTL
1807	NAMESPACE section).
1808
180920120328:
1810	Big-endian MIPS TARGET_ARCH values no longer end in "eb".  mips64eb
1811	is now spelled mips64.  mipsn32eb is now spelled mipsn32.  mipseb is
1812	now spelled mips.  This is to aid compatibility with third-party
1813	software that expects this naming scheme in uname(3).  Little-endian
1814	settings are unchanged. If you are updating a big-endian mips64 machine
1815	from before this change, you may need to set MACHINE_ARCH=mips64 in
1816	your environment before the new build system will recognize your machine.
1817
181820120306:
1819	Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
1820	platforms.
1821
182220120229:
1823	Now unix domain sockets behave "as expected" on	nullfs(5). Previously
1824	nullfs(5) did not pass through all behaviours to the underlying layer,
1825	as a result if we bound to a socket on the lower layer we could connect
1826	only to the lower path; if we bound to the upper layer we could connect
1827	only to	the upper path. The new behavior is one can connect to both the
1828	lower and the upper paths regardless what layer path one binds to.
1829
183020120211:
1831	The getifaddrs upgrade path broken with 20111215 has been restored.
1832	If you have upgraded in between 20111215 and 20120209 you need to
1833	recompile libc again with your kernel.  You still need to recompile
1834	world to be able to configure CARP but this restriction already
1835	comes from 20111215.
1836
183720120114:
1838	The set_rcvar() function has been removed from /etc/rc.subr.  All
1839	base and ports rc.d scripts have been updated, so if you have a
1840	port installed with a script in /usr/local/etc/rc.d you can either
1841	hand-edit the rcvar= line, or reinstall the port.
1842
1843	An easy way to handle the mass-update of /etc/rc.d:
1844	rm /etc/rc.d/* && mergemaster -i
1845
184620120109:
1847	panic(9) now stops other CPUs in the SMP systems, disables interrupts
1848	on the current CPU and prevents other threads from running.
1849	This behavior can be reverted using the kern.stop_scheduler_on_panic
1850	tunable/sysctl.
1851	The new behavior can be incompatible with kern.sync_on_panic.
1852
185320111215:
1854	The carp(4) facility has been changed significantly. Configuration
1855	of the CARP protocol via ifconfig(8) has changed, as well as format
1856	of CARP events submitted to devd(8) has changed. See manual pages
1857	for more information. The arpbalance feature of carp(4) is currently
1858	not supported anymore.
1859
1860	Size of struct in_aliasreq, struct in6_aliasreq has changed. User
1861	utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
1862	need to be recompiled.
1863
186420111122:
1865	The acpi_wmi(4) status device /dev/wmistat has been renamed to
1866	/dev/wmistat0.
1867
186820111108:
1869	The option VFS_ALLOW_NONMPSAFE option has been added in order to
1870	explicitely support non-MPSAFE filesystems.
1871	It is on by default for all supported platform at this present
1872	time.
1873
187420111101:
1875	The broken amd(4) driver has been replaced with esp(4) in the amd64,
1876	i386 and pc98 GENERIC kernel configuration files.
1877
187820110930:
1879	sysinstall has been removed
1880
188120110923:
1882	The stable/9 branch created in subversion.  This corresponds to the
1883	RELENG_9 branch in CVS.
1884
1885COMMON ITEMS:
1886
1887	General Notes
1888	-------------
1889	Avoid using make -j when upgrading.  While generally safe, there are
1890	sometimes problems using -j to upgrade.  If your upgrade fails with
1891	-j, please try again without -j.  From time to time in the past there
1892	have been problems using -j with buildworld and/or installworld.  This
1893	is especially true when upgrading between "distant" versions (eg one
1894	that cross a major release boundary or several minor releases, or when
1895	several months have passed on the -current branch).
1896
1897	Sometimes, obscure build problems are the result of environment
1898	poisoning.  This can happen because the make utility reads its
1899	environment when searching for values for global variables.  To run
1900	your build attempts in an "environmental clean room", prefix all make
1901	commands with 'env -i '.  See the env(1) manual page for more details.
1902
1903	When upgrading from one major version to another it is generally best to
1904	upgrade to the latest code in the currently installed branch first, then
1905	do an upgrade to the new branch. This is the best-tested upgrade path,
1906	and has the highest probability of being successful.  Please try this
1907	approach if you encounter problems with a major version upgrade.  Since
1908	the stable 4.x branch point, one has generally been able to upgrade from
1909	anywhere in the most recent stable branch to head / current (or even the
1910	last couple of stable branches). See the top of this file when there's
1911	an exception.
1912
1913	When upgrading a live system, having a root shell around before
1914	installing anything can help undo problems. Not having a root shell
1915	around can lead to problems if pam has changed too much from your
1916	starting point to allow continued authentication after the upgrade.
1917
1918	This file should be read as a log of events. When a later event changes
1919	information of a prior event, the prior event should not be deleted.
1920	Instead, a pointer to the entry with the new information should be
1921	placed in the old entry. Readers of this file should also sanity check
1922	older entries before relying on them blindly. Authors of new entries
1923	should write them with this in mind.
1924
1925	ZFS notes
1926	---------
1927	When upgrading the boot ZFS pool to a new version, always follow
1928	these two steps:
1929
1930	1.) recompile and reinstall the ZFS boot loader and boot block
1931	(this is part of "make buildworld" and "make installworld")
1932
1933	2.) update the ZFS boot block on your boot drive
1934
1935	The following example updates the ZFS boot block on the first
1936	partition (freebsd-boot) of a GPT partitioned drive ada0:
1937	"gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
1938
1939	Non-boot pools do not need these updates.
1940
1941	To build a kernel
1942	-----------------
1943	If you are updating from a prior version of FreeBSD (even one just
1944	a few days old), you should follow this procedure.  It is the most
1945	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1946
1947	make kernel-toolchain
1948	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1949	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1950
1951	To test a kernel once
1952	---------------------
1953	If you just want to boot a kernel once (because you are not sure
1954	if it works, or if you want to boot a known bad kernel to provide
1955	debugging information) run
1956	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1957	nextboot -k testkernel
1958
1959	To rebuild everything and install it on the current system.
1960	-----------------------------------------------------------
1961	# Note: sometimes if you are running current you gotta do more than
1962	# is listed here if you are upgrading from a really old current.
1963
1964	<make sure you have good level 0 dumps>
1965	make buildworld
1966	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1967	make installkernel KERNCONF=YOUR_KERNEL_HERE
1968							[1]
1969	<reboot in single user>				[3]
1970	mergemaster -Fp					[5]
1971	make installworld
1972	mergemaster -Fi					[4]
1973	make delete-old					[6]
1974	<reboot>
1975
1976	To cross-install current onto a separate partition
1977	--------------------------------------------------
1978	# In this approach we use a separate partition to hold
1979	# current's root, 'usr', and 'var' directories.   A partition
1980	# holding "/", "/usr" and "/var" should be about 2GB in
1981	# size.
1982
1983	<make sure you have good level 0 dumps>
1984	<boot into -stable>
1985	make buildworld
1986	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1987	<maybe newfs current's root partition>
1988	<mount current's root partition on directory ${CURRENT_ROOT}>
1989	make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
1990	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1991	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1992	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
1993	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1994	<reboot into current>
1995	<do a "native" rebuild/install as described in the previous section>
1996	<maybe install compatibility libraries from ports/misc/compat*>
1997	<reboot>
1998
1999
2000	To upgrade in-place from stable to current
2001	----------------------------------------------
2002	<make sure you have good level 0 dumps>
2003	make buildworld					[9]
2004	make buildkernel KERNCONF=YOUR_KERNEL_HERE	[8]
2005	make installkernel KERNCONF=YOUR_KERNEL_HERE
2006							[1]
2007	<reboot in single user>				[3]
2008	mergemaster -Fp					[5]
2009	make installworld
2010	mergemaster -Fi					[4]
2011	make delete-old					[6]
2012	<reboot>
2013
2014	Make sure that you've read the UPDATING file to understand the
2015	tweaks to various things you need.  At this point in the life
2016	cycle of current, things change often and you are on your own
2017	to cope.  The defaults can also change, so please read ALL of
2018	the UPDATING entries.
2019
2020	Also, if you are tracking -current, you must be subscribed to
2021	freebsd-current@freebsd.org.  Make sure that before you update
2022	your sources that you have read and understood all the recent
2023	messages there.  If in doubt, please track -stable which has
2024	much fewer pitfalls.
2025
2026	[1] If you have third party modules, such as vmware, you
2027	should disable them at this point so they don't crash your
2028	system on reboot.
2029
2030	[3] From the bootblocks, boot -s, and then do
2031		fsck -p
2032		mount -u /
2033		mount -a
2034		cd src
2035		adjkerntz -i		# if CMOS is wall time
2036	Also, when doing a major release upgrade, it is required that
2037	you boot into single user mode to do the installworld.
2038
2039	[4] Note: This step is non-optional.  Failure to do this step
2040	can result in a significant reduction in the functionality of the
2041	system.  Attempting to do it by hand is not recommended and those
2042	that pursue this avenue should read this file carefully, as well
2043	as the archives of freebsd-current and freebsd-hackers mailing lists
2044	for potential gotchas.  The -U option is also useful to consider.
2045	See mergemaster(8) for more information.
2046
2047	[5] Usually this step is a no-op.  However, from time to time
2048	you may need to do this if you get unknown user in the following
2049	step.  It never hurts to do it all the time.  You may need to
2050	install a new mergemaster (cd src/usr.sbin/mergemaster && make
2051	install) after the buildworld before this step if you last updated
2052	from current before 20130425 or from -stable before 20130430.
2053
2054	[6] This only deletes old files and directories. Old libraries
2055	can be deleted by "make delete-old-libs", but you have to make
2056	sure that no program is using those libraries anymore.
2057
2058	[8] In order to have a kernel that can run the 4.x binaries needed to
2059	do an installworld, you must include the COMPAT_FREEBSD4 option in
2060	your kernel.  Failure to do so may leave you with a system that is
2061	hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
2062	required to run the 5.x binaries on more recent kernels.  And so on
2063	for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
2064
2065	Make sure that you merge any new devices from GENERIC since the
2066	last time you updated your kernel config file.
2067
2068	[9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the
2069	"?=" instead of the "=" assignment operator, so that buildworld can
2070	override the CPUTYPE if it needs to.
2071
2072	MAKEOBJDIRPREFIX must be defined in an environment variable, and
2073	not on the command line, or in /etc/make.conf.  buildworld will
2074	warn if it is improperly defined.
2075FORMAT:
2076
2077This file contains a list, in reverse chronological order, of major
2078breakages in tracking -current.  It is not guaranteed to be a complete
2079list of such breakages, and only contains entries since September 23, 2011.
2080If you need to see UPDATING entries from before that date, you will need
2081to fetch an UPDATING file from an older FreeBSD release.
2082
2083Copyright information:
2084
2085Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
2086
2087Redistribution, publication, translation and use, with or without
2088modification, in full or in part, in any form or format of this
2089document are permitted without further permission from the author.
2090
2091THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
2092IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2093WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2094DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
2095INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2096(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2097SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2098HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2099STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
2100IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2101POSSIBILITY OF SUCH DAMAGE.
2102
2103Contact Warner Losh if you have any questions about your use of
2104this document.
2105
2106$FreeBSD$
2107