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