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