1 Updating 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 https://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 TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: 15 FreeBSD 13.x has many debugging features turned on, in both the kernel 16 and userland. These features attempt to detect incorrect use of 17 system primitives, and encourage loud failure through extra sanity 18 checking and fail stop semantics. They also substantially impact 19 system performance. If you want to do performance measurement, 20 benchmarking, and optimization, you'll want to turn them off. This 21 includes various WITNESS- related kernel options, INVARIANTS, malloc 22 debugging flags in userland, and various verbose features in the 23 kernel. Many developers choose to disable these features on build 24 machines to maximize performance. (To completely disable malloc 25 debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely 26 disable the most expensive debugging functionality run 27 "ln -s 'abort:false,junk:false' /etc/malloc.conf".) 28 2920191008: 30 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 31 been upgraded to 9.0.0. Please see the 20141231 entry below for 32 information about prerequisites and upgrading, if you are not already 33 using clang 3.5.0 or higher. 34 3520191003: 36 The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from 37 GENERIC. They are available as modules and can be loaded by adding 38 to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES", 39 hptnr_load="YES", or hptrr_load="YES", respectively. 40 4120190913: 42 ntpd no longer by default locks its pages in memory, allowing them 43 to be paged out by the kernel. Use rlimit memlock to restore 44 historic BSD behaviour. For example, add "rlimit memlock 32" 45 to ntp.conf to lock up to 32 MB of ntpd address space in memory. 46 4720190823: 48 Several of ping6's options have been renamed for better consistency 49 with ping. If you use any of -ARWXaghmrtwx, you must update your 50 scripts. See ping6(8) for details. 51 5220190727: 53 The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls 54 and the "-o sync_unmount" and "-o init_backgrounded" mount options have 55 been removed from mount_fusefs(8). You can safely remove them from 56 your scripts, because they had no effect. 57 58 The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize, 59 vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable, 60 vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate 61 sysctls have been removed. If you felt the need to set any of them to 62 a non-default value, please tell asomers@FreeBSD.org why. 63 6420190713: 65 Default permissions on the /var/account/acct file (and copies of it 66 rotated by periodic daily scripts) are changed from 0644 to 0640 67 because the file contains sensitive information that should not be 68 world-readable. If the /var/account directory must be created by 69 rc.d/accounting, the mode used is now 0750. Admins who use the 70 accounting feature are encouraged to change the mode of an existing 71 /var/account directory to 0750 or 0700. 72 7320190620: 74 Entropy collection and the /dev/random device are no longer optional 75 components. The "device random" option has been removed. 76 Implementations of distilling algorithms can still be made loadable 77 with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko). 78 7920190612: 80 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 81 been upgraded to 8.0.1. Please see the 20141231 entry below for 82 information about prerequisites and upgrading, if you are not already 83 using clang 3.5.0 or higher. 84 8520190608: 86 A fix was applied to i386 kernel modules to avoid panics with 87 dpcpu or vnet. Users need to recompile i386 kernel modules 88 having pcpu or vnet sections or they will refuse to load. 89 9020190513: 91 User-wired pages now have their own counter, 92 vm.stats.vm.v_user_wire_count. The vm.max_wired sysctl was renamed 93 to vm.max_user_wired and changed from an unsigned int to an unsigned 94 long. bhyve VMs wired with the -S are now subject to the user 95 wiring limit; the vm.max_user_wired sysctl may need to be tuned to 96 avoid running into the limit. 97 9820190507: 99 The IPSEC option has been removed from GENERIC. Users requiring 100 ipsec(4) must now load the ipsec(4) kernel module. 101 10220190507: 103 The tap(4) driver has been folded into tun(4), and the module has been 104 renamed to tuntap. You should update any kld_list="if_tap" or 105 kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or 106 if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap 107 module instead, and "device tap" or "device tun" entries in kernel 108 config files to select the tuntap device instead. 109 11020190418: 111 The following knobs have been added related to tradeoffs between 112 safe use of the random device and availability in the absence of 113 entropy: 114 115 kern.random.initial_seeding.bypass_before_seeding: tunable; set 116 non-zero to bypass the random device prior to seeding, or zero to 117 block random requests until the random device is initially seeded. 118 For now, set to 1 (unsafe) by default to restore pre-r346250 boot 119 availability properties. 120 121 kern.random.initial_seeding.read_random_bypassed_before_seeding: 122 read-only diagnostic sysctl that is set when bypass is enabled and 123 read_random(9) is bypassed, to enable programmatic handling of this 124 initial condition, if desired. 125 126 kern.random.initial_seeding.arc4random_bypassed_before_seeding: 127 Similar to the above, but for for arc4random(9) initial seeding. 128 129 kern.random.initial_seeding.disable_bypass_warnings: tunable; set 130 non-zero to disable warnings in dmesg when the same conditions are 131 met as for the diagnostic sysctls above. Defaults to zero, i.e., 132 produce warnings in dmesg when the conditions are met. 133 13420190416: 135 The loadable random module KPI has changed; the random_infra_init() 136 routine now requires a 3rd function pointer for a bool (*)(void) 137 method that returns true if the random device is seeded (and 138 therefore unblocked). 139 14020190404: 141 r345895 reverts r320698. This implies that an nfsuserd(8) daemon 142 built from head sources between r320757 (July 6, 2017) and 143 r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" 144 is added to the command line. 145 nfsuserd daemons built from head sources that are post-r338192 are 146 not affected and should continue to work. 147 14820190320: 149 The fuse(4) module has been renamed to fusefs(4) for consistency with 150 other filesystems. You should update any kld_load="fuse" entries in 151 /etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and 152 "options FUSE" entries in kernel config files. 153 15420190304: 155 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 156 8.0.0. Please see the 20141231 entry below for information about 157 prerequisites and upgrading, if you are not already using clang 3.5.0 158 or higher. 159 16020190226: 161 geom_uzip(4) depends on the new module xz. If geom_uzip is statically 162 compiled into your custom kernel, add 'device xz' statement to the 163 kernel config. 164 16520190219: 166 drm and drm2 have been removed from the tree. Please see 167 https://wiki.freebsd.org/Graphics for the latest information on 168 migrating to the drm ports. 169 17020190131: 171 Iflib is no longer unconditionally compiled into the kernel. Drivers 172 using iflib and statically compiled into the kernel, now require 173 the 'device iflib' config option. For the same drivers loaded as 174 modules on kernels not having 'device iflib', the iflib.ko module 175 is loaded automatically. 176 17720190125: 178 The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration 179 options no longer exist since r343219 and r343427 respectively; 180 nothing uses them, so they should be just removed from custom 181 kernel config files. 182 18320181230: 184 r342635 changes the way efibootmgr(8) works by requiring users to add 185 the -b (bootnum) parameter for commands where the bootnum was previously 186 specified with each option. For example 'efibootmgr -B 0001' is now 187 'efibootmgr -B -b 0001'. 188 18920181220: 190 r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport 191 in the same as it is applied to NFSv2 and 3. This implies that NFSv4 192 servers that have vfs.nfsd.nfs_privport set will only allow mounts 193 from clients using a reserved port#. Since both the FreeBSD and Linux 194 NFSv4 clients use reserved port#s by default, this should not affect 195 most NFSv4 mounts. 196 19720181219: 198 The XLP config has been removed. We can't support 64-bit atomics in this 199 kernel because it is running in 32-bit mode. XLP users must transition 200 to running a 64-bit kernel (XLP64 or XLPN32). 201 202 The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is 203 the preferred emulator today and we don't need two different ones. 204 205 The old sibyte / swarm / Broadcom BCM1250 support has been 206 removed from the mips port. 207 20820181211: 209 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 210 7.0.1. Please see the 20141231 entry below for information about 211 prerequisites and upgrading, if you are not already using clang 3.5.0 212 or higher. 213 21420181211: 215 Remove the timed and netdate programs from the base tree. Setting 216 the time with these daemons has been obsolete for over a decade. 217 21820181126: 219 On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld 220 linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as 221 it produces broken binaries when ifuncs are in use. Users needing 222 GNU ld should install the binutils port or package. 223 22420181123: 225 The BSD crtbegin and crtend code has been enabled by default. It has 226 had extensive testing on amd64, arm64, and i386. It can be disabled 227 by building a world with -DWITHOUT_BSD_CRTBEGIN. 228 22920181115: 230 The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue) 231 has been converted to a port (misc/ctm) and will be removed from 232 FreeBSD-13. It is available as a package (ctm) for all supported 233 FreeBSD versions. 234 23520181110: 236 The default newsyslog.conf(5) file has been changed to only include 237 files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if 238 the filenames end in '.conf' and do not begin with a '.'. 239 240 You should check the configuration files in these two directories match 241 this naming convention. You can verify which configuration files are 242 being included using the command: 243 $ newsyslog -Nrv 244 24520181015: 246 Ports for the DRM modules have been simplified. Now, amd64 users should 247 just install the drm-kmod port. All others should install 248 drm-legacy-kmod. 249 250 Graphics hardware that's newer than about 2010 usually works with 251 drm-kmod. For hardware older than 2013, however, some users will need 252 to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older 253 than 2008 usually only works in drm-legacy-kmod. The graphics team can 254 only commit to hardware made since 2013 due to the complexity of the 255 market and difficulty to test all the older cards effectively. If you 256 have hardware supported by drm-kmod, you are strongly encouraged to use 257 that as you will get better support. 258 259 Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined 260 elsewhere, the drm and drm2 modules will be eliminated from the src base 261 soon (with a limited exception for arm). Please update to the package 262 asap and report any issues to x11@freebsd.org. 263 264 Generally, anybody using the drm*-kmod packages should add 265 WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty 266 cross-threading surprises, especially with automatic driver 267 loading from X11 startup. These will become the defaults in 13-current 268 shortly. 269 27020181012: 271 The ixlv(4) driver has been renamed to iavf(4). As a consequence, 272 custom kernel and module loading configuration files must be updated 273 accordingly. Moreover, interfaces previous presented as ixlvN to the 274 system are now exposed as iavfN and network configuration files must 275 be adjusted as necessary. 276 27720181009: 278 OpenSSL has been updated to version 1.1.1. This update included 279 additional various API changes throughout the base system. It is 280 important to rebuild third-party software after upgrading. The value 281 of __FreeBSD_version has been bumped accordingly. 282 28320181006: 284 The legacy DRM modules and drivers have now been added to the loader's 285 module blacklist, in favor of loading them with kld_list in rc.conf(5). 286 The module blacklist may be overridden with the loader.conf(5) 287 'module_blacklist' variable, but loading them via rc.conf(5) is strongly 288 encouraged. 289 29020181002: 291 The cam(4) based nda(4) driver will be used over nvd(4) by default on 292 powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or 293 loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing 294 driver. Make sure to edit /boot/etc/kboot.conf and fstab to use the 295 nda device name. 296 29720180913: 298 Reproducible build mode is now on by default, in preparation for 299 FreeBSD 12.0. This eliminates build metadata such as the user, 300 host, and time from the kernel (and uname), unless the working tree 301 corresponds to a modified checkout from a version control system. 302 The previous behavior can be obtained by setting the /etc/src.conf 303 knob WITHOUT_REPRODUCIBLE_BUILD. 304 30520180826: 306 The Yarrow CSPRNG has been removed from the kernel as it has not been 307 supported by its designers since at least 2003. Fortuna has been the 308 default since FreeBSD-11. 309 31020180822: 311 devctl freeze/thaw have gone into the tree, the rc scripts have been 312 updated to use them and devmatch has been changed. You should update 313 kernel, userland and rc scripts all at the same time. 314 31520180818: 316 The default interpreter has been switched from 4th to Lua. 317 LOADER_DEFAULT_INTERP, documented in build(7), will override the default 318 interpreter. If you have custom FORTH code you will need to set 319 LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in 320 src.conf for the build. This will create default hard links between 321 loader and loader_4th instead of loader and loader_lua, the new default. 322 If you are using UEFI it will create the proper hard link to loader.efi. 323 324 bhyve uses userboot.so. It remains 4th-only until some issues are solved 325 regarding coexisting with multiple versions of FreeBSD are resolved. 326 32720180815: 328 ls(1) now respects the COLORTERM environment variable used in other 329 systems and software to indicate that a colored terminal is both 330 supported and desired. If ls(1) is suddenly emitting colors, they may 331 be disabled again by either removing the unwanted COLORTERM from your 332 environment, or using `ls --color=never`. The ls(1) specific CLICOLOR 333 may not be observed in a future release. 334 33520180808: 336 The default pager for most commands has been changed to "less". To 337 restore the old behavior, set PAGER="more" and MANPAGER="more -s" in 338 your environment. 339 34020180731: 341 The jedec_ts(4) driver has been removed. A superset of its functionality 342 is available in the jedec_dimm(4) driver, and the manpage for that 343 driver includes migration instructions. If you have "device jedec_ts" 344 in your kernel configuration file, it must be removed. 345 34620180730: 347 amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default. 348 This should have no effect if the kernel is booted via BIOS/legacy boot. 349 EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system 350 has a buggy firmware that prevents a successful boot due to use of 351 runtime services. 352 35320180727: 354 Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale 355 support has been removed from the tree. These ports were 356 obsolete and/or known to be broken for many years. 357 35820180723: 359 loader.efi has been augmented to participate more fully in the 360 UEFI boot manager protocol. loader.efi will now look at the 361 BootXXXX environment variable to determine if a specific kernel 362 or root partition was specified. XXXX is derived from BootCurrent. 363 efibootmgr(8) manages these standard UEFI variables. 364 36520180720: 366 zfsloader's functionality has now been folded into loader. 367 zfsloader is no longer necessary once you've updated your 368 boot blocks. For a transition period, we will install a 369 hardlink for zfsloader to loader to allow a smooth transition 370 until the boot blocks can be updated (hard link because old 371 zfs boot blocks don't understand symlinks). 372 37320180719: 374 ARM64 now have efifb support, if you want to have serial console 375 on your arm64 board when an screen is connected and the bootloader 376 setup a frame buffer for us to use, just add : 377 boot_serial=YES 378 boot_multicons=YES 379 in /boot/loader.conf 380 For Raspberry Pi 3 (RPI) users, this is needed even if you don't have 381 an screen connected as the firmware will setup a frame buffer are that 382 u-boot will expose as an EFI frame buffer. 383 38420180719: 385 New uid:gid added, ntpd:ntpd (123:123). Be sure to run mergemaster 386 or take steps to update /etc/passwd before doing installworld on 387 existing systems. Do not skip the "mergemaster -Fp" step before 388 installworld, as described in the update procedures near the bottom 389 of this document. Also, rc.d/ntpd now starts ntpd(8) as user ntpd 390 if the new mac_ntpd(4) policy is available, unless ntpd_flags or 391 the ntp config file contain options that change file/dir locations. 392 When such options (e.g., "statsdir" or "crypto") are used, ntpd can 393 still be run as non-root by setting ntpd_user=ntpd in rc.conf, after 394 taking steps to ensure that all required files/dirs are accessible 395 by the ntpd user. 396 39720180717: 398 Big endian arm support has been removed. 399 40020180711: 401 The static environment setup in kernel configs is no longer mutually 402 exclusive with the loader(8) environment by default. In order to 403 restore the previous default behavior of disabling the loader(8) 404 environment if a static environment is present, you must specify 405 loader_env.disabled=1 in the static environment. 406 40720180705: 408 The ABI of syscalls used by management tools like sockstat and 409 netstat has been broken to allow 32-bit binaries to work on 410 64-bit kernels without modification. These programs will need 411 to match the kernel in order to function. External programs may 412 require minor modifications to accommodate a change of type in 413 structures from pointers to 64-bit virtual addresses. 414 41520180702: 416 On i386 and amd64 atomics are now inlined. Out of tree modules using 417 atomics will need to be rebuilt. 418 41920180701: 420 The '%I' format in the kern.corefile sysctl limits the number of 421 core files that a process can generate to the number stored in the 422 debug.ncores sysctl. The '%I' format is replaced by the single digit 423 index. Previously, if all indexes were taken the kernel would overwrite 424 only a core file with the highest index in a filename. 425 Currently the system will create a new core file if there is a free 426 index or if all slots are taken it will overwrite the oldest one. 427 42820180630: 429 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 430 6.0.1. Please see the 20141231 entry below for information about 431 prerequisites and upgrading, if you are not already using clang 3.5.0 432 or higher. 433 43420180628: 435 r335753 introduced a new quoting method. However, etc/devd/devmatch.conf 436 needed to be changed to work with it. This change was made with r335763 437 and requires a mergemaster / etcupdate / etc to update the installed 438 file. 439 44020180612: 441 r334930 changed the interface between the NFS modules, so they all 442 need to be rebuilt. r335018 did a __FreeBSD_version bump for this. 443 44420180530: 445 As of r334391 lld is the default amd64 system linker; it is installed 446 as /usr/bin/ld. Kernel build workarounds (see 20180510 entry) are no 447 longer necessary. 448 44920180530: 450 The kernel / userland interface for devinfo changed, so you'll 451 need a new kernel and userland as a pair for it to work (rebuilding 452 lib/libdevinfo is all that's required). devinfo and devmatch will 453 not work, but everything else will when there's a mismatch. 454 45520180523: 456 The on-disk format for hwpmc callchain records has changed to include 457 threadid corresponding to a given record. This changes the field offsets 458 and thus requires that libpmcstat be rebuilt before using a kernel 459 later than r334108. 460 46120180517: 462 The vxge(4) driver has been removed. This driver was introduced into 463 HEAD one week before the Exar left the Ethernet market and is not 464 known to be used. If you have device vxge in your kernel config file 465 it must be removed. 466 46720180510: 468 The amd64 kernel now requires a ld that supports ifunc to produce a 469 working kernel, either lld or a newer binutils. lld is built by default 470 on amd64, and the 'buildkernel' target uses it automatically. However, 471 it is not the default linker, so building the kernel the traditional 472 way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for 473 binutils port/package). lld will soon be default, and this requirement 474 will go away. 475 476 NOTE: As of r334391 lld is the default system linker on amd64, and no 477 workaround is necessary. 478 47920180508: 480 The nxge(4) driver has been removed. This driver was for PCI-X 10g 481 cards made by s2io/Neterion. The company was acquired by Exar and 482 no longer sells or supports Ethernet products. If you have device 483 nxge in your kernel config file it must be removed. 484 48520180504: 486 The tz database (tzdb) has been updated to 2018e. This version more 487 correctly models time stamps in time zones with negative DST such as 488 Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and 489 Africa/Windhoek (1994/2017). This does not affect the UT offsets, only 490 time zone abbreviations and the tm_isdst flag. 491 49220180502: 493 The ixgb(4) driver has been removed. This driver was for an early and 494 uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel 495 quickly shifted to the long lived ixgbe family. If you have device 496 ixgb in your kernel config file it must be removed. 497 49820180501: 499 The lmc(4) driver has been removed. This was a WAN interface 500 card that was already reportedly rare in 2003, and had an ambiguous 501 license. If you have device lmc in your kernel config file it must 502 be removed. 503 50420180413: 505 Support for Arcnet networks has been removed. If you have device 506 arcnet or device cm in your kernel config file they must be 507 removed. 508 50920180411: 510 Support for FDDI networks has been removed. If you have device 511 fddi or device fpa in your kernel config file they must be 512 removed. 513 51420180406: 515 In addition to supporting RFC 3164 formatted messages, the 516 syslogd(8) service is now capable of parsing RFC 5424 formatted 517 log messages. The main benefit of using RFC 5424 is that clients 518 may now send log messages with timestamps containing year numbers, 519 microseconds and time zone offsets. 520 521 Similarly, the syslog(3) C library function has been altered to 522 send RFC 5424 formatted messages to the local system logging 523 daemon. On systems using syslogd(8), this change should have no 524 negative impact, as long as syslogd(8) and the C library are 525 updated at the same time. On systems using a different system 526 logging daemon, it may be necessary to make configuration 527 adjustments, depending on the software used. 528 529 When using syslog-ng, add the 'syslog-protocol' flag to local 530 input sources to enable parsing of RFC 5424 formatted messages: 531 532 source src { 533 unix-dgram("/var/run/log" flags(syslog-protocol)); 534 } 535 536 When using rsyslog, disable the 'SysSock.UseSpecialParser' option 537 of the 'imuxsock' module to let messages be processed by the 538 regular RFC 3164/5424 parsing pipeline: 539 540 module(load="imuxsock" SysSock.UseSpecialParser="off") 541 542 Do note that these changes only affect communication between local 543 applications and syslogd(8). The format that syslogd(8) uses to 544 store messages on disk or forward messages to other systems 545 remains unchanged. syslogd(8) still uses RFC 3164 for these 546 purposes. Options to customize this behaviour will be added in the 547 future. Utilities that process log files stored in /var/log are 548 thus expected to continue to function as before. 549 550 __FreeBSD_version has been incremented to 1200061 to denote this 551 change. 552 55320180328: 554 Support for token ring networks has been removed. If you 555 have "device token" in your kernel config you should remove 556 it. No device drivers supported token ring. 557 55820180323: 559 makefs was modified to be able to tag ISO9660 El Torito boot catalog 560 entries as EFI instead of overloading the i386 tag as done previously. 561 The amd64 mkisoimages.sh script used to build amd64 ISO images for 562 release was updated to use this. This may mean that makefs must be 563 updated before "make cdrom" can be run in the release directory. This 564 should be as simple as: 565 566 $ cd $SRCDIR/usr.sbin/makefs 567 $ make depend all install 568 56920180212: 570 FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for 571 now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf. 572 Co-existence for the transition period will come shortly. Booting is a 573 complex environment and test coverage for Lua-enabled loaders has been 574 thin, so it would be prudent to assume it might not work and make 575 provisions for backup boot methods. 576 57720180211: 578 devmatch functionality has been turned on in devd. It will automatically 579 load drivers for unattached devices. This may cause unexpected drivers 580 to be loaded. Please report any problems to current@ and 581 imp@freebsd.org. 582 58320180114: 584 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 585 6.0.0. Please see the 20141231 entry below for information about 586 prerequisites and upgrading, if you are not already using clang 3.5.0 587 or higher. 588 58920180110: 590 LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker. 591 This means it is used to link the kernel and userland libraries and 592 executables, but is not yet installed as /usr/bin/ld by default. 593 594 To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set 595 WITHOUT_LLD_BOOTSTRAP=yes 596 59720180110: 598 On i386, pmtimer has been removed. Its functionality has been folded 599 into apm. It was a no-op on ACPI in current for a while now (but was 600 still needed on i386 in FreeBSD 11 and earlier). Users may need to 601 remove it from kernel config files. 602 60320180104: 604 The use of RSS hash from the network card aka flowid has been 605 disabled by default for lagg(4) as it's currently incompatible with 606 the lacp and loadbalance protocols. 607 608 This can be re-enabled by setting the following in loader.conf: 609 net.link.lagg.default_use_flowid="1" 610 61120180102: 612 The SW_WATCHDOG option is no longer necessary to enable the 613 hardclock-based software watchdog if no hardware watchdog is 614 configured. As before, SW_WATCHDOG will cause the software 615 watchdog to be enabled even if a hardware watchdog is configured. 616 61720171215: 618 r326887 fixes the issue described in the 20171214 UPDATING entry. 619 r326888 flips the switch back to building GELI support always. 620 62120171214: 622 r362593 broke ZFS + GELI support for reasons unknown. However, 623 it also broke ZFS support generally, so GELI has been turned off 624 by default as the lesser evil in r326857. If you boot off ZFS and/or 625 GELI, it might not be a good time to update. 626 62720171125: 628 PowerPC users must update loader(8) by rebuilding world before 629 installing a new kernel, as the protocol connecting them has 630 changed. Without the update, loader metadata will not be passed 631 successfully to the kernel and users will have to enter their 632 root partition at the kernel mountroot prompt to continue booting. 633 Newer versions of loader can boot old kernels without issue. 634 63520171110: 636 The LOADER_FIREWIRE_SUPPORT build variable as been renamed to 637 WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed 638 to WITH/OUT_LOADER_GELI. 639 64020171106: 641 The naive and non-compliant support of posix_fallocate(2) in ZFS 642 has been removed as of r325320. The system call now returns EINVAL 643 when used on a ZFS file. Although the new behavior complies with the 644 standard, some consumers are not prepared to cope with it. 645 One known victim is lld prior to r325420. 646 64720171102: 648 Building in a FreeBSD src checkout will automatically create object 649 directories now rather than store files in the current directory if 650 'make obj' was not ran. Calling 'make obj' is no longer necessary. 651 This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in 652 /etc/src-env.conf (not /etc/src.conf), or passing the option in the 653 environment. 654 65520171101: 656 The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native 657 builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified 658 /usr/obj/<srcdir>/<arch>. This behavior can be changed to the old 659 format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf, 660 the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building. 661 The UNIFIED_OBJDIR option is a transitional feature that will be 662 removed for 12.0 release; please migrate to the new format for any 663 tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather 664 than hardcoding paths. 665 66620171028: 667 The native-xtools target no longer installs the files by default to the 668 OBJDIR. Use the native-xtools-install target with a DESTDIR to install 669 to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin. 670 67120171021: 672 As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT 673 options are changing from controlling the build if defined / undefined 674 to controlling the build with explicit 'yes' or 'no' values. They will 675 shift to WITH/WITHOUT options to match other options in the system. 676 67720171010: 678 libstand has turned into a private library for sys/boot use only. 679 It is no longer supported as a public interface outside of sys/boot. 680 68120171005: 682 The arm port has split armv6 into armv6 and armv7. armv7 is now 683 a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system 684 and are running a kernel from before r324363, you will need to add 685 MACHINE_ARCH=armv7 to 'make buildworld' to do a native build. 686 68720171003: 688 When building multiple kernels using KERNCONF, non-existent KERNCONF 689 files will produce an error and buildkernel will fail. Previously 690 missing KERNCONF files silently failed giving no indication as to 691 why, only to subsequently discover during installkernel that the 692 desired kernel was never built in the first place. 693 69420170912: 695 The default serial number format for CTL LUNs has changed. This will 696 affect users who use /dev/diskid/* device nodes, or whose FibreChannel 697 or iSCSI clients care about their LUNs' serial numbers. Users who 698 require serial number stability should hardcode serial numbers in 699 /etc/ctl.conf . 700 70120170912: 702 For 32-bit arm compiled for hard-float support, soft-floating point 703 binaries now always get their shared libraries from 704 LD_SOFT_LIBRARY_PATH (in the past, this was only used if 705 /usr/libsoft also existed). Only users with a hard-float ld.so, but 706 soft-float everything else should be affected. 707 70820170826: 709 The geli password typed at boot is now hidden. To restore the previous 710 behavior, see geli(8) for configuration options. 711 71220170825: 713 Move PMTUD blackhole counters to TCPSTATS and remove them from bare 714 sysctl values. Minor nit, but requires a rebuild of both world/kernel 715 to complete. 716 71720170814: 718 "make check" behavior (made in ^/head@r295380) has been changed to 719 execute from a limited sandbox, as opposed to executing from 720 ${TESTSDIR}. 721 722 Behavioral changes: 723 - The "beforecheck" and "aftercheck" targets are now specified. 724 - ${CHECKDIR} (added in commit noted above) has been removed. 725 - Legacy behavior can be enabled by setting 726 WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. 727 728 If the limited sandbox mode is enabled, "make check" will execute 729 "make distribution", then install, execute the tests, and clean up the 730 sandbox if successful. 731 732 The "make distribution" and "make install" targets are typically run as 733 root to set appropriate permissions and ownership at installation time. 734 The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the 735 environment if executing "make check" with limited sandbox mode using 736 an unprivileged user. 737 73820170808: 739 Since the switch to GPT disk labels, fsck for UFS/FFS has been 740 unable to automatically find alternate superblocks. As of r322297, 741 the information needed to find alternate superblocks has been 742 moved to the end of the area reserved for the boot block. 743 Filesystems created with a newfs of this vintage or later 744 will create the recovery information. If you have a filesystem 745 created prior to this change and wish to have a recovery block 746 created for your filesystem, you can do so by running fsck in 747 foreground mode (i.e., do not use the -p or -y options). As it 748 starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS'' 749 to which you should answer yes. 750 75120170728: 752 As of r321665, an NFSv4 server configuration that services 753 Kerberos mounts or clients that do not support the uid/gid in 754 owner/owner_group string capability, must explicitly enable 755 the nfsuserd daemon by adding nfsuserd_enable="YES" to the 756 machine's /etc/rc.conf file. 757 75820170722: 759 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0. 760 Please see the 20141231 entry below for information about prerequisites 761 and upgrading, if you are not already using clang 3.5.0 or higher. 762 76320170701: 764 WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the 765 r-commands (rlogin, rsh, etc.) to be built with the base system. 766 76720170625: 768 The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is 769 a very major ABI incompatible change, so users of FreeBSD/powerpc must 770 be careful when performing source upgrades. It is best to run 771 'make installworld' from an alternate root system, either a live 772 CD/memory stick, or a temporary root partition. Additionally, all ports 773 must be recompiled. powerpc64 is largely unaffected, except in the case 774 of 32-bit compatibility. All 32-bit binaries will be affected. 775 77620170623: 777 Forward compatibility for the "ino64" project have been committed. This 778 will allow most new binaries to run on older kernels in a limited 779 fashion. This prevents many of the common foot-shooting actions in the 780 upgrade as well as the limited ability to roll back the kernel across 781 the ino64 upgrade. Complicated use cases may not work properly, though 782 enough simpler ones work to allow recovery in most situations. 783 78420170620: 785 Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC 786 if you require the GPL compiler. 787 78820170618: 789 The internal ABI used for communication between the NFS kernel modules 790 was changed by r320085, so __FreeBSD_version was bumped to 791 ensure all the NFS related modules are updated together. 792 79320170617: 794 The ABI of struct event was changed by extending the data 795 member to 64bit and adding ext fields. For upgrade, same 796 precautions as for the entry 20170523 "ino64" must be 797 followed. 798 79920170531: 800 The GNU roff toolchain has been removed from base. To render manpages 801 which are not supported by mandoc(1), man(1) can fallback on GNU roff 802 from ports (and recommends to install it). 803 To render roff(7) documents, consider using GNU roff from ports or the 804 heirloom doctools roff toolchain from ports via pkg install groff or 805 via pkg install heirloom-doctools. 806 80720170524: 808 The ath(4) and ath_hal(4) modules now build piecemeal to allow for 809 smaller runtime footprint builds. This is useful for embedded systems 810 which only require one chipset support. 811 812 If you load it as a module, make sure this is in /boot/loader.conf: 813 814 if_ath_load="YES" 815 816 This will load the HAL, all chip/RF backends and if_ath_pci. 817 If you have if_ath_pci in /boot/loader.conf, ensure it is after 818 if_ath or it will not load any HAL chipset support. 819 820 If you want to selectively load things (eg on ye cheape ARM/MIPS 821 platforms where RAM is at a premium) you should: 822 823 * load ath_hal 824 * load the chip modules in question 825 * load ath_rate, ath_dfs 826 * load ath_main 827 * load if_ath_pci and/or if_ath_ahb depending upon your particular 828 bus bind type - this is where probe/attach is done. 829 830 For further comments/feedback, poke adrian@ . 831 83220170523: 833 The "ino64" 64-bit inode project has been committed, which extends 834 a number of types to 64 bits. Upgrading in place requires care and 835 adherence to the documented upgrade procedure. 836 837 If using a custom kernel configuration ensure that the 838 COMPAT_FREEBSD11 option is included (as during the upgrade the 839 system will be running the ino64 kernel with the existing world). 840 841 For the safest in-place upgrade begin by removing previous build 842 artifacts via "rm -rf /usr/obj/*". Then, carefully follow the full 843 procedure documented below under the heading "To rebuild everything and 844 install it on the current system." Specifically, a reboot is required 845 after installing the new kernel before installing world. While an 846 installworld normally works by accident from multiuser after rebooting 847 the proper kernel, there are many cases where this will fail across this 848 upgrade and installworld from single user is required. 849 85020170424: 851 The NATM framework including the en(4), fatm(4), hatm(4), and 852 patm(4) devices has been removed. Consumers should plan a 853 migration before the end-of-life date for FreeBSD 11. 854 85520170420: 856 GNU diff has been replaced by a BSD licensed diff. Some features of GNU 857 diff has not been implemented, if those are needed a newer version of 858 GNU diff is available via the diffutils package under the gdiff name. 859 86020170413: 861 As of r316810 for ipfilter, keep frags is no longer assumed when 862 keep state is specified in a rule. r316810 aligns ipfilter with 863 documentation in man pages separating keep frags from keep state. 864 This allows keep state to be specified without forcing keep frags 865 and allows keep frags to be specified independently of keep state. 866 To maintain previous behaviour, also specify keep frags with 867 keep state (as documented in ipf.conf.5). 868 86920170407: 870 arm64 builds now use the base system LLD 4.0.0 linker by default, 871 instead of requiring that the aarch64-binutils port or package be 872 installed. To continue using aarch64-binutils, set 873 CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin . 874 87520170405: 876 The UDP optimization in entry 20160818 that added the sysctl 877 net.inet.udp.require_l2_bcast has been reverted. L2 broadcast 878 packets will no longer be treated as L3 broadcast packets. 879 88020170331: 881 Binds and sends to the loopback addresses, IPv6 and IPv4, will now 882 use any explicitly assigned loopback address available in the jail 883 instead of using the first assigned address of the jail. 884 88520170329: 886 The ctl.ko module no longer implements the iSCSI target frontend: 887 cfiscsi.ko does instead. 888 889 If building cfiscsi.ko as a kernel module, the module can be loaded 890 via one of the following methods: 891 - `cfiscsi_load="YES"` in loader.conf(5). 892 - Add `cfiscsi` to `$kld_list` in rc.conf(5). 893 - ctladm(8)/ctld(8), when compiled with iSCSI support 894 (`WITH_ISCSI=yes` in src.conf(5)) 895 896 Please see cfiscsi(4) for more details. 897 89820170316: 899 The mmcsd.ko module now additionally depends on geom_flashmap.ko. 900 Also, mmc.ko and mmcsd.ko need to be a matching pair built from the 901 same source (previously, the dependency of mmcsd.ko on mmc.ko was 902 missing, but mmcsd.ko now will refuse to load if it is incompatible 903 with mmc.ko). 904 90520170315: 906 The syntax of ipfw(8) named states was changed to avoid ambiguity. 907 If you have used named states in the firewall rules, you need to modify 908 them after installworld and before rebooting. Now named states must 909 be prefixed with colon. 910 91120170311: 912 The old drm (sys/dev/drm/) drivers for i915 and radeon have been 913 removed as the userland we provide cannot use them. The KMS version 914 (sys/dev/drm2) supports the same hardware. 915 91620170302: 917 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0. 918 Please see the 20141231 entry below for information about prerequisites 919 and upgrading, if you are not already using clang 3.5.0 or higher. 920 92120170221: 922 The code that provides support for ZFS .zfs/ directory functionality 923 has been reimplemented. It's not possible now to create a snapshot 924 by mkdir under .zfs/snapshot/. That should be the only user visible 925 change. 926 92720170216: 928 EISA bus support has been removed. The WITH_EISA option is no longer 929 valid. 930 93120170215: 932 MCA bus support has been removed. 933 93420170127: 935 The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed 936 WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC. 937 93820170112: 939 The EM_MULTIQUEUE kernel configuration option is deprecated now that 940 the em(4) driver conforms to iflib specifications. 941 94220170109: 943 The igb(4), em(4) and lem(4) ethernet drivers are now implemented via 944 IFLIB. If you have a custom kernel configuration that excludes em(4) 945 but you use igb(4), you need to re-add em(4) to your custom 946 configuration. 947 94820161217: 949 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1. 950 Please see the 20141231 entry below for information about prerequisites 951 and upgrading, if you are not already using clang 3.5.0 or higher. 952 95320161124: 954 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0. 955 Please see the 20141231 entry below for information about prerequisites 956 and upgrading, if you are not already using clang 3.5.0 or higher. 957 95820161119: 959 The layout of the pmap structure has changed for powerpc to put the pmap 960 statistics at the front for all CPU variations. libkvm(3) and all tools 961 that link against it need to be recompiled. 962 96320161030: 964 isl(4) and cyapa(4) drivers now require a new driver, 965 chromebook_platform(4), to work properly on Chromebook-class hardware. 966 On other types of hardware the drivers may need to be configured using 967 device hints. Please see the corresponding manual pages for details. 968 96920161017: 970 The urtwn(4) driver was merged into rtwn(4) and now consists of 971 rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific 972 parts. 973 Also, firmware for RTL8188CE was renamed due to possible name 974 conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B)) 975 97620161015: 977 GNU rcs has been removed from base. It is available as packages: 978 - rcs: Latest GPLv3 GNU rcs version. 979 - rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was 980 removed from base. 981 98220161008: 983 Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control 984 modules now requires that the kernel configuration contain the 985 TCP_HHOOK option. (This option is included in the GENERIC kernel.) 986 98720161003: 988 The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired. 989 ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy. 990 99120160924: 992 Relocatable object files with the extension of .So have been renamed 993 to use an extension of .pico instead. The purpose of this change is 994 to avoid a name clash with shared libraries on case-insensitive file 995 systems. On those file systems, foo.So is the same file as foo.so. 996 99720160918: 998 GNU rcs has been turned off by default. It can (temporarily) be built 999 again by adding WITH_RCS knob in src.conf. 1000 Otherwise, GNU rcs is available from packages: 1001 - rcs: Latest GPLv3 GNU rcs version. 1002 - rcs57: Copy of the latest version of GNU rcs (GPLv2) from base. 1003 100420160918: 1005 The backup_uses_rcs functionality has been removed from rc.subr. 1006 100720160908: 1008 The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into 1009 two separate components, QUEUE_MACRO_DEBUG_TRACE and 1010 QUEUE_MACRO_DEBUG_TRASH. Define both for the original 1011 QUEUE_MACRO_DEBUG behavior. 1012 101320160824: 1014 r304787 changed some ioctl interfaces between the iSCSI userspace 1015 programs and the kernel. ctladm, ctld, iscsictl, and iscsid must be 1016 rebuilt to work with new kernels. __FreeBSD_version has been bumped 1017 to 1200005. 1018 101920160818: 1020 The UDP receive code has been updated to only treat incoming UDP 1021 packets that were addressed to an L2 broadcast address as L3 1022 broadcast packets. It is not expected that this will affect any 1023 standards-conforming UDP application. The new behaviour can be 1024 disabled by setting the sysctl net.inet.udp.require_l2_bcast to 1025 0. 1026 102720160818: 1028 Remove the openbsd_poll system call. 1029 __FreeBSD_version has been bumped because of this. 1030 103120160708: 1032 The stable/11 branch has been created from head@r302406. 1033 103420160622: 1035 The libc stub for the pipe(2) system call has been replaced with 1036 a wrapper that calls the pipe2(2) system call and the pipe(2) 1037 system call is now only implemented by the kernels that include 1038 "options COMPAT_FREEBSD10" in their config file (this is the 1039 default). Users should ensure that this option is enabled in 1040 their kernel or upgrade userspace to r302092 before upgrading their 1041 kernel. 1042 104320160527: 1044 CAM will now strip leading spaces from SCSI disks' serial numbers. 1045 This will affect users who create UFS filesystems on SCSI disks using 1046 those disk's diskid device nodes. For example, if /etc/fstab 1047 previously contained a line like 1048 "/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should 1049 change it to "/dev/diskid/DISK-ABCDEFG0123456". Users of geom 1050 transforms like gmirror may also be affected. ZFS users should 1051 generally be fine. 1052 105320160523: 1054 The bitstring(3) API has been updated with new functionality and 1055 improved performance. But it is binary-incompatible with the old API. 1056 Objects built with the new headers may not be linked against objects 1057 built with the old headers. 1058 105920160520: 1060 The brk and sbrk functions have been removed from libc on arm64. 1061 Binutils from ports has been updated to not link to these 1062 functions and should be updated to the latest version before 1063 installing a new libc. 1064 106520160517: 1066 The armv6 port now defaults to hard float ABI. Limited support 1067 for running both hardfloat and soft float on the same system 1068 is available using the libraries installed with -DWITH_LIBSOFT. 1069 This has only been tested as an upgrade path for installworld 1070 and packages may fail or need manual intervention to run. New 1071 packages will be needed. 1072 1073 To update an existing self-hosted armv6hf system, you must add 1074 TARGET_ARCH=armv6 on the make command line for both the build 1075 and the install steps. 1076 107720160510: 1078 Kernel modules compiled outside of a kernel build now default to 1079 installing to /boot/modules instead of /boot/kernel. Many kernel 1080 modules built this way (such as those in ports) already overrode 1081 KMODDIR explicitly to install into /boot/modules. However, 1082 manually building and installing a module from /sys/modules will 1083 now install to /boot/modules instead of /boot/kernel. 1084 108520160414: 1086 The CAM I/O scheduler has been committed to the kernel. There should be 1087 no user visible impact. This does enable NCQ Trim on ada SSDs. While the 1088 list of known rogues that claim support for this but actually corrupt 1089 data is believed to be complete, be on the lookout for data 1090 corruption. The known rogue list is believed to be complete: 1091 1092 o Crucial MX100, M550 drives with MU01 firmware. 1093 o Micron M510 and M550 drives with MU01 firmware. 1094 o Micron M500 prior to MU07 firmware 1095 o Samsung 830, 840, and 850 all firmwares 1096 o FCCT M500 all firmwares 1097 1098 Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware 1099 with working NCQ TRIM. For Micron branded drives, see your sales rep for 1100 updated firmware. Black listed drives will work correctly because these 1101 drives work correctly so long as no NCQ TRIMs are sent to them. Given 1102 this list is the same as found in Linux, it's believed there are no 1103 other rogues in the market place. All other models from the above 1104 vendors work. 1105 1106 To be safe, if you are at all concerned, you can quirk each of your 1107 drives to prevent NCQ from being sent by setting: 1108 kern.cam.ada.X.quirks="0x2" 1109 in loader.conf. If the drive requires the 4k sector quirk, set the 1110 quirks entry to 0x3. 1111 111220160330: 1113 The FAST_DEPEND build option has been removed and its functionality is 1114 now the one true way. The old mkdep(1) style of 'make depend' has 1115 been removed. See 20160311 for further details. 1116 111720160317: 1118 Resource range types have grown from unsigned long to uintmax_t. All 1119 drivers, and anything using libdevinfo, need to be recompiled. 1120 112120160311: 1122 WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree 1123 builds. It no longer runs mkdep(1) during 'make depend', and the 1124 'make depend' stage can safely be skipped now as it is auto ran 1125 when building 'make all' and will generate all SRCS and DPSRCS before 1126 building anything else. Dependencies are gathered at compile time with 1127 -MF flags kept in separate .depend files per object file. Users should 1128 run 'make cleandepend' once if using -DNO_CLEAN to clean out older 1129 stale .depend files. 1130 113120160306: 1132 On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into 1133 kernel modules. Therefore, if you load any kernel modules at boot time, 1134 please install the boot loaders after you install the kernel, but before 1135 rebooting, e.g.: 1136 1137 make buildworld 1138 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1139 make installkernel KERNCONF=YOUR_KERNEL_HERE 1140 make -C sys/boot install 1141 <reboot in single user> 1142 1143 Then follow the usual steps, described in the General Notes section, 1144 below. 1145 114620160305: 1147 Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0. Please 1148 see the 20141231 entry below for information about prerequisites and 1149 upgrading, if you are not already using clang 3.5.0 or higher. 1150 115120160301: 1152 The AIO subsystem is now a standard part of the kernel. The 1153 VFS_AIO kernel option and aio.ko kernel module have been removed. 1154 Due to stability concerns, asynchronous I/O requests are only 1155 permitted on sockets and raw disks by default. To enable 1156 asynchronous I/O requests on all file types, set the 1157 vfs.aio.enable_unsafe sysctl to a non-zero value. 1158 115920160226: 1160 The ELF object manipulation tool objcopy is now provided by the 1161 ELF Tool Chain project rather than by GNU binutils. It should be a 1162 drop-in replacement, with the addition of arm64 support. The 1163 (temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set 1164 to obtain the GNU version if necessary. 1165 116620160129: 1167 Building ZFS pools on top of zvols is prohibited by default. That 1168 feature has never worked safely; it's always been prone to deadlocks. 1169 Using a zvol as the backing store for a VM guest's virtual disk will 1170 still work, even if the guest is using ZFS. Legacy behavior can be 1171 restored by setting vfs.zfs.vol.recursive=1. 1172 117320160119: 1174 The NONE and HPN patches has been removed from OpenSSH. They are 1175 still available in the security/openssh-portable port. 1176 117720160113: 1178 With the addition of ypldap(8), a new _ypldap user is now required 1179 during installworld. "mergemaster -p" can be used to add the user 1180 prior to installworld, as documented in the handbook. 1181 118220151216: 1183 The tftp loader (pxeboot) now uses the option root-path directive. As a 1184 consequence it no longer looks for a pxeboot.4th file on the tftp 1185 server. Instead it uses the regular /boot infrastructure as with the 1186 other loaders. 1187 118820151211: 1189 The code to start recording plug and play data into the modules has 1190 been committed. While the old tools will properly build a new kernel, 1191 a number of warnings about "unknown metadata record 4" will be produced 1192 for an older kldxref. To avoid such warnings, make sure to rebuild 1193 the kernel toolchain (or world). Make sure that you have r292078 or 1194 later when trying to build 292077 or later before rebuilding. 1195 119620151207: 1197 Debug data files are now built by default with 'make buildworld' and 1198 installed with 'make installworld'. This facilitates debugging but 1199 requires more disk space both during the build and for the installed 1200 world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes 1201 in src.conf(5). 1202 120320151130: 1204 r291527 changed the internal interface between the nfsd.ko and 1205 nfscommon.ko modules. As such, they must both be upgraded to-gether. 1206 __FreeBSD_version has been bumped because of this. 1207 120820151108: 1209 Add support for unicode collation strings leads to a change of 1210 order of files listed by ls(1) for example. To get back to the old 1211 behaviour, set LC_COLLATE environment variable to "C". 1212 1213 Databases administrators will need to reindex their databases given 1214 collation results will be different. 1215 1216 Due to a bug in install(1) it is recommended to remove the ancient 1217 locales before running make installworld. 1218 1219 rm -rf /usr/share/locale/* 1220 122120151030: 1222 The OpenSSL has been upgraded to 1.0.2d. Any binaries requiring 1223 libcrypto.so.7 or libssl.so.7 must be recompiled. 1224 122520151020: 1226 Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0. 1227 Kernel modules isp_2400_multi and isp_2500_multi were removed and 1228 should be replaced with isp_2400 and isp_2500 modules respectively. 1229 123020151017: 1231 The build previously allowed using 'make -n' to not recurse into 1232 sub-directories while showing what commands would be executed, and 1233 'make -n -n' to recursively show commands. Now 'make -n' will recurse 1234 and 'make -N' will not. 1235 123620151012: 1237 If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster 1238 and etcupdate will now use this file. A custom sendmail.cf is now 1239 updated via this mechanism rather than via installworld. If you had 1240 excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may 1241 want to remove the exclusion or change it to "always install". 1242 /etc/mail/sendmail.cf is now managed the same way regardless of 1243 whether SENDMAIL_MC/SENDMAIL_CF is used. If you are not using 1244 SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior. 1245 124620151011: 1247 Compatibility shims for legacy ATA device names have been removed. 1248 It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases 1249 and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.* 1250 environment variables, /dev/ad* and /dev/ar* symbolic links. 1251 125220151006: 1253 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0. 1254 Please see the 20141231 entry below for information about prerequisites 1255 and upgrading, if you are not already using clang 3.5.0 or higher. 1256 125720150924: 1258 Kernel debug files have been moved to /usr/lib/debug/boot/kernel/, 1259 and renamed from .symbols to .debug. This reduces the size requirements 1260 on the boot partition or file system and provides consistency with 1261 userland debug files. 1262 1263 When using the supported kernel installation method the 1264 /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old) 1265 as is done with /boot/kernel. 1266 1267 Developers wishing to maintain the historical behavior of installing 1268 debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5). 1269 127020150827: 1271 The wireless drivers had undergone changes that remove the 'parent 1272 interface' from the ifconfig -l output. The rc.d network scripts 1273 used to check presence of a parent interface in the list, so old 1274 scripts would fail to start wireless networking. Thus, etcupdate(3) 1275 or mergemaster(8) run is required after kernel update, to update your 1276 rc.d scripts in /etc. 1277 127820150827: 1279 pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl' 1280 These configurations are now automatically interpreted as 1281 'scrub fragment reassemble'. 1282 128320150817: 1284 Kernel-loadable modules for the random(4) device are back. To use 1285 them, the kernel must have 1286 1287 device random 1288 options RANDOM_LOADABLE 1289 1290 kldload(8) can then be used to load random_fortuna.ko 1291 or random_yarrow.ko. Please note that due to the indirect 1292 function calls that the loadable modules need to provide, 1293 the build-in variants will be slightly more efficient. 1294 1295 The random(4) kernel option RANDOM_DUMMY has been retired due to 1296 unpopularity. It was not all that useful anyway. 1297 129820150813: 1299 The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired. 1300 Control over building the ELF Tool Chain tools is now provided by 1301 the WITHOUT_TOOLCHAIN knob. 1302 130320150810: 1304 The polarity of Pulse Per Second (PPS) capture events with the 1305 uart(4) driver has been corrected. Prior to this change the PPS 1306 "assert" event corresponded to the trailing edge of a positive PPS 1307 pulse and the "clear" event was the leading edge of the next pulse. 1308 1309 As the width of a PPS pulse in a typical GPS receiver is on the 1310 order of 1 millisecond, most users will not notice any significant 1311 difference with this change. 1312 1313 Anyone who has compensated for the historical polarity reversal by 1314 configuring a negative offset equal to the pulse width will need to 1315 remove that workaround. 1316 131720150809: 1318 The default group assigned to /dev/dri entries has been changed 1319 from 'wheel' to 'video' with the id of '44'. If you want to have 1320 access to the dri devices please add yourself to the video group 1321 with: 1322 1323 # pw groupmod video -m $USER 1324 132520150806: 1326 The menu.rc and loader.rc files will now be replaced during 1327 upgrades. Please migrate local changes to menu.rc.local and 1328 loader.rc.local instead. 1329 133020150805: 1331 GNU Binutils versions of addr2line, c++filt, nm, readelf, size, 1332 strings and strip have been removed. The src.conf(5) knob 1333 WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools. 1334 133520150728: 1336 As ZFS requires more kernel stack pages than is the default on some 1337 architectures e.g. i386, it now warns if KSTACK_PAGES is less than 1338 ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing). 1339 1340 Please consider using 'options KSTACK_PAGES=X' where X is greater 1341 than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations. 1342 134320150706: 1344 sendmail has been updated to 8.15.2. Starting with FreeBSD 11.0 1345 and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by 1346 default, i.e., they will not contain "::". For example, instead 1347 of ::1, it will be 0:0:0:0:0:0:0:1. This permits a zero subnet 1348 to have a more specific match, such as different map entries for 1349 IPv6:0:0 vs IPv6:0. This change requires that configuration 1350 data (including maps, files, classes, custom ruleset, etc.) must 1351 use the same format, so make certain such configuration data is 1352 upgrading. As a very simple check search for patterns like 1353 'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'. To return to the old 1354 behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or 1355 the cf option UseCompressedIPv6Addresses. 1356 135720150630: 1358 The default kernel entropy-processing algorithm is now 1359 Fortuna, replacing Yarrow. 1360 1361 Assuming you have 'device random' in your kernel config 1362 file, the configurations allow a kernel option to override 1363 this default. You may choose *ONE* of: 1364 1365 options RANDOM_YARROW # Legacy /dev/random algorithm. 1366 options RANDOM_DUMMY # Blocking-only driver. 1367 1368 If you have neither, you get Fortuna. For most people, 1369 read no further, Fortuna will give a /dev/random that works 1370 like it always used to, and the difference will be irrelevant. 1371 1372 If you remove 'device random', you get *NO* kernel-processed 1373 entropy at all. This may be acceptable to folks building 1374 embedded systems, but has complications. Carry on reading, 1375 and it is assumed you know what you need. 1376 1377 *PLEASE* read random(4) and random(9) if you are in the 1378 habit of tweaking kernel configs, and/or if you are a member 1379 of the embedded community, wanting specific and not-usual 1380 behaviour from your security subsystems. 1381 1382 NOTE!! If you use RANDOM_DUMMY and/or have no 'device 1383 random', you will NOT have a functioning /dev/random, and 1384 many cryptographic features will not work, including SSH. 1385 You may also find strange behaviour from the random(3) set 1386 of library functions, in particular sranddev(3), srandomdev(3) 1387 and arc4random(3). The reason for this is that the KERN_ARND 1388 sysctl only returns entropy if it thinks it has some to 1389 share, and with RANDOM_DUMMY or no 'device random' this 1390 will never happen. 1391 139220150623: 1393 An additional fix for the issue described in the 20150614 sendmail 1394 entry below has been committed in revision 284717. 1395 139620150616: 1397 FreeBSD's old make (fmake) has been removed from the system. It is 1398 available as the devel/fmake port or via pkg install fmake. 1399 140020150615: 1401 The fix for the issue described in the 20150614 sendmail entry 1402 below has been committed in revision 284436. The work 1403 around described in that entry is no longer needed unless the 1404 default setting is overridden by a confDH_PARAMETERS configuration 1405 setting of '5' or pointing to a 512 bit DH parameter file. 1406 140720150614: 1408 ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from 1409 atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf 1410 and devel/kyua to version 0.20+ and adjust any calling code to work 1411 with Kyuafile and kyua. 1412 141320150614: 1414 The import of openssl to address the FreeBSD-SA-15:10.openssl 1415 security advisory includes a change which rejects handshakes 1416 with DH parameters below 768 bits. sendmail releases prior 1417 to 8.15.2 (not yet released), defaulted to a 512 bit 1418 DH parameter setting for client connections. To work around 1419 this interoperability, sendmail can be configured to use a 1420 2048 bit DH parameter by: 1421 1422 1. Edit /etc/mail/`hostname`.mc 1423 2. If a setting for confDH_PARAMETERS does not exist or 1424 exists and is set to a string beginning with '5', 1425 replace it with '2'. 1426 3. If a setting for confDH_PARAMETERS exists and is set to 1427 a file path, create a new file with: 1428 openssl dhparam -out /path/to/file 2048 1429 4. Rebuild the .cf file: 1430 cd /etc/mail/; make; make install 1431 5. Restart sendmail: 1432 cd /etc/mail/; make restart 1433 1434 A sendmail patch is coming, at which time this file will be 1435 updated. 1436 143720150604: 1438 Generation of legacy formatted entries have been disabled by default 1439 in pwd_mkdb(8), as all base system consumers of the legacy formatted 1440 entries were converted to use the new format by default when the new, 1441 machine independent format have been added and supported since FreeBSD 1442 5.x. 1443 1444 Please see the pwd_mkdb(8) manual page for further details. 1445 144620150525: 1447 Clang and llvm have been upgraded to 3.6.1 release. Please see the 1448 20141231 entry below for information about prerequisites and upgrading, 1449 if you are not already using 3.5.0 or higher. 1450 145120150521: 1452 TI platform code switched to using vendor DTS files and this update 1453 may break existing systems running on Beaglebone, Beaglebone Black, 1454 and Pandaboard: 1455 1456 - dtb files should be regenerated/reinstalled. Filenames are the 1457 same but content is different now 1458 - GPIO addressing was changed, now each GPIO bank (32 pins per bank) 1459 has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old 1460 addressing scheme is now pin 25 on /dev/gpioc3. 1461 - Pandaboard: /etc/ttys should be updated, serial console device is 1462 now /dev/ttyu2, not /dev/ttyu0 1463 146420150501: 1465 soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim. 1466 If you need the GNU extension from groff soelim(1), install groff 1467 from package: pkg install groff, or via ports: textproc/groff. 1468 146920150423: 1470 chmod, chflags, chown and chgrp now affect symlinks in -R mode as 1471 defined in symlink(7); previously symlinks were silently ignored. 1472 147320150415: 1474 The const qualifier has been removed from iconv(3) to comply with 1475 POSIX. The ports tree is aware of this from r384038 onwards. 1476 147720150416: 1478 Libraries specified by LIBADD in Makefiles must have a corresponding 1479 DPADD_<lib> variable to ensure correct dependencies. This is now 1480 enforced in src.libnames.mk. 1481 148220150324: 1483 From legacy ata(4) driver was removed support for SATA controllers 1484 supported by more functional drivers ahci(4), siis(4) and mvs(4). 1485 Kernel modules ataahci and ataadaptec were removed completely, 1486 replaced by ahci and mvs modules respectively. 1487 148820150315: 1489 Clang, llvm and lldb have been upgraded to 3.6.0 release. Please see 1490 the 20141231 entry below for information about prerequisites and 1491 upgrading, if you are not already using 3.5.0 or higher. 1492 149320150307: 1494 The 32-bit PowerPC kernel has been changed to a position-independent 1495 executable. This can only be booted with a version of loader(8) 1496 newer than January 31, 2015, so make sure to update both world and 1497 kernel before rebooting. 1498 149920150217: 1500 If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014), 1501 but before r278950, the RNG was not seeded properly. Immediately 1502 upgrade the kernel to r278950 or later and regenerate any keys (e.g. 1503 ssh keys or openssl keys) that were generated w/ a kernel from that 1504 range. This does not affect programs that directly used /dev/random 1505 or /dev/urandom. All userland uses of arc4random(3) are affected. 1506 150720150210: 1508 The autofs(4) ABI was changed in order to restore binary compatibility 1509 with 10.1-RELEASE. The automountd(8) daemon needs to be rebuilt to work 1510 with the new kernel. 1511 151220150131: 1513 The powerpc64 kernel has been changed to a position-independent 1514 executable. This can only be booted with a new version of loader(8), 1515 so make sure to update both world and kernel before rebooting. 1516 151720150118: 1518 Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix 1519 only release, no new features have been added. Please see the 20141231 1520 entry below for information about prerequisites and upgrading, if you 1521 are not already using 3.5.0. 1522 152320150107: 1524 ELF tools addr2line, elfcopy (strip), nm, size, and strings are now 1525 taken from the ELF Tool Chain project rather than GNU binutils. They 1526 should be drop-in replacements, with the addition of arm64 support. 1527 The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the 1528 binutils tools, if necessary. See 20150805 for updated information. 1529 153020150105: 1531 The default Unbound configuration now enables remote control 1532 using a local socket. Users who have already enabled the 1533 local_unbound service should regenerate their configuration 1534 by running "service local_unbound setup" as root. 1535 153620150102: 1537 The GNU texinfo and GNU info pages have been removed. 1538 To be able to view GNU info pages please install texinfo from ports. 1539 154020141231: 1541 Clang, llvm and lldb have been upgraded to 3.5.0 release. 1542 1543 As of this release, a prerequisite for building clang, llvm and lldb is 1544 a C++11 capable compiler and C++11 standard library. This means that to 1545 be able to successfully build the cross-tools stage of buildworld, with 1546 clang as the bootstrap compiler, your system compiler or cross compiler 1547 should either be clang 3.3 or later, or gcc 4.8 or later, and your 1548 system C++ library should be libc++, or libdstdc++ from gcc 4.8 or 1549 later. 1550 1551 On any standard FreeBSD 10.x or 11.x installation, where clang and 1552 libc++ are on by default (that is, on x86 or arm), this should work out 1553 of the box. 1554 1555 On 9.x installations where clang is enabled by default, e.g. on x86 and 1556 powerpc, libc++ will not be enabled by default, so libc++ should be 1557 built (with clang) and installed first. If both clang and libc++ are 1558 missing, build clang first, then use it to build libc++. 1559 1560 On 8.x and earlier installations, upgrade to 9.x first, and then follow 1561 the instructions for 9.x above. 1562 1563 Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by 1564 default, and do not build clang. 1565 1566 Many embedded systems are resource constrained, and will not be able to 1567 build clang in a reasonable time, or in some cases at all. In those 1568 cases, cross building bootable systems on amd64 is a workaround. 1569 1570 This new version of clang introduces a number of new warnings, of which 1571 the following are most likely to appear: 1572 1573 -Wabsolute-value 1574 1575 This warns in two cases, for both C and C++: 1576 * When the code is trying to take the absolute value of an unsigned 1577 quantity, which is effectively a no-op, and almost never what was 1578 intended. The code should be fixed, if at all possible. If you are 1579 sure that the unsigned quantity can be safely cast to signed, without 1580 loss of information or undefined behavior, you can add an explicit 1581 cast, or disable the warning. 1582 1583 * When the code is trying to take an absolute value, but the called 1584 abs() variant is for the wrong type, which can lead to truncation. 1585 If you want to disable the warning instead of fixing the code, please 1586 make sure that truncation will not occur, or it might lead to unwanted 1587 side-effects. 1588 1589 -Wtautological-undefined-compare and 1590 -Wundefined-bool-conversion 1591 1592 These warn when C++ code is trying to compare 'this' against NULL, while 1593 'this' should never be NULL in well-defined C++ code. However, there is 1594 some legacy (pre C++11) code out there, which actively abuses this 1595 feature, which was less strictly defined in previous C++ versions. 1596 1597 Squid and openjdk do this, for example. The warning can be turned off 1598 for C++98 and earlier, but compiling the code in C++11 mode might result 1599 in unexpected behavior; for example, the parts of the program that are 1600 unreachable could be optimized away. 1601 160220141222: 1603 The old NFS client and server (kernel options NFSCLIENT, NFSSERVER) 1604 kernel sources have been removed. The .h files remain, since some 1605 utilities include them. This will need to be fixed later. 1606 If "mount -t oldnfs ..." is attempted, it will fail. 1607 If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used, 1608 the utilities will report errors. 1609 161020141121: 1611 The handling of LOCAL_LIB_DIRS has been altered to skip addition of 1612 directories to top level SUBDIR variable when their parent 1613 directory is included in LOCAL_DIRS. Users with build systems with 1614 such hierarchies and without SUBDIR entries in the parent 1615 directory Makefiles should add them or add the directories to 1616 LOCAL_DIRS. 1617 161820141109: 1619 faith(4) and faithd(8) have been removed from the base system. Faith 1620 has been obsolete for a very long time. 1621 162220141104: 1623 vt(4), the new console driver, is enabled by default. It brings 1624 support for Unicode and double-width characters, as well as 1625 support for UEFI and integration with the KMS kernel video 1626 drivers. 1627 1628 You may need to update your console settings in /etc/rc.conf, 1629 most probably the keymap. During boot, /etc/rc.d/syscons will 1630 indicate what you need to do. 1631 1632 vt(4) still has issues and lacks some features compared to 1633 syscons(4). See the wiki for up-to-date information: 1634 https://wiki.freebsd.org/Newcons 1635 1636 If you want to keep using syscons(4), you can do so by adding 1637 the following line to /boot/loader.conf: 1638 kern.vty=sc 1639 164020141102: 1641 pjdfstest has been integrated into kyua as an opt-in test suite. 1642 Please see share/doc/pjdfstest/README for more details on how to 1643 execute it. 1644 164520141009: 1646 gperf has been removed from the base system for architectures 1647 that use clang. Ports that require gperf will obtain it from the 1648 devel/gperf port. 1649 165020140923: 1651 pjdfstest has been moved from tools/regression/pjdfstest to 1652 contrib/pjdfstest . 1653 165420140922: 1655 At svn r271982, The default linux compat kernel ABI has been adjusted 1656 to 2.6.18 in support of the linux-c6 compat ports infrastructure 1657 update. If you wish to continue using the linux-f10 compat ports, 1658 add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are 1659 encouraged to update their linux-compat packages to linux-c6 during 1660 their next update cycle. 1661 166220140729: 1663 The ofwfb driver, used to provide a graphics console on PowerPC when 1664 using vt(4), no longer allows mmap() of all physical memory. This 1665 will prevent Xorg on PowerPC with some ATI graphics cards from 1666 initializing properly unless x11-servers/xorg-server is updated to 1667 1.12.4_8 or newer. 1668 166920140723: 1670 The xdev targets have been converted to using TARGET and 1671 TARGET_ARCH instead of XDEV and XDEV_ARCH. 1672 167320140719: 1674 The default unbound configuration has been modified to address 1675 issues with reverse lookups on networks that use private 1676 address ranges. If you use the local_unbound service, run 1677 "service local_unbound setup" as root to regenerate your 1678 configuration, then "service local_unbound reload" to load the 1679 new configuration. 1680 168120140709: 1682 The GNU texinfo and GNU info pages are not built and installed 1683 anymore, WITH_INFO knob has been added to allow to built and install 1684 them again. 1685 UPDATE: see 20150102 entry on texinfo's removal 1686 168720140708: 1688 The GNU readline library is now an INTERNALLIB - that is, it is 1689 statically linked into consumers (GDB and variants) in the base 1690 system, and the shared library is no longer installed. The 1691 devel/readline port is available for third party software that 1692 requires readline. 1693 169420140702: 1695 The Itanium architecture (ia64) has been removed from the list of 1696 known architectures. This is the first step in the removal of the 1697 architecture. 1698 169920140701: 1700 Commit r268115 has added NFSv4.1 server support, merged from 1701 projects/nfsv4.1-server. Since this includes changes to the 1702 internal interfaces between the NFS related modules, a full 1703 build of the kernel and modules will be necessary. 1704 __FreeBSD_version has been bumped. 1705 170620140629: 1707 The WITHOUT_VT_SUPPORT kernel config knob has been renamed 1708 WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning 1709 which differs from the behaviour controlled by this knob.) 1710 171120140619: 1712 Maximal length of the serial number in CTL was increased from 16 to 1713 64 chars, that breaks ABI. All CTL-related tools, such as ctladm 1714 and ctld, need to be rebuilt to work with a new kernel. 1715 171620140606: 1717 The libatf-c and libatf-c++ major versions were downgraded to 0 and 1718 1 respectively to match the upstream numbers. They were out of 1719 sync because, when they were originally added to FreeBSD, the 1720 upstream versions were not respected. These libraries are private 1721 and not yet built by default, so renumbering them should be a 1722 non-issue. However, unclean source trees will yield broken test 1723 programs once the operator executes "make delete-old-libs" after a 1724 "make installworld". 1725 1726 Additionally, the atf-sh binary was made private by moving it into 1727 /usr/libexec/. Already-built shell test programs will keep the 1728 path to the old binary so they will break after "make delete-old" 1729 is run. 1730 1731 If you are using WITH_TESTS=yes (not the default), wipe the object 1732 tree and rebuild from scratch to prevent spurious test failures. 1733 This is only needed once: the misnumbered libraries and misplaced 1734 binaries have been added to OptionalObsoleteFiles.inc so they will 1735 be removed during a clean upgrade. 1736 173720140512: 1738 Clang and llvm have been upgraded to 3.4.1 release. 1739 174020140508: 1741 We bogusly installed src.opts.mk in /usr/share/mk. This file should 1742 be removed to avoid issues in the future (and has been added to 1743 ObsoleteFiles.inc). 1744 174520140505: 1746 /etc/src.conf now affects only builds of the FreeBSD src tree. In the 1747 past, it affected all builds that used the bsd.*.mk files. The old 1748 behavior was a bug, but people may have relied upon it. To get this 1749 behavior back, you can .include /etc/src.conf from /etc/make.conf 1750 (which is still global and isn't changed). This also changes the 1751 behavior of incremental builds inside the tree of individual 1752 directories. Set MAKESYSPATH to ".../share/mk" to do that. 1753 Although this has survived make universe and some upgrade scenarios, 1754 other upgrade scenarios may have broken. At least one form of 1755 temporary breakage was fixed with MAKESYSPATH settings for buildworld 1756 as well... In cases where MAKESYSPATH isn't working with this 1757 setting, you'll need to set it to the full path to your tree. 1758 1759 One side effect of all this cleaning up is that bsd.compiler.mk 1760 is no longer implicitly included by bsd.own.mk. If you wish to 1761 use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk 1762 as well. 1763 176420140430: 1765 The lindev device has been removed since /dev/full has been made a 1766 standard device. __FreeBSD_version has been bumped. 1767 176820140424: 1769 The knob WITHOUT_VI was added to the base system, which controls 1770 building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1) 1771 in order to reorder files share/termcap and didn't build ex(1) as a 1772 build tool, so building/installing with WITH_VI is highly advised for 1773 build hosts for older releases. 1774 1775 This issue has been fixed in stable/9 and stable/10 in r277022 and 1776 r276991, respectively. 1777 177820140418: 1779 The YES_HESIOD knob has been removed. It has been obsolete for 1780 a decade. Please move to using WITH_HESIOD instead or your builds 1781 will silently lack HESIOD. 1782 178320140405: 1784 The uart(4) driver has been changed with respect to its handling 1785 of the low-level console. Previously the uart(4) driver prevented 1786 any process from changing the baudrate or the CLOCAL and HUPCL 1787 control flags. By removing the restrictions, operators can make 1788 changes to the serial console port without having to reboot. 1789 However, when getty(8) is started on the serial device that is 1790 associated with the low-level console, a misconfigured terminal 1791 line in /etc/ttys will now have a real impact. 1792 Before upgrading the kernel, make sure that /etc/ttys has the 1793 serial console device configured as 3wire without baudrate to 1794 preserve the previous behaviour. E.g: 1795 ttyu0 "/usr/libexec/getty 3wire" vt100 on secure 1796 179720140306: 1798 Support for libwrap (TCP wrappers) in rpcbind was disabled by default 1799 to improve performance. To re-enable it, if needed, run rpcbind 1800 with command line option -W. 1801 180220140226: 1803 Switched back to the GPL dtc compiler due to updates in the upstream 1804 dts files not being supported by the BSDL dtc compiler. You will need 1805 to rebuild your kernel toolchain to pick up the new compiler. Core dumps 1806 may result while building dtb files during a kernel build if you fail 1807 to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler. 1808 180920140216: 1810 Clang and llvm have been upgraded to 3.4 release. 1811 181220140216: 1813 The nve(4) driver has been removed. Please use the nfe(4) driver 1814 for NVIDIA nForce MCP Ethernet adapters instead. 1815 181620140212: 1817 An ABI incompatibility crept into the libc++ 3.4 import in r261283. 1818 This could cause certain C++ applications using shared libraries built 1819 against the previous version of libc++ to crash. The incompatibility 1820 has now been fixed, but any C++ applications or shared libraries built 1821 between r261283 and r261801 should be recompiled. 1822 182320140204: 1824 OpenSSH will now ignore errors caused by kernel lacking of Capsicum 1825 capability mode support. Please note that enabling the feature in 1826 kernel is still highly recommended. 1827 182820140131: 1829 OpenSSH is now built with sandbox support, and will use sandbox as 1830 the default privilege separation method. This requires Capsicum 1831 capability mode support in kernel. 1832 183320140128: 1834 The libelf and libdwarf libraries have been updated to newer 1835 versions from upstream. Shared library version numbers for 1836 these two libraries were bumped. Any ports or binaries 1837 requiring these two libraries should be recompiled. 1838 __FreeBSD_version is bumped to 1100006. 1839 184020140110: 1841 If a Makefile in a tests/ directory was auto-generating a Kyuafile 1842 instead of providing an explicit one, this would prevent such 1843 Makefile from providing its own Kyuafile in the future during 1844 NO_CLEAN builds. This has been fixed in the Makefiles but manual 1845 intervention is needed to clean an objdir if you use NO_CLEAN: 1846 # find /usr/obj -name Kyuafile | xargs rm -f 1847 184820131213: 1849 The behavior of gss_pseudo_random() for the krb5 mechanism 1850 has changed, for applications requesting a longer random string 1851 than produced by the underlying enctype's pseudo-random() function. 1852 In particular, the random string produced from a session key of 1853 enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will 1854 be different at the 17th octet and later, after this change. 1855 The counter used in the PRF+ construction is now encoded as a 1856 big-endian integer in accordance with RFC 4402. 1857 __FreeBSD_version is bumped to 1100004. 1858 185920131108: 1860 The WITHOUT_ATF build knob has been removed and its functionality 1861 has been subsumed into the more generic WITHOUT_TESTS. If you were 1862 using the former to disable the build of the ATF libraries, you 1863 should change your settings to use the latter. 1864 186520131025: 1866 The default version of mtree is nmtree which is obtained from 1867 NetBSD. The output is generally the same, but may vary 1868 slightly. If you found you need identical output adding 1869 "-F freebsd9" to the command line should do the trick. For the 1870 time being, the old mtree is available as fmtree. 1871 187220131014: 1873 libbsdyml has been renamed to libyaml and moved to /usr/lib/private. 1874 This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg 1875 1.1.4_8 and verify bsdyml not linked in, before running "make 1876 delete-old-libs": 1877 # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean 1878 or 1879 # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml 1880 188120131010: 1882 The stable/10 branch has been created in subversion from head 1883 revision r256279. 1884 1885COMMON ITEMS: 1886 1887 General Notes 1888 ------------- 1889 Avoid using make -j when upgrading. While generally safe, there are 1890 sometimes problems using -j to upgrade. If your upgrade fails with 1891 -j, please try again without -j. From time to time in the past there 1892 have been problems using -j with buildworld and/or installworld. This 1893 is especially true when upgrading between "distant" versions (eg one 1894 that cross a major release boundary or several minor releases, or when 1895 several months have passed on the -current branch). 1896 1897 Sometimes, obscure build problems are the result of environment 1898 poisoning. This can happen because the make utility reads its 1899 environment when searching for values for global variables. To run 1900 your build attempts in an "environmental clean room", prefix all make 1901 commands with 'env -i '. See the env(1) manual page for more details. 1902 1903 When upgrading from one major version to another it is generally best to 1904 upgrade to the latest code in the currently installed branch first, then 1905 do an upgrade to the new branch. This is the best-tested upgrade path, 1906 and has the highest probability of being successful. Please try this 1907 approach if you encounter problems with a major version upgrade. Since 1908 the stable 4.x branch point, one has generally been able to upgrade from 1909 anywhere in the most recent stable branch to head / current (or even the 1910 last couple of stable branches). See the top of this file when there's 1911 an exception. 1912 1913 When upgrading a live system, having a root shell around before 1914 installing anything can help undo problems. Not having a root shell 1915 around can lead to problems if pam has changed too much from your 1916 starting point to allow continued authentication after the upgrade. 1917 1918 This file should be read as a log of events. When a later event changes 1919 information of a prior event, the prior event should not be deleted. 1920 Instead, a pointer to the entry with the new information should be 1921 placed in the old entry. Readers of this file should also sanity check 1922 older entries before relying on them blindly. Authors of new entries 1923 should write them with this in mind. 1924 1925 ZFS notes 1926 --------- 1927 When upgrading the boot ZFS pool to a new version, always follow 1928 these two steps: 1929 1930 1.) recompile and reinstall the ZFS boot loader and boot block 1931 (this is part of "make buildworld" and "make installworld") 1932 1933 2.) update the ZFS boot block on your boot drive 1934 1935 The following example updates the ZFS boot block on the first 1936 partition (freebsd-boot) of a GPT partitioned drive ada0: 1937 "gpart bootcode -p /boot/gptzfsboot -i 1 ada0" 1938 1939 Non-boot pools do not need these updates. 1940 1941 To build a kernel 1942 ----------------- 1943 If you are updating from a prior version of FreeBSD (even one just 1944 a few days old), you should follow this procedure. It is the most 1945 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1946 1947 make kernel-toolchain 1948 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1949 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1950 1951 To test a kernel once 1952 --------------------- 1953 If you just want to boot a kernel once (because you are not sure 1954 if it works, or if you want to boot a known bad kernel to provide 1955 debugging information) run 1956 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1957 nextboot -k testkernel 1958 1959 To rebuild everything and install it on the current system. 1960 ----------------------------------------------------------- 1961 # Note: sometimes if you are running current you gotta do more than 1962 # is listed here if you are upgrading from a really old current. 1963 1964 <make sure you have good level 0 dumps> 1965 make buildworld 1966 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1967 make installkernel KERNCONF=YOUR_KERNEL_HERE 1968 [1] 1969 <reboot in single user> [3] 1970 mergemaster -Fp [5] 1971 make installworld 1972 mergemaster -Fi [4] 1973 make delete-old [6] 1974 <reboot> 1975 1976 To cross-install current onto a separate partition 1977 -------------------------------------------------- 1978 # In this approach we use a separate partition to hold 1979 # current's root, 'usr', and 'var' directories. A partition 1980 # holding "/", "/usr" and "/var" should be about 2GB in 1981 # size. 1982 1983 <make sure you have good level 0 dumps> 1984 <boot into -stable> 1985 make buildworld 1986 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1987 <maybe newfs current's root partition> 1988 <mount current's root partition on directory ${CURRENT_ROOT}> 1989 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 1990 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1991 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1992 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1993 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1994 <reboot into current> 1995 <do a "native" rebuild/install as described in the previous section> 1996 <maybe install compatibility libraries from ports/misc/compat*> 1997 <reboot> 1998 1999 2000 To upgrade in-place from stable to current 2001 ---------------------------------------------- 2002 <make sure you have good level 0 dumps> 2003 make buildworld [9] 2004 make buildkernel KERNCONF=YOUR_KERNEL_HERE [8] 2005 make installkernel KERNCONF=YOUR_KERNEL_HERE 2006 [1] 2007 <reboot in single user> [3] 2008 mergemaster -Fp [5] 2009 make installworld 2010 mergemaster -Fi [4] 2011 make delete-old [6] 2012 <reboot> 2013 2014 Make sure that you've read the UPDATING file to understand the 2015 tweaks to various things you need. At this point in the life 2016 cycle of current, things change often and you are on your own 2017 to cope. The defaults can also change, so please read ALL of 2018 the UPDATING entries. 2019 2020 Also, if you are tracking -current, you must be subscribed to 2021 freebsd-current@freebsd.org. Make sure that before you update 2022 your sources that you have read and understood all the recent 2023 messages there. If in doubt, please track -stable which has 2024 much fewer pitfalls. 2025 2026 [1] If you have third party modules, such as vmware, you 2027 should disable them at this point so they don't crash your 2028 system on reboot. 2029 2030 [3] From the bootblocks, boot -s, and then do 2031 fsck -p 2032 mount -u / 2033 mount -a 2034 sh /etc/rc.d/zfs start # mount zfs filesystem, if needed 2035 cd src # full path to source 2036 adjkerntz -i # if CMOS is wall time 2037 Also, when doing a major release upgrade, it is required that 2038 you boot into single user mode to do the installworld. 2039 2040 [4] Note: This step is non-optional. Failure to do this step 2041 can result in a significant reduction in the functionality of the 2042 system. Attempting to do it by hand is not recommended and those 2043 that pursue this avenue should read this file carefully, as well 2044 as the archives of freebsd-current and freebsd-hackers mailing lists 2045 for potential gotchas. The -U option is also useful to consider. 2046 See mergemaster(8) for more information. 2047 2048 [5] Usually this step is a no-op. However, from time to time 2049 you may need to do this if you get unknown user in the following 2050 step. It never hurts to do it all the time. You may need to 2051 install a new mergemaster (cd src/usr.sbin/mergemaster && make 2052 install) after the buildworld before this step if you last updated 2053 from current before 20130425 or from -stable before 20130430. 2054 2055 [6] This only deletes old files and directories. Old libraries 2056 can be deleted by "make delete-old-libs", but you have to make 2057 sure that no program is using those libraries anymore. 2058 2059 [8] The new kernel must be able to run existing binaries used by an 2060 installworld. When upgrading across major versions, the new kernel's 2061 configuration must include the correct COMPAT_FREEBSD<n> option for 2062 existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries). Failure 2063 to do so may leave you with a system that is hard to boot to recover. A 2064 GENERIC kernel will include suitable compatibility options to run 2065 binaries from older branches. Note that the ability to run binaries 2066 from unsupported branches is not guaranteed. 2067 2068 Make sure that you merge any new devices from GENERIC since the 2069 last time you updated your kernel config file. Options also 2070 change over time, so you may need to adjust your custom kernels 2071 for these as well. 2072 2073 [9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the 2074 "?=" instead of the "=" assignment operator, so that buildworld can 2075 override the CPUTYPE if it needs to. 2076 2077 MAKEOBJDIRPREFIX must be defined in an environment variable, and 2078 not on the command line, or in /etc/make.conf. buildworld will 2079 warn if it is improperly defined. 2080FORMAT: 2081 2082This file contains a list, in reverse chronological order, of major 2083breakages in tracking -current. It is not guaranteed to be a complete 2084list of such breakages, and only contains entries since September 23, 2011. 2085If you need to see UPDATING entries from before that date, you will need 2086to fetch an UPDATING file from an older FreeBSD release. 2087 2088Copyright information: 2089 2090Copyright 1998-2009 M. Warner Losh. 2091 2092Redistribution, publication, translation and use, with or without 2093modification, in full or in part, in any form or format of this 2094document are permitted without further permission from the author. 2095 2096THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 2097IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 2098WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2099DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 2100INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2101(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2102SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2103HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2104STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 2105IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2106POSSIBILITY OF SUCH DAMAGE. 2107 2108Contact Warner Losh if you have any questions about your use of 2109this document. 2110 2111$FreeBSD$ 2112