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