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