1Updating Information for users of FreeBSD-CURRENT. 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://docs.freebsd.org/en/books/handbook/cutting-edge/#makeworld 10 11Items affecting the ports and packages system can be found in 12/usr/ports/UPDATING. Please read that file before updating system packages 13and/or ports. 14 15NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW: 16 FreeBSD 15.x has many debugging features turned on, in both the kernel 17 and userland. These features attempt to detect incorrect use of 18 system primitives, and encourage loud failure through extra sanity 19 checking and fail stop semantics. They also substantially impact 20 system performance. If you want to do performance measurement, 21 benchmarking, and optimization, you'll want to turn them off. This 22 includes various WITNESS- related kernel options, INVARIANTS, malloc 23 debugging flags in userland, and various verbose features in the 24 kernel. Many developers choose to disable these features on build 25 machines to maximize performance. (To completely disable malloc 26 debugging, define WITH_MALLOC_PRODUCTION in /etc/src.conf and rebuild 27 world, or to merely disable the most expensive debugging functionality 28 at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) 29 3020250201: 31 The NFS related daemons, that provide RPC services to the kernel: 32 gssd(8), rpcbind(8), rpc.tlsservd(8) and rpc.tlsclntd(8), now use a 33 different transport - netlink(4) socket instead of unix(4). Users of 34 NFS need to upgrade both kernel and world (binaries and libc) at once. 35 Also, any revision between 88cd1e17a7d8 and 99e5a70046da should be 36 avoided. 37 3820250129: 39 Defer the January 19, 2038 date limit in UFS1 filesystems to 40 February 7, 2106. This affects only UFS1 format filesystems. 41 See commit message 1111a44301da for details. 42 4320250127: 44 The Allwinner a10_timer driver has been renamed to aw_driver. If you 45 have a custom kernel configuration including the line 'device 46 a10_timer', it must be adjusted to 'device aw_timer'. The same applies 47 for device exclusions with 'nodevice'. 48 4920250106: 50 A new SOC_ROCKCHIP options appeared, so if you have a custom kernel configuration 51 targetting Rockchip SoC you need to add it so shared and mandatory drivers for 52 this SoC familly will be selected. 53 Also a new rk8xx device was added, this select the base driver for Rockchip PMIC. 54 5520241223: 56 The layout of NFS file handles for the tarfs, tmpfs, cd9660, and ext2fs 57 file systems has changed. An NFS server that exports any of these file 58 systems will need its clients to unmount and remount the exports. 59 6020241216: 61 The iwm(4) firmwares are no longer compiled as kernel modules but instead 62 shipped as raw files. For pkgbase users if you use iwm(4) you will need 63 to install the FreeBSD-firmware-iwm package. 64 6520241124: 66 The OpenBSD derived bc and dc implementations and the WITHOUT_GH_BC 67 option that allowed building them instead of the advanced version 68 imported more than 4 years ago have been removed. 69 7020241025: 71 The support for the rc_fast_and_loose variable has been removed from 72 rc.subr(8). Users setting rc_fast_and_loose on their systems are 73 advised to make sure their customizations to rc service scripts 74 do not depend on having a single shell environment shared across 75 all the rc service scripts during booting and shutdown. 76 7720241013: 78 The ciss driver was updated to cope better with hotplug events that 79 caused it to panic before, and to support more than 48 drives attached 80 to the card. These changes were made w/o benefit of hardware for testing 81 and ciss(4) users should be on the lookout for regressions. 82 8320240729: 84 The build now defaults to WITHOUT_CLEAN - i.e., no automatic clean 85 is performed at the beginning of buildworld or buildkernel. The 86 WITH_CLEAN src.conf(5) knob can be used to restore the previous 87 behaviour. 88 89 If you encounter incremental build issues, please report them to the 90 freebsd-current mailing list so that a special-case dependency can be 91 added, if necessary. 92 9320240715: 94 We now lean more heavily on ACPI enumeration for some traditional 95 devices. uart has moved from isa to acpi so the hints act as wiring 96 instead of device enumeration. Hints for parallel port, floppy, etc 97 have been removed. Before upgrading, grep your dmesg for lines like: 98 uart1: non-PNP ISA device will be removed from GENERIC in FreeBSD 15. 99 to see if you need to start including hints for the device on isa 100 in your loader.conf or device.hints file. APU1 (but not APU2) boards 101 are known to be affected, but there may be others. 102 10320240712: 104 Support for armv6 has been disconnected and is being removed. 105 10620240617: 107 ifconfig now treats IPv4 addresses without a width or mask as an error. 108 Specify the desired mask or width along with the IP address on the 109 ifconfig command line and in rc.conf. 110 11120240428: 112 OpenBSM auditing runtime (auditd, etc.) has been moved into the new 113 package FreeBSD-audit. If you use OpenBSM auditing and pkgbase, you 114 should install FreeBSD-audit. 115 11620240424: 117 cron, lpr, and ntpd have been moved from FreeBSD-utilities into their 118 own packages. If you use pkgbase, you should install the relevant 119 packages: FreeBSD-cron, FreeBSD-lp, or FreeBSD-ntp. 120 12120240406: 122 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 123 been upgraded to 18.1.6. It is important that you run `make delete-old` 124 as described in the COMMON ITEMS section, otherwise several libc++ 125 headers that are obsolete and need to be removed can cause compilation 126 errors in C++ programs. 127 12820240205: 129 For dynamically linked programs, system calls are now made from 130 libsys rather than libc. No change in linkage is required as 131 libsys is an auxiliary filter for libc. People building custom 132 images must ensure that libsys.so.7 is included. 133 13420240202: 135 Loader now also read configuration files listed in local_loader_conf_files. 136 Files listed here are the last ones read. And /boot/loader.conf.local was 137 moved from loader_conf_files to local_loader_conf_files leaving only 138 loader.conf and device.hints in loader_conf_files by default. 139 140 The following sequencing is applied: 141 142 1. Bootstrap: 143 /boot/defaults/loader.conf 144 145 2. Read loader_conf_files files: 146 /boot/device.hints 147 /boot/loader.conf 148 149 3. Read loader_conf_dirs files: 150 /boot/loader.conf.d/*.conf 151 152 4. And finally, rread local_loader_conf_files files: 153 /boot/loader.conf.local 154 15520240201: 156 sendmail 8.18.1 has been imported and merged. This version enforces 157 stricter RFC compliance by default, especially with respect to line 158 endings. This may cause issues with receiving messages from 159 non-compliant MTAs; please see the first 8.18.1 release note in 160 contrib/sendmail/RELEASE_NOTES for mitigations. 161 16220240111: 163 Commit cc760de2183f changed the internal interface between 164 the nfscommon and nfscl modules. As such, both need to be 165 rebuilt from sources. Therefore, __FreeBSD_version was 166 bumped to 1500010. 167 16820231120: 169 If you have an arm64 system that uses ACPI, you will need to update your 170 loader.efi in the ESP when you update past this point. Detection of ACPI 171 was moved earlier in the binary so the scripts could use it, but old 172 binaries don't have this, so we default to 'no ACPI' in this case. You can 173 undisable ACPI by doing 174 OK unset hint.acpi.0.disabled 175 This can also be used to recover any other system that was updated in the 176 small window where amd64 was also broken. 177 17820231113: 179 The WITHOUT_LLD_IS_LD option has been removed. When LLD is enabled 180 it is always installed as /usr/bin/ld. 181 18220231027: 183 Forward compatibility (running the new code on old kernels) for the 184 "ino64" project have been removed. The need for it has passed long ago. 185 18620231018: 187 Commit 57ce37f9dcd0 changed the internal KAPI between the 188 nfscommon and nfscl modules. Both must be rebuilt from sources. 189 19020231010: 191 dialog(1) has been replaced in base by bsddialog(1), while most of the 192 time replacing a dialog(1) call by a bsddialog(1) call works out of the 193 box, bsddialog(1) is not considered as a drop-in replacement for 194 dialog(1). 195 196 If you do depend on dialog(1) functionality, please install cdialog 197 from ports: 198 199 pkg install cdialog 200 20120230927: 202 The EARLY_AP_STARTUP kernel option is mandatory on x86. The option 203 has been added to DEFAULTS, so it should automatically be included in 204 custom kernel configurations without any additional change. 205 20620230922: 207 A new loader tunable net.pf.default_to_drop allows pf(4)’s default 208 behaviour to be changed from pass to drop. Previously this required 209 recompiling the kernel with the option PF_DEFAULT_TO_DROP. 210 21120230914: 212 Enable splitting out pkgbase manpages into separate packages by 213 default. To disable this, set WITHOUT_MANSPLITPKG=yes in src.conf. 214 21520230911: 216 Move standard include files to the clibs-dev package and move clang 217 internal libraries and headers to clang and clang-dev. Upgrading systems 218 installed using pkgbase past this change involves extra steps to allow 219 for these file moves: 220 221 pkg upgrade -y FreeBSD-utilities 222 pkg upgrade -y FreeBSD-utilities-dev 223 pkg upgrade -y 224 22520230909: 226 Enable vnet sysctl variables to be loader tunable. SYSCTLs which 227 belongs to VNETs can be initialized during early boot or module 228 loading if they are marked with CTLFLAG_TUN and there are 229 corresponding kernel environment variables. 230 23120230901: 232 The WITH_INIT_ALL_PATTERN and WITH_INIT_ALL_ZERO build options have 233 been replaced by INIT_ALL=pattern and INIT_ALL=zero respectively. 234 23520230824: 236 FreeBSD 15.0-CURRENT. 237 23820230817: 239 Serial communication (in boot loaders, kernel, and userland) has 240 been changed to default to 115200 bps, in line with common industry 241 practice and typcial firmware serial console redirection 242 configuration. 243 244 Note that the early x86 BIOS bootloader (i.e., boot0sio) does not 245 support rates above 9600 bps and is not changed. boot0sio users may 246 set BOOT_COMCONSOLE_SPEED=9600 to use 9600 for all of the boot 247 components, or use the standard boot0 and have the boot2 stage start 248 with the serial port at 115200. 249 25020230807: 251 Following the general removal of MIPS support, the ath(4) AHB bus- 252 frontend has been removed, too, and building of the PCI support is 253 integrated with the ath(4) main module again. As a result, there's 254 no longer a need for if_ath_pci_load="YES" in /boot/loader.conf or 255 "device ath_pci" in the kernel configuration. 256 25720230803: 258 MAXCPU has been increased to 1024 in the amd64 GENERIC kernel config. 259 Out-of-tree kernel modules will need to be rebuilt. 260 26120230724: 262 CAM has been mechanically updated s/u_int(64|32|16|8)_t/uint\1_t/g 263 to move to the standard uintXX_t types from the old, traditional 264 BSD u_intXX_t types. This should be a NOP, but may cause problems 265 for out of tree changes. The SIMs were not updated since most of 266 the old u_intXX_t uses weren't due to CAM interfaces. 267 26820230713: 269 stable/14 branch created. 270 27120230629: 272 The heuristic for detecting old chromebooks with an EC bug that requires 273 atkbdc driver workarounds has changed. There should be no functional 274 change, but if your old chromebook's keyboard stops working, please 275 file a PR and assign it to imp. 276 27720230623: 278 OpenSSL has been updated to version 3.0, including changes throughout 279 the base system. It is important to rebuild third-party software 280 after upgrading. 281 28220230619: 283 To enable pf rdr rules for connections initiated from the host, pf 284 filter rules can be optionally enabled for packets delivered 285 locally. This can change the behavior of rules which match packets 286 delivered to lo0. To enable this feature: 287 288 sysctl net.pf.filter_local=1 289 service pf restart 290 291 When enabled, its best to ensure that packets delivered locally are not 292 filtered, e.g. by adding a 'skip on lo' rule. 293 29420230613: 295 Improvements to libtacplus(8) mean that tacplus.conf(5) now 296 follows POSIX shell syntax rules. This may cause TACACS+ 297 authentication to fail if the shared secret contains a single 298 quote, double quote, or backslash character which isn't 299 already properly quoted or escaped. 300 30120230612: 302 Belatedly switch the default nvme block device on x86 from nvd to nda. 303 nda created nvd compatibility links by default, so this should be a 304 nop. If this causes problems for your application, set hw.nvme.use_nvd=1 305 in your loader.conf or add `options NVME_USE_NVD=1` to your kernel 306 config. To disable the nvd compatibility aliases, add 307 kern.cam.nda.nvd_compat=0 to loader.conf. The default has been nda on 308 all non-x86 platforms for some time now. If you need to fall back, 309 please email imp@freebsd.org about why. 310 311 Encrypted swap partitions need to be changed from nvd to nda if you 312 migrate, or you need to use the above to switch back to nvd. 313 31420230422: 315 Remove portsnap(8). Users are encouraged to obtain the ports tree 316 using git instead. 317 31820230420: 319 Add jobs.mk to save typing. Enables -j${JOB_MAX} and logging 320 eg. 321 make buildworld-jobs 322 runs 323 make -j${JOB_MAX} buildworld > ../buildworld.log 2>&1 324 325 where JOB_MAX is derrived from ncpus in local.sys.mk if not set in env. 326 32720230316: 328 Video related devices for some arm devices have been renamed. 329 If you have a custom kernel config and want to use hdmi output on 330 IMX6 board you need to add "device dwc_hdmi" "device imx6_hdmi" and 331 "device imx6_ipu" to it. 332 If you have a custom kernel config and want to use hdmi output on 333 TI AM335X board you need to add "device tda19988" to it. 334 If you add "device hdmi" in it you need to remove it as it doesn't 335 exist anymore. 336 33720230221: 338 Introduce new kernel options KBD_DELAY1 and KBD_DELAY2. See atkbdc(4) 339 for details. 340 34120230206: 342 sshd now defaults to having X11Forwarding disabled, following upstream. 343 Administrators who wish to enable X11Forwarding should add 344 `X11Forwarding yes` to /etc/ssh/sshd_config. 345 34620230204: 347 Since commit 75d41cb6967 Huawei 3G/4G LTE Mobile Devices do not default 348 to ECM, but NCM mode and need u3g and ucom modules loaded. See cdce(4). 349 35020230130: 351 As of commit 7c40e2d5f685, the dependency on netlink(4) has been added 352 to the linux_common(4) module. Users relying on linux_common may need 353 to complile netlink(4) module if it is not present in their kernel. 354 35520230126: 356 The WITHOUT_CXX option has been removed. C++ components in the base 357 system are now built unconditionally. 358 35920230113: 360 LinuxKPI pci.h changes may require out-of-tree drivers to be recompiled. 361 Bump _FreeBSD_version to 1400078 to be able to detect this change. 362 36320221212: 364 llvm-objump is now always installed as objdump. Previously there was 365 no /usr/bin/objdump unless the WITH_LLVM_BINUTILS knob was used. 366 367 Some LLVM objdump options have a different output format compared to 368 GNU objdump; readelf is available for inspecting ELF files, and GNU 369 objdump is available from the devel/binutils port or package. 370 37120221205: 372 dma(8) has replaced sendmail(8) as the default mta. For people willing 373 to reenable sendmail(8): 374 375 $ cp /usr/share/examples/sendmail/mailer.conf /etc/mail/mailer.conf 376 377 and add sendmail_enable="YES" to rc.conf. 378 37920221204: 380 hw.bus.disable_failed_devices has changed from 'false' to 'true' by 381 default. Now if newbus succeeds in probing a device, but fails to attach 382 the device, we'll disable the device. In the past, we'd keep retrying 383 the device on each new driver loaded. To get that behavior now, one 384 needs to use devctl to re-enable the device, and reprobe it (or set 385 the sysctl/tunable hw.bus.disable_failed_devices=false). 386 387 NOTE: This was reverted 20221205 due to unexpected compatibility issues 388 38920221122: 390 pf no longer accepts 'scrub fragment crop' or 'scrub fragment drop-ovl'. 391 These configurations are no longer automatically reinterpreted as 392 'scrub fragment reassemble'. 393 39420221121: 395 The WITHOUT_CLANG_IS_CC option has been removed. When Clang is enabled 396 it is always installed as /usr/bin/cc (and c++, cpp). 397 39820221026: 399 Some programs have been moved into separate packages. It is recommended 400 for pkgbase users to do: 401 402 pkg install FreeBSD-dhclient FreeBSD-geom FreeBSD-resolvconf \ 403 FreeBSD-devd FreeBSD-devmatch 404 405 after upgrading to restore all the component that were previously 406 installed. 407 40820221002: 409 OPIE has been removed from the base system. If needed, it can 410 be installed from ports (security/opie) or packages (opie). 411 Otherwise, make sure that your PAM policies do not reference 412 pam_opie or pam_opieaccess. 413 41420220610: 415 LinuxKPI pm.h changes require an update to the latest drm-kmod version 416 before re-compiling to avoid errors. 417 41820211230: 419 The macros provided for the manipulation of CPU sets (e.g. CPU_AND) 420 have been modified to take 2 source arguments instead of only 1. 421 Externally maintained sources that use these macros will have to 422 be adapted. The FreeBSD version has been bumped to 1400046 to 423 reflect this change. 424 42520211214: 426 A number of the kernel include files are able to be included by 427 themselves. A test has been added to buildworld to enforce this. 428 42920211209: 430 Remove mips as a recognized target. This starts the decommissioning of 431 mips support in FreeBSD. mips related items will be removed wholesale in 432 the coming days and weeks. 433 434 This broke the NO_CLEAN build for some people. Either do a clean build 435 or touch 436 lib/clang/include/llvm/Config/Targets.def 437 lib/clang/include/llvm/Config/AsmParsers.def 438 lib/clang/include/llvm/Config/Disassemblers.def 439 lib/clang/include/llvm/Config/AsmPrinters.def 440 before the build to force everything to rebuild that needs to. 441 44220211202: 443 Unbound support for RFC8375: The special-use domain 'home.arpa' is 444 by default blocked. To unblock it use a local-zone nodefault 445 statement in unbound.conf: 446 local-zone: "home.arpa." nodefault 447 448 Or use another type of local-zone to override with your choice. 449 450 The reason for this is discussed in Section 6.1 of RFC8375: 451 Because 'home.arpa.' is not globally scoped and cannot be secured 452 using DNSSEC based on the root domain's trust anchor, there is no way 453 to tell, using a standard DNS query, in which homenet scope an answer 454 belongs. Consequently, users may experience surprising results with 455 such names when roaming to different homenets. 456 45720211110: 458 Commit b8d60729deef changed the TCP congestion control framework so 459 that any of the included congestion control modules could be 460 the single module built into the kernel. Previously newreno 461 was automatically built in through direct reference. As of 462 this commit you are required to declare at least one congestion 463 control module (e.g. 'options CC_NEWRENO') and to also declare a 464 default using the CC_DEFAULT option (e.g. options CC_DEFAULT="newreno\"). 465 The GENERIC configuration includes CC_NEWRENO and defines newreno 466 as the default. If no congestion control option is built into the 467 kernel and you are including networking, the kernel compile will 468 fail. Also if no default is declared the kernel compile will fail. 469 47020211118: 471 Mips has been removed from universe builds. It will be removed from the 472 tree shortly. 473 47420211106: 475 Commit f0c9847a6c47 changed the arguments for VOP_ALLOCATE. 476 The NFS modules must be rebuilt from sources and any out 477 of tree file systems that implement their own VOP_ALLOCATE 478 may need to be modified. 479 48020211022: 481 The synchronous PPP kernel driver sppp(4) has been removed. 482 The cp(4) and ce(4) drivers are now always compiled with netgraph(4) 483 support, formerly enabled by NETGRAPH_CRONYX option. 484 48520211020: 486 sh(1) is now the default shell for the root user. To force root to use 487 the csh shell, please run the following command as root: 488 489 # chsh -s csh 490 49120211004: 492 Ncurses distribution has been split between libtinfow and libncurses 493 with libncurses.so becoming a linker (ld) script to seamlessly link 494 to libtinfow as needed. Bump _FreeBSD_version to 1400035 to reflect 495 this change. 496 49720210923: 498 As of commit 8160a0f62be6, the dummynet module no longer depends on the 499 ipfw module. Dummynet can now be used by pf as well as ipfw. As such 500 users who relied on this dependency may need to include ipfw in the 501 list of modules to load on their systems. 502 50320210922: 504 As of commit 903873ce1560, the mixer(8) utility has got a slightly 505 new syntax. Please refer to the mixer(8) manual page for more 506 information. The old mixer utility can be installed from ports: 507 audio/freebsd-13-mixer 508 50920210911: 510 As of commit 55089ef4f8bb, the global variable nfs_maxcopyrange has 511 been deleted from the nfscommon.ko. As such, nfsd.ko must be built 512 from up to date sources to avoid an undefined reference when 513 being loaded. 514 51520210817: 516 As of commit 62ca9fc1ad56 OpenSSL no longer enables kernel TLS 517 by default. Users can enable kernel TLS via the "KTLS" SSL 518 option. This can be enabled globally by using a custom 519 OpenSSL config file via OPENSSL_CONF or via an 520 application-specific configuration option for applications 521 which permit setting SSL options via SSL_CONF_cmd(3). 522 52320210811: 524 Commit 3ad1e1c1ce20 changed the internal KAPI between the NFS 525 modules. Therefore, all need to be rebuilt from sources. 526 52720210730: 528 Commit b69019c14cd8 removes pf's DIOCGETSTATESNV ioctl. 529 As of be70c7a50d32 it is no longer used by userspace, but it does mean 530 users may not be able to enumerate pf states if they update the kernel 531 past b69019c14cd8 without first updating userspace past be70c7a50d32. 532 53320210729: 534 As of commit 01ad0c007964 if_bridge member interfaces can no longer 535 change their MTU. Changing the MTU of the bridge itself will change the 536 MTU on all member interfaces instead. 537 53820210716: 539 Commit ee29e6f31111 changed the internal KAPI between the nfscommon 540 and nfsd modules. Therefore, both need to be rebuilt from sources. 541 Bump __FreeBSD_version to 1400026 for this KAPI change. 542 54320210715: 544 The 20210707 awk update brought in a change in behavior. This has 545 been corrected as of d4d252c49976. Between these dates, if you 546 installed a new awk binary, you may not be able to build a new 547 kernel because the change in behavior affected the genoffset 548 script used to build the kernel. If you did update, the fix is 549 to update your sources past the above hash and do 550 % cd usr.bin/awk 551 % make clean all 552 % sudo -E make install 553 to enable building kernels again. 554 55520210708: 556 Commit 1e0a518d6548 changed the internal KAPI between the NFS 557 modules. They all need to be rebuilt from sources. I did not 558 bump __FreeBSD_version, since it was bumped recently. 559 56020210707: 561 awk has been updated to the latest one-true-awk version 20210215. 562 This contains a number of minor bug fixes. 563 56420210624: 565 The NFSv4 client now uses the highest minor version of NFSv4 566 supported by the NFSv4 server by default instead of minor version 0, 567 for NFSv4 mounts. 568 The "minorversion" mount option may be used to override this default. 569 57020210618: 571 Bump __FreeBSD_version to 1400024 for LinuxKPI changes. 572 Most notably netdev.h can change now as the (last) dependencies 573 (mlx4/ofed) are now using struct ifnet directly, but also for PCI 574 additions and others. 575 57620210618: 577 The directory "blacklisted" under /usr/share/certs/ has been 578 renamed to "untrusted". 579 58020210611: 581 svnlite has been removed from base. Should you need svn for any reason 582 please install the svn package or port. 583 58420210611: 585 Commit e1a907a25cfa changed the internal KAPI between the krpc 586 and nfsserver. As such, both modules must be rebuilt from 587 sources. Bump __FreeBSD_version to 1400022. 588 58920210610: 590 The an(4) driver has been removed from FreeBSD. 591 59220210608: 593 The vendor/openzfs branch was renamed to vendor/openzfs/legacy to 594 start tracking OpenZFS upstream more closely. Please see 595https://lists.freebsd.org/archives/freebsd-current/2021-June/000153.html 596 for details on how to correct any errors that might result. The 597 short version is that you need to remove the old branch locally: 598 git update-ref -d refs/remotes/freebsd/vendor/openzfs 599 (assuming your upstream origin is named 'freebsd'). 600 60120210525: 602 Commits 17accc08ae15 and de102f870501 add new files to LinuxKPI 603 which break drm-kmod. In addition various other additions where 604 committed. Bump __FreeBSD_version to 1400015 to be able to 605 detect this. 606 60720210513: 608 Commit ca179c4d74f2 changed the package in which the OpenSSL 609 libraries and utilities are packaged. 610 It is recommended for pkgbase user to do: 611 pkg install -f FreeBSD-openssl 612 before pkg upgrade otherwise some dependencies might not be met 613 and pkg will stop working as libssl will not be present anymore 614 on the system. 615 61620210426: 617 Commit 875977314881 changed the internal KAPI between 618 the nfsd and nfscommon modules. As such these modules 619 need to be rebuilt from sources. 620 Without this patch in your NFSv4.1/4.2 server, enabling 621 delegations by setting vfs.nfsd.issue_delegations non-zero 622 is not recommended. 623 62420210411: 625 Commit 7763814fc9c2 changed the internal KAPI between 626 the krpc and NFS. As such, the krpc, nfscommon and 627 nfscl modules must all be rebuilt from sources. 628 Without this patch, NFSv4.1/4.2 mounts should not 629 be done with the nfscbd(8) daemon running, to avoid 630 needing a working back channel for server->client RPCs. 631 63220210330: 633 Commit 01ae8969a9ee fixed the NFSv4.1/4.2 server so that it 634 handles binding of the back channel as required by RFC5661. 635 Until this patch is in your server, avoid use of the "nconnects" 636 mount option for Linux NFSv4.1/4.2 mounts. 637 63820210225: 639 For 64-bit architectures the base system is now built with Position 640 Independent Executable (PIE) support enabled by default. It may be 641 disabled using the WITHOUT_PIE knob. A clean build is required. 642 64320210128: 644 Various LinuxKPI functionality was added which conflicts with DRM. 645 Please update your drm-kmod port to after the __FreeBSD_version 1400003 646 update. 647 64820210121: 649 stable/13 branch created. 650 65120210108: 652 PC Card attachments for all devices have been removed. In the case of 653 wi and cmx, the entire drivers were removed because they were only 654 PC Card devices. FreeBSD_version 1300134 should be used for this 655 since it was bumped so recently. 656 65720210107: 658 Transport-independent parts of HID support have been split off the USB 659 code in to separate subsystem. Kernel configs which include one of 660 ums, ukbd, uhid, atp, wsp, wmt, uaudio, ugold or ucycom drivers should 661 be updated with adding of "device hid" line. 662 66320210105: 664 ncurses installation has been modified to only keep the widechar 665 enabled version. Incremental build is broken for that change, so it 666 requires a clean build. 667 66820201223: 669 The FreeBSD project has migrated from Subversion to Git. Temporary 670 instructions can be found at 671 https://github.com/bsdimp/freebsd-git-docs/blob/main/src-cvt.md 672 and other documents in that repo. 673 67420201216: 675 The services database has been updated to cover more of the basic 676 services expected in a modern system. The database is big enough 677 that it will cause issues in mergemaster in Releases previous to 678 12.2 and 11.3, or in very old current systems from before r358154. 679 68020201215: 681 Obsolete in-tree GDB 6.1.1 has been removed. GDB (including kgdb) 682 may be installed from ports or packages. 683 68420201124: 685 ping6 has been merged into ping. It can now be called as "ping -6". 686 See ping(8) for details. 687 68820201108: 689 Default value of net.add_addr_allfibs has been changed to 0. 690 If you have multi-fib configuration and rely on existence of all 691 interface routes in every fib, you need to set the above sysctl to 1. 692 69320201030: 694 The internal pre-processor in the calendar(1) program has been 695 extended to support more C pre-processor commands (e.g. #ifdef, #else, 696 and #undef) and to detect unbalanced conditional statements. 697 Error messages have been extended to include the filename and line 698 number if processing stops to help fixing malformed data files. 699 70020201026: 701 All the data files for the calendar(1) program, except calendar.freebsd, 702 have been moved to the deskutils/calendar-data port, much like the 703 jewish calendar entries were moved to deskutils/hebcal years ago. After 704 make delete-old-files, you need to install it to retain full 705 functionality. calendar(1) will issue a reminder for files it can't 706 find. 707 70820200923: 709 LINT files are no longer generated. We now include the relevant NOTES 710 files. Note: This may cause conflicts with updating in some cases. 711 find sys -name LINT\* -delete 712 is suggested across this commit to remove the generated LINT files. 713 714 If you have tried to update with generated files there, the svn 715 command you want to un-auger the tree is 716 cd sys/amd64/conf 717 svn revert -R . 718 and then do the above find from the top level. Substitute 'amd64' 719 above with where the error message indicates a conflict. 720 72120200824: 722 OpenZFS support has been integrated. Do not upgrade root pools until 723 the loader is updated to support zstd. Furthermore, we caution against 724 'zpool upgrade' for the next few weeks. The change should be transparent 725 unless you want to use new features. 726 727 Not all "NO_CLEAN" build scenarios work across these changes. Many 728 scenarios have been tested and fixed, but rebuilding kernels without 729 rebuilding world may fail. 730 731 The ZFS cache file has moved from /boot to /etc to match the OpenZFS 732 upstream default. A fallback to /boot has been added for mountroot. 733 734 Pool auto import behavior at boot has been moved from the kernel module 735 to an explicit "zpool import -a" in one of the rc scripts enabled by 736 zfs_enable=YES. This means your non-root zpools won't auto import until 737 you upgrade your /etc/rc.d files. 738 73920200824: 740 The resume code now notifies devd with the 'kernel' system 741 rather than the old 'kern' subsystem to be consistent with 742 other use. The old notification will be created as well, but 743 will be removed prior to FreeBSD 14.0. 744 74520200821: 746 r362275 changed the internal API between the kernel RPC and the 747 NFS modules. As such, all the modules must be recompiled from 748 sources. 749 75020200817: 751 r364330 modified the internal API used between the NFS modules. 752 As such, all the NFS modules must be re-compiled from sources. 753 75420200816: 755 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 756 been upgraded to 11.0.0. Please see the 20141231 entry below for 757 information about prerequisites and upgrading, if you are not already 758 using clang 3.5.0 or higher. 759 76020200810: 761 r364092 modified the internal ABI used between the kernel NFS 762 modules. As such, all of these modules need to be rebuilt 763 from sources, so a version bump was done. 764 76520200807: 766 Makefile.inc has been updated to work around the issue documented in 767 20200729. It was a case where the optimization of using symbolic links 768 to point to binaries created a situation where we'd run new binaries 769 with old libraries starting midway through the installworld process. 770 77120200729: 772 r363679 has redefined some undefined behavior in regcomp(3); notably, 773 extraneous escapes of most ordinary characters will no longer be 774 accepted. An exp-run has identified all of the problems with this in 775 ports, but other non-ports software may need extra escapes removed to 776 continue to function. 777 778 Because of this change, installworld may encounter the following error 779 from rtld: Undefined symbol "regcomp@FBSD_1.6" -- It is imperative that 780 you do not halt installworld. Instead, let it run to completion (whether 781 successful or not) and run installworld once more. 782 78320200627: 784 A new implementation of bc and dc has been imported in r362681. This 785 implementation corrects non-conformant behavior of the previous bc 786 and adds GNU bc compatible options. It offers a number of extensions, 787 is much faster on large values, and has support for message catalogs 788 (a number of languages are already supported, contributions of further 789 languages welcome). The option WITHOUT_GH_BC can be used to build the 790 world with the previous versions of bc and dc. 791 79220200625: 793 r362639 changed the internal API used between the NFS kernel modules. 794 As such, they all need to be rebuilt from sources. 795 79620200613: 797 r362158 changed the arguments for VFS_CHECKEXP(). As such, any 798 out of tree file systems need to be modified and rebuilt. 799 Also, any file systems that are modules must be rebuilt. 800 80120200604: 802 read(2) of a directory fd is now rejected by default. root may 803 re-enable it for system root only on non-ZFS filesystems with the 804 security.bsd.allow_read_dir sysctl(8) MIB if 805 security.bsd.suser_enabled=1. 806 807 It may be advised to setup aliases for grep to default to `-d skip` if 808 commonly non-recursively grepping a list that includes directories and 809 the potential for the resulting stderr output is not tolerable. Example 810 aliases are now installed, commented out, in /root/.cshrc and 811 /root/.shrc. 812 81320200523: 814 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 815 been upgraded to 10.0.1. Please see the 20141231 entry below for 816 information about prerequisites and upgrading, if you are not already 817 using clang 3.5.0 or higher. 818 81920200512: 820 Support for obsolete compilers has been removed from the build system. 821 Clang 6 and GCC 6.4 are the minimum supported versions. 822 82320200424: 824 closefrom(2) has been moved under COMPAT12, and replaced in libc with a 825 stub that calls close_range(2). If using a custom kernel configuration, 826 you may want to ensure that the COMPAT_FREEBSD12 option is included, as 827 a slightly older -CURRENT userland and older FreeBSD userlands may not 828 be functional without closefrom(2). 829 83020200414: 831 Upstream DTS from Linux 5.6 was merged and they now have the SID 832 and THS (Secure ID controller and THermal Sensor) node present. 833 The DTB overlays have now been removed from the tree for the H3/H5 and 834 A64 SoCs and the aw_sid and aw_thermal driver have been updated to 835 deal with upstream DTS. If you are using those overlays you need to 836 remove them from loader.conf and update the DTBs on the FAT partition. 837 83820200310: 839 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 840 been upgraded to 10.0.0. Please see the 20141231 entry below for 841 information about prerequisites and upgrading, if you are not already 842 using clang 3.5.0 or higher. 843 84420200309: 845 The amd(8) automount daemon has been removed from the source tree. 846 As of FreeBSD 10.1 autofs(5) is the preferred tool for automounting. 847 amd is still available in the sysutils/am-utils port. 848 84920200301: 850 Removed brooktree driver (bktr.4) from the tree. 851 85220200229: 853 The WITH_GPL_DTC option has been removed. The BSD-licenced device tree 854 compiler in usr.bin/dtc is used on all architectures which use dtc, and 855 the GPL dtc is available (if needed) from the sysutils/dtc port. 856 85720200229: 858 The WITHOUT_LLVM_LIBUNWIND option has been removed. LLVM's libunwind 859 is used by all supported CPU architectures. 860 86120200229: 862 GCC 4.2.1 has been removed from the tree. The WITH_GCC, 863 WITH_GCC_BOOTSTRAP, and WITH_GNUCXX options are no longer available. 864 Users who wish to build FreeBSD with GCC must use the external toolchain 865 ports or packages. 866 86720200220: 868 ncurses has been updated to a newer version (6.2-20200215). Given the ABI 869 has changed, users will have to rebuild all the ports that are linked to 870 ncurses. 871 87220200217: 873 The size of struct vnet and the magic cookie have changed. 874 Users need to recompile libkvm and all modules using VIMAGE 875 together with their new kernel. 876 87720200212: 878 Defining the long deprecated NO_CTF, NO_DEBUG_FILES, NO_INSTALLLIB, 879 NO_MAN, NO_PROFILE, and NO_WARNS variables is now an error. Update 880 your Makefiles and scripts to define MK_<var>=no instead as required. 881 882 One exception to this is that program or library Makefiles should 883 define MAN to empty rather than setting MK_MAN=no. 884 88520200108: 886 Clang/LLVM is now the default compiler and LLD the default 887 linker for riscv64. 888 88920200107: 890 make universe no longer uses GCC 4.2.1 on any architectures. 891 Architectures not supported by in-tree Clang/LLVM require an 892 external toolchain package. 893 89420200104: 895 GCC 4.2.1 is now not built by default, as part of the GCC 4.2.1 896 retirement plan. Specifically, the GCC, GCC_BOOTSTRAP, and GNUCXX 897 options default to off for all supported CPU architectures. As a 898 short-term transition aid they may be enabled via WITH_* options. 899 GCC 4.2.1 is expected to be removed from the tree on 2020-03-31. 900 90120200102: 902 Support for armv5 has been disconnected and is being removed. The 903 machine combination MACHINE=arm MACHINE_ARCH=arm is no longer valid. 904 You must now use a MACHINE_ARCH of armv6 or armv7. The default 905 MACHINE_ARCH for MACHINE=arm is now armv7. 906 90720191226: 908 Clang/LLVM is now the default compiler for all powerpc architectures. 909 LLD is now the default linker for powerpc64. The change for powerpc64 910 also includes a change to the ELFv2 ABI, incompatible with the existing 911 ABI. 912 91320191226: 914 Kernel-loadable random(4) modules are no longer unloadable. 915 91620191222: 917 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 918 been upgraded to 9.0.1. Please see the 20141231 entry below for 919 information about prerequisites and upgrading, if you are not already 920 using clang 3.5.0 or higher. 921 92220191212: 923 r355677 has modified the internal interface used between the 924 NFS modules in the kernel. As such, they must all be upgraded 925 simultaneously. I will do a version bump for this. 926 92720191205: 928 The root certificates of the Mozilla CA Certificate Store have been 929 imported into the base system and can be managed with the certctl(8) 930 utility. If you have installed the security/ca_root_nss port or package 931 with the ETCSYMLINK option (the default), be advised that there may be 932 differences between those included in the port and those included in 933 base due to differences in nss branch used as well as general update 934 frequency. Note also that certctl(8) cannot manage certs in the 935 format used by the security/ca_root_nss port. 936 93720191120: 938 The amd(8) automount daemon has been disabled by default, and will be 939 removed in the future. As of FreeBSD 10.1 the autofs(5) is available 940 for automounting. 941 94220191107: 943 The nctgpio and wbwd drivers have been moved to the superio bus. 944 If you have one of these drivers in a kernel configuration, then 945 you should add device superio to it. If you use one of these drivers 946 as a module and you compile a custom set of modules, then you should 947 add superio to the set. 948 94920191021: 950 KPIs for network drivers to access interface addresses have changed. 951 Users need to recompile NIC driver modules together with kernel. 952 95320191021: 954 The net.link.tap.user_open sysctl no longer prevents user opening of 955 already created /dev/tapNN devices. Access is still controlled by 956 node permissions, just like tun devices. The net.link.tap.user_open 957 sysctl is now used only to allow users to perform devfs cloning of 958 tap devices, and the subsequent open may not succeed if the user is not 959 in the appropriate group. This sysctl may be deprecated/removed 960 completely in the future. 961 96220191009: 963 mips, powerpc, and sparc64 are no longer built as part of 964 universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If 965 not defined, mips, powerpc, and sparc64 builds will look for 966 the xtoolchain binaries and if installed use them for universe 967 builds. As llvm 9.0 becomes vetted for these architectures, they 968 will be removed from the list. 969 97020191009: 971 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 972 been upgraded to 9.0.0. Please see the 20141231 entry below for 973 information about prerequisites and upgrading, if you are not already 974 using clang 3.5.0 or higher. 975 97620191003: 977 The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from 978 GENERIC. They are available as modules and can be loaded by adding 979 to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES", 980 hptnr_load="YES", or hptrr_load="YES", respectively. 981 98220190913: 983 ntpd no longer by default locks its pages in memory, allowing them 984 to be paged out by the kernel. Use rlimit memlock to restore 985 historic BSD behaviour. For example, add "rlimit memlock 32" 986 to ntp.conf to lock up to 32 MB of ntpd address space in memory. 987 98820190823: 989 Several of ping6's options have been renamed for better consistency 990 with ping. If you use any of -ARWXaghmrtwx, you must update your 991 scripts. See ping6(8) for details. 992 99320190727: 994 The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls 995 and the "-o sync_unmount" and "-o init_backgrounded" mount options have 996 been removed from mount_fusefs(8). You can safely remove them from 997 your scripts, because they had no effect. 998 999 The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize, 1000 vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable, 1001 vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate 1002 sysctls have been removed. If you felt the need to set any of them to 1003 a non-default value, please tell asomers@FreeBSD.org why. 1004 100520190713: 1006 Default permissions on the /var/account/acct file (and copies of it 1007 rotated by periodic daily scripts) are changed from 0644 to 0640 1008 because the file contains sensitive information that should not be 1009 world-readable. If the /var/account directory must be created by 1010 rc.d/accounting, the mode used is now 0750. Admins who use the 1011 accounting feature are encouraged to change the mode of an existing 1012 /var/account directory to 0750 or 0700. 1013 101420190620: 1015 Entropy collection and the /dev/random device are no longer optional 1016 components. The "device random" option has been removed. 1017 Implementations of distilling algorithms can still be made loadable 1018 with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko). 1019 102020190612: 1021 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 1022 been upgraded to 8.0.1. Please see the 20141231 entry below for 1023 information about prerequisites and upgrading, if you are not already 1024 using clang 3.5.0 or higher. 1025 102620190608: 1027 A fix was applied to i386 kernel modules to avoid panics with 1028 dpcpu or vnet. Users need to recompile i386 kernel modules 1029 having pcpu or vnet sections or they will refuse to load. 1030 103120190513: 1032 User-wired pages now have their own counter, 1033 vm.stats.vm.v_user_wire_count. The vm.max_wired sysctl was renamed 1034 to vm.max_user_wired and changed from an unsigned int to an unsigned 1035 long. bhyve VMs wired with the -S are now subject to the user 1036 wiring limit; the vm.max_user_wired sysctl may need to be tuned to 1037 avoid running into the limit. 1038 103920190507: 1040 The IPSEC option has been removed from GENERIC. Users requiring 1041 ipsec(4) must now load the ipsec(4) kernel module. 1042 104320190507: 1044 The tap(4) driver has been folded into tun(4), and the module has been 1045 renamed to tuntap. You should update any kld_list="if_tap" or 1046 kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or 1047 if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap 1048 module instead, and "device tap" or "device tun" entries in kernel 1049 config files to select the tuntap device instead. 1050 105120190418: 1052 The following knobs have been added related to tradeoffs between 1053 safe use of the random device and availability in the absence of 1054 entropy: 1055 1056 kern.random.initial_seeding.bypass_before_seeding: tunable; set 1057 non-zero to bypass the random device prior to seeding, or zero to 1058 block random requests until the random device is initially seeded. 1059 For now, set to 1 (unsafe) by default to restore pre-r346250 boot 1060 availability properties. 1061 1062 kern.random.initial_seeding.read_random_bypassed_before_seeding: 1063 read-only diagnostic sysctl that is set when bypass is enabled and 1064 read_random(9) is bypassed, to enable programmatic handling of this 1065 initial condition, if desired. 1066 1067 kern.random.initial_seeding.arc4random_bypassed_before_seeding: 1068 Similar to the above, but for arc4random(9) initial seeding. 1069 1070 kern.random.initial_seeding.disable_bypass_warnings: tunable; set 1071 non-zero to disable warnings in dmesg when the same conditions are 1072 met as for the diagnostic sysctls above. Defaults to zero, i.e., 1073 produce warnings in dmesg when the conditions are met. 1074 107520190416: 1076 The loadable random module KPI has changed; the random_infra_init() 1077 routine now requires a 3rd function pointer for a bool (*)(void) 1078 method that returns true if the random device is seeded (and 1079 therefore unblocked). 1080 108120190404: 1082 r345895 reverts r320698. This implies that an nfsuserd(8) daemon 1083 built from head sources between r320757 (July 6, 2017) and 1084 r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" 1085 is added to the command line. 1086 nfsuserd daemons built from head sources that are post-r338192 are 1087 not affected and should continue to work. 1088 108920190320: 1090 The fuse(4) module has been renamed to fusefs(4) for consistency with 1091 other filesystems. You should update any kld_load="fuse" entries in 1092 /etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and 1093 "options FUSE" entries in kernel config files. 1094 109520190304: 1096 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1097 8.0.0. Please see the 20141231 entry below for information about 1098 prerequisites and upgrading, if you are not already using clang 3.5.0 1099 or higher. 1100 110120190226: 1102 geom_uzip(4) depends on the new module xz. If geom_uzip is statically 1103 compiled into your custom kernel, add 'device xz' statement to the 1104 kernel config. 1105 110620190219: 1107 drm and drm2 have been removed from the tree. Please see 1108 https://wiki.freebsd.org/Graphics for the latest information on 1109 migrating to the drm ports. 1110 111120190131: 1112 Iflib is no longer unconditionally compiled into the kernel. Drivers 1113 using iflib and statically compiled into the kernel, now require 1114 the 'device iflib' config option. For the same drivers loaded as 1115 modules on kernels not having 'device iflib', the iflib.ko module 1116 is loaded automatically. 1117 111820190125: 1119 The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration 1120 options no longer exist since r343219 and r343427 respectively; 1121 nothing uses them, so they should be just removed from custom 1122 kernel config files. 1123 112420181230: 1125 r342635 changes the way efibootmgr(8) works by requiring users to add 1126 the -b (bootnum) parameter for commands where the bootnum was previously 1127 specified with each option. For example 'efibootmgr -B 0001' is now 1128 'efibootmgr -B -b 0001'. 1129 113020181220: 1131 r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport 1132 in the same as it is applied to NFSv2 and 3. This implies that NFSv4 1133 servers that have vfs.nfsd.nfs_privport set will only allow mounts 1134 from clients using a reserved port. Since both the FreeBSD and Linux 1135 NFSv4 clients use reserved ports by default, this should not affect 1136 most NFSv4 mounts. 1137 113820181219: 1139 The XLP config has been removed. We can't support 64-bit atomics in this 1140 kernel because it is running in 32-bit mode. XLP users must transition 1141 to running a 64-bit kernel (XLP64 or XLPN32). 1142 1143 The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is 1144 the preferred emulator today and we don't need two different ones. 1145 1146 The old sibyte / swarm / Broadcom BCM1250 support has been 1147 removed from the mips port. 1148 114920181211: 1150 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1151 7.0.1. Please see the 20141231 entry below for information about 1152 prerequisites and upgrading, if you are not already using clang 3.5.0 1153 or higher. 1154 115520181211: 1156 Remove the timed and netdate programs from the base tree. Setting 1157 the time with these daemons has been obsolete for over a decade. 1158 115920181126: 1160 On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld 1161 linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as 1162 it produces broken binaries when ifuncs are in use. Users needing 1163 GNU ld should install the binutils port or package. 1164 116520181123: 1166 The BSD crtbegin and crtend code has been enabled by default. It has 1167 had extensive testing on amd64, arm64, and i386. It can be disabled 1168 by building a world with -DWITHOUT_BSD_CRTBEGIN. 1169 117020181115: 1171 The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue) 1172 has been converted to a port (misc/ctm) and will be removed from 1173 FreeBSD-13. It is available as a package (ctm) for all supported 1174 FreeBSD versions. 1175 117620181110: 1177 The default newsyslog.conf(5) file has been changed to only include 1178 files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if 1179 the filenames end in '.conf' and do not begin with a '.'. 1180 1181 You should check the configuration files in these two directories match 1182 this naming convention. You can verify which configuration files are 1183 being included using the command: 1184 $ newsyslog -Nrv 1185 118620181019: 1187 Stable/12 was branched created. 1188 118920181015: 1190 Ports for the DRM modules have been simplified. Now, amd64 users should 1191 just install the drm-kmod port. All others should install 1192 drm-legacy-kmod. 1193 1194 Graphics hardware that's newer than about 2010 usually works with 1195 drm-kmod. For hardware older than 2013, however, some users will need 1196 to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older 1197 than 2008 usually only works in drm-legacy-kmod. The graphics team can 1198 only commit to hardware made since 2013 due to the complexity of the 1199 market and difficulty to test all the older cards effectively. If you 1200 have hardware supported by drm-kmod, you are strongly encouraged to use 1201 that as you will get better support. 1202 1203 Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined 1204 elsewhere, the drm and drm2 modules will be eliminated from the src base 1205 soon (with a limited exception for arm). Please update to the package 1206 asap and report any issues to x11@freebsd.org. 1207 1208 Generally, anybody using the drm*-kmod packages should add 1209 WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty 1210 cross-threading surprises, especially with automatic driver 1211 loading from X11 startup. These will become the defaults in 13-current 1212 shortly. 1213 121420181012: 1215 The ixlv(4) driver has been renamed to iavf(4). As a consequence, 1216 custom kernel and module loading configuration files must be updated 1217 accordingly. Moreover, interfaces previous presented as ixlvN to the 1218 system are now exposed as iavfN and network configuration files must 1219 be adjusted as necessary. 1220 122120181009: 1222 OpenSSL has been updated to version 1.1.1. This update included 1223 additional various API changes throughout the base system. It is 1224 important to rebuild third-party software after upgrading. The value 1225 of __FreeBSD_version has been bumped accordingly. 1226 122720181006: 1228 The legacy DRM modules and drivers have now been added to the loader's 1229 module blacklist, in favor of loading them with kld_list in rc.conf(5). 1230 The module blacklist may be overridden with the loader.conf(5) 1231 'module_blacklist' variable, but loading them via rc.conf(5) is strongly 1232 encouraged. 1233 123420181002: 1235 The cam(4) based nda(4) driver will be used over nvd(4) by default on 1236 powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or 1237 loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing 1238 driver. Make sure to edit /boot/etc/kboot.conf and fstab to use the 1239 nda device name. 1240 124120180913: 1242 Reproducible build mode is now on by default, in preparation for 1243 FreeBSD 12.0. This eliminates build metadata such as the user, 1244 host, and time from the kernel (and uname), unless the working tree 1245 corresponds to a modified checkout from a version control system. 1246 The previous behavior can be obtained by setting the /etc/src.conf 1247 knob WITHOUT_REPRODUCIBLE_BUILD. 1248 124920180826: 1250 The Yarrow CSPRNG has been removed from the kernel as it has not been 1251 supported by its designers since at least 2003. Fortuna has been the 1252 default since FreeBSD-11. 1253 125420180822: 1255 devctl freeze/thaw have gone into the tree, the rc scripts have been 1256 updated to use them and devmatch has been changed. You should update 1257 kernel, userland and rc scripts all at the same time. 1258 125920180818: 1260 The default interpreter has been switched from 4th to Lua. 1261 LOADER_DEFAULT_INTERP, documented in build(7), will override the default 1262 interpreter. If you have custom FORTH code you will need to set 1263 LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in 1264 src.conf for the build. This will create default hard links between 1265 loader and loader_4th instead of loader and loader_lua, the new default. 1266 If you are using UEFI it will create the proper hard link to loader.efi. 1267 1268 bhyve uses userboot.so. It remains 4th-only until some issues are solved 1269 regarding coexisting with multiple versions of FreeBSD are resolved. 1270 127120180815: 1272 ls(1) now respects the COLORTERM environment variable used in other 1273 systems and software to indicate that a colored terminal is both 1274 supported and desired. If ls(1) is suddenly emitting colors, they may 1275 be disabled again by either removing the unwanted COLORTERM from your 1276 environment, or using `ls --color=never`. The ls(1) specific CLICOLOR 1277 may not be observed in a future release. 1278 127920180808: 1280 The default pager for most commands has been changed to "less". To 1281 restore the old behavior, set PAGER="more" and MANPAGER="more -s" in 1282 your environment. 1283 128420180731: 1285 The jedec_ts(4) driver has been removed. A superset of its functionality 1286 is available in the jedec_dimm(4) driver, and the manpage for that 1287 driver includes migration instructions. If you have "device jedec_ts" 1288 in your kernel configuration file, it must be removed. 1289 129020180730: 1291 amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default. 1292 This should have no effect if the kernel is booted via BIOS/legacy boot. 1293 EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system 1294 has a buggy firmware that prevents a successful boot due to use of 1295 runtime services. 1296 129720180727: 1298 Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale 1299 support has been removed from the tree. These ports were 1300 obsolete and/or known to be broken for many years. 1301 130220180723: 1303 loader.efi has been augmented to participate more fully in the 1304 UEFI boot manager protocol. loader.efi will now look at the 1305 BootXXXX environment variable to determine if a specific kernel 1306 or root partition was specified. XXXX is derived from BootCurrent. 1307 efibootmgr(8) manages these standard UEFI variables. 1308 130920180720: 1310 zfsloader's functionality has now been folded into loader. 1311 zfsloader is no longer necessary once you've updated your 1312 boot blocks. For a transition period, we will install a 1313 hardlink for zfsloader to loader to allow a smooth transition 1314 until the boot blocks can be updated (hard link because old 1315 zfs boot blocks don't understand symlinks). 1316 131720180719: 1318 ARM64 now have efifb support, if you want to have serial console 1319 on your arm64 board when an screen is connected and the bootloader 1320 setup a frame buffer for us to use, just add : 1321 boot_serial=YES 1322 boot_multicons=YES 1323 in /boot/loader.conf 1324 For Raspberry Pi 3 (RPI) users, this is needed even if you don't have 1325 an screen connected as the firmware will setup a frame buffer are that 1326 u-boot will expose as an EFI frame buffer. 1327 132820180719: 1329 New uid:gid added, ntpd:ntpd (123:123). Be sure to run mergemaster 1330 or take steps to update /etc/passwd before doing installworld on 1331 existing systems. Do not skip the "mergemaster -Fp" step before 1332 installworld, as described in the update procedures near the bottom 1333 of this document. Also, rc.d/ntpd now starts ntpd(8) as user ntpd 1334 if the new mac_ntpd(4) policy is available, unless ntpd_flags or 1335 the ntp config file contain options that change file/dir locations. 1336 When such options (e.g., "statsdir" or "crypto") are used, ntpd can 1337 still be run as non-root by setting ntpd_user=ntpd in rc.conf, after 1338 taking steps to ensure that all required files/dirs are accessible 1339 by the ntpd user. 1340 134120180717: 1342 Big endian arm support has been removed. 1343 134420180711: 1345 The static environment setup in kernel configs is no longer mutually 1346 exclusive with the loader(8) environment by default. In order to 1347 restore the previous default behavior of disabling the loader(8) 1348 environment if a static environment is present, you must specify 1349 loader_env.disabled=1 in the static environment. 1350 135120180705: 1352 The ABI of syscalls used by management tools like sockstat and 1353 netstat has been broken to allow 32-bit binaries to work on 1354 64-bit kernels without modification. These programs will need 1355 to match the kernel in order to function. External programs may 1356 require minor modifications to accommodate a change of type in 1357 structures from pointers to 64-bit virtual addresses. 1358 135920180702: 1360 On i386 and amd64 atomics are now inlined. Out of tree modules using 1361 atomics will need to be rebuilt. 1362 136320180701: 1364 The '%I' format in the kern.corefile sysctl limits the number of 1365 core files that a process can generate to the number stored in the 1366 debug.ncores sysctl. The '%I' format is replaced by the single digit 1367 index. Previously, if all indexes were taken the kernel would overwrite 1368 only a core file with the highest index in a filename. 1369 Currently the system will create a new core file if there is a free 1370 index or if all slots are taken it will overwrite the oldest one. 1371 137220180630: 1373 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1374 6.0.1. Please see the 20141231 entry below for information about 1375 prerequisites and upgrading, if you are not already using clang 3.5.0 1376 or higher. 1377 137820180628: 1379 r335753 introduced a new quoting method. However, etc/devd/devmatch.conf 1380 needed to be changed to work with it. This change was made with r335763 1381 and requires a mergemaster / etcupdate / etc to update the installed 1382 file. 1383 138420180612: 1385 r334930 changed the interface between the NFS modules, so they all 1386 need to be rebuilt. r335018 did a __FreeBSD_version bump for this. 1387 138820180530: 1389 As of r334391 lld is the default amd64 system linker; it is installed 1390 as /usr/bin/ld. Kernel build workarounds (see 20180510 entry) are no 1391 longer necessary. 1392 139320180530: 1394 The kernel / userland interface for devinfo changed, so you'll 1395 need a new kernel and userland as a pair for it to work (rebuilding 1396 lib/libdevinfo is all that's required). devinfo and devmatch will 1397 not work, but everything else will when there's a mismatch. 1398 139920180523: 1400 The on-disk format for hwpmc callchain records has changed to include 1401 threadid corresponding to a given record. This changes the field offsets 1402 and thus requires that libpmcstat be rebuilt before using a kernel 1403 later than r334108. 1404 140520180517: 1406 The vxge(4) driver has been removed. This driver was introduced into 1407 HEAD one week before the Exar left the Ethernet market and is not 1408 known to be used. If you have device vxge in your kernel config file 1409 it must be removed. 1410 141120180510: 1412 The amd64 kernel now requires a ld that supports ifunc to produce a 1413 working kernel, either lld or a newer binutils. lld is built by default 1414 on amd64, and the 'buildkernel' target uses it automatically. However, 1415 it is not the default linker, so building the kernel the traditional 1416 way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for 1417 binutils port/package). lld will soon be default, and this requirement 1418 will go away. 1419 1420 NOTE: As of r334391 lld is the default system linker on amd64, and no 1421 workaround is necessary. 1422 142320180508: 1424 The nxge(4) driver has been removed. This driver was for PCI-X 10g 1425 cards made by s2io/Neterion. The company was acquired by Exar and 1426 no longer sells or supports Ethernet products. If you have device 1427 nxge in your kernel config file it must be removed. 1428 142920180504: 1430 The tz database (tzdb) has been updated to 2018e. This version more 1431 correctly models time stamps in time zones with negative DST such as 1432 Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and 1433 Africa/Windhoek (1994/2017). This does not affect the UT offsets, only 1434 time zone abbreviations and the tm_isdst flag. 1435 143620180502: 1437 The ixgb(4) driver has been removed. This driver was for an early and 1438 uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel 1439 quickly shifted to the long lived ixgbe family. If you have device 1440 ixgb in your kernel config file it must be removed. 1441 144220180501: 1443 The lmc(4) driver has been removed. This was a WAN interface 1444 card that was already reportedly rare in 2003, and had an ambiguous 1445 license. If you have device lmc in your kernel config file it must 1446 be removed. 1447 144820180413: 1449 Support for Arcnet networks has been removed. If you have device 1450 arcnet or device cm in your kernel config file they must be 1451 removed. 1452 145320180411: 1454 Support for FDDI networks has been removed. If you have device 1455 fddi or device fpa in your kernel config file they must be 1456 removed. 1457 145820180406: 1459 In addition to supporting RFC 3164 formatted messages, the 1460 syslogd(8) service is now capable of parsing RFC 5424 formatted 1461 log messages. The main benefit of using RFC 5424 is that clients 1462 may now send log messages with timestamps containing year numbers, 1463 microseconds and time zone offsets. 1464 1465 Similarly, the syslog(3) C library function has been altered to 1466 send RFC 5424 formatted messages to the local system logging 1467 daemon. On systems using syslogd(8), this change should have no 1468 negative impact, as long as syslogd(8) and the C library are 1469 updated at the same time. On systems using a different system 1470 logging daemon, it may be necessary to make configuration 1471 adjustments, depending on the software used. 1472 1473 When using syslog-ng, add the 'syslog-protocol' flag to local 1474 input sources to enable parsing of RFC 5424 formatted messages: 1475 1476 source src { 1477 unix-dgram("/var/run/log" flags(syslog-protocol)); 1478 } 1479 1480 When using rsyslog, disable the 'SysSock.UseSpecialParser' option 1481 of the 'imuxsock' module to let messages be processed by the 1482 regular RFC 3164/5424 parsing pipeline: 1483 1484 module(load="imuxsock" SysSock.UseSpecialParser="off") 1485 1486 Do note that these changes only affect communication between local 1487 applications and syslogd(8). The format that syslogd(8) uses to 1488 store messages on disk or forward messages to other systems 1489 remains unchanged. syslogd(8) still uses RFC 3164 for these 1490 purposes. Options to customize this behaviour will be added in the 1491 future. Utilities that process log files stored in /var/log are 1492 thus expected to continue to function as before. 1493 1494 __FreeBSD_version has been incremented to 1200061 to denote this 1495 change. 1496 149720180328: 1498 Support for token ring networks has been removed. If you 1499 have "device token" in your kernel config you should remove 1500 it. No device drivers supported token ring. 1501 150220180323: 1503 makefs was modified to be able to tag ISO9660 El Torito boot catalog 1504 entries as EFI instead of overloading the i386 tag as done previously. 1505 The amd64 mkisoimages.sh script used to build amd64 ISO images for 1506 release was updated to use this. This may mean that makefs must be 1507 updated before "make cdrom" can be run in the release directory. This 1508 should be as simple as: 1509 1510 $ cd $SRCDIR/usr.sbin/makefs 1511 $ make depend all install 1512 151320180212: 1514 FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for 1515 now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf. 1516 Co-existence for the transition period will come shortly. Booting is a 1517 complex environment and test coverage for Lua-enabled loaders has been 1518 thin, so it would be prudent to assume it might not work and make 1519 provisions for backup boot methods. 1520 152120180211: 1522 devmatch functionality has been turned on in devd. It will automatically 1523 load drivers for unattached devices. This may cause unexpected drivers 1524 to be loaded. Please report any problems to current@ and 1525 imp@freebsd.org. 1526 152720180114: 1528 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1529 6.0.0. Please see the 20141231 entry below for information about 1530 prerequisites and upgrading, if you are not already using clang 3.5.0 1531 or higher. 1532 153320180110: 1534 LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker. 1535 This means it is used to link the kernel and userland libraries and 1536 executables, but is not yet installed as /usr/bin/ld by default. 1537 1538 To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set 1539 WITHOUT_LLD_BOOTSTRAP=yes 1540 154120180110: 1542 On i386, pmtimer has been removed. Its functionality has been folded 1543 into apm. It was a no-op on ACPI in current for a while now (but was 1544 still needed on i386 in FreeBSD 11 and earlier). Users may need to 1545 remove it from kernel config files. 1546 154720180104: 1548 The use of RSS hash from the network card aka flowid has been 1549 disabled by default for lagg(4) as it's currently incompatible with 1550 the lacp and loadbalance protocols. 1551 1552 This can be re-enabled by setting the following in loader.conf: 1553 net.link.lagg.default_use_flowid="1" 1554 155520180102: 1556 The SW_WATCHDOG option is no longer necessary to enable the 1557 hardclock-based software watchdog if no hardware watchdog is 1558 configured. As before, SW_WATCHDOG will cause the software 1559 watchdog to be enabled even if a hardware watchdog is configured. 1560 156120171215: 1562 r326887 fixes the issue described in the 20171214 UPDATING entry. 1563 r326888 flips the switch back to building GELI support always. 1564 156520171214: 1566 r362593 broke ZFS + GELI support for reasons unknown. However, 1567 it also broke ZFS support generally, so GELI has been turned off 1568 by default as the lesser evil in r326857. If you boot off ZFS and/or 1569 GELI, it might not be a good time to update. 1570 157120171125: 1572 PowerPC users must update loader(8) by rebuilding world before 1573 installing a new kernel, as the protocol connecting them has 1574 changed. Without the update, loader metadata will not be passed 1575 successfully to the kernel and users will have to enter their 1576 root partition at the kernel mountroot prompt to continue booting. 1577 Newer versions of loader can boot old kernels without issue. 1578 157920171110: 1580 The LOADER_FIREWIRE_SUPPORT build variable has been renamed to 1581 WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed 1582 to WITH/OUT_LOADER_GELI. 1583 158420171106: 1585 The naive and non-compliant support of posix_fallocate(2) in ZFS 1586 has been removed as of r325320. The system call now returns EINVAL 1587 when used on a ZFS file. Although the new behavior complies with the 1588 standard, some consumers are not prepared to cope with it. 1589 One known victim is lld prior to r325420. 1590 159120171102: 1592 Building in a FreeBSD src checkout will automatically create object 1593 directories now rather than store files in the current directory if 1594 'make obj' was not ran. Calling 'make obj' is no longer necessary. 1595 This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in 1596 /etc/src-env.conf (not /etc/src.conf), or passing the option in the 1597 environment. 1598 159920171101: 1600 The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native 1601 builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified 1602 /usr/obj/<srcdir>/<arch>. This behavior can be changed to the old 1603 format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf, 1604 the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building. 1605 The UNIFIED_OBJDIR option is a transitional feature that will be 1606 removed for 12.0 release; please migrate to the new format for any 1607 tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather 1608 than hardcoding paths. 1609 161020171028: 1611 The native-xtools target no longer installs the files by default to the 1612 OBJDIR. Use the native-xtools-install target with a DESTDIR to install 1613 to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin. 1614 161520171021: 1616 As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT 1617 options are changing from controlling the build if defined / undefined 1618 to controlling the build with explicit 'yes' or 'no' values. They will 1619 shift to WITH/WITHOUT options to match other options in the system. 1620 162120171010: 1622 libstand has turned into a private library for sys/boot use only. 1623 It is no longer supported as a public interface outside of sys/boot. 1624 162520171005: 1626 The arm port has split armv6 into armv6 and armv7. armv7 is now 1627 a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system 1628 and are running a kernel from before r324363, you will need to add 1629 MACHINE_ARCH=armv7 to 'make buildworld' to do a native build. 1630 163120171003: 1632 When building multiple kernels using KERNCONF, non-existent KERNCONF 1633 files will produce an error and buildkernel will fail. Previously 1634 missing KERNCONF files silently failed giving no indication as to 1635 why, only to subsequently discover during installkernel that the 1636 desired kernel was never built in the first place. 1637 163820170912: 1639 The default serial number format for CTL LUNs has changed. This will 1640 affect users who use /dev/diskid/* device nodes, or whose FibreChannel 1641 or iSCSI clients care about their LUNs' serial numbers. Users who 1642 require serial number stability should hardcode serial numbers in 1643 /etc/ctl.conf . 1644 164520170912: 1646 For 32-bit arm compiled for hard-float support, soft-floating point 1647 binaries now always get their shared libraries from 1648 LD_SOFT_LIBRARY_PATH (in the past, this was only used if 1649 /usr/libsoft also existed). Only users with a hard-float ld.so, but 1650 soft-float everything else should be affected. 1651 165220170826: 1653 The geli password typed at boot is now hidden. To restore the previous 1654 behavior, see geli(8) for configuration options. 1655 165620170825: 1657 Move PMTUD blackhole counters to TCPSTATS and remove them from bare 1658 sysctl values. Minor nit, but requires a rebuild of both world/kernel 1659 to complete. 1660 166120170814: 1662 "make check" behavior (made in ^/head@r295380) has been changed to 1663 execute from a limited sandbox, as opposed to executing from 1664 ${TESTSDIR}. 1665 1666 Behavioral changes: 1667 - The "beforecheck" and "aftercheck" targets are now specified. 1668 - ${CHECKDIR} (added in commit noted above) has been removed. 1669 - Legacy behavior can be enabled by setting 1670 WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. 1671 1672 If the limited sandbox mode is enabled, "make check" will execute 1673 "make distribution", then install, execute the tests, and clean up the 1674 sandbox if successful. 1675 1676 The "make distribution" and "make install" targets are typically run as 1677 root to set appropriate permissions and ownership at installation time. 1678 The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the 1679 environment if executing "make check" with limited sandbox mode using 1680 an unprivileged user. 1681 168220170808: 1683 Since the switch to GPT disk labels, fsck for UFS/FFS has been 1684 unable to automatically find alternate superblocks. As of r322297, 1685 the information needed to find alternate superblocks has been 1686 moved to the end of the area reserved for the boot block. 1687 Filesystems created with a newfs of this vintage or later 1688 will create the recovery information. If you have a filesystem 1689 created prior to this change and wish to have a recovery block 1690 created for your filesystem, you can do so by running fsck in 1691 foreground mode (i.e., do not use the -p or -y options). As it 1692 starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS'' 1693 to which you should answer yes. 1694 169520170728: 1696 As of r321665, an NFSv4 server configuration that services 1697 Kerberos mounts or clients that do not support the uid/gid in 1698 owner/owner_group string capability, must explicitly enable 1699 the nfsuserd daemon by adding nfsuserd_enable="YES" to the 1700 machine's /etc/rc.conf file. 1701 170220170722: 1703 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0. 1704 Please see the 20141231 entry below for information about prerequisites 1705 and upgrading, if you are not already using clang 3.5.0 or higher. 1706 170720170701: 1708 WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the 1709 r-commands (rlogin, rsh, etc.) to be built with the base system. 1710 171120170625: 1712 The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is 1713 a very major ABI incompatible change, so users of FreeBSD/powerpc must 1714 be careful when performing source upgrades. It is best to run 1715 'make installworld' from an alternate root system, either a live 1716 CD/memory stick, or a temporary root partition. Additionally, all ports 1717 must be recompiled. powerpc64 is largely unaffected, except in the case 1718 of 32-bit compatibility. All 32-bit binaries will be affected. 1719 172020170623: 1721 Forward compatibility for the "ino64" project have been committed. This 1722 will allow most new binaries to run on older kernels in a limited 1723 fashion. This prevents many of the common foot-shooting actions in the 1724 upgrade as well as the limited ability to roll back the kernel across 1725 the ino64 upgrade. Complicated use cases may not work properly, though 1726 enough simpler ones work to allow recovery in most situations. 1727 172820170620: 1729 Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC 1730 if you require the GPL compiler. 1731 173220170619: 1733 Forward compatibility for the "ino64" project have been committed. This 1734 will allow most new binaries to run on older kernels in a limited 1735 fashion. This prevents many of the common foot-shooting actions in the 1736 upgrade as well as the limited ability to roll back the kernel across 1737 the ino64 upgrade. Complicated use cases may not work properly, though 1738 enough simpler ones work to allow recovery in most situations. 1739 174020170618: 1741 The internal ABI used for communication between the NFS kernel modules 1742 was changed by r320085, so __FreeBSD_version was bumped to 1743 ensure all the NFS related modules are updated together. 1744 174520170617: 1746 The ABI of struct event was changed by extending the data 1747 member to 64bit and adding ext fields. For upgrade, same 1748 precautions as for the entry 20170523 "ino64" must be 1749 followed. 1750 175120170531: 1752 The GNU roff toolchain has been removed from base. To render manpages 1753 which are not supported by mandoc(1), man(1) can fallback on GNU roff 1754 from ports (and recommends to install it). 1755 To render roff(7) documents, consider using GNU roff from ports or the 1756 heirloom doctools roff toolchain from ports via pkg install groff or 1757 via pkg install heirloom-doctools. 1758 175920170524: 1760 The ath(4) and ath_hal(4) modules now build piecemeal to allow for 1761 smaller runtime footprint builds. This is useful for embedded systems 1762 which only require one chipset support. 1763 1764 If you load it as a module, make sure this is in /boot/loader.conf: 1765 1766 if_ath_load="YES" 1767 1768 This will load the HAL, all chip/RF backends and if_ath_pci. 1769 If you have if_ath_pci in /boot/loader.conf, ensure it is after 1770 if_ath or it will not load any HAL chipset support. 1771 1772 If you want to selectively load things (eg on cheaper ARM/MIPS 1773 platforms where RAM is at a premium) you should: 1774 1775 * load ath_hal 1776 * load the chip modules in question 1777 * load ath_rate, ath_dfs 1778 * load ath_main 1779 * load if_ath_pci and/or if_ath_ahb depending upon your particular 1780 bus bind type - this is where probe/attach is done. 1781 1782 For further comments/feedback, poke adrian@ . 1783 178420170523: 1785 The "ino64" 64-bit inode project has been committed, which extends 1786 a number of types to 64 bits. Upgrading in place requires care and 1787 adherence to the documented upgrade procedure. 1788 1789 If using a custom kernel configuration ensure that the 1790 COMPAT_FREEBSD11 option is included (as during the upgrade the 1791 system will be running the ino64 kernel with the existing world). 1792 1793 For the safest in-place upgrade begin by removing previous build 1794 artifacts via "rm -rf /usr/obj/*". Then, carefully follow the full 1795 procedure documented below under the heading "To rebuild everything and 1796 install it on the current system." Specifically, a reboot is required 1797 after installing the new kernel before installing world. While an 1798 installworld normally works by accident from multiuser after rebooting 1799 the proper kernel, there are many cases where this will fail across this 1800 upgrade and installworld from single user is required. 1801 180220170424: 1803 The NATM framework including the en(4), fatm(4), hatm(4), and 1804 patm(4) devices has been removed. Consumers should plan a 1805 migration before the end-of-life date for FreeBSD 11. 1806 180720170420: 1808 GNU diff has been replaced by a BSD licensed diff. Some features of GNU 1809 diff has not been implemented, if those are needed a newer version of 1810 GNU diff is available via the diffutils package under the gdiff name. 1811 181220170413: 1813 As of r316810 for ipfilter, keep frags is no longer assumed when 1814 keep state is specified in a rule. r316810 aligns ipfilter with 1815 documentation in man pages separating keep frags from keep state. 1816 This allows keep state to be specified without forcing keep frags 1817 and allows keep frags to be specified independently of keep state. 1818 To maintain previous behaviour, also specify keep frags with 1819 keep state (as documented in ipf.conf.5). 1820 182120170407: 1822 arm64 builds now use the base system LLD 4.0.0 linker by default, 1823 instead of requiring that the aarch64-binutils port or package be 1824 installed. To continue using aarch64-binutils, set 1825 CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin . 1826 182720170405: 1828 The UDP optimization in entry 20160818 that added the sysctl 1829 net.inet.udp.require_l2_bcast has been reverted. L2 broadcast 1830 packets will no longer be treated as L3 broadcast packets. 1831 183220170331: 1833 Binds and sends to the loopback addresses, IPv6 and IPv4, will now 1834 use any explicitly assigned loopback address available in the jail 1835 instead of using the first assigned address of the jail. 1836 183720170329: 1838 The ctl.ko module no longer implements the iSCSI target frontend: 1839 cfiscsi.ko does instead. 1840 1841 If building cfiscsi.ko as a kernel module, the module can be loaded 1842 via one of the following methods: 1843 - `cfiscsi_load="YES"` in loader.conf(5). 1844 - Add `cfiscsi` to `$kld_list` in rc.conf(5). 1845 - ctladm(8)/ctld(8), when compiled with iSCSI support 1846 (`WITH_ISCSI=yes` in src.conf(5)) 1847 1848 Please see cfiscsi(4) for more details. 1849 185020170316: 1851 The mmcsd.ko module now additionally depends on geom_flashmap.ko. 1852 Also, mmc.ko and mmcsd.ko need to be a matching pair built from the 1853 same source (previously, the dependency of mmcsd.ko on mmc.ko was 1854 missing, but mmcsd.ko now will refuse to load if it is incompatible 1855 with mmc.ko). 1856 185720170315: 1858 The syntax of ipfw(8) named states was changed to avoid ambiguity. 1859 If you have used named states in the firewall rules, you need to modify 1860 them after installworld and before rebooting. Now named states must 1861 be prefixed with colon. 1862 186320170311: 1864 The old drm (sys/dev/drm/) drivers for i915 and radeon have been 1865 removed as the userland we provide cannot use them. The KMS version 1866 (sys/dev/drm2) supports the same hardware. 1867 186820170302: 1869 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0. 1870 Please see the 20141231 entry below for information about prerequisites 1871 and upgrading, if you are not already using clang 3.5.0 or higher. 1872 187320170221: 1874 The code that provides support for ZFS .zfs/ directory functionality 1875 has been reimplemented. It's not possible now to create a snapshot 1876 by mkdir under .zfs/snapshot/. That should be the only user visible 1877 change. 1878 187920170216: 1880 EISA bus support has been removed. The WITH_EISA option is no longer 1881 valid. 1882 188320170215: 1884 MCA bus support has been removed. 1885 188620170127: 1887 The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed 1888 WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC. 1889 189020170112: 1891 The EM_MULTIQUEUE kernel configuration option is deprecated now that 1892 the em(4) driver conforms to iflib specifications. 1893 189420170109: 1895 The igb(4), em(4) and lem(4) ethernet drivers are now implemented via 1896 IFLIB. If you have a custom kernel configuration that excludes em(4) 1897 but you use igb(4), you need to re-add em(4) to your custom 1898 configuration. 1899 190020161217: 1901 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1. 1902 Please see the 20141231 entry below for information about prerequisites 1903 and upgrading, if you are not already using clang 3.5.0 or higher. 1904 190520161124: 1906 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0. 1907 Please see the 20141231 entry below for information about prerequisites 1908 and upgrading, if you are not already using clang 3.5.0 or higher. 1909 191020161119: 1911 The layout of the pmap structure has changed for powerpc to put the pmap 1912 statistics at the front for all CPU variations. libkvm(3) and all tools 1913 that link against it need to be recompiled. 1914 191520161030: 1916 isl(4) and cyapa(4) drivers now require a new driver, 1917 chromebook_platform(4), to work properly on Chromebook-class hardware. 1918 On other types of hardware the drivers may need to be configured using 1919 device hints. Please see the corresponding manual pages for details. 1920 192120161017: 1922 The urtwn(4) driver was merged into rtwn(4) and now consists of 1923 rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific 1924 parts. 1925 Also, firmware for RTL8188CE was renamed due to possible name 1926 conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B)) 1927 192820161015: 1929 GNU rcs has been removed from base. It is available as packages: 1930 - rcs: Latest GPLv3 GNU rcs version. 1931 - rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was 1932 removed from base. 1933 193420161008: 1935 Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control 1936 modules now requires that the kernel configuration contain the 1937 TCP_HHOOK option. (This option is included in the GENERIC kernel.) 1938 193920161003: 1940 The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired. 1941 ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy. 1942 194320160924: 1944 Relocatable object files with the extension of .So have been renamed 1945 to use an extension of .pico instead. The purpose of this change is 1946 to avoid a name clash with shared libraries on case-insensitive file 1947 systems. On those file systems, foo.So is the same file as foo.so. 1948 194920160918: 1950 GNU rcs has been turned off by default. It can (temporarily) be built 1951 again by adding WITH_RCS knob in src.conf. 1952 Otherwise, GNU rcs is available from packages: 1953 - rcs: Latest GPLv3 GNU rcs version. 1954 - rcs57: Copy of the latest version of GNU rcs (GPLv2) from base. 1955 195620160918: 1957 The backup_uses_rcs functionality has been removed from rc.subr. 1958 195920160908: 1960 The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into 1961 two separate components, QUEUE_MACRO_DEBUG_TRACE and 1962 QUEUE_MACRO_DEBUG_TRASH. Define both for the original 1963 QUEUE_MACRO_DEBUG behavior. 1964 196520160824: 1966 r304787 changed some ioctl interfaces between the iSCSI userspace 1967 programs and the kernel. ctladm, ctld, iscsictl, and iscsid must be 1968 rebuilt to work with new kernels. __FreeBSD_version has been bumped 1969 to 1200005. 1970 197120160818: 1972 The UDP receive code has been updated to only treat incoming UDP 1973 packets that were addressed to an L2 broadcast address as L3 1974 broadcast packets. It is not expected that this will affect any 1975 standards-conforming UDP application. The new behaviour can be 1976 disabled by setting the sysctl net.inet.udp.require_l2_bcast to 1977 0. 1978 197920160818: 1980 Remove the openbsd_poll system call. 1981 __FreeBSD_version has been bumped because of this. 1982 198320160708: 1984 The stable/11 branch has been created from head@r302406. 1985 1986After branch N is created, entries older than the N-2 branch point are removed 1987from this file. After stable/14 is branched and current becomes FreeBSD 15, 1988entries older than stable/12 branch point will be removed from current's 1989UPDATING file. 1990 1991COMMON ITEMS: 1992 1993 General Notes 1994 ------------- 1995 Sometimes, obscure build problems are the result of environment 1996 poisoning. This can happen because the make utility reads its 1997 environment when searching for values for global variables. To run 1998 your build attempts in an "environmental clean room", prefix all make 1999 commands with 'env -i '. See the env(1) manual page for more details. 2000 Occasionally a build failure will occur with "make -j" due to a race 2001 condition. If this happens try building again without -j, and please 2002 report a bug if it happens consistently. 2003 2004 When upgrading from one major version to another it is generally best to 2005 upgrade to the latest code in the currently installed branch first, then 2006 do an upgrade to the new branch. This is the best-tested upgrade path, 2007 and has the highest probability of being successful. Please try this 2008 approach if you encounter problems with a major version upgrade. Since 2009 the stable 4.x branch point, one has generally been able to upgrade from 2010 anywhere in the most recent stable branch to head / current (or even the 2011 last couple of stable branches). See the top of this file when there's 2012 an exception. 2013 2014 The update process will emit an error on an attempt to perform a build 2015 or install from a FreeBSD version below the earliest supported version. 2016 When updating from an older version the update should be performed one 2017 major release at a time, including running `make delete-old` at each 2018 step. 2019 2020 When upgrading a live system, having a root shell around before 2021 installing anything can help undo problems. Not having a root shell 2022 around can lead to problems if pam has changed too much from your 2023 starting point to allow continued authentication after the upgrade. 2024 2025 This file should be read as a log of events. When a later event changes 2026 information of a prior event, the prior event should not be deleted. 2027 Instead, a pointer to the entry with the new information should be 2028 placed in the old entry. Readers of this file should also sanity check 2029 older entries before relying on them blindly. Authors of new entries 2030 should write them with this in mind. 2031 2032 ZFS notes 2033 --------- 2034 When upgrading the boot ZFS pool to a new version (via zpool upgrade), 2035 always follow these three steps: 2036 2037 1) recompile and reinstall the ZFS boot loader and boot block 2038 (this is part of "make buildworld" and "make installworld") 2039 2040 2) update the ZFS boot block on your boot drive (only required when 2041 doing a zpool upgrade): 2042 2043 When booting on x86 via BIOS, use the following to update the ZFS boot 2044 block on the freebsd-boot partition of a GPT partitioned drive ada0: 2045 gpart bootcode -p /boot/gptzfsboot -i $N ada0 2046 The value $N will typically be 1. For EFI booting, see EFI notes. 2047 2048 3) zpool upgrade the root pool. New bootblocks will work with old 2049 pools, but not vice versa, so they need to be updated before any 2050 zpool upgrade. 2051 2052 Non-boot pools do not need these updates. 2053 2054 EFI notes 2055 --------- 2056 2057 There are two locations the boot loader can be installed into. The 2058 current location (and the default) is \efi\freebsd\loader.efi and using 2059 efibootmgr(8) to configure it. The old location, that must be used on 2060 deficient systems that don't honor efibootmgr(8) protocols, is the 2061 fallback location of \EFI\BOOT\BOOTxxx.EFI. Generally, you will copy 2062 /boot/loader.efi to this location, but on systems installed a long time 2063 ago the ESP may be too small and /boot/boot1.efi may be needed unless 2064 the ESP has been expanded in the meantime. 2065 2066 Recent systems will have the ESP mounted on /boot/efi, but older ones 2067 may not have it mounted at all, or mounted in a different 2068 location. Older arm SD images with MBR used /boot/msdos as the 2069 mountpoint. The ESP is a MSDOS filesystem. 2070 2071 The EFI boot loader rarely needs to be updated. For ZFS booting, 2072 however, you must update loader.efi before you do 'zpool upgrade' the 2073 root zpool, otherwise the old loader.efi may reject the upgraded zpool 2074 since it does not automatically understand some new features. 2075 2076 See loader.efi(8) and uefi(8) for more details. 2077 2078 To build a kernel 2079 ----------------- 2080 If you are updating from a prior version of FreeBSD (even one just 2081 a few days old), you should follow this procedure. It is the most 2082 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 2083 2084 make kernel-toolchain 2085 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 2086 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 2087 2088 If you are running kernel modules from ports, see FOOTNOTE [1]. 2089 2090 To test a kernel once 2091 --------------------- 2092 If you just want to boot a kernel once (because you are not sure 2093 if it works, or if you want to boot a known bad kernel to provide 2094 debugging information) run 2095 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 2096 nextboot -k testkernel 2097 2098 To rebuild everything and install it on the current system. 2099 ----------------------------------------------------------- 2100 # Note: sometimes if you are running current you gotta do more than 2101 # is listed here if you are upgrading from a really old current. 2102 2103 <make sure you have good level 0 dumps> 2104 make buildworld 2105 make buildkernel KERNCONF=YOUR_KERNEL_HERE 2106 make installkernel KERNCONF=YOUR_KERNEL_HERE [1] 2107 <reboot in single user> [3] 2108 etcupdate -p [5] 2109 make installworld 2110 etcupdate -B [4] 2111 make delete-old [6] 2112 <reboot> 2113 2114 To cross-install current onto a separate partition 2115 -------------------------------------------------- 2116 # In this approach we use a separate partition to hold 2117 # current's root, 'usr', and 'var' directories. A partition 2118 # holding "/", "/usr" and "/var" should be about 2GB in 2119 # size. 2120 2121 <make sure you have good level 0 dumps> 2122 <boot into -stable> 2123 make buildworld 2124 make buildkernel KERNCONF=YOUR_KERNEL_HERE [1] 2125 <maybe newfs current's root partition> 2126 <mount current's root partition on directory ${CURRENT_ROOT}> 2127 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 2128 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 2129 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 2130 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 2131 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 2132 <reboot into current> 2133 <do a "native" rebuild/install as described in the previous section> 2134 <maybe install compatibility libraries from ports/misc/compat*> 2135 <reboot> 2136 2137 2138 To upgrade in-place from stable to current 2139 ---------------------------------------------- 2140 <make sure you have good level 0 dumps> 2141 make buildworld [9] 2142 make buildkernel KERNCONF=YOUR_KERNEL_HERE [8] 2143 make installkernel KERNCONF=YOUR_KERNEL_HERE [1] 2144 <reboot in single user> [3] 2145 etcupdate -p [5] 2146 make installworld 2147 etcupdate -B [4] 2148 make delete-old [6] 2149 <reboot> 2150 2151 Make sure that you've read the UPDATING file to understand the 2152 tweaks to various things you need. At this point in the life 2153 cycle of current, things change often and you are on your own 2154 to cope. The defaults can also change, so please read ALL of 2155 the UPDATING entries. 2156 2157 Also, if you are tracking -current, you must be subscribed to 2158 freebsd-current@freebsd.org. Make sure that before you update 2159 your sources that you have read and understood all the recent 2160 messages there. If in doubt, please track -stable which has 2161 much fewer pitfalls. 2162 2163FOOTNOTES: 2164 2165 [1] If you have third party modules, such as drm-kmod or vmware, you 2166 should disable them at this point so they don't crash your system on 2167 reboot. Alternatively, you should rebuild all the modules you have in 2168 your system and install them as well. If you are running -current, you 2169 should seriously consider placing all sources to all the modules for 2170 your system (or symlinks to them) in /usr/local/sys/modules so this 2171 happens automatically. If all your modules come from ports, then adding 2172 the port origin directories to PORTS_MODULES instead is also automatic 2173 and effective, eg: 2174 PORTS_MODULES+=x11/nvidia-driver 2175 2176 [3] From the bootblocks, boot -s, and then do 2177 fsck -p 2178 mount -u / 2179 mount -a 2180 sh /etc/rc.d/zfs start # mount zfs filesystem, if needed 2181 cd src # full path to source 2182 adjkerntz -i # if CMOS is wall time 2183 Also, when doing a major release upgrade, it is required that you boot 2184 into single user mode to do the installworld. 2185 2186 [4] Note: This step is non-optional. Failure to do this step 2187 can result in a significant reduction in the functionality of the 2188 system. Attempting to do it by hand is not recommended and those 2189 that pursue this avenue should read this file carefully, as well 2190 as the archives of freebsd-current and freebsd-hackers mailing lists 2191 for potential gotchas. See etcupdate(8) for more information. 2192 2193 [5] Usually this step is a no-op. However, from time to time 2194 you may need to do this if you get unknown user in the following 2195 step. 2196 2197 [6] This only deletes old files and directories. Old libraries 2198 can be deleted by "make delete-old-libs", but you have to make 2199 sure that no program is using those libraries anymore. 2200 2201 [8] The new kernel must be able to run existing binaries used by an 2202 installworld. When upgrading across major versions, the new kernel's 2203 configuration must include the correct COMPAT_FREEBSD<n> option for 2204 existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries). Failure 2205 to do so may leave you with a system that is hard to boot to recover. A 2206 GENERIC kernel will include suitable compatibility options to run 2207 binaries from older branches. Note that the ability to run binaries 2208 from unsupported branches is not guaranteed. 2209 2210 Make sure that you merge any new devices from GENERIC since the 2211 last time you updated your kernel config file. Options also 2212 change over time, so you may need to adjust your custom kernels 2213 for these as well. 2214 2215 [9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the 2216 "?=" instead of the "=" assignment operator, so that buildworld can 2217 override the CPUTYPE if it needs to. 2218 2219 MAKEOBJDIRPREFIX must be defined in an environment variable, and 2220 not on the command line, or in /etc/make.conf. buildworld will 2221 warn if it is improperly defined. 2222FORMAT: 2223 2224This file contains a list, in reverse chronological order, of major 2225breakages in tracking -current. It is not guaranteed to be a complete 2226list of such breakages, and only contains entries since September 23, 2011. 2227If you need to see UPDATING entries from before that date, you will need 2228to fetch an UPDATING file from an older FreeBSD release. 2229 2230Copyright information: 2231 2232Copyright 1998-2009 M. Warner Losh <imp@FreeBSD.org> 2233 2234Redistribution, publication, translation and use, with or without 2235modification, in full or in part, in any form or format of this 2236document are permitted without further permission from the author. 2237 2238THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 2239IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 2240WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2241DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 2242INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2243(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2244SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2245HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2246STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 2247IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2248POSSIBILITY OF SUCH DAMAGE. 2249 2250Contact Warner Losh if you have any questions about your use of 2251this document. 2252