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