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