]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - UPDATING
Move the funsetown(9) call from audit_pipe_close() to cdevpriv
[FreeBSD/FreeBSD.git] / UPDATING
1 Updating Information for FreeBSD current users.
2
3 This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4 See end of file for further details.  For commonly done items, please see the
5 COMMON ITEMS: section later in the file.  These instructions assume that you
6 basically know what you are doing.  If not, then please consult the FreeBSD
7 handbook:
8
9     http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
10
11 Items affecting the ports and packages system can be found in
12 /usr/ports/UPDATING.  Please read that file before running portupgrade.
13
14 NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping
15 from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
16 the tip of head, and then rebuild without this option. The bootstrap process
17 from older version of current across the gcc/clang cutover is a bit fragile.
18
19 NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
20         FreeBSD 11.x has many debugging features turned on, in both the kernel
21         and userland.  These features attempt to detect incorrect use of
22         system primitives, and encourage loud failure through extra sanity
23         checking and fail stop semantics.  They also substantially impact
24         system performance.  If you want to do performance measurement,
25         benchmarking, and optimization, you'll want to turn them off.  This
26         includes various WITNESS- related kernel options, INVARIANTS, malloc
27         debugging flags in userland, and various verbose features in the
28         kernel.  Many developers choose to disable these features on build
29         machines to maximize performance.  (To completely disable malloc
30         debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
31         disable the most expensive debugging functionality run
32         "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
33
34 20160113:
35         With the addition of ypldap(8), a new _ypldap user is now required
36         during installworld. "mergemaster -p" can be used to add the user
37         prior to installworld, as documented in the handbook.
38
39 20151216:
40         The tftp loader (pxeboot) now uses the option root-path directive. As a
41         consequence it no longer looks for a pxeboot.4th file on the tftp
42         server. Instead it uses the regular /boot infrastructure as with the
43         other loaders.
44
45 20151211:
46         The code to start recording plug and play data into the modules has
47         been committed. While the old tools will properly build a new kernel,
48         a number of warnings about "unknown metadata record 4" will be produced
49         for an older kldxref. To avoid such warnings, make sure to rebuild
50         the kernel toolchain (or world). Make sure that you have r292078 or
51         later when trying to build 292077 or later before rebuilding.
52
53 20151207:
54         Debug data files are now built by default with 'make buildworld' and
55         installed with 'make installworld'. This facilitates debugging but
56         requires more disk space both during the build and for the installed
57         world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
58         in src.conf(5).
59
60 20151130:
61         r291527 changed the internal interface between the nfsd.ko and
62         nfscommon.ko modules. As such, they must both be upgraded to-gether.
63         __FreeBSD_version has been bumped because of this.
64
65 20151108:
66         Add support for unicode collation strings leads to a change of
67         order of files listed by ls(1) for example. To get back to the old
68         behaviour, set LC_COLLATE environment variable to "C".
69
70         Databases administrators will need to reindex their databases given
71         collation results will be different.
72
73         Due to a bug in install(1) it is recommended to remove the ancient
74         locales before running make installworld.
75
76         rm -rf /usr/share/locale/*
77
78 20151030:
79         The OpenSSL has been upgraded to 1.0.2d.  Any binaries requiring
80         libcrypto.so.7 or libssl.so.7 must be recompiled.
81
82 20151020:
83         Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
84         Kernel modules isp_2400_multi and isp_2500_multi were removed and
85         should be replaced with isp_2400 and isp_2500 modules respectively.
86
87 20151017:
88         The build previously allowed using 'make -n' to not recurse into
89         sub-directories while showing what commands would be executed, and
90         'make -n -n' to recursively show commands.  Now 'make -n' will recurse
91         and 'make -N' will not.
92
93 20151012:
94         If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
95         and etcupdate will now use this file. A custom sendmail.cf is now
96         updated via this mechanism rather than via installworld.  If you had
97         excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
98         want to remove the exclusion or change it to "always install".
99         /etc/mail/sendmail.cf is now managed the same way regardless of
100         whether SENDMAIL_MC/SENDMAIL_CF is used.  If you are not using
101         SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
102
103 20151011:
104         Compatibility shims for legacy ATA device names have been removed.
105         It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
106         and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
107         environment variables, /dev/ad* and /dev/ar* symbolic links.
108
109 20151006:
110         Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
111         Please see the 20141231 entry below for information about prerequisites
112         and upgrading, if you are not already using clang 3.5.0 or higher.
113
114 20150924:
115         Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
116         and renamed from .symbols to .debug. This reduces the size requirements
117         on the boot partition or file system and provides consistency with
118         userland debug files.
119
120         When using the supported kernel installation method the
121         /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
122         as is done with /boot/kernel.
123
124         Developers wishing to maintain the historical behavior of installing
125         debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
126
127 20150827:
128         The wireless drivers had undergone changes that remove the 'parent
129         interface' from the ifconfig -l output. The rc.d network scripts
130         used to check presence of a parent interface in the list, so old
131         scripts would fail to start wireless networking. Thus, etcupdate(3)
132         or mergemaster(8) run is required after kernel update, to update your
133         rc.d scripts in /etc.
134
135 20150827:
136         pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
137         These configurations are now automatically interpreted as
138         'scrub fragment reassemble'.
139
140 20150817:
141         Kernel-loadable modules for the random(4) device are back. To use
142         them, the kernel must have
143
144         device  random
145         options RANDOM_LOADABLE
146
147         kldload(8) can then be used to load random_fortuna.ko
148         or random_yarrow.ko. Please note that due to the indirect
149         function calls that the loadable modules need to provide,
150         the build-in variants will be slightly more efficient.
151
152         The random(4) kernel option RANDOM_DUMMY has been retired due to
153         unpopularity. It was not all that useful anyway.
154
155 20150813:
156         The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
157         Control over building the ELF Tool Chain tools is now provided by
158         the WITHOUT_TOOLCHAIN knob.
159
160 20150810:
161         The polarity of Pulse Per Second (PPS) capture events with the
162         uart(4) driver has been corrected.  Prior to this change the PPS
163         "assert" event corresponded to the trailing edge of a positive PPS
164         pulse and the "clear" event was the leading edge of the next pulse.
165
166         As the width of a PPS pulse in a typical GPS receiver is on the
167         order of 1 millisecond, most users will not notice any significant
168         difference with this change.
169
170         Anyone who has compensated for the historical polarity reversal by
171         configuring a negative offset equal to the pulse width will need to
172         remove that workaround.
173
174 20150809:
175         The default group assigned to /dev/dri entries has been changed
176         from 'wheel' to 'video' with the id of '44'. If you want to have
177         access to the dri devices please add yourself to the video group
178         with:
179
180         # pw groupmod video -m $USER
181
182 20150806:
183         The menu.rc and loader.rc files will now be replaced during 
184         upgrades. Please migrate local changes to menu.rc.local and
185         loader.rc.local instead.
186
187 20150805:
188         GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
189         strings and strip have been removed. The src.conf(5) knob
190         WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
191
192 20150728:
193         As ZFS requires more kernel stack pages than is the default on some
194         architectures e.g. i386, it now warns if KSTACK_PAGES is less than
195         ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
196
197         Please consider using 'options KSTACK_PAGES=X' where X is greater
198         than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
199
200 20150706:
201         sendmail has been updated to 8.15.2.  Starting with FreeBSD 11.0
202         and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
203         default, i.e., they will not contain "::".  For example, instead
204         of ::1, it will be 0:0:0:0:0:0:0:1.  This permits a zero subnet
205         to have a more specific match, such as different map entries for
206         IPv6:0:0 vs IPv6:0.  This change requires that configuration
207         data (including maps, files, classes, custom ruleset, etc.) must
208         use the same format, so make certain such configuration data is
209         upgrading.  As a very simple check search for patterns like
210         'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'.  To return to the old
211         behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
212         the cf option UseCompressedIPv6Addresses.
213
214 20150630:
215         The default kernel entropy-processing algorithm is now
216         Fortuna, replacing Yarrow.
217
218         Assuming you have 'device random' in your kernel config
219         file, the configurations allow a kernel option to override
220         this default. You may choose *ONE* of:
221
222         options RANDOM_YARROW   # Legacy /dev/random algorithm.
223         options RANDOM_DUMMY    # Blocking-only driver.
224
225         If you have neither, you get Fortuna.  For most people,
226         read no further, Fortuna will give a /dev/random that works
227         like it always used to, and the difference will be irrelevant.
228
229         If you remove 'device random', you get *NO* kernel-processed
230         entropy at all. This may be acceptable to folks building
231         embedded systems, but has complications. Carry on reading,
232         and it is assumed you know what you need.
233
234         *PLEASE* read random(4) and random(9) if you are in the
235         habit of tweaking kernel configs, and/or if you are a member
236         of the embedded community, wanting specific and not-usual
237         behaviour from your security subsystems.
238
239         NOTE!! If you use RANDOM_DUMMY and/or have no 'device
240         random', you will NOT have a functioning /dev/random, and
241         many cryptographic features will not work, including SSH.
242         You may also find strange behaviour from the random(3) set
243         of library functions, in particular sranddev(3), srandomdev(3)
244         and arc4random(3). The reason for this is that the KERN_ARND
245         sysctl only returns entropy if it thinks it has some to
246         share, and with RANDOM_DUMMY or no 'device random' this
247         will never happen.
248
249 20150623:
250         An additional fix for the issue described in the 20150614 sendmail
251         entry below has been been committed in revision 284717.
252
253 20150616:
254         FreeBSD's old make (fmake) has been removed from the system. It is
255         available as the devel/fmake port or via pkg install fmake.
256
257 20150615:
258         The fix for the issue described in the 20150614 sendmail entry
259         below has been been committed in revision 284436.  The work
260         around described in that entry is no longer needed unless the
261         default setting is overridden by a confDH_PARAMETERS configuration
262         setting of '5' or pointing to a 512 bit DH parameter file.
263
264 20150614:
265         ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
266         atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
267         and devel/kyua to version 0.20+ and adjust any calling code to work
268         with Kyuafile and kyua.
269
270 20150614:
271         The import of openssl to address the FreeBSD-SA-15:10.openssl
272         security advisory includes a change which rejects handshakes
273         with DH parameters below 768 bits.  sendmail releases prior
274         to 8.15.2 (not yet released), defaulted to a 512 bit
275         DH parameter setting for client connections.  To work around
276         this interoperability, sendmail can be configured to use a
277         2048 bit DH parameter by:
278
279         1. Edit /etc/mail/`hostname`.mc
280         2. If a setting for confDH_PARAMETERS does not exist or
281            exists and is set to a string beginning with '5',
282            replace it with '2'.
283         3. If a setting for confDH_PARAMETERS exists and is set to
284            a file path, create a new file with:
285                 openssl dhparam -out /path/to/file 2048
286         4. Rebuild the .cf file:
287                 cd /etc/mail/; make; make install
288         5. Restart sendmail:
289                 cd /etc/mail/; make restart
290
291         A sendmail patch is coming, at which time this file will be
292         updated.
293
294 20150604:
295         Generation of legacy formatted entries have been disabled by default
296         in pwd_mkdb(8), as all base system consumers of the legacy formatted
297         entries were converted to use the new format by default when the new,
298         machine independent format have been added and supported since FreeBSD
299         5.x.
300
301         Please see the pwd_mkdb(8) manual page for further details.
302
303 20150525:
304         Clang and llvm have been upgraded to 3.6.1 release.  Please see the
305         20141231 entry below for information about prerequisites and upgrading,
306         if you are not already using 3.5.0 or higher.
307
308 20150521:
309         TI platform code switched to using vendor DTS files and this update
310         may break existing systems running on Beaglebone, Beaglebone Black,
311         and Pandaboard:
312
313         - dtb files should be regenerated/reinstalled. Filenames are the
314           same but content is different now
315         - GPIO addressing was changed, now each GPIO bank (32 pins per bank)
316           has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
317           addressing scheme is now pin 25 on /dev/gpioc3.
318         - Pandaboard: /etc/ttys should be updated, serial console device is
319           now /dev/ttyu2, not /dev/ttyu0
320
321 20150501:
322         soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
323         If you need the GNU extension from groff soelim(1), install groff
324         from package: pkg install groff, or via ports: textproc/groff.
325
326 20150423:
327         chmod, chflags, chown and chgrp now affect symlinks in -R mode as
328         defined in symlink(7); previously symlinks were silently ignored.
329
330 20150415:
331         The const qualifier has been removed from iconv(3) to comply with
332         POSIX.  The ports tree is aware of this from r384038 onwards.
333
334 20150416:
335         Libraries specified by LIBADD in Makefiles must have a corresponding
336         DPADD_<lib> variable to ensure correct dependencies.  This is now
337         enforced in src.libnames.mk.
338
339 20150324:
340         From legacy ata(4) driver was removed support for SATA controllers
341         supported by more functional drivers ahci(4), siis(4) and mvs(4).
342         Kernel modules ataahci and ataadaptec were removed completely,
343         replaced by ahci and mvs modules respectively.
344
345 20150315:
346         Clang, llvm and lldb have been upgraded to 3.6.0 release.  Please see
347         the 20141231 entry below for information about prerequisites and
348         upgrading, if you are not already using 3.5.0 or higher.
349
350 20150307:
351         The 32-bit PowerPC kernel has been changed to a position-independent
352         executable. This can only be booted with a version of loader(8)
353         newer than January 31, 2015, so make sure to update both world and
354         kernel before rebooting.
355
356 20150217:
357         If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
358         but before r278950, the RNG was not seeded properly.  Immediately
359         upgrade the kernel to r278950 or later and regenerate any keys (e.g.
360         ssh keys or openssl keys) that were generated w/ a kernel from that
361         range.  This does not affect programs that directly used /dev/random
362         or /dev/urandom.  All userland uses of arc4random(3) are affected.
363
364 20150210:
365         The autofs(4) ABI was changed in order to restore binary compatibility
366         with 10.1-RELEASE.  The automountd(8) daemon needs to be rebuilt to work
367         with the new kernel.
368
369 20150131:
370         The powerpc64 kernel has been changed to a position-independent
371         executable. This can only be booted with a new version of loader(8),
372         so make sure to update both world and kernel before rebooting.
373
374 20150118:
375         Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
376         only release, no new features have been added.  Please see the 20141231
377         entry below for information about prerequisites and upgrading, if you
378         are not already using 3.5.0.
379
380 20150107:
381         ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
382         taken from the ELF Tool Chain project rather than GNU binutils. They
383         should be drop-in replacements, with the addition of arm64 support.
384         The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
385         binutils tools, if necessary. See 20150805 for updated information.
386
387 20150105:
388         The default Unbound configuration now enables remote control
389         using a local socket.  Users who have already enabled the
390         local_unbound service should regenerate their configuration
391         by running "service local_unbound setup" as root.
392
393 20150102:
394         The GNU texinfo and GNU info pages have been removed.
395         To be able to view GNU info pages please install texinfo from ports.
396
397 20141231:
398         Clang, llvm and lldb have been upgraded to 3.5.0 release.
399
400         As of this release, a prerequisite for building clang, llvm and lldb is
401         a C++11 capable compiler and C++11 standard library.  This means that to
402         be able to successfully build the cross-tools stage of buildworld, with
403         clang as the bootstrap compiler, your system compiler or cross compiler
404         should either be clang 3.3 or later, or gcc 4.8 or later, and your
405         system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
406         later.
407
408         On any standard FreeBSD 10.x or 11.x installation, where clang and
409         libc++ are on by default (that is, on x86 or arm), this should work out
410         of the box.
411
412         On 9.x installations where clang is enabled by default, e.g. on x86 and
413         powerpc, libc++ will not be enabled by default, so libc++ should be
414         built (with clang) and installed first.  If both clang and libc++ are
415         missing, build clang first, then use it to build libc++.
416
417         On 8.x and earlier installations, upgrade to 9.x first, and then follow
418         the instructions for 9.x above.
419
420         Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
421         default, and do not build clang.
422
423         Many embedded systems are resource constrained, and will not be able to
424         build clang in a reasonable time, or in some cases at all.  In those
425         cases, cross building bootable systems on amd64 is a workaround.
426
427         This new version of clang introduces a number of new warnings, of which
428         the following are most likely to appear:
429
430         -Wabsolute-value
431
432         This warns in two cases, for both C and C++:
433         * When the code is trying to take the absolute value of an unsigned
434           quantity, which is effectively a no-op, and almost never what was
435           intended.  The code should be fixed, if at all possible.  If you are
436           sure that the unsigned quantity can be safely cast to signed, without
437           loss of information or undefined behavior, you can add an explicit
438           cast, or disable the warning.
439
440         * When the code is trying to take an absolute value, but the called
441           abs() variant is for the wrong type, which can lead to truncation.
442           If you want to disable the warning instead of fixing the code, please
443           make sure that truncation will not occur, or it might lead to unwanted
444           side-effects.
445
446         -Wtautological-undefined-compare and
447         -Wundefined-bool-conversion
448
449         These warn when C++ code is trying to compare 'this' against NULL, while
450         'this' should never be NULL in well-defined C++ code.  However, there is
451         some legacy (pre C++11) code out there, which actively abuses this
452         feature, which was less strictly defined in previous C++ versions.
453
454         Squid and openjdk do this, for example.  The warning can be turned off
455         for C++98 and earlier, but compiling the code in C++11 mode might result
456         in unexpected behavior; for example, the parts of the program that are
457         unreachable could be optimized away.
458
459 20141222:
460         The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
461         kernel sources have been removed. The .h files remain, since some
462         utilities include them. This will need to be fixed later.
463         If "mount -t oldnfs ..." is attempted, it will fail.
464         If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
465         the utilities will report errors.
466
467 20141121:
468         The handling of LOCAL_LIB_DIRS has been altered to skip addition of
469         directories to top level SUBDIR variable when their parent
470         directory is included in LOCAL_DIRS.  Users with build systems with
471         such hierarchies and without SUBDIR entries in the parent
472         directory Makefiles should add them or add the directories to
473         LOCAL_DIRS.
474
475 20141109:
476         faith(4) and faithd(8) have been removed from the base system. Faith
477         has been obsolete for a very long time.
478
479 20141104:
480         vt(4), the new console driver, is enabled by default. It brings
481         support for Unicode and double-width characters, as well as
482         support for UEFI and integration with the KMS kernel video
483         drivers.
484
485         You may need to update your console settings in /etc/rc.conf,
486         most probably the keymap. During boot, /etc/rc.d/syscons will
487         indicate what you need to do.
488
489         vt(4) still has issues and lacks some features compared to
490         syscons(4). See the wiki for up-to-date information:
491           https://wiki.freebsd.org/Newcons
492
493         If you want to keep using syscons(4), you can do so by adding
494         the following line to /boot/loader.conf:
495           kern.vty=sc
496
497 20141102:
498         pjdfstest has been integrated into kyua as an opt-in test suite.
499         Please see share/doc/pjdfstest/README for more details on how to
500         execute it.
501
502 20141009:
503         gperf has been removed from the base system for architectures
504         that use clang. Ports that require gperf will obtain it from the
505         devel/gperf port.
506
507 20140923:
508         pjdfstest has been moved from tools/regression/pjdfstest to
509         contrib/pjdfstest .
510
511 20140922:
512         At svn r271982, The default linux compat kernel ABI has been adjusted
513         to 2.6.18 in support of the linux-c6 compat ports infrastructure
514         update.  If you wish to continue using the linux-f10 compat ports,
515         add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
516         encouraged to update their linux-compat packages to linux-c6 during
517         their next update cycle.
518
519 20140729:
520         The ofwfb driver, used to provide a graphics console on PowerPC when
521         using vt(4), no longer allows mmap() of all physical memory. This
522         will prevent Xorg on PowerPC with some ATI graphics cards from
523         initializing properly unless x11-servers/xorg-server is updated to
524         1.12.4_8 or newer.
525
526 20140723:
527         The xdev targets have been converted to using TARGET and
528         TARGET_ARCH instead of XDEV and XDEV_ARCH.
529
530 20140719:
531         The default unbound configuration has been modified to address
532         issues with reverse lookups on networks that use private
533         address ranges.  If you use the local_unbound service, run
534         "service local_unbound setup" as root to regenerate your
535         configuration, then "service local_unbound reload" to load the
536         new configuration.
537
538 20140709:
539         The GNU texinfo and GNU info pages are not built and installed
540         anymore, WITH_INFO knob has been added to allow to built and install
541         them again.
542         UPDATE: see 20150102 entry on texinfo's removal
543
544 20140708:
545         The GNU readline library is now an INTERNALLIB - that is, it is
546         statically linked into consumers (GDB and variants) in the base
547         system, and the shared library is no longer installed.  The
548         devel/readline port is available for third party software that
549         requires readline.
550
551 20140702:
552         The Itanium architecture (ia64) has been removed from the list of
553         known architectures. This is the first step in the removal of the
554         architecture.
555
556 20140701:
557         Commit r268115 has added NFSv4.1 server support, merged from
558         projects/nfsv4.1-server.  Since this includes changes to the
559         internal interfaces between the NFS related modules, a full
560         build of the kernel and modules will be necessary.
561         __FreeBSD_version has been bumped.
562
563 20140629:
564         The WITHOUT_VT_SUPPORT kernel config knob has been renamed
565         WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
566         which differs from the behaviour controlled by this knob.)
567
568 20140619:
569         Maximal length of the serial number in CTL was increased from 16 to
570         64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
571         and ctld, need to be rebuilt to work with a new kernel.
572
573 20140606:
574         The libatf-c and libatf-c++ major versions were downgraded to 0 and
575         1 respectively to match the upstream numbers.  They were out of
576         sync because, when they were originally added to FreeBSD, the
577         upstream versions were not respected.  These libraries are private
578         and not yet built by default, so renumbering them should be a
579         non-issue.  However, unclean source trees will yield broken test
580         programs once the operator executes "make delete-old-libs" after a
581         "make installworld".
582
583         Additionally, the atf-sh binary was made private by moving it into
584         /usr/libexec/.  Already-built shell test programs will keep the
585         path to the old binary so they will break after "make delete-old"
586         is run.
587
588         If you are using WITH_TESTS=yes (not the default), wipe the object
589         tree and rebuild from scratch to prevent spurious test failures.
590         This is only needed once: the misnumbered libraries and misplaced
591         binaries have been added to OptionalObsoleteFiles.inc so they will
592         be removed during a clean upgrade.
593
594 20140512:
595         Clang and llvm have been upgraded to 3.4.1 release.
596
597 20140508:
598         We bogusly installed src.opts.mk in /usr/share/mk. This file should
599         be removed to avoid issues in the future (and has been added to
600         ObsoleteFiles.inc).
601
602 20140505:
603         /etc/src.conf now affects only builds of the FreeBSD src tree. In the
604         past, it affected all builds that used the bsd.*.mk files. The old
605         behavior was a bug, but people may have relied upon it. To get this
606         behavior back, you can .include /etc/src.conf from /etc/make.conf
607         (which is still global and isn't changed). This also changes the
608         behavior of incremental builds inside the tree of individual
609         directories. Set MAKESYSPATH to ".../share/mk" to do that.
610         Although this has survived make universe and some upgrade scenarios,
611         other upgrade scenarios may have broken. At least one form of
612         temporary breakage was fixed with MAKESYSPATH settings for buildworld
613         as well... In cases where MAKESYSPATH isn't working with this
614         setting, you'll need to set it to the full path to your tree.
615
616         One side effect of all this cleaning up is that bsd.compiler.mk
617         is no longer implicitly included by bsd.own.mk. If you wish to
618         use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
619         as well.
620
621 20140430:
622         The lindev device has been removed since /dev/full has been made a
623         standard device.  __FreeBSD_version has been bumped.
624
625 20140424:
626         The knob WITHOUT_VI was added to the base system, which controls
627         building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
628         in order to reorder files share/termcap and didn't build ex(1) as a
629         build tool, so building/installing with WITH_VI is highly advised for
630         build hosts for older releases.
631
632         This issue has been fixed in stable/9 and stable/10 in r277022 and
633         r276991, respectively.
634
635 20140418:
636         The YES_HESIOD knob has been removed. It has been obsolete for
637         a decade. Please move to using WITH_HESIOD instead or your builds
638         will silently lack HESIOD.
639
640 20140405:
641         The uart(4) driver has been changed with respect to its handling
642         of the low-level console. Previously the uart(4) driver prevented
643         any process from changing the baudrate or the CLOCAL and HUPCL
644         control flags. By removing the restrictions, operators can make
645         changes to the serial console port without having to reboot.
646         However, when getty(8) is started on the serial device that is
647         associated with the low-level console, a misconfigured terminal
648         line in /etc/ttys will now have a real impact.
649         Before upgrading the kernel, make sure that /etc/ttys has the
650         serial console device configured as 3wire without baudrate to
651         preserve the previous behaviour. E.g:
652             ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
653
654 20140306:
655         Support for libwrap (TCP wrappers) in rpcbind was disabled by default
656         to improve performance.  To re-enable it, if needed, run rpcbind
657         with command line option -W.
658
659 20140226:
660         Switched back to the GPL dtc compiler due to updates in the upstream
661         dts files not being supported by the BSDL dtc compiler. You will need
662         to rebuild your kernel toolchain to pick up the new compiler. Core dumps
663         may result while building dtb files during a kernel build if you fail
664         to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
665
666 20140216:
667         Clang and llvm have been upgraded to 3.4 release.
668
669 20140216:
670         The nve(4) driver has been removed.  Please use the nfe(4) driver
671         for NVIDIA nForce MCP Ethernet adapters instead.
672
673 20140212:
674         An ABI incompatibility crept into the libc++ 3.4 import in r261283.
675         This could cause certain C++ applications using shared libraries built
676         against the previous version of libc++ to crash.  The incompatibility
677         has now been fixed, but any C++ applications or shared libraries built
678         between r261283 and r261801 should be recompiled.
679
680 20140204:
681         OpenSSH will now ignore errors caused by kernel lacking of Capsicum
682         capability mode support.  Please note that enabling the feature in
683         kernel is still highly recommended.
684
685 20140131:
686         OpenSSH is now built with sandbox support, and will use sandbox as
687         the default privilege separation method.  This requires Capsicum
688         capability mode support in kernel.
689
690 20140128:
691         The libelf and libdwarf libraries have been updated to newer
692         versions from upstream. Shared library version numbers for
693         these two libraries were bumped. Any ports or binaries
694         requiring these two libraries should be recompiled.
695         __FreeBSD_version is bumped to 1100006.
696
697 20140110:
698         If a Makefile in a tests/ directory was auto-generating a Kyuafile
699         instead of providing an explicit one, this would prevent such
700         Makefile from providing its own Kyuafile in the future during
701         NO_CLEAN builds.  This has been fixed in the Makefiles but manual
702         intervention is needed to clean an objdir if you use NO_CLEAN:
703           # find /usr/obj -name Kyuafile | xargs rm -f
704
705 20131213:
706         The behavior of gss_pseudo_random() for the krb5 mechanism
707         has changed, for applications requesting a longer random string
708         than produced by the underlying enctype's pseudo-random() function.
709         In particular, the random string produced from a session key of
710         enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
711         be different at the 17th octet and later, after this change.
712         The counter used in the PRF+ construction is now encoded as a
713         big-endian integer in accordance with RFC 4402.
714         __FreeBSD_version is bumped to 1100004.
715
716 20131108:
717         The WITHOUT_ATF build knob has been removed and its functionality
718         has been subsumed into the more generic WITHOUT_TESTS.  If you were
719         using the former to disable the build of the ATF libraries, you
720         should change your settings to use the latter.
721
722 20131025:
723         The default version of mtree is nmtree which is obtained from
724         NetBSD.  The output is generally the same, but may vary
725         slightly.  If you found you need identical output adding
726         "-F freebsd9" to the command line should do the trick.  For the
727         time being, the old mtree is available as fmtree.
728
729 20131014:
730         libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
731         This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
732         1.1.4_8 and verify bsdyml not linked in, before running "make
733         delete-old-libs":
734           # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
735           or
736           # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
737
738 20131010:
739         The stable/10 branch has been created in subversion from head
740         revision r256279.
741
742 20131010:
743         The rc.d/jail script has been updated to support jail(8)
744         configuration file.  The "jail_<jname>_*" rc.conf(5) variables
745         for per-jail configuration are automatically converted to
746         /var/run/jail.<jname>.conf before the jail(8) utility is invoked.
747         This is transparently backward compatible.  See below about some
748         incompatibilities and rc.conf(5) manual page for more details.
749
750         These variables are now deprecated in favor of jail(8) configuration
751         file.  One can use "rc.d/jail config <jname>" command to generate
752         a jail(8) configuration file in /var/run/jail.<jname>.conf without
753         running the jail(8) utility.   The default pathname of the
754         configuration file is /etc/jail.conf and can be specified by
755         using $jail_conf or $jail_<jname>_conf variables.
756
757         Please note that jail_devfs_ruleset accepts an integer at
758         this moment.  Please consider to rewrite the ruleset name
759         with an integer.
760
761 20130930:
762         BIND has been removed from the base system.  If all you need
763         is a local resolver, simply enable and start the local_unbound
764         service instead.  Otherwise, several versions of BIND are
765         available in the ports tree.   The dns/bind99 port is one example.
766
767         With this change, nslookup(1) and dig(1) are no longer in the base
768         system.  Users should instead use host(1) and drill(1) which are
769         in the base system.  Alternatively, nslookup and dig can
770         be obtained by installing the dns/bind-tools port.
771
772 20130916:
773         With the addition of unbound(8), a new unbound user is now
774         required during installworld.  "mergemaster -p" can be used to
775         add the user prior to installworld, as documented in the handbook.
776
777 20130911:
778         OpenSSH is now built with DNSSEC support, and will by default
779         silently trust signed SSHFP records.  This can be controlled with
780         the VerifyHostKeyDNS client configuration setting.  DNSSEC support
781         can be disabled entirely with the WITHOUT_LDNS option in src.conf.
782
783 20130906:
784         The GNU Compiler Collection and C++ standard library (libstdc++)
785         are no longer built by default on platforms where clang is the system
786         compiler.  You can enable them with the WITH_GCC and WITH_GNUCXX
787         options in src.conf.
788
789 20130905:
790         The PROCDESC kernel option is now part of the GENERIC kernel
791         configuration and is required for the rwhod(8) to work.
792         If you are using custom kernel configuration, you should include
793         'options PROCDESC'.
794
795 20130905:
796         The API and ABI related to the Capsicum framework was modified
797         in backward incompatible way. The userland libraries and programs
798         have to be recompiled to work with the new kernel. This includes the
799         following libraries and programs, but the whole buildworld is
800         advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
801         kdump, procstat, rwho, rwhod, uniq.
802
803 20130903:
804         AES-NI intrinsic support has been added to gcc.  The AES-NI module
805         has been updated to use this support.  A new gcc is required to build
806         the aesni module on both i386 and amd64.
807
808 20130821:
809         The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
810         Thus "device padlock_rng" and "device rdrand_rng" should be
811         used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
812
813 20130813:
814         WITH_ICONV has been split into two feature sets.  WITH_ICONV now
815         enables just the iconv* functionality and is now on by default.
816         WITH_LIBICONV_COMPAT enables the libiconv api and link time
817         compatability.  Set WITHOUT_ICONV to build the old way.
818         If you have been using WITH_ICONV before, you will very likely
819         need to turn on WITH_LIBICONV_COMPAT.
820
821 20130806:
822         INVARIANTS option now enables DEBUG for code with OpenSolaris and
823         Illumos origin, including ZFS.  If you have INVARIANTS in your
824         kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
825         explicitly.
826         DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
827         locks if WITNESS option was set.  Because that generated a lot of
828         witness(9) reports and all of them were believed to be false
829         positives, this is no longer done.  New option OPENSOLARIS_WITNESS
830         can be used to achieve the previous behavior.
831
832 20130806:
833         Timer values in IPv6 data structures now use time_uptime instead
834         of time_second.  Although this is not a user-visible functional
835         change, userland utilities which directly use them---ndp(8),
836         rtadvd(8), and rtsold(8) in the base system---need to be updated
837         to r253970 or later.
838
839 20130802:
840         find -delete can now delete the pathnames given as arguments,
841         instead of only files found below them or if the pathname did
842         not contain any slashes. Formerly, the following error message
843         would result:
844
845         find: -delete: <path>: relative path potentially not safe
846
847         Deleting the pathnames given as arguments can be prevented
848         without error messages using -mindepth 1 or by changing
849         directory and passing "." as argument to find. This works in the
850         old as well as the new version of find.
851
852 20130726:
853         Behavior of devfs rules path matching has been changed.
854         Pattern is now always matched against fully qualified devfs
855         path and slash characters must be explicitly matched by
856         slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
857         subdirectories must be reviewed.
858
859 20130716:
860         The default ARM ABI has changed to the ARM EABI. The old ABI is
861         incompatible with the ARM EABI and all programs and modules will
862         need to be rebuilt to work with a new kernel.
863
864         To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
865
866         NOTE: Support for the old ABI will be removed in the future and
867         users are advised to upgrade.
868
869 20130709:
870         pkg_install has been disconnected from the build if you really need it
871         you should add WITH_PKGTOOLS in your src.conf(5).
872
873 20130709:
874         Most of network statistics structures were changed to be able
875         keep 64-bits counters. Thus all tools, that work with networking
876         statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
877
878 20130618:
879         Fix a bug that allowed a tracing process (e.g. gdb) to write
880         to a memory-mapped file in the traced process's address space
881         even if neither the traced process nor the tracing process had
882         write access to that file.
883
884 20130615:
885         CVS has been removed from the base system.  An exact copy
886         of the code is available from the devel/cvs port.
887
888 20130613:
889         Some people report the following error after the switch to bmake:
890
891                 make: illegal option -- J
892                 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
893                         ...
894                 *** [buildworld] Error code 2
895
896         this likely due to an old instance of make in
897         ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
898         which src/Makefile will use that blindly, if it exists, so if
899         you see the above error:
900
901                 rm -rf `make -V MAKEPATH`
902
903         should resolve it.
904
905 20130516:
906         Use bmake by default.
907         Whereas before one could choose to build with bmake via
908         -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
909         make. The goal is to remove these knobs for 10-RELEASE.
910
911         It is worth noting that bmake (like gmake) treats the command
912         line as the unit of failure, rather than statements within the
913         command line.  Thus '(cd some/where && dosomething)' is safer
914         than 'cd some/where; dosomething'. The '()' allows consistent
915         behavior in parallel build.
916
917 20130429:
918         Fix a bug that allows NFS clients to issue READDIR on files.
919
920 20130426:
921         The WITHOUT_IDEA option has been removed because
922         the IDEA patent expired.
923
924 20130426:
925         The sysctl which controls TRIM support under ZFS has been renamed
926         from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
927         enabled by default.
928
929 20130425:
930         The mergemaster command now uses the default MAKEOBJDIRPREFIX
931         rather than creating it's own in the temporary directory in
932         order allow access to bootstrapped versions of tools such as
933         install and mtree.  When upgrading from version of FreeBSD where
934         the install command does not support -l, you will need to
935         install a new mergemaster command if mergemaster -p is required.
936         This can be accomplished with the command (cd src/usr.sbin/mergemaster
937         && make install).
938
939 20130404:
940         Legacy ATA stack, disabled and replaced by new CAM-based one since
941         FreeBSD 9.0, completely removed from the sources.  Kernel modules
942         atadisk and atapi*, user-level tools atacontrol and burncd are
943         removed.  Kernel option `options ATA_CAM` is now permanently enabled
944         and removed.
945
946 20130319:
947         SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
948         and socketpair(2). Software, in particular Kerberos, may
949         automatically detect and use these during building. The resulting
950         binaries will not work on older kernels.
951
952 20130308:
953         CTL_DISABLE has also been added to the sparc64 GENERIC (for further
954         information, see the respective 20130304 entry).
955
956 20130304:
957         Recent commits to callout(9) changed the size of struct callout,
958         so the KBI is probably heavily disturbed. Also, some functions
959         in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
960         by macros. Every kernel module using it won't load, so rebuild
961         is requested.
962
963         The ctl device has been re-enabled in GENERIC for i386 and amd64,
964         but does not initialize by default (because of the new CTL_DISABLE
965         option) to save memory.  To re-enable it, remove the CTL_DISABLE
966         option from the kernel config file or set kern.cam.ctl.disable=0
967         in /boot/loader.conf.
968
969 20130301:
970         The ctl device has been disabled in GENERIC for i386 and amd64.
971         This was done due to the extra memory being allocated at system
972         initialisation time by the ctl driver which was only used if
973         a CAM target device was created.  This makes a FreeBSD system
974         unusable on 128MB or less of RAM.
975
976 20130208:
977         A new compression method (lz4) has been merged to -HEAD.  Please
978         refer to zpool-features(7) for more information.
979
980         Please refer to the "ZFS notes" section of this file for information
981         on upgrading boot ZFS pools.
982
983 20130129:
984         A BSD-licensed patch(1) variant has been added and is installed
985         as bsdpatch, being the GNU version the default patch.
986         To inverse the logic and use the BSD-licensed one as default,
987         while having the GNU version installed as gnupatch, rebuild
988         and install world with the WITH_BSD_PATCH knob set.
989
990 20130121:
991         Due to the use of the new -l option to install(1) during build
992         and install, you must take care not to directly set the INSTALL
993         make variable in your /etc/make.conf, /etc/src.conf, or on the
994         command line.  If you wish to use the -C flag for all installs
995         you may be able to add INSTALL+=-C to /etc/make.conf or
996         /etc/src.conf.
997
998 20130118:
999         The install(1) option -M has changed meaning and now takes an
1000         argument that is a file or path to append logs to.  In the
1001         unlikely event that -M was the last option on the command line
1002         and the command line contained at least two files and a target
1003         directory the first file will have logs appended to it.  The -M
1004         option served little practical purpose in the last decade so its
1005         use is expected to be extremely rare.
1006
1007 20121223:
1008         After switching to Clang as the default compiler some users of ZFS
1009         on i386 systems started to experience stack overflow kernel panics.
1010         Please consider using 'options KSTACK_PAGES=4' in such configurations.
1011
1012 20121222:
1013         GEOM_LABEL now mangles label names read from file system metadata.
1014         Mangling affect labels containing spaces, non-printable characters,
1015         '%' or '"'. Device names in /etc/fstab and other places may need to
1016         be updated.
1017
1018 20121217:
1019         By default, only the 10 most recent kernel dumps will be saved.  To
1020         restore the previous behaviour (no limit on the number of kernel dumps
1021         stored in the dump directory) add the following line to /etc/rc.conf:
1022
1023                 savecore_flags=""
1024
1025 20121201:
1026         With the addition of auditdistd(8), a new auditdistd user is now
1027         required during installworld.  "mergemaster -p" can be used to
1028         add the user prior to installworld, as documented in the handbook.
1029
1030 20121117:
1031         The sin6_scope_id member variable in struct sockaddr_in6 is now
1032         filled by the kernel before passing the structure to the userland via
1033         sysctl or routing socket.  This means the KAME-specific embedded scope
1034         id in sin6_addr.s6_addr[2] is always cleared in userland application.
1035         This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
1036         __FreeBSD_version is bumped to 1000025.
1037
1038 20121105:
1039         On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
1040         This means that the world and kernel will be compiled with clang
1041         and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
1042         and /usr/bin/cpp.  To disable this behavior and revert to building
1043         with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
1044         of current may need to bootstrap WITHOUT_CLANG first if the clang
1045         build fails (its compatibility window doesn't extend to the 9 stable
1046         branch point).
1047
1048 20121102:
1049         The IPFIREWALL_FORWARD kernel option has been removed. Its
1050         functionality now turned on by default.
1051
1052 20121023:
1053         The ZERO_COPY_SOCKET kernel option has been removed and
1054         split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
1055         NB: SOCKET_SEND_COW uses the VM page based copy-on-write
1056         mechanism which is not safe and may result in kernel crashes.
1057         NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
1058         driver supports disposeable external page sized mbuf storage.
1059         Proper replacements for both zero-copy mechanisms are under
1060         consideration and will eventually lead to complete removal
1061         of the two kernel options.
1062
1063 20121023:
1064         The IPv4 network stack has been converted to network byte
1065         order. The following modules need to be recompiled together
1066         with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
1067         pf(4), ipfw(4), ng_ipfw(4), stf(4).
1068
1069 20121022:
1070         Support for non-MPSAFE filesystems was removed from VFS. The
1071         VFS_VERSION was bumped, all filesystem modules shall be
1072         recompiled.
1073
1074 20121018:
1075         All the non-MPSAFE filesystems have been disconnected from
1076         the build. The full list includes: codafs, hpfs, ntfs, nwfs,
1077         portalfs, smbfs, xfs.
1078
1079 20121016:
1080         The interface cloning API and ABI has changed. The following
1081         modules need to be recompiled together with kernel:
1082         ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
1083         vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
1084         faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
1085
1086 20121015:
1087         The sdhci driver was split in two parts: sdhci (generic SD Host
1088         Controller logic) and sdhci_pci (actual hardware driver).
1089         No kernel config modifications are required, but if you
1090         load sdhc as a module you must switch to sdhci_pci instead.
1091
1092 20121014:
1093         Import the FUSE kernel and userland support into base system.
1094
1095 20121013:
1096         The GNU sort(1) program has been removed since the BSD-licensed
1097         sort(1) has been the default for quite some time and no serious
1098         problems have been reported.  The corresponding WITH_GNU_SORT
1099         knob has also gone.
1100
1101 20121006:
1102         The pfil(9) API/ABI for AF_INET family has been changed. Packet
1103         filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
1104         with new kernel.
1105
1106 20121001:
1107         The net80211(4) ABI has been changed to allow for improved driver
1108         PS-POLL and power-save support.  All wireless drivers need to be
1109         recompiled to work with the new kernel.
1110
1111 20120913:
1112         The random(4) support for the VIA hardware random number
1113         generator (`PADLOCK') is no longer enabled unconditionally.
1114         Add the padlock_rng device in the custom kernel config if
1115         needed.  The GENERIC kernels on i386 and amd64 do include the
1116         device, so the change only affects the custom kernel
1117         configurations.
1118
1119 20120908:
1120         The pf(4) packet filter ABI has been changed. pfctl(8) and
1121         snmp_pf module need to be recompiled to work with new kernel.
1122
1123 20120828:
1124         A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
1125         to -HEAD. Pools that have empty_bpobj in active state can not be
1126         imported read-write with ZFS implementations that do not support
1127         this feature. For more information read the zpool-features(5)
1128         manual page.
1129
1130 20120727:
1131         The sparc64 ZFS loader has been changed to no longer try to auto-
1132         detect ZFS providers based on diskN aliases but now requires these
1133         to be explicitly listed in the OFW boot-device environment variable.
1134
1135 20120712:
1136         The OpenSSL has been upgraded to 1.0.1c.  Any binaries requiring
1137         libcrypto.so.6 or libssl.so.6 must be recompiled.  Also, there are
1138         configuration changes.  Make sure to merge /etc/ssl/openssl.cnf.
1139
1140 20120712:
1141         The following sysctls and tunables have been renamed for consistency
1142         with other variables:
1143           kern.cam.da.da_send_ordered   -> kern.cam.da.send_ordered
1144           kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
1145
1146 20120628:
1147         The sort utility has been replaced with BSD sort.  For now, GNU sort
1148         is also available as "gnusort" or the default can be set back to
1149         GNU sort by setting WITH_GNU_SORT.  In this case, BSD sort will be
1150         installed as "bsdsort".
1151
1152 20120611:
1153         A new version of ZFS (pool version 5000) has been merged to -HEAD.
1154         Starting with this version the old system of ZFS pool versioning
1155         is superseded by "feature flags". This concept enables forward
1156         compatibility against certain future changes in functionality of ZFS
1157         pools. The first read-only compatible "feature flag" for ZFS pools
1158         is named "com.delphix:async_destroy". For more information
1159         read the new zpool-features(5) manual page.
1160         Please refer to the "ZFS notes" section of this file for information
1161         on upgrading boot ZFS pools.
1162
1163 20120417:
1164         The malloc(3) implementation embedded in libc now uses sources imported
1165         as contrib/jemalloc.  The most disruptive API change is to
1166         /etc/malloc.conf.  If your system has an old-style /etc/malloc.conf,
1167         delete it prior to installworld, and optionally re-create it using the
1168         new format after rebooting.  See malloc.conf(5) for details
1169         (specifically the TUNING section and the "opt.*" entries in the MALLCTL
1170         NAMESPACE section).
1171
1172 20120328:
1173         Big-endian MIPS TARGET_ARCH values no longer end in "eb".  mips64eb
1174         is now spelled mips64.  mipsn32eb is now spelled mipsn32.  mipseb is
1175         now spelled mips.  This is to aid compatibility with third-party
1176         software that expects this naming scheme in uname(3).  Little-endian
1177         settings are unchanged. If you are updating a big-endian mips64 machine
1178         from before this change, you may need to set MACHINE_ARCH=mips64 in
1179         your environment before the new build system will recognize your machine.
1180
1181 20120306:
1182         Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
1183         platforms.
1184
1185 20120229:
1186         Now unix domain sockets behave "as expected" on nullfs(5). Previously
1187         nullfs(5) did not pass through all behaviours to the underlying layer,
1188         as a result if we bound to a socket on the lower layer we could connect
1189         only to the lower path; if we bound to the upper layer we could connect
1190         only to the upper path. The new behavior is one can connect to both the
1191         lower and the upper paths regardless what layer path one binds to.
1192
1193 20120211:
1194         The getifaddrs upgrade path broken with 20111215 has been restored.
1195         If you have upgraded in between 20111215 and 20120209 you need to
1196         recompile libc again with your kernel.  You still need to recompile
1197         world to be able to configure CARP but this restriction already
1198         comes from 20111215.
1199
1200 20120114:
1201         The set_rcvar() function has been removed from /etc/rc.subr.  All
1202         base and ports rc.d scripts have been updated, so if you have a
1203         port installed with a script in /usr/local/etc/rc.d you can either
1204         hand-edit the rcvar= line, or reinstall the port.
1205
1206         An easy way to handle the mass-update of /etc/rc.d:
1207         rm /etc/rc.d/* && mergemaster -i
1208
1209 20120109:
1210         panic(9) now stops other CPUs in the SMP systems, disables interrupts
1211         on the current CPU and prevents other threads from running.
1212         This behavior can be reverted using the kern.stop_scheduler_on_panic
1213         tunable/sysctl.
1214         The new behavior can be incompatible with kern.sync_on_panic.
1215
1216 20111215:
1217         The carp(4) facility has been changed significantly. Configuration
1218         of the CARP protocol via ifconfig(8) has changed, as well as format
1219         of CARP events submitted to devd(8) has changed. See manual pages
1220         for more information. The arpbalance feature of carp(4) is currently
1221         not supported anymore.
1222
1223         Size of struct in_aliasreq, struct in6_aliasreq has changed. User
1224         utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
1225         need to be recompiled.
1226
1227 20111122:
1228         The acpi_wmi(4) status device /dev/wmistat has been renamed to
1229         /dev/wmistat0.
1230
1231 20111108:
1232         The option VFS_ALLOW_NONMPSAFE option has been added in order to
1233         explicitely support non-MPSAFE filesystems.
1234         It is on by default for all supported platform at this present
1235         time.
1236
1237 20111101:
1238         The broken amd(4) driver has been replaced with esp(4) in the amd64,
1239         i386 and pc98 GENERIC kernel configuration files.
1240
1241 20110930:
1242         sysinstall has been removed
1243
1244 20110923:
1245         The stable/9 branch created in subversion.  This corresponds to the
1246         RELENG_9 branch in CVS.
1247
1248 COMMON ITEMS:
1249
1250         General Notes
1251         -------------
1252         Avoid using make -j when upgrading.  While generally safe, there are
1253         sometimes problems using -j to upgrade.  If your upgrade fails with
1254         -j, please try again without -j.  From time to time in the past there
1255         have been problems using -j with buildworld and/or installworld.  This
1256         is especially true when upgrading between "distant" versions (eg one
1257         that cross a major release boundary or several minor releases, or when
1258         several months have passed on the -current branch).
1259
1260         Sometimes, obscure build problems are the result of environment
1261         poisoning.  This can happen because the make utility reads its
1262         environment when searching for values for global variables.  To run
1263         your build attempts in an "environmental clean room", prefix all make
1264         commands with 'env -i '.  See the env(1) manual page for more details.
1265
1266         When upgrading from one major version to another it is generally best
1267         to upgrade to the latest code in the currently installed branch first,
1268         then do an upgrade to the new branch. This is the best-tested upgrade
1269         path, and has the highest probability of being successful.  Please try
1270         this approach before reporting problems with a major version upgrade.
1271
1272         When upgrading a live system, having a root shell around before
1273         installing anything can help undo problems. Not having a root shell
1274         around can lead to problems if pam has changed too much from your
1275         starting point to allow continued authentication after the upgrade.
1276
1277         This file should be read as a log of events. When a later event changes
1278         information of a prior event, the prior event should not be deleted.
1279         Instead, a pointer to the entry with the new information should be
1280         placed in the old entry. Readers of this file should also sanity check
1281         older entries before relying on them blindly. Authors of new entries
1282         should write them with this in mind.
1283
1284         ZFS notes
1285         ---------
1286         When upgrading the boot ZFS pool to a new version, always follow
1287         these two steps:
1288
1289         1.) recompile and reinstall the ZFS boot loader and boot block
1290         (this is part of "make buildworld" and "make installworld")
1291
1292         2.) update the ZFS boot block on your boot drive
1293
1294         The following example updates the ZFS boot block on the first
1295         partition (freebsd-boot) of a GPT partitioned drive ada0:
1296         "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
1297
1298         Non-boot pools do not need these updates.
1299
1300         To build a kernel
1301         -----------------
1302         If you are updating from a prior version of FreeBSD (even one just
1303         a few days old), you should follow this procedure.  It is the most
1304         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1305
1306         make kernel-toolchain
1307         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1308         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1309
1310         To test a kernel once
1311         ---------------------
1312         If you just want to boot a kernel once (because you are not sure
1313         if it works, or if you want to boot a known bad kernel to provide
1314         debugging information) run
1315         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1316         nextboot -k testkernel
1317
1318         To just build a kernel when you know that it won't mess you up
1319         --------------------------------------------------------------
1320         This assumes you are already running a CURRENT system.  Replace
1321         ${arch} with the architecture of your machine (e.g. "i386",
1322         "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
1323
1324         cd src/sys/${arch}/conf
1325         config KERNEL_NAME_HERE
1326         cd ../compile/KERNEL_NAME_HERE
1327         make depend
1328         make
1329         make install
1330
1331         If this fails, go to the "To build a kernel" section.
1332
1333         To rebuild everything and install it on the current system.
1334         -----------------------------------------------------------
1335         # Note: sometimes if you are running current you gotta do more than
1336         # is listed here if you are upgrading from a really old current.
1337
1338         <make sure you have good level 0 dumps>
1339         make buildworld
1340         make kernel KERNCONF=YOUR_KERNEL_HERE
1341                                                         [1]
1342         <reboot in single user>                         [3]
1343         mergemaster -Fp                                 [5]
1344         make installworld
1345         mergemaster -Fi                                 [4]
1346         make delete-old                                 [6]
1347         <reboot>
1348
1349         To cross-install current onto a separate partition
1350         --------------------------------------------------
1351         # In this approach we use a separate partition to hold
1352         # current's root, 'usr', and 'var' directories.   A partition
1353         # holding "/", "/usr" and "/var" should be about 2GB in
1354         # size.
1355
1356         <make sure you have good level 0 dumps>
1357         <boot into -stable>
1358         make buildworld
1359         make buildkernel KERNCONF=YOUR_KERNEL_HERE
1360         <maybe newfs current's root partition>
1361         <mount current's root partition on directory ${CURRENT_ROOT}>
1362         make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
1363         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1364         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1365         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
1366         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1367         <reboot into current>
1368         <do a "native" rebuild/install as described in the previous section>
1369         <maybe install compatibility libraries from ports/misc/compat*>
1370         <reboot>
1371
1372
1373         To upgrade in-place from stable to current
1374         ----------------------------------------------
1375         <make sure you have good level 0 dumps>
1376         make buildworld                                 [9]
1377         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
1378                                                         [1]
1379         <reboot in single user>                         [3]
1380         mergemaster -Fp                                 [5]
1381         make installworld
1382         mergemaster -Fi                                 [4]
1383         make delete-old                                 [6]
1384         <reboot>
1385
1386         Make sure that you've read the UPDATING file to understand the
1387         tweaks to various things you need.  At this point in the life
1388         cycle of current, things change often and you are on your own
1389         to cope.  The defaults can also change, so please read ALL of
1390         the UPDATING entries.
1391
1392         Also, if you are tracking -current, you must be subscribed to
1393         freebsd-current@freebsd.org.  Make sure that before you update
1394         your sources that you have read and understood all the recent
1395         messages there.  If in doubt, please track -stable which has
1396         much fewer pitfalls.
1397
1398         [1] If you have third party modules, such as vmware, you
1399         should disable them at this point so they don't crash your
1400         system on reboot.
1401
1402         [3] From the bootblocks, boot -s, and then do
1403                 fsck -p
1404                 mount -u /
1405                 mount -a
1406                 cd src
1407                 adjkerntz -i            # if CMOS is wall time
1408         Also, when doing a major release upgrade, it is required that
1409         you boot into single user mode to do the installworld.
1410
1411         [4] Note: This step is non-optional.  Failure to do this step
1412         can result in a significant reduction in the functionality of the
1413         system.  Attempting to do it by hand is not recommended and those
1414         that pursue this avenue should read this file carefully, as well
1415         as the archives of freebsd-current and freebsd-hackers mailing lists
1416         for potential gotchas.  The -U option is also useful to consider.
1417         See mergemaster(8) for more information.
1418
1419         [5] Usually this step is a noop.  However, from time to time
1420         you may need to do this if you get unknown user in the following
1421         step.  It never hurts to do it all the time.  You may need to
1422         install a new mergemaster (cd src/usr.sbin/mergemaster && make
1423         install) after the buildworld before this step if you last updated
1424         from current before 20130425 or from -stable before 20130430.
1425
1426         [6] This only deletes old files and directories. Old libraries
1427         can be deleted by "make delete-old-libs", but you have to make
1428         sure that no program is using those libraries anymore.
1429
1430         [8] In order to have a kernel that can run the 4.x binaries needed to
1431         do an installworld, you must include the COMPAT_FREEBSD4 option in
1432         your kernel.  Failure to do so may leave you with a system that is
1433         hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1434         required to run the 5.x binaries on more recent kernels.  And so on
1435         for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1436
1437         Make sure that you merge any new devices from GENERIC since the
1438         last time you updated your kernel config file.
1439
1440         [9] When checking out sources, you must include the -P flag to have
1441         cvs prune empty directories.
1442
1443         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1444         "?=" instead of the "=" assignment operator, so that buildworld can
1445         override the CPUTYPE if it needs to.
1446
1447         MAKEOBJDIRPREFIX must be defined in an environment variable, and
1448         not on the command line, or in /etc/make.conf.  buildworld will
1449         warn if it is improperly defined.
1450 FORMAT:
1451
1452 This file contains a list, in reverse chronological order, of major
1453 breakages in tracking -current.  It is not guaranteed to be a complete
1454 list of such breakages, and only contains entries since September 23, 2011.
1455 If you need to see UPDATING entries from before that date, you will need
1456 to fetch an UPDATING file from an older FreeBSD release.
1457
1458 Copyright information:
1459
1460 Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
1461
1462 Redistribution, publication, translation and use, with or without
1463 modification, in full or in part, in any form or format of this
1464 document are permitted without further permission from the author.
1465
1466 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1467 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1468 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1469 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1470 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1471 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1472 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1473 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1474 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1475 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1476 POSSIBILITY OF SUCH DAMAGE.
1477
1478 Contact Warner Losh if you have any questions about your use of
1479 this document.
1480
1481 $FreeBSD$