1Updating Information for FreeBSD current users. 2 3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>. 4See end of file for further details. For commonly done items, please see the 5COMMON ITEMS: section later in the file. These instructions assume that you 6basically know what you are doing. If not, then please consult the FreeBSD 7handbook: 8 9 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html 10 11Items affecting the ports and packages system can be found in 12/usr/ports/UPDATING. Please read that file before running portupgrade. 13 14NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping 15from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to 16the tip of head, and then rebuild without this option. The bootstrap process 17from older version of current across the gcc/clang cutover is a bit fragile. 18 19NOTE 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 3420160527: 35 CAM will now strip leading spaces from SCSI disks' serial numbers. 36 This will effect users who create UFS filesystems on SCSI disks using 37 those disk's diskid device nodes. For example, if /etc/fstab 38 previously contained a line like 39 "/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should 40 change it to "/dev/diskid/DISK-ABCDEFG0123456". Users of geom 41 transforms like gmirror may also be affected. ZFS users should 42 generally be fine. 43 4420160523: 45 The bitstring(3) API has been updated with new functionality and 46 improved performance. But it is binary-incompatible with the old API. 47 Objects built with the new headers may not be linked against objects 48 built with the old headers. 49 5020160520: 51 The brk and sbrk functions have been removed from libc on arm64. 52 Binutils from ports has been updated to not link to these 53 functions and should be updated to the latest version before 54 installing a new libc. 55 5620160517: 57 The armv6 port now defaults to hard float ABI. Limited support 58 for running both hardfloat and soft float on the same system 59 is available using the libraries installed with -DWITH_LIBSOFT. 60 This has only been tested as an upgrade path for installworld 61 and packages may fail or need manual intervention to run. New 62 packages will be needed. 63 64 To update an existing self-hosted armv6hf system, you must add 65 TARGET_ARCH=armv6 on the make command line for both the build 66 and the install steps. 67 6820160510: 69 Kernel modules compiled outside of a kernel build now default to 70 installing to /boot/modules instead of /boot/kernel. Many kernel 71 modules built this way (such as those in ports) already overrode 72 KMODDIR explicitly to install into /boot/modules. However, 73 manually building and installing a module from /sys/modules will 74 now install to /boot/modules instead of /boot/kernel. 75 7620160414: 77 The CAM I/O scheduler has been committed to the kernel. There should be 78 no user visible impact. This does enable NCQ Trim on ada SSDs. While the 79 list of known rogues that claim support for this but actually corrupt 80 data is believed to be complete, be on the lookout for data 81 corruption. The known rogue list is believed to be complete: 82 83 o Crucial MX100, M550 drives with MU01 firmware. 84 o Micron M510 and M550 drives with MU01 firmware. 85 o Micron M500 prior to MU07 firmware 86 o Samsung 830, 840, and 850 all firmwares 87 o FCCT M500 all firmwares 88 89 Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware 90 with working NCQ TRIM. For Micron branded drives, see your sales rep for 91 updated firmware. Black listed drives will work correctly because these 92 drives work correctly so long as no NCQ TRIMs are sent to them. Given 93 this list is the same as found in Linux, it's believed there are no 94 other rogues in the market place. All other models from the above 95 vendors work. 96 97 To be safe, if you are at all concerned, you can quirk each of your 98 drives to prevent NCQ from being sent by setting: 99 kern.cam.ada.X.quirks="0x2" 100 in loader.conf. If the drive requires the 4k sector quirk, set the 101 quirks entry to 0x3. 102 10320160330: 104 The FAST_DEPEND build option has been removed and its functionality is 105 now the one true way. The old mkdep(1) style of 'make depend' has 106 been removed. See 20160311 for further details. 107 10820160317: 109 Resource range types have grown from unsigned long to uintmax_t. All 110 drivers, and anything using libdevinfo, need to be recompiled. 111 11220160311: 113 WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree 114 builds. It no longer runs mkdep(1) during 'make depend', and the 115 'make depend' stage can safely be skipped now as it is auto ran 116 when building 'make all' and will generate all SRCS and DPSRCS before 117 building anything else. Dependencies are gathered at compile time with 118 -MF flags kept in separate .depend files per object file. Users should 119 run 'make cleandepend' once if using -DNO_CLEAN to clean out older 120 stale .depend files. 121 12220160306: 123 On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into 124 kernel modules. Therefore, if you load any kernel modules at boot time, 125 please install the boot loaders after you install the kernel, but before 126 rebooting, e.g.: 127 128 make buildworld 129 make kernel KERNCONF=YOUR_KERNEL_HERE 130 make -C sys/boot install 131 <reboot in single user> 132 133 Then follow the usual steps, described in the General Notes section, 134 below. 135 13620160305: 137 Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0. Please 138 see the 20141231 entry below for information about prerequisites and 139 upgrading, if you are not already using clang 3.5.0 or higher. 140 14120160301: 142 The AIO subsystem is now a standard part of the kernel. The 143 VFS_AIO kernel option and aio.ko kernel module have been removed. 144 Due to stability concerns, asynchronous I/O requests are only 145 permitted on sockets and raw disks by default. To enable 146 asynchronous I/O requests on all file types, set the 147 vfs.aio.enable_unsafe sysctl to a non-zero value. 148 14920160226: 150 The ELF object manipulation tool objcopy is now provided by the 151 ELF Tool Chain project rather than by GNU binutils. It should be a 152 drop-in replacement, with the addition of arm64 support. The 153 (temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set 154 to obtain the GNU version if necessary. 155 15620160129: 157 Building ZFS pools on top of zvols is prohibited by default. That 158 feature has never worked safely; it's always been prone to deadlocks. 159 Using a zvol as the backing store for a VM guest's virtual disk will 160 still work, even if the guest is using ZFS. Legacy behavior can be 161 restored by setting vfs.zfs.vol.recursive=1. 162 16320160119: 164 The NONE and HPN patches has been removed from OpenSSH. They are 165 still available in the security/openssh-portable port. 166 16720160113: 168 With the addition of ypldap(8), a new _ypldap user is now required 169 during installworld. "mergemaster -p" can be used to add the user 170 prior to installworld, as documented in the handbook. 171 17220151216: 173 The tftp loader (pxeboot) now uses the option root-path directive. As a 174 consequence it no longer looks for a pxeboot.4th file on the tftp 175 server. Instead it uses the regular /boot infrastructure as with the 176 other loaders. 177 17820151211: 179 The code to start recording plug and play data into the modules has 180 been committed. While the old tools will properly build a new kernel, 181 a number of warnings about "unknown metadata record 4" will be produced 182 for an older kldxref. To avoid such warnings, make sure to rebuild 183 the kernel toolchain (or world). Make sure that you have r292078 or 184 later when trying to build 292077 or later before rebuilding. 185 18620151207: 187 Debug data files are now built by default with 'make buildworld' and 188 installed with 'make installworld'. This facilitates debugging but 189 requires more disk space both during the build and for the installed 190 world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes 191 in src.conf(5). 192 19320151130: 194 r291527 changed the internal interface between the nfsd.ko and 195 nfscommon.ko modules. As such, they must both be upgraded to-gether. 196 __FreeBSD_version has been bumped because of this. 197 19820151108: 199 Add support for unicode collation strings leads to a change of 200 order of files listed by ls(1) for example. To get back to the old 201 behaviour, set LC_COLLATE environment variable to "C". 202 203 Databases administrators will need to reindex their databases given 204 collation results will be different. 205 206 Due to a bug in install(1) it is recommended to remove the ancient 207 locales before running make installworld. 208 209 rm -rf /usr/share/locale/* 210 21120151030: 212 The OpenSSL has been upgraded to 1.0.2d. Any binaries requiring 213 libcrypto.so.7 or libssl.so.7 must be recompiled. 214 21520151020: 216 Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0. 217 Kernel modules isp_2400_multi and isp_2500_multi were removed and 218 should be replaced with isp_2400 and isp_2500 modules respectively. 219 22020151017: 221 The build previously allowed using 'make -n' to not recurse into 222 sub-directories while showing what commands would be executed, and 223 'make -n -n' to recursively show commands. Now 'make -n' will recurse 224 and 'make -N' will not. 225 22620151012: 227 If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster 228 and etcupdate will now use this file. A custom sendmail.cf is now 229 updated via this mechanism rather than via installworld. If you had 230 excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may 231 want to remove the exclusion or change it to "always install". 232 /etc/mail/sendmail.cf is now managed the same way regardless of 233 whether SENDMAIL_MC/SENDMAIL_CF is used. If you are not using 234 SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior. 235 23620151011: 237 Compatibility shims for legacy ATA device names have been removed. 238 It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases 239 and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.* 240 environment variables, /dev/ad* and /dev/ar* symbolic links. 241 24220151006: 243 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0. 244 Please see the 20141231 entry below for information about prerequisites 245 and upgrading, if you are not already using clang 3.5.0 or higher. 246 24720150924: 248 Kernel debug files have been moved to /usr/lib/debug/boot/kernel/, 249 and renamed from .symbols to .debug. This reduces the size requirements 250 on the boot partition or file system and provides consistency with 251 userland debug files. 252 253 When using the supported kernel installation method the 254 /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old) 255 as is done with /boot/kernel. 256 257 Developers wishing to maintain the historical behavior of installing 258 debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5). 259 26020150827: 261 The wireless drivers had undergone changes that remove the 'parent 262 interface' from the ifconfig -l output. The rc.d network scripts 263 used to check presence of a parent interface in the list, so old 264 scripts would fail to start wireless networking. Thus, etcupdate(3) 265 or mergemaster(8) run is required after kernel update, to update your 266 rc.d scripts in /etc. 267 26820150827: 269 pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl' 270 These configurations are now automatically interpreted as 271 'scrub fragment reassemble'. 272 27320150817: 274 Kernel-loadable modules for the random(4) device are back. To use 275 them, the kernel must have 276 277 device random 278 options RANDOM_LOADABLE 279 280 kldload(8) can then be used to load random_fortuna.ko 281 or random_yarrow.ko. Please note that due to the indirect 282 function calls that the loadable modules need to provide, 283 the build-in variants will be slightly more efficient. 284 285 The random(4) kernel option RANDOM_DUMMY has been retired due to 286 unpopularity. It was not all that useful anyway. 287 28820150813: 289 The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired. 290 Control over building the ELF Tool Chain tools is now provided by 291 the WITHOUT_TOOLCHAIN knob. 292 29320150810: 294 The polarity of Pulse Per Second (PPS) capture events with the 295 uart(4) driver has been corrected. Prior to this change the PPS 296 "assert" event corresponded to the trailing edge of a positive PPS 297 pulse and the "clear" event was the leading edge of the next pulse. 298 299 As the width of a PPS pulse in a typical GPS receiver is on the 300 order of 1 millisecond, most users will not notice any significant 301 difference with this change. 302 303 Anyone who has compensated for the historical polarity reversal by 304 configuring a negative offset equal to the pulse width will need to 305 remove that workaround. 306 30720150809: 308 The default group assigned to /dev/dri entries has been changed 309 from 'wheel' to 'video' with the id of '44'. If you want to have 310 access to the dri devices please add yourself to the video group 311 with: 312 313 # pw groupmod video -m $USER 314 31520150806: 316 The menu.rc and loader.rc files will now be replaced during 317 upgrades. Please migrate local changes to menu.rc.local and 318 loader.rc.local instead. 319 32020150805: 321 GNU Binutils versions of addr2line, c++filt, nm, readelf, size, 322 strings and strip have been removed. The src.conf(5) knob 323 WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools. 324 32520150728: 326 As ZFS requires more kernel stack pages than is the default on some 327 architectures e.g. i386, it now warns if KSTACK_PAGES is less than 328 ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing). 329 330 Please consider using 'options KSTACK_PAGES=X' where X is greater 331 than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations. 332 33320150706: 334 sendmail has been updated to 8.15.2. Starting with FreeBSD 11.0 335 and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by 336 default, i.e., they will not contain "::". For example, instead 337 of ::1, it will be 0:0:0:0:0:0:0:1. This permits a zero subnet 338 to have a more specific match, such as different map entries for 339 IPv6:0:0 vs IPv6:0. This change requires that configuration 340 data (including maps, files, classes, custom ruleset, etc.) must 341 use the same format, so make certain such configuration data is 342 upgrading. As a very simple check search for patterns like 343 'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'. To return to the old 344 behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or 345 the cf option UseCompressedIPv6Addresses. 346 34720150630: 348 The default kernel entropy-processing algorithm is now 349 Fortuna, replacing Yarrow. 350 351 Assuming you have 'device random' in your kernel config 352 file, the configurations allow a kernel option to override 353 this default. You may choose *ONE* of: 354 355 options RANDOM_YARROW # Legacy /dev/random algorithm. 356 options RANDOM_DUMMY # Blocking-only driver. 357 358 If you have neither, you get Fortuna. For most people, 359 read no further, Fortuna will give a /dev/random that works 360 like it always used to, and the difference will be irrelevant. 361 362 If you remove 'device random', you get *NO* kernel-processed 363 entropy at all. This may be acceptable to folks building 364 embedded systems, but has complications. Carry on reading, 365 and it is assumed you know what you need. 366 367 *PLEASE* read random(4) and random(9) if you are in the 368 habit of tweaking kernel configs, and/or if you are a member 369 of the embedded community, wanting specific and not-usual 370 behaviour from your security subsystems. 371 372 NOTE!! If you use RANDOM_DUMMY and/or have no 'device 373 random', you will NOT have a functioning /dev/random, and 374 many cryptographic features will not work, including SSH. 375 You may also find strange behaviour from the random(3) set 376 of library functions, in particular sranddev(3), srandomdev(3) 377 and arc4random(3). The reason for this is that the KERN_ARND 378 sysctl only returns entropy if it thinks it has some to 379 share, and with RANDOM_DUMMY or no 'device random' this 380 will never happen. 381 38220150623: 383 An additional fix for the issue described in the 20150614 sendmail 384 entry below has been been committed in revision 284717. 385 38620150616: 387 FreeBSD's old make (fmake) has been removed from the system. It is 388 available as the devel/fmake port or via pkg install fmake. 389 39020150615: 391 The fix for the issue described in the 20150614 sendmail entry 392 below has been been committed in revision 284436. The work 393 around described in that entry is no longer needed unless the 394 default setting is overridden by a confDH_PARAMETERS configuration 395 setting of '5' or pointing to a 512 bit DH parameter file. 396 39720150614: 398 ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from 399 atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf 400 and devel/kyua to version 0.20+ and adjust any calling code to work 401 with Kyuafile and kyua. 402 40320150614: 404 The import of openssl to address the FreeBSD-SA-15:10.openssl 405 security advisory includes a change which rejects handshakes 406 with DH parameters below 768 bits. sendmail releases prior 407 to 8.15.2 (not yet released), defaulted to a 512 bit 408 DH parameter setting for client connections. To work around 409 this interoperability, sendmail can be configured to use a 410 2048 bit DH parameter by: 411 412 1. Edit /etc/mail/`hostname`.mc 413 2. If a setting for confDH_PARAMETERS does not exist or 414 exists and is set to a string beginning with '5', 415 replace it with '2'. 416 3. If a setting for confDH_PARAMETERS exists and is set to 417 a file path, create a new file with: 418 openssl dhparam -out /path/to/file 2048 419 4. Rebuild the .cf file: 420 cd /etc/mail/; make; make install 421 5. Restart sendmail: 422 cd /etc/mail/; make restart 423 424 A sendmail patch is coming, at which time this file will be 425 updated. 426 42720150604: 428 Generation of legacy formatted entries have been disabled by default 429 in pwd_mkdb(8), as all base system consumers of the legacy formatted 430 entries were converted to use the new format by default when the new, 431 machine independent format have been added and supported since FreeBSD 432 5.x. 433 434 Please see the pwd_mkdb(8) manual page for further details. 435 43620150525: 437 Clang and llvm have been upgraded to 3.6.1 release. Please see the 438 20141231 entry below for information about prerequisites and upgrading, 439 if you are not already using 3.5.0 or higher. 440 44120150521: 442 TI platform code switched to using vendor DTS files and this update 443 may break existing systems running on Beaglebone, Beaglebone Black, 444 and Pandaboard: 445 446 - dtb files should be regenerated/reinstalled. Filenames are the 447 same but content is different now 448 - GPIO addressing was changed, now each GPIO bank (32 pins per bank) 449 has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old 450 addressing scheme is now pin 25 on /dev/gpioc3. 451 - Pandaboard: /etc/ttys should be updated, serial console device is 452 now /dev/ttyu2, not /dev/ttyu0 453 45420150501: 455 soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim. 456 If you need the GNU extension from groff soelim(1), install groff 457 from package: pkg install groff, or via ports: textproc/groff. 458 45920150423: 460 chmod, chflags, chown and chgrp now affect symlinks in -R mode as 461 defined in symlink(7); previously symlinks were silently ignored. 462 46320150415: 464 The const qualifier has been removed from iconv(3) to comply with 465 POSIX. The ports tree is aware of this from r384038 onwards. 466 46720150416: 468 Libraries specified by LIBADD in Makefiles must have a corresponding 469 DPADD_<lib> variable to ensure correct dependencies. This is now 470 enforced in src.libnames.mk. 471 47220150324: 473 From legacy ata(4) driver was removed support for SATA controllers 474 supported by more functional drivers ahci(4), siis(4) and mvs(4). 475 Kernel modules ataahci and ataadaptec were removed completely, 476 replaced by ahci and mvs modules respectively. 477 47820150315: 479 Clang, llvm and lldb have been upgraded to 3.6.0 release. Please see 480 the 20141231 entry below for information about prerequisites and 481 upgrading, if you are not already using 3.5.0 or higher. 482 48320150307: 484 The 32-bit PowerPC kernel has been changed to a position-independent 485 executable. This can only be booted with a version of loader(8) 486 newer than January 31, 2015, so make sure to update both world and 487 kernel before rebooting. 488 48920150217: 490 If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014), 491 but before r278950, the RNG was not seeded properly. Immediately 492 upgrade the kernel to r278950 or later and regenerate any keys (e.g. 493 ssh keys or openssl keys) that were generated w/ a kernel from that 494 range. This does not affect programs that directly used /dev/random 495 or /dev/urandom. All userland uses of arc4random(3) are affected. 496 49720150210: 498 The autofs(4) ABI was changed in order to restore binary compatibility 499 with 10.1-RELEASE. The automountd(8) daemon needs to be rebuilt to work 500 with the new kernel. 501 50220150131: 503 The powerpc64 kernel has been changed to a position-independent 504 executable. This can only be booted with a new version of loader(8), 505 so make sure to update both world and kernel before rebooting. 506 50720150118: 508 Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix 509 only release, no new features have been added. Please see the 20141231 510 entry below for information about prerequisites and upgrading, if you 511 are not already using 3.5.0. 512 51320150107: 514 ELF tools addr2line, elfcopy (strip), nm, size, and strings are now 515 taken from the ELF Tool Chain project rather than GNU binutils. They 516 should be drop-in replacements, with the addition of arm64 support. 517 The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the 518 binutils tools, if necessary. See 20150805 for updated information. 519 52020150105: 521 The default Unbound configuration now enables remote control 522 using a local socket. Users who have already enabled the 523 local_unbound service should regenerate their configuration 524 by running "service local_unbound setup" as root. 525 52620150102: 527 The GNU texinfo and GNU info pages have been removed. 528 To be able to view GNU info pages please install texinfo from ports. 529 53020141231: 531 Clang, llvm and lldb have been upgraded to 3.5.0 release. 532 533 As of this release, a prerequisite for building clang, llvm and lldb is 534 a C++11 capable compiler and C++11 standard library. This means that to 535 be able to successfully build the cross-tools stage of buildworld, with 536 clang as the bootstrap compiler, your system compiler or cross compiler 537 should either be clang 3.3 or later, or gcc 4.8 or later, and your 538 system C++ library should be libc++, or libdstdc++ from gcc 4.8 or 539 later. 540 541 On any standard FreeBSD 10.x or 11.x installation, where clang and 542 libc++ are on by default (that is, on x86 or arm), this should work out 543 of the box. 544 545 On 9.x installations where clang is enabled by default, e.g. on x86 and 546 powerpc, libc++ will not be enabled by default, so libc++ should be 547 built (with clang) and installed first. If both clang and libc++ are 548 missing, build clang first, then use it to build libc++. 549 550 On 8.x and earlier installations, upgrade to 9.x first, and then follow 551 the instructions for 9.x above. 552 553 Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by 554 default, and do not build clang. 555 556 Many embedded systems are resource constrained, and will not be able to 557 build clang in a reasonable time, or in some cases at all. In those 558 cases, cross building bootable systems on amd64 is a workaround. 559 560 This new version of clang introduces a number of new warnings, of which 561 the following are most likely to appear: 562 563 -Wabsolute-value 564 565 This warns in two cases, for both C and C++: 566 * When the code is trying to take the absolute value of an unsigned 567 quantity, which is effectively a no-op, and almost never what was 568 intended. The code should be fixed, if at all possible. If you are 569 sure that the unsigned quantity can be safely cast to signed, without 570 loss of information or undefined behavior, you can add an explicit 571 cast, or disable the warning. 572 573 * When the code is trying to take an absolute value, but the called 574 abs() variant is for the wrong type, which can lead to truncation. 575 If you want to disable the warning instead of fixing the code, please 576 make sure that truncation will not occur, or it might lead to unwanted 577 side-effects. 578 579 -Wtautological-undefined-compare and 580 -Wundefined-bool-conversion 581 582 These warn when C++ code is trying to compare 'this' against NULL, while 583 'this' should never be NULL in well-defined C++ code. However, there is 584 some legacy (pre C++11) code out there, which actively abuses this 585 feature, which was less strictly defined in previous C++ versions. 586 587 Squid and openjdk do this, for example. The warning can be turned off 588 for C++98 and earlier, but compiling the code in C++11 mode might result 589 in unexpected behavior; for example, the parts of the program that are 590 unreachable could be optimized away. 591 59220141222: 593 The old NFS client and server (kernel options NFSCLIENT, NFSSERVER) 594 kernel sources have been removed. The .h files remain, since some 595 utilities include them. This will need to be fixed later. 596 If "mount -t oldnfs ..." is attempted, it will fail. 597 If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used, 598 the utilities will report errors. 599 60020141121: 601 The handling of LOCAL_LIB_DIRS has been altered to skip addition of 602 directories to top level SUBDIR variable when their parent 603 directory is included in LOCAL_DIRS. Users with build systems with 604 such hierarchies and without SUBDIR entries in the parent 605 directory Makefiles should add them or add the directories to 606 LOCAL_DIRS. 607 60820141109: 609 faith(4) and faithd(8) have been removed from the base system. Faith 610 has been obsolete for a very long time. 611 61220141104: 613 vt(4), the new console driver, is enabled by default. It brings 614 support for Unicode and double-width characters, as well as 615 support for UEFI and integration with the KMS kernel video 616 drivers. 617 618 You may need to update your console settings in /etc/rc.conf, 619 most probably the keymap. During boot, /etc/rc.d/syscons will 620 indicate what you need to do. 621 622 vt(4) still has issues and lacks some features compared to 623 syscons(4). See the wiki for up-to-date information: 624 https://wiki.freebsd.org/Newcons 625 626 If you want to keep using syscons(4), you can do so by adding 627 the following line to /boot/loader.conf: 628 kern.vty=sc 629 63020141102: 631 pjdfstest has been integrated into kyua as an opt-in test suite. 632 Please see share/doc/pjdfstest/README for more details on how to 633 execute it. 634 63520141009: 636 gperf has been removed from the base system for architectures 637 that use clang. Ports that require gperf will obtain it from the 638 devel/gperf port. 639 64020140923: 641 pjdfstest has been moved from tools/regression/pjdfstest to 642 contrib/pjdfstest . 643 64420140922: 645 At svn r271982, The default linux compat kernel ABI has been adjusted 646 to 2.6.18 in support of the linux-c6 compat ports infrastructure 647 update. If you wish to continue using the linux-f10 compat ports, 648 add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are 649 encouraged to update their linux-compat packages to linux-c6 during 650 their next update cycle. 651 65220140729: 653 The ofwfb driver, used to provide a graphics console on PowerPC when 654 using vt(4), no longer allows mmap() of all physical memory. This 655 will prevent Xorg on PowerPC with some ATI graphics cards from 656 initializing properly unless x11-servers/xorg-server is updated to 657 1.12.4_8 or newer. 658 65920140723: 660 The xdev targets have been converted to using TARGET and 661 TARGET_ARCH instead of XDEV and XDEV_ARCH. 662 66320140719: 664 The default unbound configuration has been modified to address 665 issues with reverse lookups on networks that use private 666 address ranges. If you use the local_unbound service, run 667 "service local_unbound setup" as root to regenerate your 668 configuration, then "service local_unbound reload" to load the 669 new configuration. 670 67120140709: 672 The GNU texinfo and GNU info pages are not built and installed 673 anymore, WITH_INFO knob has been added to allow to built and install 674 them again. 675 UPDATE: see 20150102 entry on texinfo's removal 676 67720140708: 678 The GNU readline library is now an INTERNALLIB - that is, it is 679 statically linked into consumers (GDB and variants) in the base 680 system, and the shared library is no longer installed. The 681 devel/readline port is available for third party software that 682 requires readline. 683 68420140702: 685 The Itanium architecture (ia64) has been removed from the list of 686 known architectures. This is the first step in the removal of the 687 architecture. 688 68920140701: 690 Commit r268115 has added NFSv4.1 server support, merged from 691 projects/nfsv4.1-server. Since this includes changes to the 692 internal interfaces between the NFS related modules, a full 693 build of the kernel and modules will be necessary. 694 __FreeBSD_version has been bumped. 695 69620140629: 697 The WITHOUT_VT_SUPPORT kernel config knob has been renamed 698 WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning 699 which differs from the behaviour controlled by this knob.) 700 70120140619: 702 Maximal length of the serial number in CTL was increased from 16 to 703 64 chars, that breaks ABI. All CTL-related tools, such as ctladm 704 and ctld, need to be rebuilt to work with a new kernel. 705 70620140606: 707 The libatf-c and libatf-c++ major versions were downgraded to 0 and 708 1 respectively to match the upstream numbers. They were out of 709 sync because, when they were originally added to FreeBSD, the 710 upstream versions were not respected. These libraries are private 711 and not yet built by default, so renumbering them should be a 712 non-issue. However, unclean source trees will yield broken test 713 programs once the operator executes "make delete-old-libs" after a 714 "make installworld". 715 716 Additionally, the atf-sh binary was made private by moving it into 717 /usr/libexec/. Already-built shell test programs will keep the 718 path to the old binary so they will break after "make delete-old" 719 is run. 720 721 If you are using WITH_TESTS=yes (not the default), wipe the object 722 tree and rebuild from scratch to prevent spurious test failures. 723 This is only needed once: the misnumbered libraries and misplaced 724 binaries have been added to OptionalObsoleteFiles.inc so they will 725 be removed during a clean upgrade. 726 72720140512: 728 Clang and llvm have been upgraded to 3.4.1 release. 729 73020140508: 731 We bogusly installed src.opts.mk in /usr/share/mk. This file should 732 be removed to avoid issues in the future (and has been added to 733 ObsoleteFiles.inc). 734 73520140505: 736 /etc/src.conf now affects only builds of the FreeBSD src tree. In the 737 past, it affected all builds that used the bsd.*.mk files. The old 738 behavior was a bug, but people may have relied upon it. To get this 739 behavior back, you can .include /etc/src.conf from /etc/make.conf 740 (which is still global and isn't changed). This also changes the 741 behavior of incremental builds inside the tree of individual 742 directories. Set MAKESYSPATH to ".../share/mk" to do that. 743 Although this has survived make universe and some upgrade scenarios, 744 other upgrade scenarios may have broken. At least one form of 745 temporary breakage was fixed with MAKESYSPATH settings for buildworld 746 as well... In cases where MAKESYSPATH isn't working with this 747 setting, you'll need to set it to the full path to your tree. 748 749 One side effect of all this cleaning up is that bsd.compiler.mk 750 is no longer implicitly included by bsd.own.mk. If you wish to 751 use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk 752 as well. 753 75420140430: 755 The lindev device has been removed since /dev/full has been made a 756 standard device. __FreeBSD_version has been bumped. 757 75820140424: 759 The knob WITHOUT_VI was added to the base system, which controls 760 building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1) 761 in order to reorder files share/termcap and didn't build ex(1) as a 762 build tool, so building/installing with WITH_VI is highly advised for 763 build hosts for older releases. 764 765 This issue has been fixed in stable/9 and stable/10 in r277022 and 766 r276991, respectively. 767 76820140418: 769 The YES_HESIOD knob has been removed. It has been obsolete for 770 a decade. Please move to using WITH_HESIOD instead or your builds 771 will silently lack HESIOD. 772 77320140405: 774 The uart(4) driver has been changed with respect to its handling 775 of the low-level console. Previously the uart(4) driver prevented 776 any process from changing the baudrate or the CLOCAL and HUPCL 777 control flags. By removing the restrictions, operators can make 778 changes to the serial console port without having to reboot. 779 However, when getty(8) is started on the serial device that is 780 associated with the low-level console, a misconfigured terminal 781 line in /etc/ttys will now have a real impact. 782 Before upgrading the kernel, make sure that /etc/ttys has the 783 serial console device configured as 3wire without baudrate to 784 preserve the previous behaviour. E.g: 785 ttyu0 "/usr/libexec/getty 3wire" vt100 on secure 786 78720140306: 788 Support for libwrap (TCP wrappers) in rpcbind was disabled by default 789 to improve performance. To re-enable it, if needed, run rpcbind 790 with command line option -W. 791 79220140226: 793 Switched back to the GPL dtc compiler due to updates in the upstream 794 dts files not being supported by the BSDL dtc compiler. You will need 795 to rebuild your kernel toolchain to pick up the new compiler. Core dumps 796 may result while building dtb files during a kernel build if you fail 797 to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler. 798 79920140216: 800 Clang and llvm have been upgraded to 3.4 release. 801 80220140216: 803 The nve(4) driver has been removed. Please use the nfe(4) driver 804 for NVIDIA nForce MCP Ethernet adapters instead. 805 80620140212: 807 An ABI incompatibility crept into the libc++ 3.4 import in r261283. 808 This could cause certain C++ applications using shared libraries built 809 against the previous version of libc++ to crash. The incompatibility 810 has now been fixed, but any C++ applications or shared libraries built 811 between r261283 and r261801 should be recompiled. 812 81320140204: 814 OpenSSH will now ignore errors caused by kernel lacking of Capsicum 815 capability mode support. Please note that enabling the feature in 816 kernel is still highly recommended. 817 81820140131: 819 OpenSSH is now built with sandbox support, and will use sandbox as 820 the default privilege separation method. This requires Capsicum 821 capability mode support in kernel. 822 82320140128: 824 The libelf and libdwarf libraries have been updated to newer 825 versions from upstream. Shared library version numbers for 826 these two libraries were bumped. Any ports or binaries 827 requiring these two libraries should be recompiled. 828 __FreeBSD_version is bumped to 1100006. 829 83020140110: 831 If a Makefile in a tests/ directory was auto-generating a Kyuafile 832 instead of providing an explicit one, this would prevent such 833 Makefile from providing its own Kyuafile in the future during 834 NO_CLEAN builds. This has been fixed in the Makefiles but manual 835 intervention is needed to clean an objdir if you use NO_CLEAN: 836 # find /usr/obj -name Kyuafile | xargs rm -f 837 83820131213: 839 The behavior of gss_pseudo_random() for the krb5 mechanism 840 has changed, for applications requesting a longer random string 841 than produced by the underlying enctype's pseudo-random() function. 842 In particular, the random string produced from a session key of 843 enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will 844 be different at the 17th octet and later, after this change. 845 The counter used in the PRF+ construction is now encoded as a 846 big-endian integer in accordance with RFC 4402. 847 __FreeBSD_version is bumped to 1100004. 848 84920131108: 850 The WITHOUT_ATF build knob has been removed and its functionality 851 has been subsumed into the more generic WITHOUT_TESTS. If you were 852 using the former to disable the build of the ATF libraries, you 853 should change your settings to use the latter. 854 85520131025: 856 The default version of mtree is nmtree which is obtained from 857 NetBSD. The output is generally the same, but may vary 858 slightly. If you found you need identical output adding 859 "-F freebsd9" to the command line should do the trick. For the 860 time being, the old mtree is available as fmtree. 861 86220131014: 863 libbsdyml has been renamed to libyaml and moved to /usr/lib/private. 864 This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg 865 1.1.4_8 and verify bsdyml not linked in, before running "make 866 delete-old-libs": 867 # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean 868 or 869 # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml 870 87120131010: 872 The stable/10 branch has been created in subversion from head 873 revision r256279. 874 87520131010: 876 The rc.d/jail script has been updated to support jail(8) 877 configuration file. The "jail_<jname>_*" rc.conf(5) variables 878 for per-jail configuration are automatically converted to 879 /var/run/jail.<jname>.conf before the jail(8) utility is invoked. 880 This is transparently backward compatible. See below about some 881 incompatibilities and rc.conf(5) manual page for more details. 882 883 These variables are now deprecated in favor of jail(8) configuration 884 file. One can use "rc.d/jail config <jname>" command to generate 885 a jail(8) configuration file in /var/run/jail.<jname>.conf without 886 running the jail(8) utility. The default pathname of the 887 configuration file is /etc/jail.conf and can be specified by 888 using $jail_conf or $jail_<jname>_conf variables. 889 890 Please note that jail_devfs_ruleset accepts an integer at 891 this moment. Please consider to rewrite the ruleset name 892 with an integer. 893 89420130930: 895 BIND has been removed from the base system. If all you need 896 is a local resolver, simply enable and start the local_unbound 897 service instead. Otherwise, several versions of BIND are 898 available in the ports tree. The dns/bind99 port is one example. 899 900 With this change, nslookup(1) and dig(1) are no longer in the base 901 system. Users should instead use host(1) and drill(1) which are 902 in the base system. Alternatively, nslookup and dig can 903 be obtained by installing the dns/bind-tools port. 904 90520130916: 906 With the addition of unbound(8), a new unbound user is now 907 required during installworld. "mergemaster -p" can be used to 908 add the user prior to installworld, as documented in the handbook. 909 91020130911: 911 OpenSSH is now built with DNSSEC support, and will by default 912 silently trust signed SSHFP records. This can be controlled with 913 the VerifyHostKeyDNS client configuration setting. DNSSEC support 914 can be disabled entirely with the WITHOUT_LDNS option in src.conf. 915 91620130906: 917 The GNU Compiler Collection and C++ standard library (libstdc++) 918 are no longer built by default on platforms where clang is the system 919 compiler. You can enable them with the WITH_GCC and WITH_GNUCXX 920 options in src.conf. 921 92220130905: 923 The PROCDESC kernel option is now part of the GENERIC kernel 924 configuration and is required for the rwhod(8) to work. 925 If you are using custom kernel configuration, you should include 926 'options PROCDESC'. 927 92820130905: 929 The API and ABI related to the Capsicum framework was modified 930 in backward incompatible way. The userland libraries and programs 931 have to be recompiled to work with the new kernel. This includes the 932 following libraries and programs, but the whole buildworld is 933 advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl, 934 kdump, procstat, rwho, rwhod, uniq. 935 93620130903: 937 AES-NI intrinsic support has been added to gcc. The AES-NI module 938 has been updated to use this support. A new gcc is required to build 939 the aesni module on both i386 and amd64. 940 94120130821: 942 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. 943 Thus "device padlock_rng" and "device rdrand_rng" should be 944 used instead of "options PADLOCK_RNG" & "options RDRAND_RNG". 945 94620130813: 947 WITH_ICONV has been split into two feature sets. WITH_ICONV now 948 enables just the iconv* functionality and is now on by default. 949 WITH_LIBICONV_COMPAT enables the libiconv api and link time 950 compatibility. Set WITHOUT_ICONV to build the old way. 951 If you have been using WITH_ICONV before, you will very likely 952 need to turn on WITH_LIBICONV_COMPAT. 953 95420130806: 955 INVARIANTS option now enables DEBUG for code with OpenSolaris and 956 Illumos origin, including ZFS. If you have INVARIANTS in your 957 kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG 958 explicitly. 959 DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS) 960 locks if WITNESS option was set. Because that generated a lot of 961 witness(9) reports and all of them were believed to be false 962 positives, this is no longer done. New option OPENSOLARIS_WITNESS 963 can be used to achieve the previous behavior. 964 96520130806: 966 Timer values in IPv6 data structures now use time_uptime instead 967 of time_second. Although this is not a user-visible functional 968 change, userland utilities which directly use them---ndp(8), 969 rtadvd(8), and rtsold(8) in the base system---need to be updated 970 to r253970 or later. 971 97220130802: 973 find -delete can now delete the pathnames given as arguments, 974 instead of only files found below them or if the pathname did 975 not contain any slashes. Formerly, the following error message 976 would result: 977 978 find: -delete: <path>: relative path potentially not safe 979 980 Deleting the pathnames given as arguments can be prevented 981 without error messages using -mindepth 1 or by changing 982 directory and passing "." as argument to find. This works in the 983 old as well as the new version of find. 984 98520130726: 986 Behavior of devfs rules path matching has been changed. 987 Pattern is now always matched against fully qualified devfs 988 path and slash characters must be explicitly matched by 989 slashes in pattern (FNM_PATHNAME). Rulesets involving devfs 990 subdirectories must be reviewed. 991 99220130716: 993 The default ARM ABI has changed to the ARM EABI. The old ABI is 994 incompatible with the ARM EABI and all programs and modules will 995 need to be rebuilt to work with a new kernel. 996 997 To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set. 998 999 NOTE: Support for the old ABI will be removed in the future and 1000 users are advised to upgrade. 1001 100220130709: 1003 pkg_install has been disconnected from the build if you really need it 1004 you should add WITH_PKGTOOLS in your src.conf(5). 1005 100620130709: 1007 Most of network statistics structures were changed to be able 1008 keep 64-bits counters. Thus all tools, that work with networking 1009 statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.) 1010 101120130618: 1012 Fix a bug that allowed a tracing process (e.g. gdb) to write 1013 to a memory-mapped file in the traced process's address space 1014 even if neither the traced process nor the tracing process had 1015 write access to that file. 1016 101720130615: 1018 CVS has been removed from the base system. An exact copy 1019 of the code is available from the devel/cvs port. 1020 102120130613: 1022 Some people report the following error after the switch to bmake: 1023 1024 make: illegal option -- J 1025 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable] 1026 ... 1027 *** [buildworld] Error code 2 1028 1029 this likely due to an old instance of make in 1030 ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}) 1031 which src/Makefile will use that blindly, if it exists, so if 1032 you see the above error: 1033 1034 rm -rf `make -V MAKEPATH` 1035 1036 should resolve it. 1037 103820130516: 1039 Use bmake by default. 1040 Whereas before one could choose to build with bmake via 1041 -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old 1042 make. The goal is to remove these knobs for 10-RELEASE. 1043 1044 It is worth noting that bmake (like gmake) treats the command 1045 line as the unit of failure, rather than statements within the 1046 command line. Thus '(cd some/where && dosomething)' is safer 1047 than 'cd some/where; dosomething'. The '()' allows consistent 1048 behavior in parallel build. 1049 105020130429: 1051 Fix a bug that allows NFS clients to issue READDIR on files. 1052 105320130426: 1054 The WITHOUT_IDEA option has been removed because 1055 the IDEA patent expired. 1056 105720130426: 1058 The sysctl which controls TRIM support under ZFS has been renamed 1059 from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been 1060 enabled by default. 1061 106220130425: 1063 The mergemaster command now uses the default MAKEOBJDIRPREFIX 1064 rather than creating it's own in the temporary directory in 1065 order allow access to bootstrapped versions of tools such as 1066 install and mtree. When upgrading from version of FreeBSD where 1067 the install command does not support -l, you will need to 1068 install a new mergemaster command if mergemaster -p is required. 1069 This can be accomplished with the command (cd src/usr.sbin/mergemaster 1070 && make install). 1071 107220130404: 1073 Legacy ATA stack, disabled and replaced by new CAM-based one since 1074 FreeBSD 9.0, completely removed from the sources. Kernel modules 1075 atadisk and atapi*, user-level tools atacontrol and burncd are 1076 removed. Kernel option `options ATA_CAM` is now permanently enabled 1077 and removed. 1078 107920130319: 1080 SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2) 1081 and socketpair(2). Software, in particular Kerberos, may 1082 automatically detect and use these during building. The resulting 1083 binaries will not work on older kernels. 1084 108520130308: 1086 CTL_DISABLE has also been added to the sparc64 GENERIC (for further 1087 information, see the respective 20130304 entry). 1088 108920130304: 1090 Recent commits to callout(9) changed the size of struct callout, 1091 so the KBI is probably heavily disturbed. Also, some functions 1092 in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced 1093 by macros. Every kernel module using it won't load, so rebuild 1094 is requested. 1095 1096 The ctl device has been re-enabled in GENERIC for i386 and amd64, 1097 but does not initialize by default (because of the new CTL_DISABLE 1098 option) to save memory. To re-enable it, remove the CTL_DISABLE 1099 option from the kernel config file or set kern.cam.ctl.disable=0 1100 in /boot/loader.conf. 1101 110220130301: 1103 The ctl device has been disabled in GENERIC for i386 and amd64. 1104 This was done due to the extra memory being allocated at system 1105 initialisation time by the ctl driver which was only used if 1106 a CAM target device was created. This makes a FreeBSD system 1107 unusable on 128MB or less of RAM. 1108 110920130208: 1110 A new compression method (lz4) has been merged to -HEAD. Please 1111 refer to zpool-features(7) for more information. 1112 1113 Please refer to the "ZFS notes" section of this file for information 1114 on upgrading boot ZFS pools. 1115 111620130129: 1117 A BSD-licensed patch(1) variant has been added and is installed 1118 as bsdpatch, being the GNU version the default patch. 1119 To inverse the logic and use the BSD-licensed one as default, 1120 while having the GNU version installed as gnupatch, rebuild 1121 and install world with the WITH_BSD_PATCH knob set. 1122 112320130121: 1124 Due to the use of the new -l option to install(1) during build 1125 and install, you must take care not to directly set the INSTALL 1126 make variable in your /etc/make.conf, /etc/src.conf, or on the 1127 command line. If you wish to use the -C flag for all installs 1128 you may be able to add INSTALL+=-C to /etc/make.conf or 1129 /etc/src.conf. 1130 113120130118: 1132 The install(1) option -M has changed meaning and now takes an 1133 argument that is a file or path to append logs to. In the 1134 unlikely event that -M was the last option on the command line 1135 and the command line contained at least two files and a target 1136 directory the first file will have logs appended to it. The -M 1137 option served little practical purpose in the last decade so its 1138 use is expected to be extremely rare. 1139 114020121223: 1141 After switching to Clang as the default compiler some users of ZFS 1142 on i386 systems started to experience stack overflow kernel panics. 1143 Please consider using 'options KSTACK_PAGES=4' in such configurations. 1144 114520121222: 1146 GEOM_LABEL now mangles label names read from file system metadata. 1147 Mangling affect labels containing spaces, non-printable characters, 1148 '%' or '"'. Device names in /etc/fstab and other places may need to 1149 be updated. 1150 115120121217: 1152 By default, only the 10 most recent kernel dumps will be saved. To 1153 restore the previous behaviour (no limit on the number of kernel dumps 1154 stored in the dump directory) add the following line to /etc/rc.conf: 1155 1156 savecore_flags="" 1157 115820121201: 1159 With the addition of auditdistd(8), a new auditdistd user is now 1160 required during installworld. "mergemaster -p" can be used to 1161 add the user prior to installworld, as documented in the handbook. 1162 116320121117: 1164 The sin6_scope_id member variable in struct sockaddr_in6 is now 1165 filled by the kernel before passing the structure to the userland via 1166 sysctl or routing socket. This means the KAME-specific embedded scope 1167 id in sin6_addr.s6_addr[2] is always cleared in userland application. 1168 This behavior can be controlled by net.inet6.ip6.deembed_scopeid. 1169 __FreeBSD_version is bumped to 1000025. 1170 117120121105: 1172 On i386 and amd64 systems WITH_CLANG_IS_CC is now the default. 1173 This means that the world and kernel will be compiled with clang 1174 and that clang will be installed as /usr/bin/cc, /usr/bin/c++, 1175 and /usr/bin/cpp. To disable this behavior and revert to building 1176 with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions 1177 of current may need to bootstrap WITHOUT_CLANG first if the clang 1178 build fails (its compatibility window doesn't extend to the 9 stable 1179 branch point). 1180 118120121102: 1182 The IPFIREWALL_FORWARD kernel option has been removed. Its 1183 functionality now turned on by default. 1184 118520121023: 1186 The ZERO_COPY_SOCKET kernel option has been removed and 1187 split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP. 1188 NB: SOCKET_SEND_COW uses the VM page based copy-on-write 1189 mechanism which is not safe and may result in kernel crashes. 1190 NB: The SOCKET_RECV_PFLIP mechanism is useless as no current 1191 driver supports disposeable external page sized mbuf storage. 1192 Proper replacements for both zero-copy mechanisms are under 1193 consideration and will eventually lead to complete removal 1194 of the two kernel options. 1195 119620121023: 1197 The IPv4 network stack has been converted to network byte 1198 order. The following modules need to be recompiled together 1199 with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4), 1200 pf(4), ipfw(4), ng_ipfw(4), stf(4). 1201 120220121022: 1203 Support for non-MPSAFE filesystems was removed from VFS. The 1204 VFS_VERSION was bumped, all filesystem modules shall be 1205 recompiled. 1206 120720121018: 1208 All the non-MPSAFE filesystems have been disconnected from 1209 the build. The full list includes: codafs, hpfs, ntfs, nwfs, 1210 portalfs, smbfs, xfs. 1211 121220121016: 1213 The interface cloning API and ABI has changed. The following 1214 modules need to be recompiled together with kernel: 1215 ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4), 1216 vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4), 1217 faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4). 1218 121920121015: 1220 The sdhci driver was split in two parts: sdhci (generic SD Host 1221 Controller logic) and sdhci_pci (actual hardware driver). 1222 No kernel config modifications are required, but if you 1223 load sdhc as a module you must switch to sdhci_pci instead. 1224 122520121014: 1226 Import the FUSE kernel and userland support into base system. 1227 122820121013: 1229 The GNU sort(1) program has been removed since the BSD-licensed 1230 sort(1) has been the default for quite some time and no serious 1231 problems have been reported. The corresponding WITH_GNU_SORT 1232 knob has also gone. 1233 123420121006: 1235 The pfil(9) API/ABI for AF_INET family has been changed. Packet 1236 filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled 1237 with new kernel. 1238 123920121001: 1240 The net80211(4) ABI has been changed to allow for improved driver 1241 PS-POLL and power-save support. All wireless drivers need to be 1242 recompiled to work with the new kernel. 1243 124420120913: 1245 The random(4) support for the VIA hardware random number 1246 generator (`PADLOCK') is no longer enabled unconditionally. 1247 Add the padlock_rng device in the custom kernel config if 1248 needed. The GENERIC kernels on i386 and amd64 do include the 1249 device, so the change only affects the custom kernel 1250 configurations. 1251 125220120908: 1253 The pf(4) packet filter ABI has been changed. pfctl(8) and 1254 snmp_pf module need to be recompiled to work with new kernel. 1255 125620120828: 1257 A new ZFS feature flag "com.delphix:empty_bpobj" has been merged 1258 to -HEAD. Pools that have empty_bpobj in active state can not be 1259 imported read-write with ZFS implementations that do not support 1260 this feature. For more information read the zpool-features(5) 1261 manual page. 1262 126320120727: 1264 The sparc64 ZFS loader has been changed to no longer try to auto- 1265 detect ZFS providers based on diskN aliases but now requires these 1266 to be explicitly listed in the OFW boot-device environment variable. 1267 126820120712: 1269 The OpenSSL has been upgraded to 1.0.1c. Any binaries requiring 1270 libcrypto.so.6 or libssl.so.6 must be recompiled. Also, there are 1271 configuration changes. Make sure to merge /etc/ssl/openssl.cnf. 1272 127320120712: 1274 The following sysctls and tunables have been renamed for consistency 1275 with other variables: 1276 kern.cam.da.da_send_ordered -> kern.cam.da.send_ordered 1277 kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered 1278 127920120628: 1280 The sort utility has been replaced with BSD sort. For now, GNU sort 1281 is also available as "gnusort" or the default can be set back to 1282 GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be 1283 installed as "bsdsort". 1284 128520120611: 1286 A new version of ZFS (pool version 5000) has been merged to -HEAD. 1287 Starting with this version the old system of ZFS pool versioning 1288 is superseded by "feature flags". This concept enables forward 1289 compatibility against certain future changes in functionality of ZFS 1290 pools. The first read-only compatible "feature flag" for ZFS pools 1291 is named "com.delphix:async_destroy". For more information 1292 read the new zpool-features(5) manual page. 1293 Please refer to the "ZFS notes" section of this file for information 1294 on upgrading boot ZFS pools. 1295 129620120417: 1297 The malloc(3) implementation embedded in libc now uses sources imported 1298 as contrib/jemalloc. The most disruptive API change is to 1299 /etc/malloc.conf. If your system has an old-style /etc/malloc.conf, 1300 delete it prior to installworld, and optionally re-create it using the 1301 new format after rebooting. See malloc.conf(5) for details 1302 (specifically the TUNING section and the "opt.*" entries in the MALLCTL 1303 NAMESPACE section). 1304 130520120328: 1306 Big-endian MIPS TARGET_ARCH values no longer end in "eb". mips64eb 1307 is now spelled mips64. mipsn32eb is now spelled mipsn32. mipseb is 1308 now spelled mips. This is to aid compatibility with third-party 1309 software that expects this naming scheme in uname(3). Little-endian 1310 settings are unchanged. If you are updating a big-endian mips64 machine 1311 from before this change, you may need to set MACHINE_ARCH=mips64 in 1312 your environment before the new build system will recognize your machine. 1313 131420120306: 1315 Disable by default the option VFS_ALLOW_NONMPSAFE for all supported 1316 platforms. 1317 131820120229: 1319 Now unix domain sockets behave "as expected" on nullfs(5). Previously 1320 nullfs(5) did not pass through all behaviours to the underlying layer, 1321 as a result if we bound to a socket on the lower layer we could connect 1322 only to the lower path; if we bound to the upper layer we could connect 1323 only to the upper path. The new behavior is one can connect to both the 1324 lower and the upper paths regardless what layer path one binds to. 1325 132620120211: 1327 The getifaddrs upgrade path broken with 20111215 has been restored. 1328 If you have upgraded in between 20111215 and 20120209 you need to 1329 recompile libc again with your kernel. You still need to recompile 1330 world to be able to configure CARP but this restriction already 1331 comes from 20111215. 1332 133320120114: 1334 The set_rcvar() function has been removed from /etc/rc.subr. All 1335 base and ports rc.d scripts have been updated, so if you have a 1336 port installed with a script in /usr/local/etc/rc.d you can either 1337 hand-edit the rcvar= line, or reinstall the port. 1338 1339 An easy way to handle the mass-update of /etc/rc.d: 1340 rm /etc/rc.d/* && mergemaster -i 1341 134220120109: 1343 panic(9) now stops other CPUs in the SMP systems, disables interrupts 1344 on the current CPU and prevents other threads from running. 1345 This behavior can be reverted using the kern.stop_scheduler_on_panic 1346 tunable/sysctl. 1347 The new behavior can be incompatible with kern.sync_on_panic. 1348 134920111215: 1350 The carp(4) facility has been changed significantly. Configuration 1351 of the CARP protocol via ifconfig(8) has changed, as well as format 1352 of CARP events submitted to devd(8) has changed. See manual pages 1353 for more information. The arpbalance feature of carp(4) is currently 1354 not supported anymore. 1355 1356 Size of struct in_aliasreq, struct in6_aliasreq has changed. User 1357 utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8), 1358 need to be recompiled. 1359 136020111122: 1361 The acpi_wmi(4) status device /dev/wmistat has been renamed to 1362 /dev/wmistat0. 1363 136420111108: 1365 The option VFS_ALLOW_NONMPSAFE option has been added in order to 1366 explicitely support non-MPSAFE filesystems. 1367 It is on by default for all supported platform at this present 1368 time. 1369 137020111101: 1371 The broken amd(4) driver has been replaced with esp(4) in the amd64, 1372 i386 and pc98 GENERIC kernel configuration files. 1373 137420110930: 1375 sysinstall has been removed 1376 137720110923: 1378 The stable/9 branch created in subversion. This corresponds to the 1379 RELENG_9 branch in CVS. 1380 1381COMMON ITEMS: 1382 1383 General Notes 1384 ------------- 1385 Avoid using make -j when upgrading. While generally safe, there are 1386 sometimes problems using -j to upgrade. If your upgrade fails with 1387 -j, please try again without -j. From time to time in the past there 1388 have been problems using -j with buildworld and/or installworld. This 1389 is especially true when upgrading between "distant" versions (eg one 1390 that cross a major release boundary or several minor releases, or when 1391 several months have passed on the -current branch). 1392 1393 Sometimes, obscure build problems are the result of environment 1394 poisoning. This can happen because the make utility reads its 1395 environment when searching for values for global variables. To run 1396 your build attempts in an "environmental clean room", prefix all make 1397 commands with 'env -i '. See the env(1) manual page for more details. 1398 1399 When upgrading from one major version to another it is generally best 1400 to upgrade to the latest code in the currently installed branch first, 1401 then do an upgrade to the new branch. This is the best-tested upgrade 1402 path, and has the highest probability of being successful. Please try 1403 this approach before reporting problems with a major version upgrade. 1404 1405 When upgrading a live system, having a root shell around before 1406 installing anything can help undo problems. Not having a root shell 1407 around can lead to problems if pam has changed too much from your 1408 starting point to allow continued authentication after the upgrade. 1409 1410 This file should be read as a log of events. When a later event changes 1411 information of a prior event, the prior event should not be deleted. 1412 Instead, a pointer to the entry with the new information should be 1413 placed in the old entry. Readers of this file should also sanity check 1414 older entries before relying on them blindly. Authors of new entries 1415 should write them with this in mind. 1416 1417 ZFS notes 1418 --------- 1419 When upgrading the boot ZFS pool to a new version, always follow 1420 these two steps: 1421 1422 1.) recompile and reinstall the ZFS boot loader and boot block 1423 (this is part of "make buildworld" and "make installworld") 1424 1425 2.) update the ZFS boot block on your boot drive 1426 1427 The following example updates the ZFS boot block on the first 1428 partition (freebsd-boot) of a GPT partitioned drive ada0: 1429 "gpart bootcode -p /boot/gptzfsboot -i 1 ada0" 1430 1431 Non-boot pools do not need these updates. 1432 1433 To build a kernel 1434 ----------------- 1435 If you are updating from a prior version of FreeBSD (even one just 1436 a few days old), you should follow this procedure. It is the most 1437 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1438 1439 make kernel-toolchain 1440 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1441 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1442 1443 To test a kernel once 1444 --------------------- 1445 If you just want to boot a kernel once (because you are not sure 1446 if it works, or if you want to boot a known bad kernel to provide 1447 debugging information) run 1448 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1449 nextboot -k testkernel 1450 1451 To just build a kernel when you know that it won't mess you up 1452 -------------------------------------------------------------- 1453 This assumes you are already running a CURRENT system. Replace 1454 ${arch} with the architecture of your machine (e.g. "i386", 1455 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1456 1457 cd src/sys/${arch}/conf 1458 config KERNEL_NAME_HERE 1459 cd ../compile/KERNEL_NAME_HERE 1460 make depend 1461 make 1462 make install 1463 1464 If this fails, go to the "To build a kernel" section. 1465 1466 To rebuild everything and install it on the current system. 1467 ----------------------------------------------------------- 1468 # Note: sometimes if you are running current you gotta do more than 1469 # is listed here if you are upgrading from a really old current. 1470 1471 <make sure you have good level 0 dumps> 1472 make buildworld 1473 make kernel KERNCONF=YOUR_KERNEL_HERE 1474 [1] 1475 <reboot in single user> [3] 1476 mergemaster -Fp [5] 1477 make installworld 1478 mergemaster -Fi [4] 1479 make delete-old [6] 1480 <reboot> 1481 1482 To cross-install current onto a separate partition 1483 -------------------------------------------------- 1484 # In this approach we use a separate partition to hold 1485 # current's root, 'usr', and 'var' directories. A partition 1486 # holding "/", "/usr" and "/var" should be about 2GB in 1487 # size. 1488 1489 <make sure you have good level 0 dumps> 1490 <boot into -stable> 1491 make buildworld 1492 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1493 <maybe newfs current's root partition> 1494 <mount current's root partition on directory ${CURRENT_ROOT}> 1495 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 1496 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1497 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1498 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1499 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1500 <reboot into current> 1501 <do a "native" rebuild/install as described in the previous section> 1502 <maybe install compatibility libraries from ports/misc/compat*> 1503 <reboot> 1504 1505 1506 To upgrade in-place from stable to current 1507 ---------------------------------------------- 1508 <make sure you have good level 0 dumps> 1509 make buildworld [9] 1510 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1511 [1] 1512 <reboot in single user> [3] 1513 mergemaster -Fp [5] 1514 make installworld 1515 mergemaster -Fi [4] 1516 make delete-old [6] 1517 <reboot> 1518 1519 Make sure that you've read the UPDATING file to understand the 1520 tweaks to various things you need. At this point in the life 1521 cycle of current, things change often and you are on your own 1522 to cope. The defaults can also change, so please read ALL of 1523 the UPDATING entries. 1524 1525 Also, if you are tracking -current, you must be subscribed to 1526 freebsd-current@freebsd.org. Make sure that before you update 1527 your sources that you have read and understood all the recent 1528 messages there. If in doubt, please track -stable which has 1529 much fewer pitfalls. 1530 1531 [1] If you have third party modules, such as vmware, you 1532 should disable them at this point so they don't crash your 1533 system on reboot. 1534 1535 [3] From the bootblocks, boot -s, and then do 1536 fsck -p 1537 mount -u / 1538 mount -a 1539 cd src 1540 adjkerntz -i # if CMOS is wall time 1541 Also, when doing a major release upgrade, it is required that 1542 you boot into single user mode to do the installworld. 1543 1544 [4] Note: This step is non-optional. Failure to do this step 1545 can result in a significant reduction in the functionality of the 1546 system. Attempting to do it by hand is not recommended and those 1547 that pursue this avenue should read this file carefully, as well 1548 as the archives of freebsd-current and freebsd-hackers mailing lists 1549 for potential gotchas. The -U option is also useful to consider. 1550 See mergemaster(8) for more information. 1551 1552 [5] Usually this step is a noop. However, from time to time 1553 you may need to do this if you get unknown user in the following 1554 step. It never hurts to do it all the time. You may need to 1555 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1556 install) after the buildworld before this step if you last updated 1557 from current before 20130425 or from -stable before 20130430. 1558 1559 [6] This only deletes old files and directories. Old libraries 1560 can be deleted by "make delete-old-libs", but you have to make 1561 sure that no program is using those libraries anymore. 1562 1563 [8] In order to have a kernel that can run the 4.x binaries needed to 1564 do an installworld, you must include the COMPAT_FREEBSD4 option in 1565 your kernel. Failure to do so may leave you with a system that is 1566 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1567 required to run the 5.x binaries on more recent kernels. And so on 1568 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1569 1570 Make sure that you merge any new devices from GENERIC since the 1571 last time you updated your kernel config file. 1572 1573 [9] When checking out sources, you must include the -P flag to have 1574 cvs prune empty directories. 1575 1576 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1577 "?=" instead of the "=" assignment operator, so that buildworld can 1578 override the CPUTYPE if it needs to. 1579 1580 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1581 not on the command line, or in /etc/make.conf. buildworld will 1582 warn if it is improperly defined. 1583FORMAT: 1584 1585This file contains a list, in reverse chronological order, of major 1586breakages in tracking -current. It is not guaranteed to be a complete 1587list of such breakages, and only contains entries since September 23, 2011. 1588If you need to see UPDATING entries from before that date, you will need 1589to fetch an UPDATING file from an older FreeBSD release. 1590 1591Copyright information: 1592 1593Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1594 1595Redistribution, publication, translation and use, with or without 1596modification, in full or in part, in any form or format of this 1597document are permitted without further permission from the author. 1598 1599THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1600IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1601WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1602DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1603INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1604(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1605SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1606HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1607STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1608IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1609POSSIBILITY OF SUCH DAMAGE. 1610 1611Contact Warner Losh if you have any questions about your use of 1612this document. 1613 1614$FreeBSD$ 1615