1 Updating Information for FreeBSD current users.
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
9 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
11 Items affecting the ports and packages system can be found in
12 /usr/ports/UPDATING. Please read that file before running portupgrade.
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
17 from older version of current across the gcc/clang cutover is a bit fragile.
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".)
35 Kernel modules compiled outside of a kernel build now default to
36 installing to /boot/modules instead of /boot/kernel. Many kernel
37 modules built this way (such as those in ports) already overrode
38 KMODDIR explicitly to install into /boot/modules. However,
39 manually building and installing a module from /sys/modules will
40 now install to /boot/modules instead of /boot/kernel.
43 The CAM I/O scheduler has been committed to the kernel. There should be
44 no user visible impact. This does enable NCQ Trim on ada SSDs. While the
45 list of known rogues that claim support for this but actually corrupt
46 data is believed to be complete, be on the lookout for data
47 corruption. The known rogue list is believed to be complete:
49 o Crucial MX100, M550 drives with MU01 firmware.
50 o Micron M510 and M550 drives with MU01 firmware.
51 o Micron M500 prior to MU07 firmware
52 o Samsung 830, 840, and 850 all firmwares
53 o FCCT M500 all firmwares
55 Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware
56 with working NCQ TRIM. For Micron branded drives, see your sales rep for
57 updated firmware. Black listed drives will work correctly because these
58 drives work correctly so long as no NCQ TRIMs are sent to them. Given
59 this list is the same as found in Linux, it's believed there are no
60 other rogues in the market place. All other models from the above
63 To be safe, if you are at all concerned, you can quirk each of your
64 drives to prevent NCQ from being sent by setting:
65 kern.cam.ada.X.quirks="0x2"
66 in loader.conf. If the drive requires the 4k sector quirk, set the
70 The FAST_DEPEND build option has been removed and its functionality is
71 now the one true way. The old mkdep(1) style of 'make depend' has
72 been removed. See 20160311 for further details.
75 Resource range types have grown from unsigned long to uintmax_t. All
76 drivers, and anything using libdevinfo, need to be recompiled.
79 WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree
80 builds. It no longer runs mkdep(1) during 'make depend', and the
81 'make depend' stage can safely be skipped now as it is auto ran
82 when building 'make all' and will generate all SRCS and DPSRCS before
83 building anything else. Dependencies are gathered at compile time with
84 -MF flags kept in separate .depend files per object file. Users should
85 run 'make cleandepend' once if using -DNO_CLEAN to clean out older
89 On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into
90 kernel modules. Therefore, if you load any kernel modules at boot time,
91 please install the boot loaders after you install the kernel, but before
95 make kernel KERNCONF=YOUR_KERNEL_HERE
96 make -C sys/boot install
97 <reboot in single user>
99 Then follow the usual steps, described in the General Notes section,
103 Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0. Please
104 see the 20141231 entry below for information about prerequisites and
105 upgrading, if you are not already using clang 3.5.0 or higher.
108 The AIO subsystem is now a standard part of the kernel. The
109 VFS_AIO kernel option and aio.ko kernel module have been removed.
110 Due to stability concerns, asynchronous I/O requests are only
111 permitted on sockets and raw disks by default. To enable
112 asynchronous I/O requests on all file types, set the
113 vfs.aio.enable_unsafe sysctl to a non-zero value.
116 The ELF object manipulation tool objcopy is now provided by the
117 ELF Tool Chain project rather than by GNU binutils. It should be a
118 drop-in replacement, with the addition of arm64 support. The
119 (temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
120 to obtain the GNU version if necessary.
123 Building ZFS pools on top of zvols is prohibited by default. That
124 feature has never worked safely; it's always been prone to deadlocks.
125 Using a zvol as the backing store for a VM guest's virtual disk will
126 still work, even if the guest is using ZFS. Legacy behavior can be
127 restored by setting vfs.zfs.vol.recursive=1.
130 The NONE and HPN patches has been removed from OpenSSH. They are
131 still available in the security/openssh-portable port.
134 With the addition of ypldap(8), a new _ypldap user is now required
135 during installworld. "mergemaster -p" can be used to add the user
136 prior to installworld, as documented in the handbook.
139 The tftp loader (pxeboot) now uses the option root-path directive. As a
140 consequence it no longer looks for a pxeboot.4th file on the tftp
141 server. Instead it uses the regular /boot infrastructure as with the
145 The code to start recording plug and play data into the modules has
146 been committed. While the old tools will properly build a new kernel,
147 a number of warnings about "unknown metadata record 4" will be produced
148 for an older kldxref. To avoid such warnings, make sure to rebuild
149 the kernel toolchain (or world). Make sure that you have r292078 or
150 later when trying to build 292077 or later before rebuilding.
153 Debug data files are now built by default with 'make buildworld' and
154 installed with 'make installworld'. This facilitates debugging but
155 requires more disk space both during the build and for the installed
156 world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
160 r291527 changed the internal interface between the nfsd.ko and
161 nfscommon.ko modules. As such, they must both be upgraded to-gether.
162 __FreeBSD_version has been bumped because of this.
165 Add support for unicode collation strings leads to a change of
166 order of files listed by ls(1) for example. To get back to the old
167 behaviour, set LC_COLLATE environment variable to "C".
169 Databases administrators will need to reindex their databases given
170 collation results will be different.
172 Due to a bug in install(1) it is recommended to remove the ancient
173 locales before running make installworld.
175 rm -rf /usr/share/locale/*
178 The OpenSSL has been upgraded to 1.0.2d. Any binaries requiring
179 libcrypto.so.7 or libssl.so.7 must be recompiled.
182 Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
183 Kernel modules isp_2400_multi and isp_2500_multi were removed and
184 should be replaced with isp_2400 and isp_2500 modules respectively.
187 The build previously allowed using 'make -n' to not recurse into
188 sub-directories while showing what commands would be executed, and
189 'make -n -n' to recursively show commands. Now 'make -n' will recurse
190 and 'make -N' will not.
193 If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
194 and etcupdate will now use this file. A custom sendmail.cf is now
195 updated via this mechanism rather than via installworld. If you had
196 excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
197 want to remove the exclusion or change it to "always install".
198 /etc/mail/sendmail.cf is now managed the same way regardless of
199 whether SENDMAIL_MC/SENDMAIL_CF is used. If you are not using
200 SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
203 Compatibility shims for legacy ATA device names have been removed.
204 It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
205 and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
206 environment variables, /dev/ad* and /dev/ar* symbolic links.
209 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
210 Please see the 20141231 entry below for information about prerequisites
211 and upgrading, if you are not already using clang 3.5.0 or higher.
214 Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
215 and renamed from .symbols to .debug. This reduces the size requirements
216 on the boot partition or file system and provides consistency with
217 userland debug files.
219 When using the supported kernel installation method the
220 /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
221 as is done with /boot/kernel.
223 Developers wishing to maintain the historical behavior of installing
224 debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
227 The wireless drivers had undergone changes that remove the 'parent
228 interface' from the ifconfig -l output. The rc.d network scripts
229 used to check presence of a parent interface in the list, so old
230 scripts would fail to start wireless networking. Thus, etcupdate(3)
231 or mergemaster(8) run is required after kernel update, to update your
232 rc.d scripts in /etc.
235 pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
236 These configurations are now automatically interpreted as
237 'scrub fragment reassemble'.
240 Kernel-loadable modules for the random(4) device are back. To use
241 them, the kernel must have
244 options RANDOM_LOADABLE
246 kldload(8) can then be used to load random_fortuna.ko
247 or random_yarrow.ko. Please note that due to the indirect
248 function calls that the loadable modules need to provide,
249 the build-in variants will be slightly more efficient.
251 The random(4) kernel option RANDOM_DUMMY has been retired due to
252 unpopularity. It was not all that useful anyway.
255 The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
256 Control over building the ELF Tool Chain tools is now provided by
257 the WITHOUT_TOOLCHAIN knob.
260 The polarity of Pulse Per Second (PPS) capture events with the
261 uart(4) driver has been corrected. Prior to this change the PPS
262 "assert" event corresponded to the trailing edge of a positive PPS
263 pulse and the "clear" event was the leading edge of the next pulse.
265 As the width of a PPS pulse in a typical GPS receiver is on the
266 order of 1 millisecond, most users will not notice any significant
267 difference with this change.
269 Anyone who has compensated for the historical polarity reversal by
270 configuring a negative offset equal to the pulse width will need to
271 remove that workaround.
274 The default group assigned to /dev/dri entries has been changed
275 from 'wheel' to 'video' with the id of '44'. If you want to have
276 access to the dri devices please add yourself to the video group
279 # pw groupmod video -m $USER
282 The menu.rc and loader.rc files will now be replaced during
283 upgrades. Please migrate local changes to menu.rc.local and
284 loader.rc.local instead.
287 GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
288 strings and strip have been removed. The src.conf(5) knob
289 WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
292 As ZFS requires more kernel stack pages than is the default on some
293 architectures e.g. i386, it now warns if KSTACK_PAGES is less than
294 ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
296 Please consider using 'options KSTACK_PAGES=X' where X is greater
297 than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
300 sendmail has been updated to 8.15.2. Starting with FreeBSD 11.0
301 and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
302 default, i.e., they will not contain "::". For example, instead
303 of ::1, it will be 0:0:0:0:0:0:0:1. This permits a zero subnet
304 to have a more specific match, such as different map entries for
305 IPv6:0:0 vs IPv6:0. This change requires that configuration
306 data (including maps, files, classes, custom ruleset, etc.) must
307 use the same format, so make certain such configuration data is
308 upgrading. As a very simple check search for patterns like
309 'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'. To return to the old
310 behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
311 the cf option UseCompressedIPv6Addresses.
314 The default kernel entropy-processing algorithm is now
315 Fortuna, replacing Yarrow.
317 Assuming you have 'device random' in your kernel config
318 file, the configurations allow a kernel option to override
319 this default. You may choose *ONE* of:
321 options RANDOM_YARROW # Legacy /dev/random algorithm.
322 options RANDOM_DUMMY # Blocking-only driver.
324 If you have neither, you get Fortuna. For most people,
325 read no further, Fortuna will give a /dev/random that works
326 like it always used to, and the difference will be irrelevant.
328 If you remove 'device random', you get *NO* kernel-processed
329 entropy at all. This may be acceptable to folks building
330 embedded systems, but has complications. Carry on reading,
331 and it is assumed you know what you need.
333 *PLEASE* read random(4) and random(9) if you are in the
334 habit of tweaking kernel configs, and/or if you are a member
335 of the embedded community, wanting specific and not-usual
336 behaviour from your security subsystems.
338 NOTE!! If you use RANDOM_DUMMY and/or have no 'device
339 random', you will NOT have a functioning /dev/random, and
340 many cryptographic features will not work, including SSH.
341 You may also find strange behaviour from the random(3) set
342 of library functions, in particular sranddev(3), srandomdev(3)
343 and arc4random(3). The reason for this is that the KERN_ARND
344 sysctl only returns entropy if it thinks it has some to
345 share, and with RANDOM_DUMMY or no 'device random' this
349 An additional fix for the issue described in the 20150614 sendmail
350 entry below has been been committed in revision 284717.
353 FreeBSD's old make (fmake) has been removed from the system. It is
354 available as the devel/fmake port or via pkg install fmake.
357 The fix for the issue described in the 20150614 sendmail entry
358 below has been been committed in revision 284436. The work
359 around described in that entry is no longer needed unless the
360 default setting is overridden by a confDH_PARAMETERS configuration
361 setting of '5' or pointing to a 512 bit DH parameter file.
364 ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
365 atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
366 and devel/kyua to version 0.20+ and adjust any calling code to work
367 with Kyuafile and kyua.
370 The import of openssl to address the FreeBSD-SA-15:10.openssl
371 security advisory includes a change which rejects handshakes
372 with DH parameters below 768 bits. sendmail releases prior
373 to 8.15.2 (not yet released), defaulted to a 512 bit
374 DH parameter setting for client connections. To work around
375 this interoperability, sendmail can be configured to use a
376 2048 bit DH parameter by:
378 1. Edit /etc/mail/`hostname`.mc
379 2. If a setting for confDH_PARAMETERS does not exist or
380 exists and is set to a string beginning with '5',
382 3. If a setting for confDH_PARAMETERS exists and is set to
383 a file path, create a new file with:
384 openssl dhparam -out /path/to/file 2048
385 4. Rebuild the .cf file:
386 cd /etc/mail/; make; make install
388 cd /etc/mail/; make restart
390 A sendmail patch is coming, at which time this file will be
394 Generation of legacy formatted entries have been disabled by default
395 in pwd_mkdb(8), as all base system consumers of the legacy formatted
396 entries were converted to use the new format by default when the new,
397 machine independent format have been added and supported since FreeBSD
400 Please see the pwd_mkdb(8) manual page for further details.
403 Clang and llvm have been upgraded to 3.6.1 release. Please see the
404 20141231 entry below for information about prerequisites and upgrading,
405 if you are not already using 3.5.0 or higher.
408 TI platform code switched to using vendor DTS files and this update
409 may break existing systems running on Beaglebone, Beaglebone Black,
412 - dtb files should be regenerated/reinstalled. Filenames are the
413 same but content is different now
414 - GPIO addressing was changed, now each GPIO bank (32 pins per bank)
415 has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
416 addressing scheme is now pin 25 on /dev/gpioc3.
417 - Pandaboard: /etc/ttys should be updated, serial console device is
418 now /dev/ttyu2, not /dev/ttyu0
421 soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
422 If you need the GNU extension from groff soelim(1), install groff
423 from package: pkg install groff, or via ports: textproc/groff.
426 chmod, chflags, chown and chgrp now affect symlinks in -R mode as
427 defined in symlink(7); previously symlinks were silently ignored.
430 The const qualifier has been removed from iconv(3) to comply with
431 POSIX. The ports tree is aware of this from r384038 onwards.
434 Libraries specified by LIBADD in Makefiles must have a corresponding
435 DPADD_<lib> variable to ensure correct dependencies. This is now
436 enforced in src.libnames.mk.
439 From legacy ata(4) driver was removed support for SATA controllers
440 supported by more functional drivers ahci(4), siis(4) and mvs(4).
441 Kernel modules ataahci and ataadaptec were removed completely,
442 replaced by ahci and mvs modules respectively.
445 Clang, llvm and lldb have been upgraded to 3.6.0 release. Please see
446 the 20141231 entry below for information about prerequisites and
447 upgrading, if you are not already using 3.5.0 or higher.
450 The 32-bit PowerPC kernel has been changed to a position-independent
451 executable. This can only be booted with a version of loader(8)
452 newer than January 31, 2015, so make sure to update both world and
453 kernel before rebooting.
456 If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
457 but before r278950, the RNG was not seeded properly. Immediately
458 upgrade the kernel to r278950 or later and regenerate any keys (e.g.
459 ssh keys or openssl keys) that were generated w/ a kernel from that
460 range. This does not affect programs that directly used /dev/random
461 or /dev/urandom. All userland uses of arc4random(3) are affected.
464 The autofs(4) ABI was changed in order to restore binary compatibility
465 with 10.1-RELEASE. The automountd(8) daemon needs to be rebuilt to work
469 The powerpc64 kernel has been changed to a position-independent
470 executable. This can only be booted with a new version of loader(8),
471 so make sure to update both world and kernel before rebooting.
474 Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix
475 only release, no new features have been added. Please see the 20141231
476 entry below for information about prerequisites and upgrading, if you
477 are not already using 3.5.0.
480 ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
481 taken from the ELF Tool Chain project rather than GNU binutils. They
482 should be drop-in replacements, with the addition of arm64 support.
483 The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
484 binutils tools, if necessary. See 20150805 for updated information.
487 The default Unbound configuration now enables remote control
488 using a local socket. Users who have already enabled the
489 local_unbound service should regenerate their configuration
490 by running "service local_unbound setup" as root.
493 The GNU texinfo and GNU info pages have been removed.
494 To be able to view GNU info pages please install texinfo from ports.
497 Clang, llvm and lldb have been upgraded to 3.5.0 release.
499 As of this release, a prerequisite for building clang, llvm and lldb is
500 a C++11 capable compiler and C++11 standard library. This means that to
501 be able to successfully build the cross-tools stage of buildworld, with
502 clang as the bootstrap compiler, your system compiler or cross compiler
503 should either be clang 3.3 or later, or gcc 4.8 or later, and your
504 system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
507 On any standard FreeBSD 10.x or 11.x installation, where clang and
508 libc++ are on by default (that is, on x86 or arm), this should work out
511 On 9.x installations where clang is enabled by default, e.g. on x86 and
512 powerpc, libc++ will not be enabled by default, so libc++ should be
513 built (with clang) and installed first. If both clang and libc++ are
514 missing, build clang first, then use it to build libc++.
516 On 8.x and earlier installations, upgrade to 9.x first, and then follow
517 the instructions for 9.x above.
519 Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
520 default, and do not build clang.
522 Many embedded systems are resource constrained, and will not be able to
523 build clang in a reasonable time, or in some cases at all. In those
524 cases, cross building bootable systems on amd64 is a workaround.
526 This new version of clang introduces a number of new warnings, of which
527 the following are most likely to appear:
531 This warns in two cases, for both C and C++:
532 * When the code is trying to take the absolute value of an unsigned
533 quantity, which is effectively a no-op, and almost never what was
534 intended. The code should be fixed, if at all possible. If you are
535 sure that the unsigned quantity can be safely cast to signed, without
536 loss of information or undefined behavior, you can add an explicit
537 cast, or disable the warning.
539 * When the code is trying to take an absolute value, but the called
540 abs() variant is for the wrong type, which can lead to truncation.
541 If you want to disable the warning instead of fixing the code, please
542 make sure that truncation will not occur, or it might lead to unwanted
545 -Wtautological-undefined-compare and
546 -Wundefined-bool-conversion
548 These warn when C++ code is trying to compare 'this' against NULL, while
549 'this' should never be NULL in well-defined C++ code. However, there is
550 some legacy (pre C++11) code out there, which actively abuses this
551 feature, which was less strictly defined in previous C++ versions.
553 Squid and openjdk do this, for example. The warning can be turned off
554 for C++98 and earlier, but compiling the code in C++11 mode might result
555 in unexpected behavior; for example, the parts of the program that are
556 unreachable could be optimized away.
559 The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
560 kernel sources have been removed. The .h files remain, since some
561 utilities include them. This will need to be fixed later.
562 If "mount -t oldnfs ..." is attempted, it will fail.
563 If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
564 the utilities will report errors.
567 The handling of LOCAL_LIB_DIRS has been altered to skip addition of
568 directories to top level SUBDIR variable when their parent
569 directory is included in LOCAL_DIRS. Users with build systems with
570 such hierarchies and without SUBDIR entries in the parent
571 directory Makefiles should add them or add the directories to
575 faith(4) and faithd(8) have been removed from the base system. Faith
576 has been obsolete for a very long time.
579 vt(4), the new console driver, is enabled by default. It brings
580 support for Unicode and double-width characters, as well as
581 support for UEFI and integration with the KMS kernel video
584 You may need to update your console settings in /etc/rc.conf,
585 most probably the keymap. During boot, /etc/rc.d/syscons will
586 indicate what you need to do.
588 vt(4) still has issues and lacks some features compared to
589 syscons(4). See the wiki for up-to-date information:
590 https://wiki.freebsd.org/Newcons
592 If you want to keep using syscons(4), you can do so by adding
593 the following line to /boot/loader.conf:
597 pjdfstest has been integrated into kyua as an opt-in test suite.
598 Please see share/doc/pjdfstest/README for more details on how to
602 gperf has been removed from the base system for architectures
603 that use clang. Ports that require gperf will obtain it from the
607 pjdfstest has been moved from tools/regression/pjdfstest to
611 At svn r271982, The default linux compat kernel ABI has been adjusted
612 to 2.6.18 in support of the linux-c6 compat ports infrastructure
613 update. If you wish to continue using the linux-f10 compat ports,
614 add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are
615 encouraged to update their linux-compat packages to linux-c6 during
616 their next update cycle.
619 The ofwfb driver, used to provide a graphics console on PowerPC when
620 using vt(4), no longer allows mmap() of all physical memory. This
621 will prevent Xorg on PowerPC with some ATI graphics cards from
622 initializing properly unless x11-servers/xorg-server is updated to
626 The xdev targets have been converted to using TARGET and
627 TARGET_ARCH instead of XDEV and XDEV_ARCH.
630 The default unbound configuration has been modified to address
631 issues with reverse lookups on networks that use private
632 address ranges. If you use the local_unbound service, run
633 "service local_unbound setup" as root to regenerate your
634 configuration, then "service local_unbound reload" to load the
638 The GNU texinfo and GNU info pages are not built and installed
639 anymore, WITH_INFO knob has been added to allow to built and install
641 UPDATE: see 20150102 entry on texinfo's removal
644 The GNU readline library is now an INTERNALLIB - that is, it is
645 statically linked into consumers (GDB and variants) in the base
646 system, and the shared library is no longer installed. The
647 devel/readline port is available for third party software that
651 The Itanium architecture (ia64) has been removed from the list of
652 known architectures. This is the first step in the removal of the
656 Commit r268115 has added NFSv4.1 server support, merged from
657 projects/nfsv4.1-server. Since this includes changes to the
658 internal interfaces between the NFS related modules, a full
659 build of the kernel and modules will be necessary.
660 __FreeBSD_version has been bumped.
663 The WITHOUT_VT_SUPPORT kernel config knob has been renamed
664 WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning
665 which differs from the behaviour controlled by this knob.)
668 Maximal length of the serial number in CTL was increased from 16 to
669 64 chars, that breaks ABI. All CTL-related tools, such as ctladm
670 and ctld, need to be rebuilt to work with a new kernel.
673 The libatf-c and libatf-c++ major versions were downgraded to 0 and
674 1 respectively to match the upstream numbers. They were out of
675 sync because, when they were originally added to FreeBSD, the
676 upstream versions were not respected. These libraries are private
677 and not yet built by default, so renumbering them should be a
678 non-issue. However, unclean source trees will yield broken test
679 programs once the operator executes "make delete-old-libs" after a
682 Additionally, the atf-sh binary was made private by moving it into
683 /usr/libexec/. Already-built shell test programs will keep the
684 path to the old binary so they will break after "make delete-old"
687 If you are using WITH_TESTS=yes (not the default), wipe the object
688 tree and rebuild from scratch to prevent spurious test failures.
689 This is only needed once: the misnumbered libraries and misplaced
690 binaries have been added to OptionalObsoleteFiles.inc so they will
691 be removed during a clean upgrade.
694 Clang and llvm have been upgraded to 3.4.1 release.
697 We bogusly installed src.opts.mk in /usr/share/mk. This file should
698 be removed to avoid issues in the future (and has been added to
702 /etc/src.conf now affects only builds of the FreeBSD src tree. In the
703 past, it affected all builds that used the bsd.*.mk files. The old
704 behavior was a bug, but people may have relied upon it. To get this
705 behavior back, you can .include /etc/src.conf from /etc/make.conf
706 (which is still global and isn't changed). This also changes the
707 behavior of incremental builds inside the tree of individual
708 directories. Set MAKESYSPATH to ".../share/mk" to do that.
709 Although this has survived make universe and some upgrade scenarios,
710 other upgrade scenarios may have broken. At least one form of
711 temporary breakage was fixed with MAKESYSPATH settings for buildworld
712 as well... In cases where MAKESYSPATH isn't working with this
713 setting, you'll need to set it to the full path to your tree.
715 One side effect of all this cleaning up is that bsd.compiler.mk
716 is no longer implicitly included by bsd.own.mk. If you wish to
717 use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
721 The lindev device has been removed since /dev/full has been made a
722 standard device. __FreeBSD_version has been bumped.
725 The knob WITHOUT_VI was added to the base system, which controls
726 building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
727 in order to reorder files share/termcap and didn't build ex(1) as a
728 build tool, so building/installing with WITH_VI is highly advised for
729 build hosts for older releases.
731 This issue has been fixed in stable/9 and stable/10 in r277022 and
732 r276991, respectively.
735 The YES_HESIOD knob has been removed. It has been obsolete for
736 a decade. Please move to using WITH_HESIOD instead or your builds
737 will silently lack HESIOD.
740 The uart(4) driver has been changed with respect to its handling
741 of the low-level console. Previously the uart(4) driver prevented
742 any process from changing the baudrate or the CLOCAL and HUPCL
743 control flags. By removing the restrictions, operators can make
744 changes to the serial console port without having to reboot.
745 However, when getty(8) is started on the serial device that is
746 associated with the low-level console, a misconfigured terminal
747 line in /etc/ttys will now have a real impact.
748 Before upgrading the kernel, make sure that /etc/ttys has the
749 serial console device configured as 3wire without baudrate to
750 preserve the previous behaviour. E.g:
751 ttyu0 "/usr/libexec/getty 3wire" vt100 on secure
754 Support for libwrap (TCP wrappers) in rpcbind was disabled by default
755 to improve performance. To re-enable it, if needed, run rpcbind
756 with command line option -W.
759 Switched back to the GPL dtc compiler due to updates in the upstream
760 dts files not being supported by the BSDL dtc compiler. You will need
761 to rebuild your kernel toolchain to pick up the new compiler. Core dumps
762 may result while building dtb files during a kernel build if you fail
763 to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
766 Clang and llvm have been upgraded to 3.4 release.
769 The nve(4) driver has been removed. Please use the nfe(4) driver
770 for NVIDIA nForce MCP Ethernet adapters instead.
773 An ABI incompatibility crept into the libc++ 3.4 import in r261283.
774 This could cause certain C++ applications using shared libraries built
775 against the previous version of libc++ to crash. The incompatibility
776 has now been fixed, but any C++ applications or shared libraries built
777 between r261283 and r261801 should be recompiled.
780 OpenSSH will now ignore errors caused by kernel lacking of Capsicum
781 capability mode support. Please note that enabling the feature in
782 kernel is still highly recommended.
785 OpenSSH is now built with sandbox support, and will use sandbox as
786 the default privilege separation method. This requires Capsicum
787 capability mode support in kernel.
790 The libelf and libdwarf libraries have been updated to newer
791 versions from upstream. Shared library version numbers for
792 these two libraries were bumped. Any ports or binaries
793 requiring these two libraries should be recompiled.
794 __FreeBSD_version is bumped to 1100006.
797 If a Makefile in a tests/ directory was auto-generating a Kyuafile
798 instead of providing an explicit one, this would prevent such
799 Makefile from providing its own Kyuafile in the future during
800 NO_CLEAN builds. This has been fixed in the Makefiles but manual
801 intervention is needed to clean an objdir if you use NO_CLEAN:
802 # find /usr/obj -name Kyuafile | xargs rm -f
805 The behavior of gss_pseudo_random() for the krb5 mechanism
806 has changed, for applications requesting a longer random string
807 than produced by the underlying enctype's pseudo-random() function.
808 In particular, the random string produced from a session key of
809 enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
810 be different at the 17th octet and later, after this change.
811 The counter used in the PRF+ construction is now encoded as a
812 big-endian integer in accordance with RFC 4402.
813 __FreeBSD_version is bumped to 1100004.
816 The WITHOUT_ATF build knob has been removed and its functionality
817 has been subsumed into the more generic WITHOUT_TESTS. If you were
818 using the former to disable the build of the ATF libraries, you
819 should change your settings to use the latter.
822 The default version of mtree is nmtree which is obtained from
823 NetBSD. The output is generally the same, but may vary
824 slightly. If you found you need identical output adding
825 "-F freebsd9" to the command line should do the trick. For the
826 time being, the old mtree is available as fmtree.
829 libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
830 This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
831 1.1.4_8 and verify bsdyml not linked in, before running "make
833 # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
835 # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
838 The stable/10 branch has been created in subversion from head
842 The rc.d/jail script has been updated to support jail(8)
843 configuration file. The "jail_<jname>_*" rc.conf(5) variables
844 for per-jail configuration are automatically converted to
845 /var/run/jail.<jname>.conf before the jail(8) utility is invoked.
846 This is transparently backward compatible. See below about some
847 incompatibilities and rc.conf(5) manual page for more details.
849 These variables are now deprecated in favor of jail(8) configuration
850 file. One can use "rc.d/jail config <jname>" command to generate
851 a jail(8) configuration file in /var/run/jail.<jname>.conf without
852 running the jail(8) utility. The default pathname of the
853 configuration file is /etc/jail.conf and can be specified by
854 using $jail_conf or $jail_<jname>_conf variables.
856 Please note that jail_devfs_ruleset accepts an integer at
857 this moment. Please consider to rewrite the ruleset name
861 BIND has been removed from the base system. If all you need
862 is a local resolver, simply enable and start the local_unbound
863 service instead. Otherwise, several versions of BIND are
864 available in the ports tree. The dns/bind99 port is one example.
866 With this change, nslookup(1) and dig(1) are no longer in the base
867 system. Users should instead use host(1) and drill(1) which are
868 in the base system. Alternatively, nslookup and dig can
869 be obtained by installing the dns/bind-tools port.
872 With the addition of unbound(8), a new unbound user is now
873 required during installworld. "mergemaster -p" can be used to
874 add the user prior to installworld, as documented in the handbook.
877 OpenSSH is now built with DNSSEC support, and will by default
878 silently trust signed SSHFP records. This can be controlled with
879 the VerifyHostKeyDNS client configuration setting. DNSSEC support
880 can be disabled entirely with the WITHOUT_LDNS option in src.conf.
883 The GNU Compiler Collection and C++ standard library (libstdc++)
884 are no longer built by default on platforms where clang is the system
885 compiler. You can enable them with the WITH_GCC and WITH_GNUCXX
889 The PROCDESC kernel option is now part of the GENERIC kernel
890 configuration and is required for the rwhod(8) to work.
891 If you are using custom kernel configuration, you should include
895 The API and ABI related to the Capsicum framework was modified
896 in backward incompatible way. The userland libraries and programs
897 have to be recompiled to work with the new kernel. This includes the
898 following libraries and programs, but the whole buildworld is
899 advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
900 kdump, procstat, rwho, rwhod, uniq.
903 AES-NI intrinsic support has been added to gcc. The AES-NI module
904 has been updated to use this support. A new gcc is required to build
905 the aesni module on both i386 and amd64.
908 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
909 Thus "device padlock_rng" and "device rdrand_rng" should be
910 used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
913 WITH_ICONV has been split into two feature sets. WITH_ICONV now
914 enables just the iconv* functionality and is now on by default.
915 WITH_LIBICONV_COMPAT enables the libiconv api and link time
916 compatibility. Set WITHOUT_ICONV to build the old way.
917 If you have been using WITH_ICONV before, you will very likely
918 need to turn on WITH_LIBICONV_COMPAT.
921 INVARIANTS option now enables DEBUG for code with OpenSolaris and
922 Illumos origin, including ZFS. If you have INVARIANTS in your
923 kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
925 DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
926 locks if WITNESS option was set. Because that generated a lot of
927 witness(9) reports and all of them were believed to be false
928 positives, this is no longer done. New option OPENSOLARIS_WITNESS
929 can be used to achieve the previous behavior.
932 Timer values in IPv6 data structures now use time_uptime instead
933 of time_second. Although this is not a user-visible functional
934 change, userland utilities which directly use them---ndp(8),
935 rtadvd(8), and rtsold(8) in the base system---need to be updated
939 find -delete can now delete the pathnames given as arguments,
940 instead of only files found below them or if the pathname did
941 not contain any slashes. Formerly, the following error message
944 find: -delete: <path>: relative path potentially not safe
946 Deleting the pathnames given as arguments can be prevented
947 without error messages using -mindepth 1 or by changing
948 directory and passing "." as argument to find. This works in the
949 old as well as the new version of find.
952 Behavior of devfs rules path matching has been changed.
953 Pattern is now always matched against fully qualified devfs
954 path and slash characters must be explicitly matched by
955 slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
956 subdirectories must be reviewed.
959 The default ARM ABI has changed to the ARM EABI. The old ABI is
960 incompatible with the ARM EABI and all programs and modules will
961 need to be rebuilt to work with a new kernel.
963 To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
965 NOTE: Support for the old ABI will be removed in the future and
966 users are advised to upgrade.
969 pkg_install has been disconnected from the build if you really need it
970 you should add WITH_PKGTOOLS in your src.conf(5).
973 Most of network statistics structures were changed to be able
974 keep 64-bits counters. Thus all tools, that work with networking
975 statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
978 Fix a bug that allowed a tracing process (e.g. gdb) to write
979 to a memory-mapped file in the traced process's address space
980 even if neither the traced process nor the tracing process had
981 write access to that file.
984 CVS has been removed from the base system. An exact copy
985 of the code is available from the devel/cvs port.
988 Some people report the following error after the switch to bmake:
990 make: illegal option -- J
991 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
993 *** [buildworld] Error code 2
995 this likely due to an old instance of make in
996 ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
997 which src/Makefile will use that blindly, if it exists, so if
998 you see the above error:
1000 rm -rf `make -V MAKEPATH`
1005 Use bmake by default.
1006 Whereas before one could choose to build with bmake via
1007 -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
1008 make. The goal is to remove these knobs for 10-RELEASE.
1010 It is worth noting that bmake (like gmake) treats the command
1011 line as the unit of failure, rather than statements within the
1012 command line. Thus '(cd some/where && dosomething)' is safer
1013 than 'cd some/where; dosomething'. The '()' allows consistent
1014 behavior in parallel build.
1017 Fix a bug that allows NFS clients to issue READDIR on files.
1020 The WITHOUT_IDEA option has been removed because
1021 the IDEA patent expired.
1024 The sysctl which controls TRIM support under ZFS has been renamed
1025 from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
1029 The mergemaster command now uses the default MAKEOBJDIRPREFIX
1030 rather than creating it's own in the temporary directory in
1031 order allow access to bootstrapped versions of tools such as
1032 install and mtree. When upgrading from version of FreeBSD where
1033 the install command does not support -l, you will need to
1034 install a new mergemaster command if mergemaster -p is required.
1035 This can be accomplished with the command (cd src/usr.sbin/mergemaster
1039 Legacy ATA stack, disabled and replaced by new CAM-based one since
1040 FreeBSD 9.0, completely removed from the sources. Kernel modules
1041 atadisk and atapi*, user-level tools atacontrol and burncd are
1042 removed. Kernel option `options ATA_CAM` is now permanently enabled
1046 SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
1047 and socketpair(2). Software, in particular Kerberos, may
1048 automatically detect and use these during building. The resulting
1049 binaries will not work on older kernels.
1052 CTL_DISABLE has also been added to the sparc64 GENERIC (for further
1053 information, see the respective 20130304 entry).
1056 Recent commits to callout(9) changed the size of struct callout,
1057 so the KBI is probably heavily disturbed. Also, some functions
1058 in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
1059 by macros. Every kernel module using it won't load, so rebuild
1062 The ctl device has been re-enabled in GENERIC for i386 and amd64,
1063 but does not initialize by default (because of the new CTL_DISABLE
1064 option) to save memory. To re-enable it, remove the CTL_DISABLE
1065 option from the kernel config file or set kern.cam.ctl.disable=0
1066 in /boot/loader.conf.
1069 The ctl device has been disabled in GENERIC for i386 and amd64.
1070 This was done due to the extra memory being allocated at system
1071 initialisation time by the ctl driver which was only used if
1072 a CAM target device was created. This makes a FreeBSD system
1073 unusable on 128MB or less of RAM.
1076 A new compression method (lz4) has been merged to -HEAD. Please
1077 refer to zpool-features(7) for more information.
1079 Please refer to the "ZFS notes" section of this file for information
1080 on upgrading boot ZFS pools.
1083 A BSD-licensed patch(1) variant has been added and is installed
1084 as bsdpatch, being the GNU version the default patch.
1085 To inverse the logic and use the BSD-licensed one as default,
1086 while having the GNU version installed as gnupatch, rebuild
1087 and install world with the WITH_BSD_PATCH knob set.
1090 Due to the use of the new -l option to install(1) during build
1091 and install, you must take care not to directly set the INSTALL
1092 make variable in your /etc/make.conf, /etc/src.conf, or on the
1093 command line. If you wish to use the -C flag for all installs
1094 you may be able to add INSTALL+=-C to /etc/make.conf or
1098 The install(1) option -M has changed meaning and now takes an
1099 argument that is a file or path to append logs to. In the
1100 unlikely event that -M was the last option on the command line
1101 and the command line contained at least two files and a target
1102 directory the first file will have logs appended to it. The -M
1103 option served little practical purpose in the last decade so its
1104 use is expected to be extremely rare.
1107 After switching to Clang as the default compiler some users of ZFS
1108 on i386 systems started to experience stack overflow kernel panics.
1109 Please consider using 'options KSTACK_PAGES=4' in such configurations.
1112 GEOM_LABEL now mangles label names read from file system metadata.
1113 Mangling affect labels containing spaces, non-printable characters,
1114 '%' or '"'. Device names in /etc/fstab and other places may need to
1118 By default, only the 10 most recent kernel dumps will be saved. To
1119 restore the previous behaviour (no limit on the number of kernel dumps
1120 stored in the dump directory) add the following line to /etc/rc.conf:
1125 With the addition of auditdistd(8), a new auditdistd user is now
1126 required during installworld. "mergemaster -p" can be used to
1127 add the user prior to installworld, as documented in the handbook.
1130 The sin6_scope_id member variable in struct sockaddr_in6 is now
1131 filled by the kernel before passing the structure to the userland via
1132 sysctl or routing socket. This means the KAME-specific embedded scope
1133 id in sin6_addr.s6_addr[2] is always cleared in userland application.
1134 This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
1135 __FreeBSD_version is bumped to 1000025.
1138 On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
1139 This means that the world and kernel will be compiled with clang
1140 and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
1141 and /usr/bin/cpp. To disable this behavior and revert to building
1142 with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
1143 of current may need to bootstrap WITHOUT_CLANG first if the clang
1144 build fails (its compatibility window doesn't extend to the 9 stable
1148 The IPFIREWALL_FORWARD kernel option has been removed. Its
1149 functionality now turned on by default.
1152 The ZERO_COPY_SOCKET kernel option has been removed and
1153 split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
1154 NB: SOCKET_SEND_COW uses the VM page based copy-on-write
1155 mechanism which is not safe and may result in kernel crashes.
1156 NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
1157 driver supports disposeable external page sized mbuf storage.
1158 Proper replacements for both zero-copy mechanisms are under
1159 consideration and will eventually lead to complete removal
1160 of the two kernel options.
1163 The IPv4 network stack has been converted to network byte
1164 order. The following modules need to be recompiled together
1165 with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
1166 pf(4), ipfw(4), ng_ipfw(4), stf(4).
1169 Support for non-MPSAFE filesystems was removed from VFS. The
1170 VFS_VERSION was bumped, all filesystem modules shall be
1174 All the non-MPSAFE filesystems have been disconnected from
1175 the build. The full list includes: codafs, hpfs, ntfs, nwfs,
1176 portalfs, smbfs, xfs.
1179 The interface cloning API and ABI has changed. The following
1180 modules need to be recompiled together with kernel:
1181 ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
1182 vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
1183 faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
1186 The sdhci driver was split in two parts: sdhci (generic SD Host
1187 Controller logic) and sdhci_pci (actual hardware driver).
1188 No kernel config modifications are required, but if you
1189 load sdhc as a module you must switch to sdhci_pci instead.
1192 Import the FUSE kernel and userland support into base system.
1195 The GNU sort(1) program has been removed since the BSD-licensed
1196 sort(1) has been the default for quite some time and no serious
1197 problems have been reported. The corresponding WITH_GNU_SORT
1201 The pfil(9) API/ABI for AF_INET family has been changed. Packet
1202 filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
1206 The net80211(4) ABI has been changed to allow for improved driver
1207 PS-POLL and power-save support. All wireless drivers need to be
1208 recompiled to work with the new kernel.
1211 The random(4) support for the VIA hardware random number
1212 generator (`PADLOCK') is no longer enabled unconditionally.
1213 Add the padlock_rng device in the custom kernel config if
1214 needed. The GENERIC kernels on i386 and amd64 do include the
1215 device, so the change only affects the custom kernel
1219 The pf(4) packet filter ABI has been changed. pfctl(8) and
1220 snmp_pf module need to be recompiled to work with new kernel.
1223 A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
1224 to -HEAD. Pools that have empty_bpobj in active state can not be
1225 imported read-write with ZFS implementations that do not support
1226 this feature. For more information read the zpool-features(5)
1230 The sparc64 ZFS loader has been changed to no longer try to auto-
1231 detect ZFS providers based on diskN aliases but now requires these
1232 to be explicitly listed in the OFW boot-device environment variable.
1235 The OpenSSL has been upgraded to 1.0.1c. Any binaries requiring
1236 libcrypto.so.6 or libssl.so.6 must be recompiled. Also, there are
1237 configuration changes. Make sure to merge /etc/ssl/openssl.cnf.
1240 The following sysctls and tunables have been renamed for consistency
1241 with other variables:
1242 kern.cam.da.da_send_ordered -> kern.cam.da.send_ordered
1243 kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
1246 The sort utility has been replaced with BSD sort. For now, GNU sort
1247 is also available as "gnusort" or the default can be set back to
1248 GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be
1249 installed as "bsdsort".
1252 A new version of ZFS (pool version 5000) has been merged to -HEAD.
1253 Starting with this version the old system of ZFS pool versioning
1254 is superseded by "feature flags". This concept enables forward
1255 compatibility against certain future changes in functionality of ZFS
1256 pools. The first read-only compatible "feature flag" for ZFS pools
1257 is named "com.delphix:async_destroy". For more information
1258 read the new zpool-features(5) manual page.
1259 Please refer to the "ZFS notes" section of this file for information
1260 on upgrading boot ZFS pools.
1263 The malloc(3) implementation embedded in libc now uses sources imported
1264 as contrib/jemalloc. The most disruptive API change is to
1265 /etc/malloc.conf. If your system has an old-style /etc/malloc.conf,
1266 delete it prior to installworld, and optionally re-create it using the
1267 new format after rebooting. See malloc.conf(5) for details
1268 (specifically the TUNING section and the "opt.*" entries in the MALLCTL
1272 Big-endian MIPS TARGET_ARCH values no longer end in "eb". mips64eb
1273 is now spelled mips64. mipsn32eb is now spelled mipsn32. mipseb is
1274 now spelled mips. This is to aid compatibility with third-party
1275 software that expects this naming scheme in uname(3). Little-endian
1276 settings are unchanged. If you are updating a big-endian mips64 machine
1277 from before this change, you may need to set MACHINE_ARCH=mips64 in
1278 your environment before the new build system will recognize your machine.
1281 Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
1285 Now unix domain sockets behave "as expected" on nullfs(5). Previously
1286 nullfs(5) did not pass through all behaviours to the underlying layer,
1287 as a result if we bound to a socket on the lower layer we could connect
1288 only to the lower path; if we bound to the upper layer we could connect
1289 only to the upper path. The new behavior is one can connect to both the
1290 lower and the upper paths regardless what layer path one binds to.
1293 The getifaddrs upgrade path broken with 20111215 has been restored.
1294 If you have upgraded in between 20111215 and 20120209 you need to
1295 recompile libc again with your kernel. You still need to recompile
1296 world to be able to configure CARP but this restriction already
1297 comes from 20111215.
1300 The set_rcvar() function has been removed from /etc/rc.subr. All
1301 base and ports rc.d scripts have been updated, so if you have a
1302 port installed with a script in /usr/local/etc/rc.d you can either
1303 hand-edit the rcvar= line, or reinstall the port.
1305 An easy way to handle the mass-update of /etc/rc.d:
1306 rm /etc/rc.d/* && mergemaster -i
1309 panic(9) now stops other CPUs in the SMP systems, disables interrupts
1310 on the current CPU and prevents other threads from running.
1311 This behavior can be reverted using the kern.stop_scheduler_on_panic
1313 The new behavior can be incompatible with kern.sync_on_panic.
1316 The carp(4) facility has been changed significantly. Configuration
1317 of the CARP protocol via ifconfig(8) has changed, as well as format
1318 of CARP events submitted to devd(8) has changed. See manual pages
1319 for more information. The arpbalance feature of carp(4) is currently
1320 not supported anymore.
1322 Size of struct in_aliasreq, struct in6_aliasreq has changed. User
1323 utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
1324 need to be recompiled.
1327 The acpi_wmi(4) status device /dev/wmistat has been renamed to
1331 The option VFS_ALLOW_NONMPSAFE option has been added in order to
1332 explicitely support non-MPSAFE filesystems.
1333 It is on by default for all supported platform at this present
1337 The broken amd(4) driver has been replaced with esp(4) in the amd64,
1338 i386 and pc98 GENERIC kernel configuration files.
1341 sysinstall has been removed
1344 The stable/9 branch created in subversion. This corresponds to the
1345 RELENG_9 branch in CVS.
1351 Avoid using make -j when upgrading. While generally safe, there are
1352 sometimes problems using -j to upgrade. If your upgrade fails with
1353 -j, please try again without -j. From time to time in the past there
1354 have been problems using -j with buildworld and/or installworld. This
1355 is especially true when upgrading between "distant" versions (eg one
1356 that cross a major release boundary or several minor releases, or when
1357 several months have passed on the -current branch).
1359 Sometimes, obscure build problems are the result of environment
1360 poisoning. This can happen because the make utility reads its
1361 environment when searching for values for global variables. To run
1362 your build attempts in an "environmental clean room", prefix all make
1363 commands with 'env -i '. See the env(1) manual page for more details.
1365 When upgrading from one major version to another it is generally best
1366 to upgrade to the latest code in the currently installed branch first,
1367 then do an upgrade to the new branch. This is the best-tested upgrade
1368 path, and has the highest probability of being successful. Please try
1369 this approach before reporting problems with a major version upgrade.
1371 When upgrading a live system, having a root shell around before
1372 installing anything can help undo problems. Not having a root shell
1373 around can lead to problems if pam has changed too much from your
1374 starting point to allow continued authentication after the upgrade.
1376 This file should be read as a log of events. When a later event changes
1377 information of a prior event, the prior event should not be deleted.
1378 Instead, a pointer to the entry with the new information should be
1379 placed in the old entry. Readers of this file should also sanity check
1380 older entries before relying on them blindly. Authors of new entries
1381 should write them with this in mind.
1385 When upgrading the boot ZFS pool to a new version, always follow
1388 1.) recompile and reinstall the ZFS boot loader and boot block
1389 (this is part of "make buildworld" and "make installworld")
1391 2.) update the ZFS boot block on your boot drive
1393 The following example updates the ZFS boot block on the first
1394 partition (freebsd-boot) of a GPT partitioned drive ada0:
1395 "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
1397 Non-boot pools do not need these updates.
1401 If you are updating from a prior version of FreeBSD (even one just
1402 a few days old), you should follow this procedure. It is the most
1403 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1405 make kernel-toolchain
1406 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1407 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1409 To test a kernel once
1410 ---------------------
1411 If you just want to boot a kernel once (because you are not sure
1412 if it works, or if you want to boot a known bad kernel to provide
1413 debugging information) run
1414 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1415 nextboot -k testkernel
1417 To just build a kernel when you know that it won't mess you up
1418 --------------------------------------------------------------
1419 This assumes you are already running a CURRENT system. Replace
1420 ${arch} with the architecture of your machine (e.g. "i386",
1421 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
1423 cd src/sys/${arch}/conf
1424 config KERNEL_NAME_HERE
1425 cd ../compile/KERNEL_NAME_HERE
1430 If this fails, go to the "To build a kernel" section.
1432 To rebuild everything and install it on the current system.
1433 -----------------------------------------------------------
1434 # Note: sometimes if you are running current you gotta do more than
1435 # is listed here if you are upgrading from a really old current.
1437 <make sure you have good level 0 dumps>
1439 make kernel KERNCONF=YOUR_KERNEL_HERE
1441 <reboot in single user> [3]
1448 To cross-install current onto a separate partition
1449 --------------------------------------------------
1450 # In this approach we use a separate partition to hold
1451 # current's root, 'usr', and 'var' directories. A partition
1452 # holding "/", "/usr" and "/var" should be about 2GB in
1455 <make sure you have good level 0 dumps>
1458 make buildkernel KERNCONF=YOUR_KERNEL_HERE
1459 <maybe newfs current's root partition>
1460 <mount current's root partition on directory ${CURRENT_ROOT}>
1461 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
1462 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1463 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1464 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd
1465 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1466 <reboot into current>
1467 <do a "native" rebuild/install as described in the previous section>
1468 <maybe install compatibility libraries from ports/misc/compat*>
1472 To upgrade in-place from stable to current
1473 ----------------------------------------------
1474 <make sure you have good level 0 dumps>
1476 make kernel KERNCONF=YOUR_KERNEL_HERE [8]
1478 <reboot in single user> [3]
1485 Make sure that you've read the UPDATING file to understand the
1486 tweaks to various things you need. At this point in the life
1487 cycle of current, things change often and you are on your own
1488 to cope. The defaults can also change, so please read ALL of
1489 the UPDATING entries.
1491 Also, if you are tracking -current, you must be subscribed to
1492 freebsd-current@freebsd.org. Make sure that before you update
1493 your sources that you have read and understood all the recent
1494 messages there. If in doubt, please track -stable which has
1495 much fewer pitfalls.
1497 [1] If you have third party modules, such as vmware, you
1498 should disable them at this point so they don't crash your
1501 [3] From the bootblocks, boot -s, and then do
1506 adjkerntz -i # if CMOS is wall time
1507 Also, when doing a major release upgrade, it is required that
1508 you boot into single user mode to do the installworld.
1510 [4] Note: This step is non-optional. Failure to do this step
1511 can result in a significant reduction in the functionality of the
1512 system. Attempting to do it by hand is not recommended and those
1513 that pursue this avenue should read this file carefully, as well
1514 as the archives of freebsd-current and freebsd-hackers mailing lists
1515 for potential gotchas. The -U option is also useful to consider.
1516 See mergemaster(8) for more information.
1518 [5] Usually this step is a noop. However, from time to time
1519 you may need to do this if you get unknown user in the following
1520 step. It never hurts to do it all the time. You may need to
1521 install a new mergemaster (cd src/usr.sbin/mergemaster && make
1522 install) after the buildworld before this step if you last updated
1523 from current before 20130425 or from -stable before 20130430.
1525 [6] This only deletes old files and directories. Old libraries
1526 can be deleted by "make delete-old-libs", but you have to make
1527 sure that no program is using those libraries anymore.
1529 [8] In order to have a kernel that can run the 4.x binaries needed to
1530 do an installworld, you must include the COMPAT_FREEBSD4 option in
1531 your kernel. Failure to do so may leave you with a system that is
1532 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1533 required to run the 5.x binaries on more recent kernels. And so on
1534 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1536 Make sure that you merge any new devices from GENERIC since the
1537 last time you updated your kernel config file.
1539 [9] When checking out sources, you must include the -P flag to have
1540 cvs prune empty directories.
1542 If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1543 "?=" instead of the "=" assignment operator, so that buildworld can
1544 override the CPUTYPE if it needs to.
1546 MAKEOBJDIRPREFIX must be defined in an environment variable, and
1547 not on the command line, or in /etc/make.conf. buildworld will
1548 warn if it is improperly defined.
1551 This file contains a list, in reverse chronological order, of major
1552 breakages in tracking -current. It is not guaranteed to be a complete
1553 list of such breakages, and only contains entries since September 23, 2011.
1554 If you need to see UPDATING entries from before that date, you will need
1555 to fetch an UPDATING file from an older FreeBSD release.
1557 Copyright information:
1559 Copyright 1998-2009 M. Warner Losh. All Rights Reserved.
1561 Redistribution, publication, translation and use, with or without
1562 modification, in full or in part, in any form or format of this
1563 document are permitted without further permission from the author.
1565 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1566 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1567 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1568 DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1569 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1570 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1571 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1572 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1573 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1574 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1575 POSSIBILITY OF SUCH DAMAGE.
1577 Contact Warner Losh if you have any questions about your use of