xref: /freebsd/UPDATING (revision 16b9056593f90eb2609a2655d68dbcf03b221a6e)
1 Updating 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/makeworld.html
10
11Items affecting the ports and packages system can be found in
12/usr/ports/UPDATING.  Please read that file before running portupgrade.
13
14NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
15	FreeBSD 13.x has many debugging features turned on, in both the kernel
16	and userland.  These features attempt to detect incorrect use of
17	system primitives, and encourage loud failure through extra sanity
18	checking and fail stop semantics.  They also substantially impact
19	system performance.  If you want to do performance measurement,
20	benchmarking, and optimization, you'll want to turn them off.  This
21	includes various WITNESS- related kernel options, INVARIANTS, malloc
22	debugging flags in userland, and various verbose features in the
23	kernel.  Many developers choose to disable these features on build
24	machines to maximize performance.  (To completely disable malloc
25	debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
26	disable the most expensive debugging functionality run
27	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
28
292020mmdd:
30	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
31	been upgraded to 10.0.0.  Please see the 20141231 entry below for
32	information about prerequisites and upgrading, if you are not already
33	using clang 3.5.0 or higher.
34
3520200309:
36	The amd(8) automount daemon has been removed from the source tree.
37	As of FreeBSD 10.1 autofs(5) is the preferred tool for automounting.
38	amd is still available in the sysutils/am-utils port.
39
4020200301:
41	Removed brooktree driver (bktr.4) from the tree.
42
4320200229:
44	The WITH_GPL_DTC option has been removed.  The BSD-licenced device tree
45	compiler in usr.bin/dtc is used on all architectures which use dtc, and
46	the GPL dtc is available (if needed) from the sysutils/dtc port.
47
4820200229:
49	The WITHOUT_LLVM_LIBUNWIND option has been removed.  LLVM's libunwind
50	is used by all supported CPU architectures.
51
5220200229:
53	GCC 4.2.1 has been removed from the tree.  The WITH_GCC,
54	WITH_GCC_BOOTSTRAP, and WITH_GNUCXX options are no longer available.
55	Users who wish to build FreeBSD with GCC must use the external toolchain
56	ports or packages.
57
5820200220:
59	ncurses has been updated to a newer version (6.2-20200215). Given the ABI
60	has changed, users will have to rebuild all the ports that are linked to
61	ncurses.
62
6320200217:
64	The size of struct vnet and the magic cookie have changed.
65	Users need to recompile libkvm and all modules using VIMAGE
66	together with their new kernel.
67
6820200212:
69	Defining the long deprecated NO_CTF, NO_DEBUG_FILES, NO_INSTALLLIB,
70	NO_MAN, NO_PROFILE, and NO_WARNS variables is now an error.  Update
71	your Makefiles and scripts to define MK_<var>=no instead as required.
72
73	One exception to this is that program or library Makefiles should
74	define MAN to empty rather than setting MK_MAN=no.
75
7620200108:
77	Clang/LLVM is now the default compiler and LLD the default
78	linker for riscv64.
79
8020200107:
81	make universe no longer uses GCC 4.2.1 on any architectures.
82	Architectures not supported by in-tree Clang/LLVM require an
83	external toolchain package.
84
8520200104:
86	GCC 4.2.1 is now not built by default, as part of the GCC 4.2.1
87	retirement plan.  Specifically, the GCC, GCC_BOOTSTRAP, and GNUCXX
88	options default to off for all supported CPU architectures.  As a
89	short-term transition aid they may be enabled via WITH_* options.
90	GCC 4.2.1 is expected to be removed from the tree on 2020-03-31.
91
9220200102:
93	Support for armv5 has been disconnected and is being removed. The
94	machine combination MACHINE=arm MACHINE_ARCH=arm is no longer valid.
95	You must now use a MACHINE_ARCH of armv6 or armv7. The default
96	MACHINE_ARCH for MACHINE=arm is now armv7.
97
9820191226:
99	Clang/LLVM is now the default compiler for all powerpc architectures.
100	LLD is now the default linker for powerpc64.  The change for powerpc64
101	also includes a change to the ELFv2 ABI, incompatible with the existing
102	ABI.
103
10420191226:
105	Kernel-loadable random(4) modules are no longer unloadable.
106
10720191222:
108	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
109	been upgraded to 9.0.1.  Please see the 20141231 entry below for
110	information about prerequisites and upgrading, if you are not already
111	using clang 3.5.0 or higher.
112
11320191212:
114	r355677 has modified the internal interface used between the
115	NFS modules in the kernel. As such, they must all be upgraded
116	simultaneously. I will do a version bump for this.
117
11820191205:
119	The root certificates of the Mozilla CA Certificate Store have been
120	imported into the base system and can be managed with the certctl(8)
121	utility.  If you have installed the security/ca_root_nss port or package
122	with the ETCSYMLINK option (the default), be advised that there may be
123	differences between those included in the port and those included in
124	base due to differences in nss branch used as well as general update
125	frequency.  Note also that certctl(8) cannot manage certs in the
126	format used by the security/ca_root_nss port.
127
12820191120:
129	The amd(8) automount daemon has been disabled by default, and will be
130	removed in the future.  As of FreeBSD 10.1 the autofs(5) is available
131	for automounting.
132
13320191107:
134	The nctgpio and wbwd drivers have been moved to the superio bus.
135	If you have one of these drivers in a kernel configuration, then
136	you should add device superio to it.  If you use one of these drivers
137	as a module and you compile a custom set of modules, then you should
138	add superio to the set.
139
14020191021:
141	KPIs for network drivers to access interface addresses have changed.
142	Users need to recompile NIC driver modules together with kernel.
143
14420191021:
145	The net.link.tap.user_open sysctl no longer prevents user opening of
146	already created /dev/tapNN devices.  Access is still controlled by
147	node permissions, just like tun devices.  The net.link.tap.user_open
148	sysctl is now used only to allow users to perform devfs cloning of
149	tap devices, and the subsequent open may not succeed if the user is not
150	in the appropriate group.  This sysctl may be deprecated/removed
151	completely in the future.
152
15320191009:
154	mips, powerpc, and sparc64 are no longer built as part of
155	universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If
156	not defined, mips, powerpc, and sparc64 builds will look for
157	the xtoolchain binaries and if installed use them for universe
158	builds. As llvm 9.0 becomes vetted for these architectures, they
159	will be removed from the list.
160
16120191009:
162	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
163	been upgraded to 9.0.0.  Please see the 20141231 entry below for
164	information about prerequisites and upgrading, if you are not already
165	using clang 3.5.0 or higher.
166
16720191003:
168	The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from
169	GENERIC.  They are available as modules and can be loaded by adding
170	to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES",
171	hptnr_load="YES", or hptrr_load="YES", respectively.
172
17320190913:
174	ntpd no longer by default locks its pages in memory, allowing them
175	to be paged out by the kernel. Use rlimit memlock to restore
176	historic BSD behaviour. For example, add "rlimit memlock 32"
177	to ntp.conf to lock up to 32 MB of ntpd address space in memory.
178
17920190823:
180	Several of ping6's options have been renamed for better consistency
181	with ping.  If you use any of -ARWXaghmrtwx, you must update your
182	scripts.  See ping6(8) for details.
183
18420190727:
185	The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls
186	and the "-o sync_unmount" and "-o init_backgrounded" mount options have
187	been removed from mount_fusefs(8).  You can safely remove them from
188	your scripts, because they had no effect.
189
190	The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize,
191	vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable,
192	vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate
193	sysctls have been removed.  If you felt the need to set any of them to
194	a non-default value, please tell asomers@FreeBSD.org why.
195
19620190713:
197	Default permissions on the /var/account/acct file (and copies of it
198	rotated by periodic daily scripts) are changed from 0644 to 0640
199	because the file contains sensitive information that should not be
200	world-readable.  If the /var/account directory must be created by
201	rc.d/accounting, the mode used is now 0750.  Admins who use the
202	accounting feature are encouraged to change the mode of an existing
203	/var/account directory to 0750 or 0700.
204
20520190620:
206	Entropy collection and the /dev/random device are no longer optional
207	components.  The "device random" option has been removed.
208	Implementations of distilling algorithms can still be made loadable
209	with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko).
210
21120190612:
212	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
213	been upgraded to 8.0.1.  Please see the 20141231 entry below for
214	information about prerequisites and upgrading, if you are not already
215	using clang 3.5.0 or higher.
216
21720190608:
218	A fix was applied to i386 kernel modules to avoid panics with
219	dpcpu or vnet.  Users need to recompile i386 kernel modules
220	having pcpu or vnet sections or they will refuse to load.
221
22220190513:
223	User-wired pages now have their own counter,
224	vm.stats.vm.v_user_wire_count.  The vm.max_wired sysctl was renamed
225	to vm.max_user_wired and changed from an unsigned int to an unsigned
226	long.  bhyve VMs wired with the -S are now subject to the user
227	wiring limit; the vm.max_user_wired sysctl may need to be tuned to
228	avoid running into the limit.
229
23020190507:
231	The IPSEC option has been removed from GENERIC.  Users requiring
232	ipsec(4) must now load the ipsec(4) kernel module.
233
23420190507:
235	The tap(4) driver has been folded into tun(4), and the module has been
236	renamed to tuntap.  You should update any kld_list="if_tap" or
237	kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or
238	if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap
239	module instead, and "device tap" or "device tun" entries in kernel
240	config files to select the tuntap device instead.
241
24220190418:
243	The following knobs have been added related to tradeoffs between
244	safe use of the random device and availability in the absence of
245	entropy:
246
247	kern.random.initial_seeding.bypass_before_seeding: tunable; set
248	non-zero to bypass the random device prior to seeding, or zero to
249	block random requests until the random device is initially seeded.
250	For now, set to 1 (unsafe) by default to restore pre-r346250 boot
251	availability properties.
252
253	kern.random.initial_seeding.read_random_bypassed_before_seeding:
254	read-only diagnostic sysctl that is set when bypass is enabled and
255	read_random(9) is bypassed, to enable programmatic handling of this
256	initial condition, if desired.
257
258	kern.random.initial_seeding.arc4random_bypassed_before_seeding:
259	Similar to the above, but for for arc4random(9) initial seeding.
260
261	kern.random.initial_seeding.disable_bypass_warnings: tunable; set
262	non-zero to disable warnings in dmesg when the same conditions are
263	met as for the diagnostic sysctls above.  Defaults to zero, i.e.,
264	produce warnings in dmesg when the conditions are met.
265
26620190416:
267	The loadable random module KPI has changed; the random_infra_init()
268	routine now requires a 3rd function pointer for a bool (*)(void)
269	method that returns true if the random device is seeded (and
270	therefore unblocked).
271
27220190404:
273	r345895 reverts r320698. This implies that an nfsuserd(8) daemon
274	built from head sources between r320757 (July 6, 2017) and
275	r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock"
276	is added to the command line.
277	nfsuserd daemons built from head sources that are post-r338192 are
278	not affected and should continue to work.
279
28020190320:
281	The fuse(4) module has been renamed to fusefs(4) for consistency with
282	other filesystems.  You should update any kld_load="fuse" entries in
283	/etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and
284	"options FUSE" entries in kernel config files.
285
28620190304:
287	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
288	8.0.0.  Please see the 20141231 entry below for information about
289	prerequisites and upgrading, if you are not already using clang 3.5.0
290	or higher.
291
29220190226:
293	geom_uzip(4) depends on the new module xz.  If geom_uzip is statically
294	compiled into your custom kernel, add 'device xz' statement to the
295	kernel config.
296
29720190219:
298	drm and drm2 have been removed from the tree. Please see
299	https://wiki.freebsd.org/Graphics for the latest information on
300	migrating to the drm ports.
301
30220190131:
303	Iflib is no longer unconditionally compiled into the kernel.  Drivers
304	using iflib and statically compiled into the kernel, now require
305	the 'device iflib' config option.  For the same drivers loaded as
306	modules on kernels not having 'device iflib', the iflib.ko module
307	is loaded automatically.
308
30920190125:
310	The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration
311	options no longer exist since r343219 and r343427 respectively;
312	nothing uses them, so they should be just removed from custom
313	kernel config files.
314
31520181230:
316	r342635 changes the way efibootmgr(8) works by requiring users to add
317	the -b (bootnum) parameter for commands where the bootnum was previously
318	specified with each option. For example 'efibootmgr -B 0001' is now
319	'efibootmgr -B -b 0001'.
320
32120181220:
322	r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport
323	in the same as it is applied to NFSv2 and 3.  This implies that NFSv4
324	servers that have vfs.nfsd.nfs_privport set will only allow mounts
325	from clients using a reserved port#. Since both the FreeBSD and Linux
326	NFSv4 clients use reserved port#s by default, this should not affect
327	most NFSv4 mounts.
328
32920181219:
330	The XLP config has been removed. We can't support 64-bit atomics in this
331	kernel because it is running in 32-bit mode. XLP users must transition
332	to running a 64-bit kernel (XLP64 or XLPN32).
333
334	The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is
335	the preferred emulator today and we don't need two different ones.
336
337	The old sibyte / swarm / Broadcom BCM1250 support has been
338	removed from the mips port.
339
34020181211:
341	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
342	7.0.1.  Please see the 20141231 entry below for information about
343	prerequisites and upgrading, if you are not already using clang 3.5.0
344	or higher.
345
34620181211:
347	Remove the timed and netdate programs from the base tree.  Setting
348	the time with these daemons has been obsolete for over a decade.
349
35020181126:
351	On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld
352	linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as
353	it produces broken binaries when ifuncs are in use.  Users needing
354	GNU ld should install the binutils port or package.
355
35620181123:
357	The BSD crtbegin and crtend code has been enabled by default. It has
358	had extensive testing on amd64, arm64, and i386. It can be disabled
359	by building a world with -DWITHOUT_BSD_CRTBEGIN.
360
36120181115:
362	The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue)
363	has been converted to a port (misc/ctm) and will be removed from
364	FreeBSD-13.  It is available as a package (ctm) for all supported
365	FreeBSD versions.
366
36720181110:
368	The default newsyslog.conf(5) file has been changed to only include
369	files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if
370	the filenames end in '.conf' and do not begin with a '.'.
371
372	You should check the configuration files in these two directories match
373	this naming convention. You can verify which configuration files are
374	being included using the command:
375		$ newsyslog -Nrv
376
37720181015:
378	Ports for the DRM modules have been simplified. Now, amd64 users should
379	just install the drm-kmod port. All others should install
380	drm-legacy-kmod.
381
382	Graphics hardware that's newer than about 2010 usually works with
383	drm-kmod.  For hardware older than 2013, however, some users will need
384	to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older
385	than 2008 usually only works in drm-legacy-kmod. The graphics team can
386	only commit to hardware made since 2013 due to the complexity of the
387	market and difficulty to test all the older cards effectively. If you
388	have hardware supported by drm-kmod, you are strongly encouraged to use
389	that as you will get better support.
390
391	Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined
392	elsewhere, the drm and drm2 modules will be eliminated from the src base
393	soon (with a limited exception for arm). Please update to the package
394	asap and report any issues to x11@freebsd.org.
395
396	Generally, anybody using the drm*-kmod packages should add
397	WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty
398	cross-threading surprises, especially with automatic driver
399	loading from X11 startup. These will become the defaults in 13-current
400	shortly.
401
40220181012:
403	The ixlv(4) driver has been renamed to iavf(4).  As a consequence,
404	custom kernel and module loading configuration files must be updated
405	accordingly.  Moreover, interfaces previous presented as ixlvN to the
406	system are now exposed as iavfN and network configuration files must
407	be adjusted as necessary.
408
40920181009:
410	OpenSSL has been updated to version 1.1.1.  This update included
411	additional various API changes throughout the base system.  It is
412	important to rebuild third-party software after upgrading.  The value
413	of __FreeBSD_version has been bumped accordingly.
414
41520181006:
416	The legacy DRM modules and drivers have now been added to the loader's
417	module blacklist, in favor of loading them with kld_list in rc.conf(5).
418	The module blacklist may be overridden with the loader.conf(5)
419	'module_blacklist' variable, but loading them via rc.conf(5) is strongly
420	encouraged.
421
42220181002:
423	The cam(4) based nda(4) driver will be used over nvd(4) by default on
424	powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or
425	loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing
426	driver.  Make sure to edit /boot/etc/kboot.conf and fstab to use the
427	nda device name.
428
42920180913:
430	Reproducible build mode is now on by default, in preparation for
431	FreeBSD 12.0.  This eliminates build metadata such as the user,
432	host, and time from the kernel (and uname), unless the working tree
433	corresponds to a modified checkout from a version control system.
434	The previous behavior can be obtained by setting the /etc/src.conf
435	knob WITHOUT_REPRODUCIBLE_BUILD.
436
43720180826:
438	The Yarrow CSPRNG has been removed from the kernel as it has not been
439	supported by its designers since at least 2003. Fortuna has been the
440	default since FreeBSD-11.
441
44220180822:
443	devctl freeze/thaw have gone into the tree, the rc scripts have been
444	updated to use them and devmatch has been changed.  You should update
445	kernel, userland and rc scripts all at the same time.
446
44720180818:
448	The default interpreter has been switched from 4th to Lua.
449	LOADER_DEFAULT_INTERP, documented in build(7), will override the default
450	interpreter.  If you have custom FORTH code you will need to set
451	LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in
452	src.conf for the build.  This will create default hard links between
453	loader and loader_4th instead of loader and loader_lua, the new default.
454	If you are using UEFI it will create the proper hard link to loader.efi.
455
456	bhyve uses userboot.so. It remains 4th-only until some issues are solved
457	regarding coexisting with multiple versions of FreeBSD are resolved.
458
45920180815:
460	ls(1) now respects the COLORTERM environment variable used in other
461	systems and software to indicate that a colored terminal is both
462	supported and desired.  If ls(1) is suddenly emitting colors, they may
463	be disabled again by either removing the unwanted COLORTERM from your
464	environment, or using `ls --color=never`.  The ls(1) specific CLICOLOR
465	may not be observed in a future release.
466
46720180808:
468	The default pager for most commands has been changed to "less".  To
469	restore the old behavior, set PAGER="more" and MANPAGER="more -s" in
470	your environment.
471
47220180731:
473	The jedec_ts(4) driver has been removed. A superset of its functionality
474	is available in the jedec_dimm(4) driver, and the manpage for that
475	driver includes migration instructions. If you have "device jedec_ts"
476	in your kernel configuration file, it must be removed.
477
47820180730:
479	amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default.
480	This should have no effect if the kernel is booted via BIOS/legacy boot.
481	EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system
482	has a buggy firmware that prevents a successful boot due to use of
483	runtime services.
484
48520180727:
486	Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale
487	support has been removed from the tree. These ports were
488	obsolete and/or known to be broken for many years.
489
49020180723:
491	loader.efi has been augmented to participate more fully in the
492	UEFI boot manager protocol. loader.efi will now look at the
493	BootXXXX environment variable to determine if a specific kernel
494	or root partition was specified. XXXX is derived from BootCurrent.
495	efibootmgr(8) manages these standard UEFI variables.
496
49720180720:
498	zfsloader's functionality has now been folded into loader.
499	zfsloader is no longer necessary once you've updated your
500	boot blocks. For a transition period, we will install a
501	hardlink for zfsloader to loader to allow a smooth transition
502	until the boot blocks can be updated (hard link because old
503	zfs boot blocks don't understand symlinks).
504
50520180719:
506	ARM64 now have efifb support, if you want to have serial console
507	on your arm64 board when an screen is connected and the bootloader
508	setup a frame buffer for us to use, just add :
509	boot_serial=YES
510	boot_multicons=YES
511	in /boot/loader.conf
512	For Raspberry Pi 3 (RPI) users, this is needed even if you don't have
513	an screen connected as the firmware will setup a frame buffer are that
514	u-boot will expose as an EFI frame buffer.
515
51620180719:
517	New uid:gid added, ntpd:ntpd (123:123).  Be sure to run mergemaster
518	or take steps to update /etc/passwd before doing installworld on
519	existing systems.  Do not skip the "mergemaster -Fp" step before
520	installworld, as described in the update procedures near the bottom
521	of this document.  Also, rc.d/ntpd now starts ntpd(8) as user ntpd
522	if the new mac_ntpd(4) policy is available, unless ntpd_flags or
523	the ntp config file contain options that change file/dir locations.
524	When such options (e.g., "statsdir" or "crypto") are used, ntpd can
525	still be run as non-root by setting ntpd_user=ntpd in rc.conf, after
526	taking steps to ensure that all required files/dirs are accessible
527	by the ntpd user.
528
52920180717:
530	Big endian arm support has been removed.
531
53220180711:
533	The static environment setup in kernel configs is no longer mutually
534	exclusive with the loader(8) environment by default.  In order to
535	restore the previous default behavior of disabling the loader(8)
536	environment if a static environment is present, you must specify
537	loader_env.disabled=1 in the static environment.
538
53920180705:
540	The ABI of syscalls used by management tools like sockstat and
541	netstat has been broken to allow 32-bit binaries to work on
542	64-bit kernels without modification.  These programs will need
543	to match the kernel in order to function.  External programs may
544	require minor modifications to accommodate a change of type in
545	structures from pointers to 64-bit virtual addresses.
546
54720180702:
548	On i386 and amd64 atomics are now inlined. Out of tree modules using
549	atomics will need to be rebuilt.
550
55120180701:
552	The '%I' format in the kern.corefile sysctl limits the number of
553	core files that a process can generate to the number stored in the
554	debug.ncores sysctl. The '%I' format is replaced by the single digit
555	index. Previously, if all indexes were taken the kernel would overwrite
556	only a core file with the highest index in a filename.
557	Currently the system will create a new core file if there is a free
558	index or if all slots are taken it will overwrite the oldest one.
559
56020180630:
561	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
562	6.0.1.  Please see the 20141231 entry below for information about
563	prerequisites and upgrading, if you are not already using clang 3.5.0
564	or higher.
565
56620180628:
567	r335753 introduced a new quoting method. However, etc/devd/devmatch.conf
568	needed to be changed to work with it. This change was made with r335763
569	and requires a mergemaster / etcupdate / etc to update the installed
570	file.
571
57220180612:
573	r334930 changed the interface between the NFS modules, so they all
574	need to be rebuilt.  r335018 did a __FreeBSD_version bump for this.
575
57620180530:
577	As of r334391 lld is the default amd64 system linker; it is installed
578	as /usr/bin/ld.  Kernel build workarounds (see 20180510 entry) are no
579	longer necessary.
580
58120180530:
582	The kernel / userland interface for devinfo changed, so you'll
583	need a new kernel and userland as a pair for it to work (rebuilding
584	lib/libdevinfo is all that's required). devinfo and devmatch will
585	not work, but everything else will when there's a mismatch.
586
58720180523:
588	The on-disk format for hwpmc callchain records has changed to include
589	threadid corresponding to a given record. This changes the field offsets
590	and thus requires that libpmcstat be rebuilt before using a kernel
591	later than r334108.
592
59320180517:
594	The vxge(4) driver has been removed.  This driver was introduced into
595	HEAD one week before the Exar left the Ethernet market and is not
596	known to be used.  If you have device vxge in your kernel config file
597	it must be removed.
598
59920180510:
600	The amd64 kernel now requires a ld that supports ifunc to produce a
601	working kernel, either lld or a newer binutils. lld is built by default
602	on amd64, and the 'buildkernel' target uses it automatically. However,
603	it is not the default linker, so building the kernel the traditional
604	way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for
605	binutils port/package). lld will soon be default, and this requirement
606	will go away.
607
608	NOTE: As of r334391 lld is the default system linker on amd64, and no
609	workaround is necessary.
610
61120180508:
612	The nxge(4) driver has been removed.  This driver was for PCI-X 10g
613	cards made by s2io/Neterion.  The company was acquired by Exar and
614	no longer sells or supports Ethernet products.  If you have device
615	nxge in your kernel config file it must be removed.
616
61720180504:
618	The tz database (tzdb) has been updated to 2018e.  This version more
619	correctly models time stamps in time zones with negative DST such as
620	Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and
621	Africa/Windhoek (1994/2017).  This does not affect the UT offsets, only
622	time zone abbreviations and the tm_isdst flag.
623
62420180502:
625	The ixgb(4) driver has been removed.  This driver was for an early and
626	uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel
627	quickly shifted to the long lived ixgbe family.  If you have device
628	ixgb in your kernel config file it must be removed.
629
63020180501:
631	The lmc(4) driver has been removed.  This was a WAN interface
632	card that was already reportedly rare in 2003, and had an ambiguous
633	license.  If you have device lmc in your kernel config file it must
634	be removed.
635
63620180413:
637	Support for Arcnet networks has been removed.  If you have device
638	arcnet or device cm in your kernel config file they must be
639	removed.
640
64120180411:
642	Support for FDDI networks has been removed.  If you have device
643	fddi or device fpa in your kernel config file they must be
644	removed.
645
64620180406:
647	In addition to supporting RFC 3164 formatted messages, the
648	syslogd(8) service is now capable of parsing RFC 5424 formatted
649	log messages. The main benefit of using RFC 5424 is that clients
650	may now send log messages with timestamps containing year numbers,
651	microseconds and time zone offsets.
652
653	Similarly, the syslog(3) C library function has been altered to
654	send RFC 5424 formatted messages to the local system logging
655	daemon. On systems using syslogd(8), this change should have no
656	negative impact, as long as syslogd(8) and the C library are
657	updated at the same time. On systems using a different system
658	logging daemon, it may be necessary to make configuration
659	adjustments, depending on the software used.
660
661	When using syslog-ng, add the 'syslog-protocol' flag to local
662	input sources to enable parsing of RFC 5424 formatted messages:
663
664		source src {
665			unix-dgram("/var/run/log" flags(syslog-protocol));
666		}
667
668	When using rsyslog, disable the 'SysSock.UseSpecialParser' option
669	of the 'imuxsock' module to let messages be processed by the
670	regular RFC 3164/5424 parsing pipeline:
671
672		module(load="imuxsock" SysSock.UseSpecialParser="off")
673
674	Do note that these changes only affect communication between local
675	applications and syslogd(8). The format that syslogd(8) uses to
676	store messages on disk or forward messages to other systems
677	remains unchanged. syslogd(8) still uses RFC 3164 for these
678	purposes. Options to customize this behaviour will be added in the
679	future. Utilities that process log files stored in /var/log are
680	thus expected to continue to function as before.
681
682	__FreeBSD_version has been incremented to 1200061 to denote this
683	change.
684
68520180328:
686	Support for token ring networks has been removed. If you
687	have "device token" in your kernel config you should remove
688	it. No device drivers supported token ring.
689
69020180323:
691	makefs was modified to be able to tag ISO9660 El Torito boot catalog
692	entries as EFI instead of overloading the i386 tag as done previously.
693	The amd64 mkisoimages.sh script used to build amd64 ISO images for
694	release was updated to use this. This may mean that makefs must be
695	updated before "make cdrom" can be run in the release directory. This
696	should be as simple as:
697
698		$ cd $SRCDIR/usr.sbin/makefs
699		$ make depend all install
700
70120180212:
702	FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for
703	now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf.
704	Co-existence for the transition period will come shortly. Booting is a
705	complex environment and test coverage for Lua-enabled loaders has been
706	thin, so it would be prudent to assume it might not work and make
707	provisions for backup boot methods.
708
70920180211:
710	devmatch functionality has been turned on in devd. It will automatically
711	load drivers for unattached devices. This may cause unexpected drivers
712	to be loaded. Please report any problems to current@ and
713	imp@freebsd.org.
714
71520180114:
716	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
717	6.0.0.  Please see the 20141231 entry below for information about
718	prerequisites and upgrading, if you are not already using clang 3.5.0
719	or higher.
720
72120180110:
722	LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker.
723	This means it is used to link the kernel and userland libraries and
724	executables, but is not yet installed as /usr/bin/ld by default.
725
726	To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set
727	WITHOUT_LLD_BOOTSTRAP=yes
728
72920180110:
730	On i386, pmtimer has been removed. Its functionality has been folded
731	into apm. It was a no-op on ACPI in current for a while now (but was
732	still needed on i386 in FreeBSD 11 and earlier). Users may need to
733	remove it from kernel config files.
734
73520180104:
736	The use of RSS hash from the network card aka flowid has been
737	disabled by default for lagg(4) as it's currently incompatible with
738	the lacp and loadbalance protocols.
739
740	This can be re-enabled by setting the following in loader.conf:
741	net.link.lagg.default_use_flowid="1"
742
74320180102:
744	The SW_WATCHDOG option is no longer necessary to enable the
745	hardclock-based software watchdog if no hardware watchdog is
746	configured. As before, SW_WATCHDOG will cause the software
747	watchdog to be enabled even if a hardware watchdog is configured.
748
74920171215:
750	r326887 fixes the issue described in the 20171214 UPDATING entry.
751	r326888 flips the switch back to building GELI support always.
752
75320171214:
754	r362593 broke ZFS + GELI support for reasons unknown. However,
755	it also broke ZFS support generally, so GELI has been turned off
756	by default as the lesser evil in r326857. If you boot off ZFS and/or
757	GELI, it might not be a good time to update.
758
75920171125:
760	PowerPC users must update loader(8) by rebuilding world before
761	installing a new kernel, as the protocol connecting them has
762	changed. Without the update, loader metadata will not be passed
763	successfully to the kernel and users will have to enter their
764	root partition at the kernel mountroot prompt to continue booting.
765	Newer versions of loader can boot old kernels without issue.
766
76720171110:
768	The LOADER_FIREWIRE_SUPPORT build variable as been renamed to
769	WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed
770	to WITH/OUT_LOADER_GELI.
771
77220171106:
773	The naive and non-compliant support of posix_fallocate(2) in ZFS
774	has been removed as of r325320.  The system call now returns EINVAL
775	when used on a ZFS file.  Although the new behavior complies with the
776	standard, some consumers are not prepared to cope with it.
777	One known victim is lld prior to r325420.
778
77920171102:
780	Building in a FreeBSD src checkout will automatically create object
781	directories now rather than store files in the current directory if
782	'make obj' was not ran.  Calling 'make obj' is no longer necessary.
783	This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in
784	/etc/src-env.conf (not /etc/src.conf), or passing the option in the
785	environment.
786
78720171101:
788	The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native
789	builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified
790	/usr/obj/<srcdir>/<arch>.  This behavior can be changed to the old
791	format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf,
792	the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building.
793	The UNIFIED_OBJDIR option is a transitional feature that will be
794	removed for 12.0 release; please migrate to the new format for any
795	tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather
796	than hardcoding paths.
797
79820171028:
799	The native-xtools target no longer installs the files by default to the
800	OBJDIR.  Use the native-xtools-install target with a DESTDIR to install
801	to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin.
802
80320171021:
804	As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT
805	options are changing from controlling the build if defined / undefined
806	to controlling the build with explicit 'yes' or 'no' values. They will
807	shift to WITH/WITHOUT options to match other options in the system.
808
80920171010:
810	libstand has turned into a private library for sys/boot use only.
811	It is no longer supported as a public interface outside of sys/boot.
812
81320171005:
814	The arm port has split armv6 into armv6 and armv7. armv7 is now
815	a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system
816	and are running a kernel from before r324363, you will need to add
817	MACHINE_ARCH=armv7 to 'make buildworld' to do a native build.
818
81920171003:
820	When building multiple kernels using KERNCONF, non-existent KERNCONF
821	files will produce an error and buildkernel will fail. Previously
822	missing KERNCONF files silently failed giving no indication as to
823	why, only to subsequently discover during installkernel that the
824	desired kernel was never built in the first place.
825
82620170912:
827	The default serial number format for CTL LUNs has changed.  This will
828	affect users who use /dev/diskid/* device nodes, or whose FibreChannel
829	or iSCSI clients care about their LUNs' serial numbers.  Users who
830	require serial number stability should hardcode serial numbers in
831	/etc/ctl.conf .
832
83320170912:
834	For 32-bit arm compiled for hard-float support, soft-floating point
835	binaries now always get their shared libraries from
836	LD_SOFT_LIBRARY_PATH (in the past, this was only used if
837	/usr/libsoft also existed). Only users with a hard-float ld.so, but
838	soft-float everything else should be affected.
839
84020170826:
841	The geli password typed at boot is now hidden.  To restore the previous
842	behavior, see geli(8) for configuration options.
843
84420170825:
845	Move PMTUD blackhole counters to TCPSTATS and remove them from bare
846	sysctl values.  Minor nit, but requires a rebuild of both world/kernel
847	to complete.
848
84920170814:
850	"make check" behavior (made in ^/head@r295380) has been changed to
851	execute from a limited sandbox, as opposed to executing from
852	${TESTSDIR}.
853
854	Behavioral changes:
855	- The "beforecheck" and "aftercheck" targets are now specified.
856	- ${CHECKDIR} (added in commit noted above) has been removed.
857	- Legacy behavior can be enabled by setting
858	  WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment.
859
860	If the limited sandbox mode is enabled, "make check" will execute
861	"make distribution", then install, execute the tests, and clean up the
862	sandbox if successful.
863
864	The "make distribution" and "make install" targets are typically run as
865	root to set appropriate permissions and ownership at installation time.
866	The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the
867	environment if executing "make check" with limited sandbox mode using
868	an unprivileged user.
869
87020170808:
871	Since the switch to GPT disk labels, fsck for UFS/FFS has been
872	unable to automatically find alternate superblocks. As of r322297,
873	the information needed to find alternate superblocks has been
874	moved to the end of the area reserved for the boot block.
875	Filesystems created with a newfs of this vintage or later
876	will create the recovery information. If you have a filesystem
877	created prior to this change and wish to have a recovery block
878	created for your filesystem, you can do so by running fsck in
879	foreground mode (i.e., do not use the -p or -y options). As it
880	starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS''
881	to which you should answer yes.
882
88320170728:
884	As of r321665, an NFSv4 server configuration that services
885	Kerberos mounts or clients that do not support the uid/gid in
886	owner/owner_group string capability, must explicitly enable
887	the nfsuserd daemon by adding nfsuserd_enable="YES" to the
888	machine's /etc/rc.conf file.
889
89020170722:
891	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0.
892	Please see the 20141231 entry below for information about prerequisites
893	and upgrading, if you are not already using clang 3.5.0 or higher.
894
89520170701:
896	WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the
897	r-commands (rlogin, rsh, etc.) to be built with the base system.
898
89920170625:
900	The FreeBSD/powerpc platform now uses a 64-bit type for time_t.  This is
901	a very major ABI incompatible change, so users of FreeBSD/powerpc must
902	be careful when performing source upgrades.  It is best to run
903	'make installworld' from an alternate root system, either a live
904	CD/memory stick, or a temporary root partition.  Additionally, all ports
905	must be recompiled.  powerpc64 is largely unaffected, except in the case
906	of 32-bit compatibility.  All 32-bit binaries will be affected.
907
90820170623:
909	Forward compatibility for the "ino64" project have been committed. This
910	will allow most new binaries to run on older kernels in a limited
911	fashion.  This prevents many of the common foot-shooting actions in the
912	upgrade as well as the limited ability to roll back the kernel across
913	the ino64 upgrade. Complicated use cases may not work properly, though
914	enough simpler ones work to allow recovery in most situations.
915
91620170620:
917	Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC
918	if you require the GPL compiler.
919
92020170618:
921	The internal ABI used for communication between the NFS kernel modules
922	was changed by r320085, so __FreeBSD_version was bumped to
923	ensure all the NFS related modules are updated together.
924
92520170617:
926	The ABI of struct event was changed by extending the data
927	member to 64bit and adding ext fields.  For upgrade, same
928	precautions as for the entry 20170523 "ino64" must be
929	followed.
930
93120170531:
932	The GNU roff toolchain has been removed from base. To render manpages
933	which are not supported by mandoc(1), man(1) can fallback on GNU roff
934	from ports (and recommends to install it).
935	To render roff(7) documents, consider using GNU roff from ports or the
936	heirloom doctools roff toolchain from ports via pkg install groff or
937	via pkg install heirloom-doctools.
938
93920170524:
940	The ath(4) and ath_hal(4) modules now build piecemeal to allow for
941	smaller runtime footprint builds.  This is useful for embedded systems
942	which only require one chipset support.
943
944	If you load it as a module, make sure this is in /boot/loader.conf:
945
946	if_ath_load="YES"
947
948	This will load the HAL, all chip/RF backends and if_ath_pci.
949	If you have if_ath_pci in /boot/loader.conf, ensure it is after
950	if_ath or it will not load any HAL chipset support.
951
952	If you want to selectively load things (eg on ye cheape ARM/MIPS
953	platforms where RAM is at a premium) you should:
954
955	* load ath_hal
956	* load the chip modules in question
957	* load ath_rate, ath_dfs
958	* load ath_main
959	* load if_ath_pci and/or if_ath_ahb depending upon your particular
960	  bus bind type - this is where probe/attach is done.
961
962	For further comments/feedback, poke adrian@ .
963
96420170523:
965	The "ino64" 64-bit inode project has been committed, which extends
966	a number of types to 64 bits.  Upgrading in place requires care and
967	adherence to the documented upgrade procedure.
968
969	If using a custom kernel configuration ensure that the
970	COMPAT_FREEBSD11 option is included (as during the upgrade the
971	system will be running the ino64 kernel with the existing world).
972
973	For the safest in-place upgrade begin by removing previous build
974	artifacts via "rm -rf /usr/obj/*".  Then, carefully follow the full
975	procedure documented below under the heading "To rebuild everything and
976	install it on the current system."  Specifically, a reboot is required
977	after installing the new kernel before installing world. While an
978	installworld normally works by accident from multiuser after rebooting
979	the proper kernel, there are many cases where this will fail across this
980	upgrade and installworld from single user is required.
981
98220170424:
983	The NATM framework including the en(4), fatm(4), hatm(4), and
984	patm(4) devices has been removed.  Consumers should plan a
985	migration before the end-of-life date for FreeBSD 11.
986
98720170420:
988	GNU diff has been replaced by a BSD licensed diff. Some features of GNU
989	diff has not been implemented, if those are needed a newer version of
990	GNU diff is available via the diffutils package under the gdiff name.
991
99220170413:
993	As of r316810 for ipfilter, keep frags is no longer assumed when
994	keep state is specified in a rule. r316810 aligns ipfilter with
995	documentation in man pages separating keep frags from keep state.
996	This allows keep state to be specified without forcing keep frags
997	and allows keep frags to be specified independently of keep state.
998	To maintain previous behaviour, also specify keep frags with
999	keep state (as documented in ipf.conf.5).
1000
100120170407:
1002	arm64 builds now use the base system LLD 4.0.0 linker by default,
1003	instead of requiring that the aarch64-binutils port or package be
1004	installed. To continue using aarch64-binutils, set
1005	CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin .
1006
100720170405:
1008	The UDP optimization in entry 20160818 that added the sysctl
1009	net.inet.udp.require_l2_bcast has been reverted.  L2 broadcast
1010	packets will no longer be treated as L3 broadcast packets.
1011
101220170331:
1013	Binds and sends to the loopback addresses, IPv6 and IPv4, will now
1014	use any explicitly assigned loopback address available in the jail
1015	instead of using the first assigned address of the jail.
1016
101720170329:
1018	The ctl.ko module no longer implements the iSCSI target frontend:
1019	cfiscsi.ko does instead.
1020
1021	If building cfiscsi.ko as a kernel module, the module can be loaded
1022	via one of the following methods:
1023	- `cfiscsi_load="YES"` in loader.conf(5).
1024	- Add `cfiscsi` to `$kld_list` in rc.conf(5).
1025	- ctladm(8)/ctld(8), when compiled with iSCSI support
1026	  (`WITH_ISCSI=yes` in src.conf(5))
1027
1028	Please see cfiscsi(4) for more details.
1029
103020170316:
1031	The mmcsd.ko module now additionally depends on geom_flashmap.ko.
1032	Also, mmc.ko and mmcsd.ko need to be a matching pair built from the
1033	same source (previously, the dependency of mmcsd.ko on mmc.ko was
1034	missing, but mmcsd.ko now will refuse to load if it is incompatible
1035	with mmc.ko).
1036
103720170315:
1038	The syntax of ipfw(8) named states was changed to avoid ambiguity.
1039	If you have used named states in the firewall rules, you need to modify
1040	them after installworld and before rebooting. Now named states must
1041	be prefixed with colon.
1042
104320170311:
1044	The old drm (sys/dev/drm/) drivers for i915 and radeon have been
1045	removed as the userland we provide cannot use them. The KMS version
1046	(sys/dev/drm2) supports the same hardware.
1047
104820170302:
1049	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0.
1050	Please see the 20141231 entry below for information about prerequisites
1051	and upgrading, if you are not already using clang 3.5.0 or higher.
1052
105320170221:
1054	The code that provides support for ZFS .zfs/ directory functionality
1055	has been reimplemented.  It's not possible now to create a snapshot
1056	by mkdir under .zfs/snapshot/.  That should be the only user visible
1057	change.
1058
105920170216:
1060	EISA bus support has been removed. The WITH_EISA option is no longer
1061	valid.
1062
106320170215:
1064	MCA bus support has been removed.
1065
106620170127:
1067	The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed
1068	WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC.
1069
107020170112:
1071	The EM_MULTIQUEUE kernel configuration option is deprecated now that
1072	the em(4) driver conforms to iflib specifications.
1073
107420170109:
1075	The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
1076	IFLIB.  If you have a custom kernel configuration that excludes em(4)
1077	but you use igb(4), you need to re-add em(4) to your custom
1078	configuration.
1079
108020161217:
1081	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1.
1082	Please see the 20141231 entry below for information about prerequisites
1083	and upgrading, if you are not already using clang 3.5.0 or higher.
1084
108520161124:
1086	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0.
1087	Please see the 20141231 entry below for information about prerequisites
1088	and upgrading, if you are not already using clang 3.5.0 or higher.
1089
109020161119:
1091	The layout of the pmap structure has changed for powerpc to put the pmap
1092	statistics at the front for all CPU variations.  libkvm(3) and all tools
1093	that link against it need to be recompiled.
1094
109520161030:
1096	isl(4) and cyapa(4) drivers now require a new driver,
1097	chromebook_platform(4), to work properly on Chromebook-class hardware.
1098	On other types of hardware the drivers may need to be configured using
1099	device hints.  Please see the corresponding manual pages for details.
1100
110120161017:
1102	The urtwn(4) driver was merged into rtwn(4) and now consists of
1103	rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific
1104	parts.
1105	Also, firmware for RTL8188CE was renamed due to possible name
1106	conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B))
1107
110820161015:
1109	GNU rcs has been removed from base.  It is available as packages:
1110	- rcs: Latest GPLv3 GNU rcs version.
1111	- rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was
1112	removed from base.
1113
111420161008:
1115	Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control
1116	modules now requires that the kernel configuration contain the
1117	TCP_HHOOK option. (This option is included in the GENERIC kernel.)
1118
111920161003:
1120	The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired.
1121	ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy.
1122
112320160924:
1124	Relocatable object files with the extension of .So have been renamed
1125	to use an extension of .pico instead.  The purpose of this change is
1126	to avoid a name clash with shared libraries on case-insensitive file
1127	systems.  On those file systems, foo.So is the same file as foo.so.
1128
112920160918:
1130	GNU rcs has been turned off by default.  It can (temporarily) be built
1131	again by adding WITH_RCS knob in src.conf.
1132	Otherwise, GNU rcs is available from packages:
1133	- rcs: Latest GPLv3 GNU rcs version.
1134	- rcs57: Copy of the latest version of GNU rcs (GPLv2) from base.
1135
113620160918:
1137	The backup_uses_rcs functionality has been removed from rc.subr.
1138
113920160908:
1140	The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into
1141	two separate components, QUEUE_MACRO_DEBUG_TRACE and
1142	QUEUE_MACRO_DEBUG_TRASH.  Define both for the original
1143	QUEUE_MACRO_DEBUG behavior.
1144
114520160824:
1146	r304787 changed some ioctl interfaces between the iSCSI userspace
1147	programs and the kernel.  ctladm, ctld, iscsictl, and iscsid must be
1148	rebuilt to work with new kernels.  __FreeBSD_version has been bumped
1149	to 1200005.
1150
115120160818:
1152	The UDP receive code has been updated to only treat incoming UDP
1153	packets that were addressed to an L2 broadcast address as L3
1154	broadcast packets.  It is not expected that this will affect any
1155	standards-conforming UDP application.  The new behaviour can be
1156	disabled by setting the sysctl net.inet.udp.require_l2_bcast to
1157	0.
1158
115920160818:
1160	Remove the openbsd_poll system call.
1161	__FreeBSD_version has been bumped because of this.
1162
116320160708:
1164	The stable/11 branch has been created from head@r302406.
1165
116620160622:
1167	The libc stub for the pipe(2) system call has been replaced with
1168	a wrapper that calls the pipe2(2) system call and the pipe(2)
1169	system call is now only implemented by the kernels that include
1170	"options COMPAT_FREEBSD10" in their config file (this is the
1171	default).  Users should ensure that this option is enabled in
1172	their kernel or upgrade userspace to r302092 before upgrading their
1173	kernel.
1174
117520160527:
1176	CAM will now strip leading spaces from SCSI disks' serial numbers.
1177	This will affect users who create UFS filesystems on SCSI disks using
1178	those disk's diskid device nodes.  For example, if /etc/fstab
1179	previously contained a line like
1180	"/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should
1181	change it to "/dev/diskid/DISK-ABCDEFG0123456".  Users of geom
1182	transforms like gmirror may also be affected.  ZFS users should
1183	generally be fine.
1184
118520160523:
1186	The bitstring(3) API has been updated with new functionality and
1187	improved performance.  But it is binary-incompatible with the old API.
1188	Objects built with the new headers may not be linked against objects
1189	built with the old headers.
1190
119120160520:
1192	The brk and sbrk functions have been removed from libc on arm64.
1193	Binutils from ports has been updated to not link to these
1194	functions and should be updated to the latest version before
1195	installing a new libc.
1196
119720160517:
1198	The armv6 port now defaults to hard float ABI. Limited support
1199	for running both hardfloat and soft float on the same system
1200	is available using the libraries installed with -DWITH_LIBSOFT.
1201	This has only been tested as an upgrade path for installworld
1202	and packages may fail or need manual intervention to run. New
1203	packages will be needed.
1204
1205	To update an existing self-hosted armv6hf system, you must add
1206	TARGET_ARCH=armv6 on the make command line for both the build
1207	and the install steps.
1208
120920160510:
1210	Kernel modules compiled outside of a kernel build now default to
1211	installing to /boot/modules instead of /boot/kernel.  Many kernel
1212	modules built this way (such as those in ports) already overrode
1213	KMODDIR explicitly to install into /boot/modules.  However,
1214	manually building and installing a module from /sys/modules will
1215	now install to /boot/modules instead of /boot/kernel.
1216
121720160414:
1218	The CAM I/O scheduler has been committed to the kernel. There should be
1219	no user visible impact. This does enable NCQ Trim on ada SSDs. While the
1220	list of known rogues that claim support for this but actually corrupt
1221	data is believed to be complete, be on the lookout for data
1222	corruption. The known rogue list is believed to be complete:
1223
1224		o Crucial MX100, M550 drives with MU01 firmware.
1225		o Micron M510 and M550 drives with MU01 firmware.
1226		o Micron M500 prior to MU07 firmware
1227		o Samsung 830, 840, and 850 all firmwares
1228		o FCCT M500 all firmwares
1229
1230	Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware
1231	with working NCQ TRIM. For Micron branded drives, see your sales rep for
1232	updated firmware. Black listed drives will work correctly because these
1233	drives work correctly so long as no NCQ TRIMs are sent to them. Given
1234	this list is the same as found in Linux, it's believed there are no
1235	other rogues in the market place. All other models from the above
1236	vendors work.
1237
1238	To be safe, if you are at all concerned, you can quirk each of your
1239	drives to prevent NCQ from being sent by setting:
1240		kern.cam.ada.X.quirks="0x2"
1241	in loader.conf. If the drive requires the 4k sector quirk, set the
1242	quirks entry to 0x3.
1243
124420160330:
1245	The FAST_DEPEND build option has been removed and its functionality is
1246	now the one true way.  The old mkdep(1) style of 'make depend' has
1247	been removed.  See 20160311 for further details.
1248
124920160317:
1250	Resource range types have grown from unsigned long to uintmax_t.  All
1251	drivers, and anything using libdevinfo, need to be recompiled.
1252
125320160311:
1254	WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree
1255	builds.  It no longer runs mkdep(1) during 'make depend', and the
1256	'make depend' stage can safely be skipped now as it is auto ran
1257	when building 'make all' and will generate all SRCS and DPSRCS before
1258	building anything else.  Dependencies are gathered at compile time with
1259	-MF flags kept in separate .depend files per object file.  Users should
1260	run 'make cleandepend' once if using -DNO_CLEAN to clean out older
1261	stale .depend files.
1262
126320160306:
1264	On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into
1265	kernel modules.  Therefore, if you load any kernel modules at boot time,
1266	please install the boot loaders after you install the kernel, but before
1267	rebooting, e.g.:
1268
1269	make buildworld
1270	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1271	make installkernel KERNCONF=YOUR_KERNEL_HERE
1272	make -C sys/boot install
1273	<reboot in single user>
1274
1275	Then follow the usual steps, described in the General Notes section,
1276	below.
1277
127820160305:
1279	Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0.  Please
1280	see the 20141231 entry below for information about prerequisites and
1281	upgrading, if you are not already using clang 3.5.0 or higher.
1282
128320160301:
1284	The AIO subsystem is now a standard part of the kernel.  The
1285	VFS_AIO kernel option and aio.ko kernel module have been removed.
1286	Due to stability concerns, asynchronous I/O requests are only
1287	permitted on sockets and raw disks by default.  To enable
1288	asynchronous I/O requests on all file types, set the
1289	vfs.aio.enable_unsafe sysctl to a non-zero value.
1290
129120160226:
1292	The ELF object manipulation tool objcopy is now provided by the
1293	ELF Tool Chain project rather than by GNU binutils. It should be a
1294	drop-in replacement, with the addition of arm64 support. The
1295	(temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
1296	to obtain the GNU version if necessary.
1297
129820160129:
1299	Building ZFS pools on top of zvols is prohibited by default.  That
1300	feature has never worked safely; it's always been prone to deadlocks.
1301	Using a zvol as the backing store for a VM guest's virtual disk will
1302	still work, even if the guest is using ZFS.  Legacy behavior can be
1303	restored by setting vfs.zfs.vol.recursive=1.
1304
130520160119:
1306	The NONE and HPN patches has been removed from OpenSSH.  They are
1307	still available in the security/openssh-portable port.
1308
130920160113:
1310	With the addition of ypldap(8), a new _ypldap user is now required
1311	during installworld. "mergemaster -p" can be used to add the user
1312	prior to installworld, as documented in the handbook.
1313
131420151216:
1315	The tftp loader (pxeboot) now uses the option root-path directive. As a
1316	consequence it no longer looks for a pxeboot.4th file on the tftp
1317	server. Instead it uses the regular /boot infrastructure as with the
1318	other loaders.
1319
132020151211:
1321	The code to start recording plug and play data into the modules has
1322	been committed. While the old tools will properly build a new kernel,
1323	a number of warnings about "unknown metadata record 4" will be produced
1324	for an older kldxref. To avoid such warnings, make sure to rebuild
1325	the kernel toolchain (or world). Make sure that you have r292078 or
1326	later when trying to build 292077 or later before rebuilding.
1327
132820151207:
1329	Debug data files are now built by default with 'make buildworld' and
1330	installed with 'make installworld'. This facilitates debugging but
1331	requires more disk space both during the build and for the installed
1332	world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
1333	in src.conf(5).
1334
133520151130:
1336	r291527 changed the internal interface between the nfsd.ko and
1337	nfscommon.ko modules. As such, they must both be upgraded to-gether.
1338	__FreeBSD_version has been bumped because of this.
1339
134020151108:
1341	Add support for unicode collation strings leads to a change of
1342	order of files listed by ls(1) for example. To get back to the old
1343	behaviour, set LC_COLLATE environment variable to "C".
1344
1345	Databases administrators will need to reindex their databases given
1346	collation results will be different.
1347
1348	Due to a bug in install(1) it is recommended to remove the ancient
1349	locales before running make installworld.
1350
1351	rm -rf /usr/share/locale/*
1352
135320151030:
1354	The OpenSSL has been upgraded to 1.0.2d.  Any binaries requiring
1355	libcrypto.so.7 or libssl.so.7 must be recompiled.
1356
135720151020:
1358	Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
1359	Kernel modules isp_2400_multi and isp_2500_multi were removed and
1360	should be replaced with isp_2400 and isp_2500 modules respectively.
1361
136220151017:
1363	The build previously allowed using 'make -n' to not recurse into
1364	sub-directories while showing what commands would be executed, and
1365	'make -n -n' to recursively show commands.  Now 'make -n' will recurse
1366	and 'make -N' will not.
1367
136820151012:
1369	If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
1370	and etcupdate will now use this file. A custom sendmail.cf is now
1371	updated via this mechanism rather than via installworld.  If you had
1372	excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
1373	want to remove the exclusion or change it to "always install".
1374	/etc/mail/sendmail.cf is now managed the same way regardless of
1375	whether SENDMAIL_MC/SENDMAIL_CF is used.  If you are not using
1376	SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
1377
137820151011:
1379	Compatibility shims for legacy ATA device names have been removed.
1380	It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
1381	and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
1382	environment variables, /dev/ad* and /dev/ar* symbolic links.
1383
138420151006:
1385	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
1386	Please see the 20141231 entry below for information about prerequisites
1387	and upgrading, if you are not already using clang 3.5.0 or higher.
1388
138920150924:
1390	Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
1391	and renamed from .symbols to .debug. This reduces the size requirements
1392	on the boot partition or file system and provides consistency with
1393	userland debug files.
1394
1395	When using the supported kernel installation method the
1396	/usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
1397	as is done with /boot/kernel.
1398
1399	Developers wishing to maintain the historical behavior of installing
1400	debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
1401
140220150827:
1403	The wireless drivers had undergone changes that remove the 'parent
1404	interface' from the ifconfig -l output. The rc.d network scripts
1405	used to check presence of a parent interface in the list, so old
1406	scripts would fail to start wireless networking. Thus, etcupdate(3)
1407	or mergemaster(8) run is required after kernel update, to update your
1408	rc.d scripts in /etc.
1409
141020150827:
1411	pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
1412	These configurations are now automatically interpreted as
1413	'scrub fragment reassemble'.
1414
141520150817:
1416	Kernel-loadable modules for the random(4) device are back. To use
1417	them, the kernel must have
1418
1419	device	random
1420	options	RANDOM_LOADABLE
1421
1422	kldload(8) can then be used to load random_fortuna.ko
1423	or random_yarrow.ko. Please note that due to the indirect
1424	function calls that the loadable modules need to provide,
1425	the build-in variants will be slightly more efficient.
1426
1427	The random(4) kernel option RANDOM_DUMMY has been retired due to
1428	unpopularity. It was not all that useful anyway.
1429
143020150813:
1431	The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
1432	Control over building the ELF Tool Chain tools is now provided by
1433	the WITHOUT_TOOLCHAIN knob.
1434
143520150810:
1436	The polarity of Pulse Per Second (PPS) capture events with the
1437	uart(4) driver has been corrected.  Prior to this change the PPS
1438	"assert" event corresponded to the trailing edge of a positive PPS
1439	pulse and the "clear" event was the leading edge of the next pulse.
1440
1441	As the width of a PPS pulse in a typical GPS receiver is on the
1442	order of 1 millisecond, most users will not notice any significant
1443	difference with this change.
1444
1445	Anyone who has compensated for the historical polarity reversal by
1446	configuring a negative offset equal to the pulse width will need to
1447	remove that workaround.
1448
144920150809:
1450	The default group assigned to /dev/dri entries has been changed
1451	from 'wheel' to 'video' with the id of '44'. If you want to have
1452	access to the dri devices please add yourself to the video group
1453	with:
1454
1455	# pw groupmod video -m $USER
1456
145720150806:
1458	The menu.rc and loader.rc files will now be replaced during
1459	upgrades. Please migrate local changes to menu.rc.local and
1460	loader.rc.local instead.
1461
146220150805:
1463	GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
1464	strings and strip have been removed. The src.conf(5) knob
1465	WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
1466
146720150728:
1468	As ZFS requires more kernel stack pages than is the default on some
1469	architectures e.g. i386, it now warns if KSTACK_PAGES is less than
1470	ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
1471
1472	Please consider using 'options KSTACK_PAGES=X' where X is greater
1473	than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
1474
147520150706:
1476	sendmail has been updated to 8.15.2.  Starting with FreeBSD 11.0
1477	and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
1478	default, i.e., they will not contain "::".  For example, instead
1479	of ::1, it will be 0:0:0:0:0:0:0:1.  This permits a zero subnet
1480	to have a more specific match, such as different map entries for
1481	IPv6:0:0 vs IPv6:0.  This change requires that configuration
1482	data (including maps, files, classes, custom ruleset, etc.) must
1483	use the same format, so make certain such configuration data is
1484	upgrading.  As a very simple check search for patterns like
1485	'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'.  To return to the old
1486	behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
1487	the cf option UseCompressedIPv6Addresses.
1488
148920150630:
1490	The default kernel entropy-processing algorithm is now
1491	Fortuna, replacing Yarrow.
1492
1493	Assuming you have 'device random' in your kernel config
1494	file, the configurations allow a kernel option to override
1495	this default. You may choose *ONE* of:
1496
1497	options	RANDOM_YARROW	# Legacy /dev/random algorithm.
1498	options	RANDOM_DUMMY	# Blocking-only driver.
1499
1500	If you have neither, you get Fortuna.  For most people,
1501	read no further, Fortuna will give a /dev/random that works
1502	like it always used to, and the difference will be irrelevant.
1503
1504	If you remove 'device random', you get *NO* kernel-processed
1505	entropy at all. This may be acceptable to folks building
1506	embedded systems, but has complications. Carry on reading,
1507	and it is assumed you know what you need.
1508
1509	*PLEASE* read random(4) and random(9) if you are in the
1510	habit of tweaking kernel configs, and/or if you are a member
1511	of the embedded community, wanting specific and not-usual
1512	behaviour from your security subsystems.
1513
1514	NOTE!! If you use RANDOM_DUMMY and/or have no 'device
1515	random', you will NOT have a functioning /dev/random, and
1516	many cryptographic features will not work, including SSH.
1517	You may also find strange behaviour from the random(3) set
1518	of library functions, in particular sranddev(3), srandomdev(3)
1519	and arc4random(3). The reason for this is that the KERN_ARND
1520	sysctl only returns entropy if it thinks it has some to
1521	share, and with RANDOM_DUMMY or no 'device random' this
1522	will never happen.
1523
152420150623:
1525	An additional fix for the issue described in the 20150614 sendmail
1526	entry below has been committed in revision 284717.
1527
152820150616:
1529	FreeBSD's old make (fmake) has been removed from the system. It is
1530	available as the devel/fmake port or via pkg install fmake.
1531
153220150615:
1533	The fix for the issue described in the 20150614 sendmail entry
1534	below has been committed in revision 284436.  The work
1535	around described in that entry is no longer needed unless the
1536	default setting is overridden by a confDH_PARAMETERS configuration
1537	setting of '5' or pointing to a 512 bit DH parameter file.
1538
153920150614:
1540	ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
1541	atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
1542	and devel/kyua to version 0.20+ and adjust any calling code to work
1543	with Kyuafile and kyua.
1544
154520150614:
1546	The import of openssl to address the FreeBSD-SA-15:10.openssl
1547	security advisory includes a change which rejects handshakes
1548	with DH parameters below 768 bits.  sendmail releases prior
1549	to 8.15.2 (not yet released), defaulted to a 512 bit
1550	DH parameter setting for client connections.  To work around
1551	this interoperability, sendmail can be configured to use a
1552	2048 bit DH parameter by:
1553
1554	1. Edit /etc/mail/`hostname`.mc
1555	2. If a setting for confDH_PARAMETERS does not exist or
1556	   exists and is set to a string beginning with '5',
1557	   replace it with '2'.
1558	3. If a setting for confDH_PARAMETERS exists and is set to
1559	   a file path, create a new file with:
1560		openssl dhparam -out /path/to/file 2048
1561	4. Rebuild the .cf file:
1562		cd /etc/mail/; make; make install
1563	5. Restart sendmail:
1564		cd /etc/mail/; make restart
1565
1566	A sendmail patch is coming, at which time this file will be
1567	updated.
1568
156920150604:
1570	Generation of legacy formatted entries have been disabled by default
1571	in pwd_mkdb(8), as all base system consumers of the legacy formatted
1572	entries were converted to use the new format by default when the new,
1573	machine independent format have been added and supported since FreeBSD
1574	5.x.
1575
1576	Please see the pwd_mkdb(8) manual page for further details.
1577
157820150525:
1579	Clang and llvm have been upgraded to 3.6.1 release.  Please see the
1580	20141231 entry below for information about prerequisites and upgrading,
1581	if you are not already using 3.5.0 or higher.
1582
158320150521:
1584	TI platform code switched to using vendor DTS files and this update
1585	may break existing systems running on Beaglebone, Beaglebone Black,
1586	and Pandaboard:
1587
1588	- dtb files should be regenerated/reinstalled. Filenames are the
1589	  same but content is different now
1590	- GPIO addressing was changed, now each GPIO bank (32 pins per bank)
1591	  has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
1592	  addressing scheme is now pin 25 on /dev/gpioc3.
1593	- Pandaboard: /etc/ttys should be updated, serial console device is
1594	  now /dev/ttyu2, not /dev/ttyu0
1595
159620150501:
1597	soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
1598	If you need the GNU extension from groff soelim(1), install groff
1599	from package: pkg install groff, or via ports: textproc/groff.
1600
160120150423:
1602	chmod, chflags, chown and chgrp now affect symlinks in -R mode as
1603	defined in symlink(7); previously symlinks were silently ignored.
1604
160520150415:
1606	The const qualifier has been removed from iconv(3) to comply with
1607	POSIX.  The ports tree is aware of this from r384038 onwards.
1608
160920150416:
1610	Libraries specified by LIBADD in Makefiles must have a corresponding
1611	DPADD_<lib> variable to ensure correct dependencies.  This is now
1612	enforced in src.libnames.mk.
1613
161420150324:
1615	From legacy ata(4) driver was removed support for SATA controllers
1616	supported by more functional drivers ahci(4), siis(4) and mvs(4).
1617	Kernel modules ataahci and ataadaptec were removed completely,
1618	replaced by ahci and mvs modules respectively.
1619
162020150315:
1621	Clang, llvm and lldb have been upgraded to 3.6.0 release.  Please see
1622	the 20141231 entry below for information about prerequisites and
1623	upgrading, if you are not already using 3.5.0 or higher.
1624
162520150307:
1626	The 32-bit PowerPC kernel has been changed to a position-independent
1627	executable. This can only be booted with a version of loader(8)
1628	newer than January 31, 2015, so make sure to update both world and
1629	kernel before rebooting.
1630
163120150217:
1632	If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
1633	but before r278950, the RNG was not seeded properly.  Immediately
1634	upgrade the kernel to r278950 or later and regenerate any keys (e.g.
1635	ssh keys or openssl keys) that were generated w/ a kernel from that
1636	range.  This does not affect programs that directly used /dev/random
1637	or /dev/urandom.  All userland uses of arc4random(3) are affected.
1638
163920150210:
1640	The autofs(4) ABI was changed in order to restore binary compatibility
1641	with 10.1-RELEASE.  The automountd(8) daemon needs to be rebuilt to work
1642	with the new kernel.
1643
164420150131:
1645	The powerpc64 kernel has been changed to a position-independent
1646	executable. This can only be booted with a new version of loader(8),
1647	so make sure to update both world and kernel before rebooting.
1648
164920150118:
1650	Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
1651	only release, no new features have been added.  Please see the 20141231
1652	entry below for information about prerequisites and upgrading, if you
1653	are not already using 3.5.0.
1654
165520150107:
1656	ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
1657	taken from the ELF Tool Chain project rather than GNU binutils. They
1658	should be drop-in replacements, with the addition of arm64 support.
1659	The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
1660	binutils tools, if necessary. See 20150805 for updated information.
1661
166220150105:
1663	The default Unbound configuration now enables remote control
1664	using a local socket.  Users who have already enabled the
1665	local_unbound service should regenerate their configuration
1666	by running "service local_unbound setup" as root.
1667
166820150102:
1669	The GNU texinfo and GNU info pages have been removed.
1670	To be able to view GNU info pages please install texinfo from ports.
1671
167220141231:
1673	Clang, llvm and lldb have been upgraded to 3.5.0 release.
1674
1675	As of this release, a prerequisite for building clang, llvm and lldb is
1676	a C++11 capable compiler and C++11 standard library.  This means that to
1677	be able to successfully build the cross-tools stage of buildworld, with
1678	clang as the bootstrap compiler, your system compiler or cross compiler
1679	should either be clang 3.3 or later, or gcc 4.8 or later, and your
1680	system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
1681	later.
1682
1683	On any standard FreeBSD 10.x or 11.x installation, where clang and
1684	libc++ are on by default (that is, on x86 or arm), this should work out
1685	of the box.
1686
1687	On 9.x installations where clang is enabled by default, e.g. on x86 and
1688	powerpc, libc++ will not be enabled by default, so libc++ should be
1689	built (with clang) and installed first.  If both clang and libc++ are
1690	missing, build clang first, then use it to build libc++.
1691
1692	On 8.x and earlier installations, upgrade to 9.x first, and then follow
1693	the instructions for 9.x above.
1694
1695	Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
1696	default, and do not build clang.
1697
1698	Many embedded systems are resource constrained, and will not be able to
1699	build clang in a reasonable time, or in some cases at all.  In those
1700	cases, cross building bootable systems on amd64 is a workaround.
1701
1702	This new version of clang introduces a number of new warnings, of which
1703	the following are most likely to appear:
1704
1705	-Wabsolute-value
1706
1707	This warns in two cases, for both C and C++:
1708	* When the code is trying to take the absolute value of an unsigned
1709	  quantity, which is effectively a no-op, and almost never what was
1710	  intended.  The code should be fixed, if at all possible.  If you are
1711	  sure that the unsigned quantity can be safely cast to signed, without
1712	  loss of information or undefined behavior, you can add an explicit
1713	  cast, or disable the warning.
1714
1715	* When the code is trying to take an absolute value, but the called
1716	  abs() variant is for the wrong type, which can lead to truncation.
1717	  If you want to disable the warning instead of fixing the code, please
1718	  make sure that truncation will not occur, or it might lead to unwanted
1719	  side-effects.
1720
1721	-Wtautological-undefined-compare and
1722	-Wundefined-bool-conversion
1723
1724	These warn when C++ code is trying to compare 'this' against NULL, while
1725	'this' should never be NULL in well-defined C++ code.  However, there is
1726	some legacy (pre C++11) code out there, which actively abuses this
1727	feature, which was less strictly defined in previous C++ versions.
1728
1729	Squid and openjdk do this, for example.  The warning can be turned off
1730	for C++98 and earlier, but compiling the code in C++11 mode might result
1731	in unexpected behavior; for example, the parts of the program that are
1732	unreachable could be optimized away.
1733
173420141222:
1735	The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
1736	kernel sources have been removed. The .h files remain, since some
1737	utilities include them. This will need to be fixed later.
1738	If "mount -t oldnfs ..." is attempted, it will fail.
1739	If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
1740	the utilities will report errors.
1741
174220141121:
1743	The handling of LOCAL_LIB_DIRS has been altered to skip addition of
1744	directories to top level SUBDIR variable when their parent
1745	directory is included in LOCAL_DIRS.  Users with build systems with
1746	such hierarchies and without SUBDIR entries in the parent
1747	directory Makefiles should add them or add the directories to
1748	LOCAL_DIRS.
1749
175020141109:
1751	faith(4) and faithd(8) have been removed from the base system. Faith
1752	has been obsolete for a very long time.
1753
175420141104:
1755	vt(4), the new console driver, is enabled by default. It brings
1756	support for Unicode and double-width characters, as well as
1757	support for UEFI and integration with the KMS kernel video
1758	drivers.
1759
1760	You may need to update your console settings in /etc/rc.conf,
1761	most probably the keymap. During boot, /etc/rc.d/syscons will
1762	indicate what you need to do.
1763
1764	vt(4) still has issues and lacks some features compared to
1765	syscons(4). See the wiki for up-to-date information:
1766	  https://wiki.freebsd.org/Newcons
1767
1768	If you want to keep using syscons(4), you can do so by adding
1769	the following line to /boot/loader.conf:
1770	  kern.vty=sc
1771
177220141102:
1773	pjdfstest has been integrated into kyua as an opt-in test suite.
1774	Please see share/doc/pjdfstest/README for more details on how to
1775	execute it.
1776
177720141009:
1778	gperf has been removed from the base system for architectures
1779	that use clang. Ports that require gperf will obtain it from the
1780	devel/gperf port.
1781
178220140923:
1783	pjdfstest has been moved from tools/regression/pjdfstest to
1784	contrib/pjdfstest .
1785
178620140922:
1787	At svn r271982, The default linux compat kernel ABI has been adjusted
1788	to 2.6.18 in support of the linux-c6 compat ports infrastructure
1789	update.  If you wish to continue using the linux-f10 compat ports,
1790	add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
1791	encouraged to update their linux-compat packages to linux-c6 during
1792	their next update cycle.
1793
179420140729:
1795	The ofwfb driver, used to provide a graphics console on PowerPC when
1796	using vt(4), no longer allows mmap() of all physical memory. This
1797	will prevent Xorg on PowerPC with some ATI graphics cards from
1798	initializing properly unless x11-servers/xorg-server is updated to
1799	1.12.4_8 or newer.
1800
180120140723:
1802	The xdev targets have been converted to using TARGET and
1803	TARGET_ARCH instead of XDEV and XDEV_ARCH.
1804
180520140719:
1806	The default unbound configuration has been modified to address
1807	issues with reverse lookups on networks that use private
1808	address ranges.  If you use the local_unbound service, run
1809	"service local_unbound setup" as root to regenerate your
1810	configuration, then "service local_unbound reload" to load the
1811	new configuration.
1812
181320140709:
1814	The GNU texinfo and GNU info pages are not built and installed
1815	anymore, WITH_INFO knob has been added to allow to built and install
1816	them again.
1817	UPDATE: see 20150102 entry on texinfo's removal
1818
181920140708:
1820	The GNU readline library is now an INTERNALLIB - that is, it is
1821	statically linked into consumers (GDB and variants) in the base
1822	system, and the shared library is no longer installed.  The
1823	devel/readline port is available for third party software that
1824	requires readline.
1825
182620140702:
1827	The Itanium architecture (ia64) has been removed from the list of
1828	known architectures. This is the first step in the removal of the
1829	architecture.
1830
183120140701:
1832	Commit r268115 has added NFSv4.1 server support, merged from
1833	projects/nfsv4.1-server.  Since this includes changes to the
1834	internal interfaces between the NFS related modules, a full
1835	build of the kernel and modules will be necessary.
1836	__FreeBSD_version has been bumped.
1837
183820140629:
1839	The WITHOUT_VT_SUPPORT kernel config knob has been renamed
1840	WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
1841	which differs from the behaviour controlled by this knob.)
1842
184320140619:
1844	Maximal length of the serial number in CTL was increased from 16 to
1845	64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
1846	and ctld, need to be rebuilt to work with a new kernel.
1847
184820140606:
1849	The libatf-c and libatf-c++ major versions were downgraded to 0 and
1850	1 respectively to match the upstream numbers.  They were out of
1851	sync because, when they were originally added to FreeBSD, the
1852	upstream versions were not respected.  These libraries are private
1853	and not yet built by default, so renumbering them should be a
1854	non-issue.  However, unclean source trees will yield broken test
1855	programs once the operator executes "make delete-old-libs" after a
1856	"make installworld".
1857
1858	Additionally, the atf-sh binary was made private by moving it into
1859	/usr/libexec/.  Already-built shell test programs will keep the
1860	path to the old binary so they will break after "make delete-old"
1861	is run.
1862
1863	If you are using WITH_TESTS=yes (not the default), wipe the object
1864	tree and rebuild from scratch to prevent spurious test failures.
1865	This is only needed once: the misnumbered libraries and misplaced
1866	binaries have been added to OptionalObsoleteFiles.inc so they will
1867	be removed during a clean upgrade.
1868
186920140512:
1870	Clang and llvm have been upgraded to 3.4.1 release.
1871
187220140508:
1873	We bogusly installed src.opts.mk in /usr/share/mk. This file should
1874	be removed to avoid issues in the future (and has been added to
1875	ObsoleteFiles.inc).
1876
187720140505:
1878	/etc/src.conf now affects only builds of the FreeBSD src tree. In the
1879	past, it affected all builds that used the bsd.*.mk files. The old
1880	behavior was a bug, but people may have relied upon it. To get this
1881	behavior back, you can .include /etc/src.conf from /etc/make.conf
1882	(which is still global and isn't changed). This also changes the
1883	behavior of incremental builds inside the tree of individual
1884	directories. Set MAKESYSPATH to ".../share/mk" to do that.
1885	Although this has survived make universe and some upgrade scenarios,
1886	other upgrade scenarios may have broken. At least one form of
1887	temporary breakage was fixed with MAKESYSPATH settings for buildworld
1888	as well... In cases where MAKESYSPATH isn't working with this
1889	setting, you'll need to set it to the full path to your tree.
1890
1891	One side effect of all this cleaning up is that bsd.compiler.mk
1892	is no longer implicitly included by bsd.own.mk. If you wish to
1893	use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
1894	as well.
1895
189620140430:
1897	The lindev device has been removed since /dev/full has been made a
1898	standard device.  __FreeBSD_version has been bumped.
1899
190020140424:
1901	The knob WITHOUT_VI was added to the base system, which controls
1902	building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
1903	in order to reorder files share/termcap and didn't build ex(1) as a
1904	build tool, so building/installing with WITH_VI is highly advised for
1905	build hosts for older releases.
1906
1907	This issue has been fixed in stable/9 and stable/10 in r277022 and
1908	r276991, respectively.
1909
191020140418:
1911	The YES_HESIOD knob has been removed. It has been obsolete for
1912	a decade. Please move to using WITH_HESIOD instead or your builds
1913	will silently lack HESIOD.
1914
191520140405:
1916	The uart(4) driver has been changed with respect to its handling
1917	of the low-level console. Previously the uart(4) driver prevented
1918	any process from changing the baudrate or the CLOCAL and HUPCL
1919	control flags. By removing the restrictions, operators can make
1920	changes to the serial console port without having to reboot.
1921	However, when getty(8) is started on the serial device that is
1922	associated with the low-level console, a misconfigured terminal
1923	line in /etc/ttys will now have a real impact.
1924	Before upgrading the kernel, make sure that /etc/ttys has the
1925	serial console device configured as 3wire without baudrate to
1926	preserve the previous behaviour. E.g:
1927	    ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
1928
192920140306:
1930	Support for libwrap (TCP wrappers) in rpcbind was disabled by default
1931	to improve performance.  To re-enable it, if needed, run rpcbind
1932	with command line option -W.
1933
193420140226:
1935	Switched back to the GPL dtc compiler due to updates in the upstream
1936	dts files not being supported by the BSDL dtc compiler. You will need
1937	to rebuild your kernel toolchain to pick up the new compiler. Core dumps
1938	may result while building dtb files during a kernel build if you fail
1939	to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
1940
194120140216:
1942	Clang and llvm have been upgraded to 3.4 release.
1943
194420140216:
1945	The nve(4) driver has been removed.  Please use the nfe(4) driver
1946	for NVIDIA nForce MCP Ethernet adapters instead.
1947
194820140212:
1949	An ABI incompatibility crept into the libc++ 3.4 import in r261283.
1950	This could cause certain C++ applications using shared libraries built
1951	against the previous version of libc++ to crash.  The incompatibility
1952	has now been fixed, but any C++ applications or shared libraries built
1953	between r261283 and r261801 should be recompiled.
1954
195520140204:
1956	OpenSSH will now ignore errors caused by kernel lacking of Capsicum
1957	capability mode support.  Please note that enabling the feature in
1958	kernel is still highly recommended.
1959
196020140131:
1961	OpenSSH is now built with sandbox support, and will use sandbox as
1962	the default privilege separation method.  This requires Capsicum
1963	capability mode support in kernel.
1964
196520140128:
1966	The libelf and libdwarf libraries have been updated to newer
1967	versions from upstream. Shared library version numbers for
1968	these two libraries were bumped. Any ports or binaries
1969	requiring these two libraries should be recompiled.
1970	__FreeBSD_version is bumped to 1100006.
1971
197220140110:
1973	If a Makefile in a tests/ directory was auto-generating a Kyuafile
1974	instead of providing an explicit one, this would prevent such
1975	Makefile from providing its own Kyuafile in the future during
1976	NO_CLEAN builds.  This has been fixed in the Makefiles but manual
1977	intervention is needed to clean an objdir if you use NO_CLEAN:
1978	  # find /usr/obj -name Kyuafile | xargs rm -f
1979
198020131213:
1981	The behavior of gss_pseudo_random() for the krb5 mechanism
1982	has changed, for applications requesting a longer random string
1983	than produced by the underlying enctype's pseudo-random() function.
1984	In particular, the random string produced from a session key of
1985	enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
1986	be different at the 17th octet and later, after this change.
1987	The counter used in the PRF+ construction is now encoded as a
1988	big-endian integer in accordance with RFC 4402.
1989	__FreeBSD_version is bumped to 1100004.
1990
199120131108:
1992	The WITHOUT_ATF build knob has been removed and its functionality
1993	has been subsumed into the more generic WITHOUT_TESTS.  If you were
1994	using the former to disable the build of the ATF libraries, you
1995	should change your settings to use the latter.
1996
199720131025:
1998	The default version of mtree is nmtree which is obtained from
1999	NetBSD.  The output is generally the same, but may vary
2000	slightly.  If you found you need identical output adding
2001	"-F freebsd9" to the command line should do the trick.  For the
2002	time being, the old mtree is available as fmtree.
2003
200420131014:
2005	libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
2006	This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
2007	1.1.4_8 and verify bsdyml not linked in, before running "make
2008	delete-old-libs":
2009	  # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
2010	  or
2011	  # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
2012
201320131010:
2014	The stable/10 branch has been created in subversion from head
2015	revision r256279.
2016
2017COMMON ITEMS:
2018
2019	General Notes
2020	-------------
2021	Sometimes, obscure build problems are the result of environment
2022	poisoning.  This can happen because the make utility reads its
2023	environment when searching for values for global variables.  To run
2024	your build attempts in an "environmental clean room", prefix all make
2025	commands with 'env -i '.  See the env(1) manual page for more details.
2026	Occasionally a build failure will occur with "make -j" due to a race
2027	condition.  If this happens try building again without -j, and please
2028	report a bug if it happens consistently.
2029
2030	When upgrading from one major version to another it is generally best to
2031	upgrade to the latest code in the currently installed branch first, then
2032	do an upgrade to the new branch. This is the best-tested upgrade path,
2033	and has the highest probability of being successful.  Please try this
2034	approach if you encounter problems with a major version upgrade.  Since
2035	the stable 4.x branch point, one has generally been able to upgrade from
2036	anywhere in the most recent stable branch to head / current (or even the
2037	last couple of stable branches). See the top of this file when there's
2038	an exception.
2039
2040	The update process will emit an error on an attempt to perform a build
2041	or install from a FreeBSD version below the earliest supported version.
2042	When updating from an older version the update should be performed one
2043	major release at a time, including running `make delete-old` at each
2044	step.
2045
2046	When upgrading a live system, having a root shell around before
2047	installing anything can help undo problems. Not having a root shell
2048	around can lead to problems if pam has changed too much from your
2049	starting point to allow continued authentication after the upgrade.
2050
2051	This file should be read as a log of events. When a later event changes
2052	information of a prior event, the prior event should not be deleted.
2053	Instead, a pointer to the entry with the new information should be
2054	placed in the old entry. Readers of this file should also sanity check
2055	older entries before relying on them blindly. Authors of new entries
2056	should write them with this in mind.
2057
2058	ZFS notes
2059	---------
2060	When upgrading the boot ZFS pool to a new version, always follow
2061	these two steps:
2062
2063	1.) recompile and reinstall the ZFS boot loader and boot block
2064	(this is part of "make buildworld" and "make installworld")
2065
2066	2.) update the ZFS boot block on your boot drive
2067
2068	The following example updates the ZFS boot block on the first
2069	partition (freebsd-boot) of a GPT partitioned drive ada0:
2070	"gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
2071
2072	Non-boot pools do not need these updates.
2073
2074	To build a kernel
2075	-----------------
2076	If you are updating from a prior version of FreeBSD (even one just
2077	a few days old), you should follow this procedure.  It is the most
2078	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
2079
2080	make kernel-toolchain
2081	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
2082	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
2083
2084	To test a kernel once
2085	---------------------
2086	If you just want to boot a kernel once (because you are not sure
2087	if it works, or if you want to boot a known bad kernel to provide
2088	debugging information) run
2089	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
2090	nextboot -k testkernel
2091
2092	To rebuild everything and install it on the current system.
2093	-----------------------------------------------------------
2094	# Note: sometimes if you are running current you gotta do more than
2095	# is listed here if you are upgrading from a really old current.
2096
2097	<make sure you have good level 0 dumps>
2098	make buildworld
2099	make buildkernel KERNCONF=YOUR_KERNEL_HERE
2100	make installkernel KERNCONF=YOUR_KERNEL_HERE
2101							[1]
2102	<reboot in single user>				[3]
2103	mergemaster -Fp					[5]
2104	make installworld
2105	mergemaster -Fi					[4]
2106	make delete-old					[6]
2107	<reboot>
2108
2109	To cross-install current onto a separate partition
2110	--------------------------------------------------
2111	# In this approach we use a separate partition to hold
2112	# current's root, 'usr', and 'var' directories.   A partition
2113	# holding "/", "/usr" and "/var" should be about 2GB in
2114	# size.
2115
2116	<make sure you have good level 0 dumps>
2117	<boot into -stable>
2118	make buildworld
2119	make buildkernel KERNCONF=YOUR_KERNEL_HERE
2120	<maybe newfs current's root partition>
2121	<mount current's root partition on directory ${CURRENT_ROOT}>
2122	make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
2123	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
2124	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
2125	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
2126	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
2127	<reboot into current>
2128	<do a "native" rebuild/install as described in the previous section>
2129	<maybe install compatibility libraries from ports/misc/compat*>
2130	<reboot>
2131
2132
2133	To upgrade in-place from stable to current
2134	----------------------------------------------
2135	<make sure you have good level 0 dumps>
2136	make buildworld					[9]
2137	make buildkernel KERNCONF=YOUR_KERNEL_HERE	[8]
2138	make installkernel KERNCONF=YOUR_KERNEL_HERE
2139							[1]
2140	<reboot in single user>				[3]
2141	mergemaster -Fp					[5]
2142	make installworld
2143	mergemaster -Fi					[4]
2144	make delete-old					[6]
2145	<reboot>
2146
2147	Make sure that you've read the UPDATING file to understand the
2148	tweaks to various things you need.  At this point in the life
2149	cycle of current, things change often and you are on your own
2150	to cope.  The defaults can also change, so please read ALL of
2151	the UPDATING entries.
2152
2153	Also, if you are tracking -current, you must be subscribed to
2154	freebsd-current@freebsd.org.  Make sure that before you update
2155	your sources that you have read and understood all the recent
2156	messages there.  If in doubt, please track -stable which has
2157	much fewer pitfalls.
2158
2159	[1] If you have third party modules, such as vmware, you
2160	should disable them at this point so they don't crash your
2161	system on reboot.
2162
2163	[3] From the bootblocks, boot -s, and then do
2164		fsck -p
2165		mount -u /
2166		mount -a
2167		sh /etc/rc.d/zfs start	# mount zfs filesystem, if needed
2168		cd src			# full path to source
2169		adjkerntz -i		# if CMOS is wall time
2170	Also, when doing a major release upgrade, it is required that
2171	you boot into single user mode to do the installworld.
2172
2173	[4] Note: This step is non-optional.  Failure to do this step
2174	can result in a significant reduction in the functionality of the
2175	system.  Attempting to do it by hand is not recommended and those
2176	that pursue this avenue should read this file carefully, as well
2177	as the archives of freebsd-current and freebsd-hackers mailing lists
2178	for potential gotchas.  The -U option is also useful to consider.
2179	See mergemaster(8) for more information.
2180
2181	[5] Usually this step is a no-op.  However, from time to time
2182	you may need to do this if you get unknown user in the following
2183	step.  It never hurts to do it all the time.  You may need to
2184	install a new mergemaster (cd src/usr.sbin/mergemaster && make
2185	install) after the buildworld before this step if you last updated
2186	from current before 20130425 or from -stable before 20130430.
2187
2188	[6] This only deletes old files and directories. Old libraries
2189	can be deleted by "make delete-old-libs", but you have to make
2190	sure that no program is using those libraries anymore.
2191
2192	[8] The new kernel must be able to run existing binaries used by an
2193	installworld.  When upgrading across major versions, the new kernel's
2194	configuration must include the correct COMPAT_FREEBSD<n> option for
2195	existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries).  Failure
2196	to do so may leave you with a system that is hard to boot to recover. A
2197	GENERIC kernel will include suitable compatibility options to run
2198	binaries from older branches.  Note that the ability to run binaries
2199	from unsupported branches is not guaranteed.
2200
2201	Make sure that you merge any new devices from GENERIC since the
2202	last time you updated your kernel config file. Options also
2203	change over time, so you may need to adjust your custom kernels
2204	for these as well.
2205
2206	[9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the
2207	"?=" instead of the "=" assignment operator, so that buildworld can
2208	override the CPUTYPE if it needs to.
2209
2210	MAKEOBJDIRPREFIX must be defined in an environment variable, and
2211	not on the command line, or in /etc/make.conf.  buildworld will
2212	warn if it is improperly defined.
2213FORMAT:
2214
2215This file contains a list, in reverse chronological order, of major
2216breakages in tracking -current.  It is not guaranteed to be a complete
2217list of such breakages, and only contains entries since September 23, 2011.
2218If you need to see UPDATING entries from before that date, you will need
2219to fetch an UPDATING file from an older FreeBSD release.
2220
2221Copyright information:
2222
2223Copyright 1998-2009 M. Warner Losh <imp@FreeBSD.org>
2224
2225Redistribution, publication, translation and use, with or without
2226modification, in full or in part, in any form or format of this
2227document are permitted without further permission from the author.
2228
2229THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
2230IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2231WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2232DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
2233INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2234(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2235SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2236HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2237STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
2238IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2239POSSIBILITY OF SUCH DAMAGE.
2240
2241Contact Warner Losh if you have any questions about your use of
2242this document.
2243
2244$FreeBSD$
2245