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 3020250819: 31 The CLEAN option has been switched back from default-on to default-off. 32 This reverts the 20250808 change below, which had reverted the 20240729 33 change before it. Note that some src.conf(5) options are known to break 34 ABI or compatibility in ways that may require a clean build initially 35 when switched. 36 3720250816: 38 Sendmail's libmilter has been moved to its own package. If you want 39 to compile applications that use libmilter, you should install the 40 FreeBSD-libmilter* packages. 41 42 If you only have FreeBSD-sendmail installed for applications that 43 require libmilter, you can now remove it. 44 4520250815: 46 jemalloc 5.3.0 has been committed to the tree. 47 4820250815: 49 The removal of Secure RPC DES authentication notced in 20250810 50 has been reverted. (However, it is still non-functional.) 51 5220250813: 53 Commit cce64f2e6851 changed the internal KAPI between the NFS 54 modules. As such, all of them need to be rebuilt from sources. 55 __FreeBSD_version has been bumped to 1500060 already today, 56 so I will not bump it again for this. 57 5820250813: 59 The gpiobus_attach_bus() function has been removed. Drivers should now 60 use the gpiobus_add_bus() function instead. The difference being that 61 gpiobus_add_bus() doesn't call bus_attach_children(), calling it will 62 be the responsibility of the caller now. 63 6420250810: 65 Support for Secure RPC DES authentication has been removed. 66 The keyserv(8) daemon was already removed, but support for it in libc 67 has also been removed, so if you somehow still had keyserv installed, 68 it will now stop working. There is no workaround for this. Removing 69 DES is considered a feature. 70 7120250808: 72 The CLEAN option has been switched back from default-off to 73 default-on. This reverts the 20240729 change below. 74 7520250807: 76 routed(8) and route6d(8) have moved to the FreeBSD-rip package. 77 If you use either of these, you should install the new package. 78 7920250806: 80 if_epair(4) now uses ether_gen_addr(9) to generate a stable MAC 81 address. 82 To keep using the random address, set the loader tunable 83 net.link.epair.ether_gen_addr=0. 84 8520250804: 86 bsdconfig (including sysrc(8)) has moved to the new bsdconfig 87 package. If you use pkgbase and wish to use bsdconfig, you should 88 install FreeBSD-bsdconfig. 89 9020250730: 91 The usbhid(4) USB HID driver is now enabled by default, and will be 92 used in preference to other USB HID drivers like ukbd(4), ums(4), and 93 uhid(4). Work on a FIDO/U2F driver and moused(8) is in progress. 94 The default is being switched now so that we can find and fix any 95 additional issues prior to FreeBSD 15.0. 96 97 To revert to the previous USB HID driver behavior, set the loader 98 tunable hw.usb.usbhid.enable=0. 99 10020250727: 101 bmake (i.e., /usr/bin/make and /usr/share/mk) has moved to a new 102 package, FreeBSD-bmake. If you use pkgbase and you need make, you 103 should install this package. 104 10520250726: 106 amd64 kernel configurations must contain "options SMP". 107 10820250725: 109 gssd(8) has been moved to a new package, FreeBSD-gssd. If you use 110 pkgbase and you need gssd, you should install this package. 111 11220250724: 113 The Kerberos packages which are built when WITH_MITKRB5 is enabled 114 have been renamed from FreeBSD-krb5* to FreeBSD-kerberos*. This 115 affects pkgbase users who manually enabled WITH_MITKRB5, *or* use 116 the default value of WITH_MITKRB5 and updated past c7da9fb90b0b 117 (20250721) which made WITH_MITKRB5 the default. 118 119 In either case, if you have FreeBSD-krb5* packages installed, you 120 should remove them and (re)install the equivalent FreeBSD-kerberos* 121 packages instead. 122 12320250721: 124 WITH_MITKRB5 is now enabled by default. MIT KRB5 has replaced 125 Heimdal in base. Ports that use USES=gssapi must be rebuilt. 126 A clean buildworld is required. 127 12820250719: 129 Commits 392a82b225 and c00baac0ab both changed the 130 internal API between the NFS modules. As such, all 131 these modules need to be rebuilt from sources. 132 __FreeBSD_version was bumped to 1500053 for this. 133 13420250710: 135 The shar(1) utility has been removed from base. The 136 sysutils/freebsd-shar port was created to maintain this version of 137 shar(1) past its removal from base. 138 13920250704: 140 LinuxKPI device.h and acpi changes effecting drivers and drm-kmod. 141 Bump __FreeBSD_version 1500050 to be able to detect these changes. 142 14320250630: 144 Commits 171f66b0c2ca and 8e2a90ac8089 changed the internal 145 api between nfscommon.ko and the other nfs modules. 146 Bump __FreeBSD_version to 1500049 for this. 147 All NFS related modules must be rebuilt from up-to-date 148 sources. 149 15020250625: 151 "make delete-old" will now remove the Forth bootloader entirely 152 if the system is built with WITHOUT_FORTH. 153 15420250614: 155 MIT KRB5 (MIT Kerberos5) has been imported into 15-CURRENT. To 156 and install MIT KRB5, add WITH_MITKRB5=yes to /etc/src.conf. This 157 will build and install MIT KRB5 1.21.3. And it will remove Heimdal 158 1.5.2 when delete-old and delete-old-libs are run. To revert back 159 simply buildworld/installworld again with delete-old-libs and 160 delete-old. 161 162 At the moment we only know of a couple of ports that might be 163 affected. Adjusting libmap.conf does not circumvent runtime issues. 164 The few affected ports must be rebuilt. A successful exp-run will be 165 run before MIT KRB5 becomes default. 166 167 Those using the KDC in FreeBSD base may wish to wait. The Heimdal 168 HDB is incompatible with the MIT KRB5 KDC. The migration procedure 169 is a little involved. 170 17120250603: 172 LinuxKPI dma-mapping.h were pulled into the tree from drm-kmod. 173 Bump _FreeBSD_version to 1500045 to be able to detect this change. 174 17520250527: 176 pf changed extension header handling. It now treats AH headers on IPv4 just 177 like AH headers on IPv6 and skips over them, allowing filtering on the inner 178 protocol. 179 18020250527: 181 pf now blocks IPv6 packets with a hop-by-hop or destination options header by 182 default. Such packets can be passed by adding "allow-opts" to the rule. IPv6 183 options are now handled just like their IPv4 counterparts. 184 18520250527: 186 The CAM target layer userland, i.e. ctld(8), ctladm(8) and ctlstat(8), 187 has moved to the new FreeBSD-ctl package. If you use pkgbase and you 188 need the CAM Target Layer, you should install the new package. 189 190 Development-related tools (e.g. ar and nm) have moved to the new 191 "FreeBSD-toolchain" package, which subsumes and obsoletes the 192 existing "FreeBSD-elftoolchain" package. If you use pkgbase and 193 need to compile software, you should install the new package and 194 ensure the old FreeBSD-elftoolchain* packages are completely removed. 195 19620250521: 197 Commit e64fe5ad3a23 removed in6_maxmtu and its setter in6_setmaxmtu(). 198 in6_maxmtu is used to store the max IPv6 MTU of all interfaces, 199 however it does not have any in-tree consumers since the introduction 200 from the KAME project. The removal should have little impact, and the 201 max IPv6 MTU can be easily retrieved by iterating over all the attached 202 interface if 3rd party modules need it. 203 20420250515: 205 Commit 772258c89f28 changed the internal API between the nfscommon 206 and nfscl modules. Both need to be built from updated sources. 207 20820250513: 209 The bridge(4) sysctl net.link.bridge.member_ifaddrs now defaults to 0, 210 meaning that interfaces added to a bridge may not have IP addresses 211 assigned. Refer to bridge(4) for more information. 212 21320250507: 214 UMASS quirks and auto-quirk probing has been overhauled. CAM now won't 215 send SYNCHRONIZE CACHE unless MODE PAGE 8 is present and valid. This 216 should allow more devices to work (since the auto quirk code was updated 217 in 14 and broke several e-readers and the like). Please send imp@freebsd.org 218 any regression reports. 219 22020250504: 221 Commit 9419e086e1a3 changed the internal API between the nfscommon 222 and nfscl modules. Both need to be built from updated sources. 223 22420250412: 225 LinuxKPI alloc routines were changed to return physically contiguous 226 memory where expected. These changes may require out-of-tree drivers 227 to be recompiled. 228 Bump __FreeBSD_version to 1500037 to be able to detect this change. 229 23020250409: 231 Intel iwlwifi firmware has been removed from the src repository. 232 Before updating their system, users of iwlwifi(4) or iwx(4) must 233 install the appropriate firmware for their chipset using fwget(8) or 234 building it from ports. 235 23620250314: 237 We now use LLVM's binary utilities (nm, objcopy, etc.) by default. 238 The WITHOUT_LLVM_BINUTILS src.conf(5) knob can be used to revert to 239 ELF Tool Chain tools if desired. 240 24120250303: 242 Commit 4a77657cbc01 changed the ABI between ipfw(8) and ipfw(4). 243 Please note that the old ipfw(8) binary will not work with the new 244 ipfw(4) module. Therefore, it is recommended to disable ipfw during 245 the upgrade, otherwise the host system may become inaccessible because 246 ipfw rules cannot be installed with the old binary. 247 24820250214: 249 Commit 4517fbfd4251 modified the internal API between the 250 nfscommon and nfscl modules. As such, both of these modules 251 need to be rebuilt from sources. 252 25320250201: 254 The NFS related daemons, that provide RPC services to the kernel: 255 gssd(8), rpcbind(8), rpc.tlsservd(8) and rpc.tlsclntd(8), now use a 256 different transport - netlink(4) socket instead of unix(4). Users of 257 NFS need to upgrade both kernel and world (binaries and libc) at once. 258 Also, any revision between 88cd1e17a7d8 and 99e5a70046da should be 259 avoided. 260 26120250129: 262 Defer the January 19, 2038 date limit in UFS1 filesystems to 263 February 7, 2106. This affects only UFS1 format filesystems. 264 See commit message 1111a44301da for details. 265 26620250127: 267 The Allwinner a10_timer driver has been renamed to aw_driver. If you 268 have a custom kernel configuration including the line 'device 269 a10_timer', it must be adjusted to 'device aw_timer'. The same applies 270 for device exclusions with 'nodevice'. 271 27220250106: 273 A new SOC_ROCKCHIP options appeared, so if you have a custom kernel configuration 274 targetting Rockchip SoC you need to add it so shared and mandatory drivers for 275 this SoC familly will be selected. 276 Also a new rk8xx device was added, this select the base driver for Rockchip PMIC. 277 27820241223: 279 The layout of NFS file handles for the tarfs, tmpfs, cd9660, and ext2fs 280 file systems has changed. An NFS server that exports any of these file 281 systems will need its clients to unmount and remount the exports. 282 28320241216: 284 The iwm(4) firmwares are no longer compiled as kernel modules but instead 285 shipped as raw files. For pkgbase users if you use iwm(4) you will need 286 to install the FreeBSD-firmware-iwm package. 287 28820241124: 289 The OpenBSD derived bc and dc implementations and the WITHOUT_GH_BC 290 option that allowed building them instead of the advanced version 291 imported more than 4 years ago have been removed. 292 29320241107: 294 The ng_ubt(4) driver now requires firmwares to be loaded on Realtek 295 adaptors with rtlbtfw(8) utility. It no longer attaches to devices 296 standing in bootloader mode. Firmware files are available in the 297 comms/rtlbt-firmware port. 298 29920241025: 300 The support for the rc_fast_and_loose variable has been removed from 301 rc.subr(8). Users setting rc_fast_and_loose on their systems are 302 advised to make sure their customizations to rc service scripts 303 do not depend on having a single shell environment shared across 304 all the rc service scripts during booting and shutdown. 305 30620241013: 307 The ciss driver was updated to cope better with hotplug events that 308 caused it to panic before, and to support more than 48 drives attached 309 to the card. These changes were made w/o benefit of hardware for testing 310 and ciss(4) users should be on the lookout for regressions. 311 31220240729: 313 The build now defaults to WITHOUT_CLEAN - i.e., no automatic clean 314 is performed at the beginning of buildworld or buildkernel. The 315 WITH_CLEAN src.conf(5) knob can be used to restore the previous 316 behaviour. 317 318 If you encounter incremental build issues, please report them to the 319 freebsd-current mailing list so that a special-case dependency can be 320 added, if necessary. 321 32220240715: 323 We now lean more heavily on ACPI enumeration for some traditional 324 devices. uart has moved from isa to acpi so the hints act as wiring 325 instead of device enumeration. Hints for parallel port, floppy, etc 326 have been removed. Before upgrading, grep your dmesg for lines like: 327 uart1: non-PNP ISA device will be removed from GENERIC in FreeBSD 15. 328 to see if you need to start including hints for the device on isa 329 in your loader.conf or device.hints file. APU1 (but not APU2) boards 330 are known to be affected, but there may be others. 331 33220240712: 333 Support for armv6 has been disconnected and is being removed. 334 33520240617: 336 ifconfig now treats IPv4 addresses without a width or mask as an error. 337 Specify the desired mask or width along with the IP address on the 338 ifconfig command line and in rc.conf. 339 34020240428: 341 OpenBSM auditing runtime (auditd, etc.) has been moved into the new 342 package FreeBSD-audit. If you use OpenBSM auditing and pkgbase, you 343 should install FreeBSD-audit. 344 34520240424: 346 cron, lpr, and ntpd have been moved from FreeBSD-utilities into their 347 own packages. If you use pkgbase, you should install the relevant 348 packages: FreeBSD-cron, FreeBSD-lp, or FreeBSD-ntp. 349 35020240406: 351 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 352 been upgraded to 18.1.6. It is important that you run `make delete-old` 353 as described in the COMMON ITEMS section, otherwise several libc++ 354 headers that are obsolete and need to be removed can cause compilation 355 errors in C++ programs. 356 35720240205: 358 For dynamically linked programs, system calls are now made from 359 libsys rather than libc. No change in linkage is required as 360 libsys is an auxiliary filter for libc. People building custom 361 images must ensure that libsys.so.7 is included. 362 36320240202: 364 Loader now also read configuration files listed in local_loader_conf_files. 365 Files listed here are the last ones read. And /boot/loader.conf.local was 366 moved from loader_conf_files to local_loader_conf_files leaving only 367 loader.conf and device.hints in loader_conf_files by default. 368 369 The following sequencing is applied: 370 371 1. Bootstrap: 372 /boot/defaults/loader.conf 373 374 2. Read loader_conf_files files: 375 /boot/device.hints 376 /boot/loader.conf 377 378 3. Read loader_conf_dirs files: 379 /boot/loader.conf.d/*.conf 380 381 4. And finally, rread local_loader_conf_files files: 382 /boot/loader.conf.local 383 38420240201: 385 sendmail 8.18.1 has been imported and merged. This version enforces 386 stricter RFC compliance by default, especially with respect to line 387 endings. This may cause issues with receiving messages from 388 non-compliant MTAs; please see the first 8.18.1 release note in 389 contrib/sendmail/RELEASE_NOTES for mitigations. 390 39120240111: 392 Commit cc760de2183f changed the internal interface between 393 the nfscommon and nfscl modules. As such, both need to be 394 rebuilt from sources. Therefore, __FreeBSD_version was 395 bumped to 1500010. 396 39720231120: 398 If you have an arm64 system that uses ACPI, you will need to update your 399 loader.efi in the ESP when you update past this point. Detection of ACPI 400 was moved earlier in the binary so the scripts could use it, but old 401 binaries don't have this, so we default to 'no ACPI' in this case. You can 402 undisable ACPI by doing 403 OK unset hint.acpi.0.disabled 404 This can also be used to recover any other system that was updated in the 405 small window where amd64 was also broken. 406 40720231113: 408 The WITHOUT_LLD_IS_LD option has been removed. When LLD is enabled 409 it is always installed as /usr/bin/ld. 410 41120231027: 412 Forward compatibility (running the new code on old kernels) for the 413 "ino64" project have been removed. The need for it has passed long ago. 414 41520231018: 416 Commit 57ce37f9dcd0 changed the internal KAPI between the 417 nfscommon and nfscl modules. Both must be rebuilt from sources. 418 41920231010: 420 dialog(1) has been replaced in base by bsddialog(1), while most of the 421 time replacing a dialog(1) call by a bsddialog(1) call works out of the 422 box, bsddialog(1) is not considered as a drop-in replacement for 423 dialog(1). 424 425 If you do depend on dialog(1) functionality, please install cdialog 426 from ports: 427 428 pkg install cdialog 429 43020230927: 431 The EARLY_AP_STARTUP kernel option is mandatory on x86. The option 432 has been added to DEFAULTS, so it should automatically be included in 433 custom kernel configurations without any additional change. 434 43520230922: 436 A new loader tunable net.pf.default_to_drop allows pf(4)’s default 437 behaviour to be changed from pass to drop. Previously this required 438 recompiling the kernel with the option PF_DEFAULT_TO_DROP. 439 44020230914: 441 Enable splitting out pkgbase manpages into separate packages by 442 default. To disable this, set WITHOUT_MANSPLITPKG=yes in src.conf. 443 44420230911: 445 Move standard include files to the clibs-dev package and move clang 446 internal libraries and headers to clang and clang-dev. Upgrading systems 447 installed using pkgbase past this change involves extra steps to allow 448 for these file moves: 449 450 pkg upgrade -y FreeBSD-utilities 451 pkg upgrade -y FreeBSD-utilities-dev 452 pkg upgrade -y 453 45420230909: 455 Enable vnet sysctl variables to be loader tunable. SYSCTLs which 456 belongs to VNETs can be initialized during early boot or module 457 loading if they are marked with CTLFLAG_TUN and there are 458 corresponding kernel environment variables. 459 46020230901: 461 The WITH_INIT_ALL_PATTERN and WITH_INIT_ALL_ZERO build options have 462 been replaced by INIT_ALL=pattern and INIT_ALL=zero respectively. 463 46420230824: 465 FreeBSD 15.0-CURRENT. 466 46720230817: 468 Serial communication (in boot loaders, kernel, and userland) has 469 been changed to default to 115200 bps, in line with common industry 470 practice and typcial firmware serial console redirection 471 configuration. 472 473 Note that the early x86 BIOS bootloader (i.e., boot0sio) does not 474 support rates above 9600 bps and is not changed. boot0sio users may 475 set BOOT_COMCONSOLE_SPEED=9600 to use 9600 for all of the boot 476 components, or use the standard boot0 and have the boot2 stage start 477 with the serial port at 115200. 478 47920230807: 480 Following the general removal of MIPS support, the ath(4) AHB bus- 481 frontend has been removed, too, and building of the PCI support is 482 integrated with the ath(4) main module again. As a result, there's 483 no longer a need for if_ath_pci_load="YES" in /boot/loader.conf or 484 "device ath_pci" in the kernel configuration. 485 48620230803: 487 MAXCPU has been increased to 1024 in the amd64 GENERIC kernel config. 488 Out-of-tree kernel modules will need to be rebuilt. 489 49020230724: 491 CAM has been mechanically updated s/u_int(64|32|16|8)_t/uint\1_t/g 492 to move to the standard uintXX_t types from the old, traditional 493 BSD u_intXX_t types. This should be a NOP, but may cause problems 494 for out of tree changes. The SIMs were not updated since most of 495 the old u_intXX_t uses weren't due to CAM interfaces. 496 49720230713: 498 stable/14 branch created. 499 50020230629: 501 The heuristic for detecting old chromebooks with an EC bug that requires 502 atkbdc driver workarounds has changed. There should be no functional 503 change, but if your old chromebook's keyboard stops working, please 504 file a PR and assign it to imp. 505 50620230623: 507 OpenSSL has been updated to version 3.0, including changes throughout 508 the base system. It is important to rebuild third-party software 509 after upgrading. 510 51120230619: 512 To enable pf rdr rules for connections initiated from the host, pf 513 filter rules can be optionally enabled for packets delivered 514 locally. This can change the behavior of rules which match packets 515 delivered to lo0. To enable this feature: 516 517 sysctl net.pf.filter_local=1 518 service pf restart 519 520 When enabled, its best to ensure that packets delivered locally are not 521 filtered, e.g. by adding a 'skip on lo' rule. 522 52320230613: 524 Improvements to libtacplus(8) mean that tacplus.conf(5) now 525 follows POSIX shell syntax rules. This may cause TACACS+ 526 authentication to fail if the shared secret contains a single 527 quote, double quote, or backslash character which isn't 528 already properly quoted or escaped. 529 53020230612: 531 Belatedly switch the default nvme block device on x86 from nvd to nda. 532 nda created nvd compatibility links by default, so this should be a 533 nop. If this causes problems for your application, set hw.nvme.use_nvd=1 534 in your loader.conf or add `options NVME_USE_NVD=1` to your kernel 535 config. To disable the nvd compatibility aliases, add 536 kern.cam.nda.nvd_compat=0 to loader.conf. The default has been nda on 537 all non-x86 platforms for some time now. If you need to fall back, 538 please email imp@freebsd.org about why. 539 540 Encrypted swap partitions need to be changed from nvd to nda if you 541 migrate, or you need to use the above to switch back to nvd. 542 54320230422: 544 Remove portsnap(8). Users are encouraged to obtain the ports tree 545 using git instead. 546 54720230420: 548 Add jobs.mk to save typing. Enables -j${JOB_MAX} and logging 549 eg. 550 make buildworld-jobs 551 runs 552 make -j${JOB_MAX} buildworld > ../buildworld.log 2>&1 553 554 where JOB_MAX is derrived from ncpus in local.sys.mk if not set in env. 555 55620230316: 557 Video related devices for some arm devices have been renamed. 558 If you have a custom kernel config and want to use hdmi output on 559 IMX6 board you need to add "device dwc_hdmi" "device imx6_hdmi" and 560 "device imx6_ipu" to it. 561 If you have a custom kernel config and want to use hdmi output on 562 TI AM335X board you need to add "device tda19988" to it. 563 If you add "device hdmi" in it you need to remove it as it doesn't 564 exist anymore. 565 56620230221: 567 Introduce new kernel options KBD_DELAY1 and KBD_DELAY2. See atkbdc(4) 568 for details. 569 57020230206: 571 sshd now defaults to having X11Forwarding disabled, following upstream. 572 Administrators who wish to enable X11Forwarding should add 573 `X11Forwarding yes` to /etc/ssh/sshd_config. 574 57520230204: 576 Since commit 75d41cb6967 Huawei 3G/4G LTE Mobile Devices do not default 577 to ECM, but NCM mode and need u3g and ucom modules loaded. See cdce(4). 578 57920230130: 580 As of commit 7c40e2d5f685, the dependency on netlink(4) has been added 581 to the linux_common(4) module. Users relying on linux_common may need 582 to complile netlink(4) module if it is not present in their kernel. 583 58420230126: 585 The WITHOUT_CXX option has been removed. C++ components in the base 586 system are now built unconditionally. 587 58820230113: 589 LinuxKPI pci.h changes may require out-of-tree drivers to be recompiled. 590 Bump _FreeBSD_version to 1400078 to be able to detect this change. 591 59220221212: 593 llvm-objump is now always installed as objdump. Previously there was 594 no /usr/bin/objdump unless the WITH_LLVM_BINUTILS knob was used. 595 596 Some LLVM objdump options have a different output format compared to 597 GNU objdump; readelf is available for inspecting ELF files, and GNU 598 objdump is available from the devel/binutils port or package. 599 60020221205: 601 dma(8) has replaced sendmail(8) as the default mta. For people willing 602 to reenable sendmail(8): 603 604 $ cp /usr/share/examples/sendmail/mailer.conf /etc/mail/mailer.conf 605 606 and add sendmail_enable="YES" to rc.conf. 607 60820221204: 609 hw.bus.disable_failed_devices has changed from 'false' to 'true' by 610 default. Now if newbus succeeds in probing a device, but fails to attach 611 the device, we'll disable the device. In the past, we'd keep retrying 612 the device on each new driver loaded. To get that behavior now, one 613 needs to use devctl to re-enable the device, and reprobe it (or set 614 the sysctl/tunable hw.bus.disable_failed_devices=false). 615 616 NOTE: This was reverted 20221205 due to unexpected compatibility issues 617 61820221122: 619 pf no longer accepts 'scrub fragment crop' or 'scrub fragment drop-ovl'. 620 These configurations are no longer automatically reinterpreted as 621 'scrub fragment reassemble'. 622 62320221121: 624 The WITHOUT_CLANG_IS_CC option has been removed. When Clang is enabled 625 it is always installed as /usr/bin/cc (and c++, cpp). 626 62720221026: 628 Some programs have been moved into separate packages. It is recommended 629 for pkgbase users to do: 630 631 pkg install FreeBSD-dhclient FreeBSD-geom FreeBSD-resolvconf \ 632 FreeBSD-devd FreeBSD-devmatch 633 634 after upgrading to restore all the component that were previously 635 installed. 636 63720221002: 638 OPIE has been removed from the base system. If needed, it can 639 be installed from ports (security/opie) or packages (opie). 640 Otherwise, make sure that your PAM policies do not reference 641 pam_opie or pam_opieaccess. 642 64320220610: 644 LinuxKPI pm.h changes require an update to the latest drm-kmod version 645 before re-compiling to avoid errors. 646 64720211230: 648 The macros provided for the manipulation of CPU sets (e.g. CPU_AND) 649 have been modified to take 2 source arguments instead of only 1. 650 Externally maintained sources that use these macros will have to 651 be adapted. The FreeBSD version has been bumped to 1400046 to 652 reflect this change. 653 65420211214: 655 A number of the kernel include files are able to be included by 656 themselves. A test has been added to buildworld to enforce this. 657 65820211209: 659 Remove mips as a recognized target. This starts the decommissioning of 660 mips support in FreeBSD. mips related items will be removed wholesale in 661 the coming days and weeks. 662 663 This broke the NO_CLEAN build for some people. Either do a clean build 664 or touch 665 lib/clang/include/llvm/Config/Targets.def 666 lib/clang/include/llvm/Config/AsmParsers.def 667 lib/clang/include/llvm/Config/Disassemblers.def 668 lib/clang/include/llvm/Config/AsmPrinters.def 669 before the build to force everything to rebuild that needs to. 670 67120211202: 672 Unbound support for RFC8375: The special-use domain 'home.arpa' is 673 by default blocked. To unblock it use a local-zone nodefault 674 statement in unbound.conf: 675 local-zone: "home.arpa." nodefault 676 677 Or use another type of local-zone to override with your choice. 678 679 The reason for this is discussed in Section 6.1 of RFC8375: 680 Because 'home.arpa.' is not globally scoped and cannot be secured 681 using DNSSEC based on the root domain's trust anchor, there is no way 682 to tell, using a standard DNS query, in which homenet scope an answer 683 belongs. Consequently, users may experience surprising results with 684 such names when roaming to different homenets. 685 68620211110: 687 Commit b8d60729deef changed the TCP congestion control framework so 688 that any of the included congestion control modules could be 689 the single module built into the kernel. Previously newreno 690 was automatically built in through direct reference. As of 691 this commit you are required to declare at least one congestion 692 control module (e.g. 'options CC_NEWRENO') and to also declare a 693 default using the CC_DEFAULT option (e.g. options CC_DEFAULT="newreno\"). 694 The GENERIC configuration includes CC_NEWRENO and defines newreno 695 as the default. If no congestion control option is built into the 696 kernel and you are including networking, the kernel compile will 697 fail. Also if no default is declared the kernel compile will fail. 698 69920211118: 700 Mips has been removed from universe builds. It will be removed from the 701 tree shortly. 702 70320211106: 704 Commit f0c9847a6c47 changed the arguments for VOP_ALLOCATE. 705 The NFS modules must be rebuilt from sources and any out 706 of tree file systems that implement their own VOP_ALLOCATE 707 may need to be modified. 708 70920211022: 710 The synchronous PPP kernel driver sppp(4) has been removed. 711 The cp(4) and ce(4) drivers are now always compiled with netgraph(4) 712 support, formerly enabled by NETGRAPH_CRONYX option. 713 71420211020: 715 sh(1) is now the default shell for the root user. To force root to use 716 the csh shell, please run the following command as root: 717 718 # chsh -s csh 719 72020211004: 721 Ncurses distribution has been split between libtinfow and libncurses 722 with libncurses.so becoming a linker (ld) script to seamlessly link 723 to libtinfow as needed. Bump _FreeBSD_version to 1400035 to reflect 724 this change. 725 72620210923: 727 As of commit 8160a0f62be6, the dummynet module no longer depends on the 728 ipfw module. Dummynet can now be used by pf as well as ipfw. As such 729 users who relied on this dependency may need to include ipfw in the 730 list of modules to load on their systems. 731 73220210922: 733 As of commit 903873ce1560, the mixer(8) utility has got a slightly 734 new syntax. Please refer to the mixer(8) manual page for more 735 information. The old mixer utility can be installed from ports: 736 audio/freebsd-13-mixer 737 73820210911: 739 As of commit 55089ef4f8bb, the global variable nfs_maxcopyrange has 740 been deleted from the nfscommon.ko. As such, nfsd.ko must be built 741 from up to date sources to avoid an undefined reference when 742 being loaded. 743 74420210817: 745 As of commit 62ca9fc1ad56 OpenSSL no longer enables kernel TLS 746 by default. Users can enable kernel TLS via the "KTLS" SSL 747 option. This can be enabled globally by using a custom 748 OpenSSL config file via OPENSSL_CONF or via an 749 application-specific configuration option for applications 750 which permit setting SSL options via SSL_CONF_cmd(3). 751 75220210811: 753 Commit 3ad1e1c1ce20 changed the internal KAPI between the NFS 754 modules. Therefore, all need to be rebuilt from sources. 755 75620210730: 757 Commit b69019c14cd8 removes pf's DIOCGETSTATESNV ioctl. 758 As of be70c7a50d32 it is no longer used by userspace, but it does mean 759 users may not be able to enumerate pf states if they update the kernel 760 past b69019c14cd8 without first updating userspace past be70c7a50d32. 761 76220210729: 763 As of commit 01ad0c007964 if_bridge member interfaces can no longer 764 change their MTU. Changing the MTU of the bridge itself will change the 765 MTU on all member interfaces instead. 766 76720210716: 768 Commit ee29e6f31111 changed the internal KAPI between the nfscommon 769 and nfsd modules. Therefore, both need to be rebuilt from sources. 770 Bump __FreeBSD_version to 1400026 for this KAPI change. 771 77220210715: 773 The 20210707 awk update brought in a change in behavior. This has 774 been corrected as of d4d252c49976. Between these dates, if you 775 installed a new awk binary, you may not be able to build a new 776 kernel because the change in behavior affected the genoffset 777 script used to build the kernel. If you did update, the fix is 778 to update your sources past the above hash and do 779 % cd usr.bin/awk 780 % make clean all 781 % sudo -E make install 782 to enable building kernels again. 783 78420210708: 785 Commit 1e0a518d6548 changed the internal KAPI between the NFS 786 modules. They all need to be rebuilt from sources. I did not 787 bump __FreeBSD_version, since it was bumped recently. 788 78920210707: 790 awk has been updated to the latest one-true-awk version 20210215. 791 This contains a number of minor bug fixes. 792 79320210624: 794 The NFSv4 client now uses the highest minor version of NFSv4 795 supported by the NFSv4 server by default instead of minor version 0, 796 for NFSv4 mounts. 797 The "minorversion" mount option may be used to override this default. 798 79920210618: 800 Bump __FreeBSD_version to 1400024 for LinuxKPI changes. 801 Most notably netdev.h can change now as the (last) dependencies 802 (mlx4/ofed) are now using struct ifnet directly, but also for PCI 803 additions and others. 804 80520210618: 806 The directory "blacklisted" under /usr/share/certs/ has been 807 renamed to "untrusted". 808 80920210611: 810 svnlite has been removed from base. Should you need svn for any reason 811 please install the svn package or port. 812 81320210611: 814 Commit e1a907a25cfa changed the internal KAPI between the krpc 815 and nfsserver. As such, both modules must be rebuilt from 816 sources. Bump __FreeBSD_version to 1400022. 817 81820210610: 819 The an(4) driver has been removed from FreeBSD. 820 82120210608: 822 The vendor/openzfs branch was renamed to vendor/openzfs/legacy to 823 start tracking OpenZFS upstream more closely. Please see 824https://lists.freebsd.org/archives/freebsd-current/2021-June/000153.html 825 for details on how to correct any errors that might result. The 826 short version is that you need to remove the old branch locally: 827 git update-ref -d refs/remotes/freebsd/vendor/openzfs 828 (assuming your upstream origin is named 'freebsd'). 829 83020210525: 831 Commits 17accc08ae15 and de102f870501 add new files to LinuxKPI 832 which break drm-kmod. In addition various other additions where 833 committed. Bump __FreeBSD_version to 1400015 to be able to 834 detect this. 835 83620210513: 837 Commit ca179c4d74f2 changed the package in which the OpenSSL 838 libraries and utilities are packaged. 839 It is recommended for pkgbase user to do: 840 pkg install -f FreeBSD-openssl 841 before pkg upgrade otherwise some dependencies might not be met 842 and pkg will stop working as libssl will not be present anymore 843 on the system. 844 84520210426: 846 Commit 875977314881 changed the internal KAPI between 847 the nfsd and nfscommon modules. As such these modules 848 need to be rebuilt from sources. 849 Without this patch in your NFSv4.1/4.2 server, enabling 850 delegations by setting vfs.nfsd.issue_delegations non-zero 851 is not recommended. 852 85320210411: 854 Commit 7763814fc9c2 changed the internal KAPI between 855 the krpc and NFS. As such, the krpc, nfscommon and 856 nfscl modules must all be rebuilt from sources. 857 Without this patch, NFSv4.1/4.2 mounts should not 858 be done with the nfscbd(8) daemon running, to avoid 859 needing a working back channel for server->client RPCs. 860 86120210330: 862 Commit 01ae8969a9ee fixed the NFSv4.1/4.2 server so that it 863 handles binding of the back channel as required by RFC5661. 864 Until this patch is in your server, avoid use of the "nconnects" 865 mount option for Linux NFSv4.1/4.2 mounts. 866 86720210225: 868 For 64-bit architectures the base system is now built with Position 869 Independent Executable (PIE) support enabled by default. It may be 870 disabled using the WITHOUT_PIE knob. A clean build is required. 871 87220210128: 873 Various LinuxKPI functionality was added which conflicts with DRM. 874 Please update your drm-kmod port to after the __FreeBSD_version 1400003 875 update. 876 87720210121: 878 stable/13 branch created. 879 88020210108: 881 PC Card attachments for all devices have been removed. In the case of 882 wi and cmx, the entire drivers were removed because they were only 883 PC Card devices. FreeBSD_version 1300134 should be used for this 884 since it was bumped so recently. 885 88620210107: 887 Transport-independent parts of HID support have been split off the USB 888 code in to separate subsystem. Kernel configs which include one of 889 ums, ukbd, uhid, atp, wsp, wmt, uaudio, ugold or ucycom drivers should 890 be updated with adding of "device hid" line. 891 89220210105: 893 ncurses installation has been modified to only keep the widechar 894 enabled version. Incremental build is broken for that change, so it 895 requires a clean build. 896 89720201223: 898 The FreeBSD project has migrated from Subversion to Git. Temporary 899 instructions can be found at 900 https://github.com/bsdimp/freebsd-git-docs/blob/main/src-cvt.md 901 and other documents in that repo. 902 90320201216: 904 The services database has been updated to cover more of the basic 905 services expected in a modern system. The database is big enough 906 that it will cause issues in mergemaster in Releases previous to 907 12.2 and 11.3, or in very old current systems from before r358154. 908 90920201215: 910 Obsolete in-tree GDB 6.1.1 has been removed. GDB (including kgdb) 911 may be installed from ports or packages. 912 91320201124: 914 ping6 has been merged into ping. It can now be called as "ping -6". 915 See ping(8) for details. 916 91720201108: 918 Default value of net.add_addr_allfibs has been changed to 0. 919 If you have multi-fib configuration and rely on existence of all 920 interface routes in every fib, you need to set the above sysctl to 1. 921 92220201030: 923 The internal pre-processor in the calendar(1) program has been 924 extended to support more C pre-processor commands (e.g. #ifdef, #else, 925 and #undef) and to detect unbalanced conditional statements. 926 Error messages have been extended to include the filename and line 927 number if processing stops to help fixing malformed data files. 928 92920201026: 930 All the data files for the calendar(1) program, except calendar.freebsd, 931 have been moved to the deskutils/calendar-data port, much like the 932 jewish calendar entries were moved to deskutils/hebcal years ago. After 933 make delete-old-files, you need to install it to retain full 934 functionality. calendar(1) will issue a reminder for files it can't 935 find. 936 93720200923: 938 LINT files are no longer generated. We now include the relevant NOTES 939 files. Note: This may cause conflicts with updating in some cases. 940 find sys -name LINT\* -delete 941 is suggested across this commit to remove the generated LINT files. 942 943 If you have tried to update with generated files there, the svn 944 command you want to un-auger the tree is 945 cd sys/amd64/conf 946 svn revert -R . 947 and then do the above find from the top level. Substitute 'amd64' 948 above with where the error message indicates a conflict. 949 95020200824: 951 OpenZFS support has been integrated. Do not upgrade root pools until 952 the loader is updated to support zstd. Furthermore, we caution against 953 'zpool upgrade' for the next few weeks. The change should be transparent 954 unless you want to use new features. 955 956 Not all "NO_CLEAN" build scenarios work across these changes. Many 957 scenarios have been tested and fixed, but rebuilding kernels without 958 rebuilding world may fail. 959 960 The ZFS cache file has moved from /boot to /etc to match the OpenZFS 961 upstream default. A fallback to /boot has been added for mountroot. 962 963 Pool auto import behavior at boot has been moved from the kernel module 964 to an explicit "zpool import -a" in one of the rc scripts enabled by 965 zfs_enable=YES. This means your non-root zpools won't auto import until 966 you upgrade your /etc/rc.d files. 967 96820200824: 969 The resume code now notifies devd with the 'kernel' system 970 rather than the old 'kern' subsystem to be consistent with 971 other use. The old notification will be created as well, but 972 will be removed prior to FreeBSD 14.0. 973 97420200821: 975 r362275 changed the internal API between the kernel RPC and the 976 NFS modules. As such, all the modules must be recompiled from 977 sources. 978 97920200817: 980 r364330 modified the internal API used between the NFS modules. 981 As such, all the NFS modules must be re-compiled from sources. 982 98320200816: 984 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 985 been upgraded to 11.0.0. Please see the 20141231 entry below for 986 information about prerequisites and upgrading, if you are not already 987 using clang 3.5.0 or higher. 988 98920200810: 990 r364092 modified the internal ABI used between the kernel NFS 991 modules. As such, all of these modules need to be rebuilt 992 from sources, so a version bump was done. 993 99420200807: 995 Makefile.inc has been updated to work around the issue documented in 996 20200729. It was a case where the optimization of using symbolic links 997 to point to binaries created a situation where we'd run new binaries 998 with old libraries starting midway through the installworld process. 999 100020200729: 1001 r363679 has redefined some undefined behavior in regcomp(3); notably, 1002 extraneous escapes of most ordinary characters will no longer be 1003 accepted. An exp-run has identified all of the problems with this in 1004 ports, but other non-ports software may need extra escapes removed to 1005 continue to function. 1006 1007 Because of this change, installworld may encounter the following error 1008 from rtld: Undefined symbol "regcomp@FBSD_1.6" -- It is imperative that 1009 you do not halt installworld. Instead, let it run to completion (whether 1010 successful or not) and run installworld once more. 1011 101220200627: 1013 A new implementation of bc and dc has been imported in r362681. This 1014 implementation corrects non-conformant behavior of the previous bc 1015 and adds GNU bc compatible options. It offers a number of extensions, 1016 is much faster on large values, and has support for message catalogs 1017 (a number of languages are already supported, contributions of further 1018 languages welcome). The option WITHOUT_GH_BC can be used to build the 1019 world with the previous versions of bc and dc. 1020 102120200625: 1022 r362639 changed the internal API used between the NFS kernel modules. 1023 As such, they all need to be rebuilt from sources. 1024 102520200613: 1026 r362158 changed the arguments for VFS_CHECKEXP(). As such, any 1027 out of tree file systems need to be modified and rebuilt. 1028 Also, any file systems that are modules must be rebuilt. 1029 103020200604: 1031 read(2) of a directory fd is now rejected by default. root may 1032 re-enable it for system root only on non-ZFS filesystems with the 1033 security.bsd.allow_read_dir sysctl(8) MIB if 1034 security.bsd.suser_enabled=1. 1035 1036 It may be advised to setup aliases for grep to default to `-d skip` if 1037 commonly non-recursively grepping a list that includes directories and 1038 the potential for the resulting stderr output is not tolerable. Example 1039 aliases are now installed, commented out, in /root/.cshrc and 1040 /root/.shrc. 1041 104220200523: 1043 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 1044 been upgraded to 10.0.1. Please see the 20141231 entry below for 1045 information about prerequisites and upgrading, if you are not already 1046 using clang 3.5.0 or higher. 1047 104820200512: 1049 Support for obsolete compilers has been removed from the build system. 1050 Clang 6 and GCC 6.4 are the minimum supported versions. 1051 105220200424: 1053 closefrom(2) has been moved under COMPAT12, and replaced in libc with a 1054 stub that calls close_range(2). If using a custom kernel configuration, 1055 you may want to ensure that the COMPAT_FREEBSD12 option is included, as 1056 a slightly older -CURRENT userland and older FreeBSD userlands may not 1057 be functional without closefrom(2). 1058 105920200414: 1060 Upstream DTS from Linux 5.6 was merged and they now have the SID 1061 and THS (Secure ID controller and THermal Sensor) node present. 1062 The DTB overlays have now been removed from the tree for the H3/H5 and 1063 A64 SoCs and the aw_sid and aw_thermal driver have been updated to 1064 deal with upstream DTS. If you are using those overlays you need to 1065 remove them from loader.conf and update the DTBs on the FAT partition. 1066 106720200310: 1068 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 1069 been upgraded to 10.0.0. Please see the 20141231 entry below for 1070 information about prerequisites and upgrading, if you are not already 1071 using clang 3.5.0 or higher. 1072 107320200309: 1074 The amd(8) automount daemon has been removed from the source tree. 1075 As of FreeBSD 10.1 autofs(5) is the preferred tool for automounting. 1076 amd is still available in the sysutils/am-utils port. 1077 107820200301: 1079 Removed brooktree driver (bktr.4) from the tree. 1080 108120200229: 1082 The WITH_GPL_DTC option has been removed. The BSD-licenced device tree 1083 compiler in usr.bin/dtc is used on all architectures which use dtc, and 1084 the GPL dtc is available (if needed) from the sysutils/dtc port. 1085 108620200229: 1087 The WITHOUT_LLVM_LIBUNWIND option has been removed. LLVM's libunwind 1088 is used by all supported CPU architectures. 1089 109020200229: 1091 GCC 4.2.1 has been removed from the tree. The WITH_GCC, 1092 WITH_GCC_BOOTSTRAP, and WITH_GNUCXX options are no longer available. 1093 Users who wish to build FreeBSD with GCC must use the external toolchain 1094 ports or packages. 1095 109620200220: 1097 ncurses has been updated to a newer version (6.2-20200215). Given the ABI 1098 has changed, users will have to rebuild all the ports that are linked to 1099 ncurses. 1100 110120200217: 1102 The size of struct vnet and the magic cookie have changed. 1103 Users need to recompile libkvm and all modules using VIMAGE 1104 together with their new kernel. 1105 110620200212: 1107 Defining the long deprecated NO_CTF, NO_DEBUG_FILES, NO_INSTALLLIB, 1108 NO_MAN, NO_PROFILE, and NO_WARNS variables is now an error. Update 1109 your Makefiles and scripts to define MK_<var>=no instead as required. 1110 1111 One exception to this is that program or library Makefiles should 1112 define MAN to empty rather than setting MK_MAN=no. 1113 111420200108: 1115 Clang/LLVM is now the default compiler and LLD the default 1116 linker for riscv64. 1117 111820200107: 1119 make universe no longer uses GCC 4.2.1 on any architectures. 1120 Architectures not supported by in-tree Clang/LLVM require an 1121 external toolchain package. 1122 112320200104: 1124 GCC 4.2.1 is now not built by default, as part of the GCC 4.2.1 1125 retirement plan. Specifically, the GCC, GCC_BOOTSTRAP, and GNUCXX 1126 options default to off for all supported CPU architectures. As a 1127 short-term transition aid they may be enabled via WITH_* options. 1128 GCC 4.2.1 is expected to be removed from the tree on 2020-03-31. 1129 113020200102: 1131 Support for armv5 has been disconnected and is being removed. The 1132 machine combination MACHINE=arm MACHINE_ARCH=arm is no longer valid. 1133 You must now use a MACHINE_ARCH of armv6 or armv7. The default 1134 MACHINE_ARCH for MACHINE=arm is now armv7. 1135 113620191226: 1137 Clang/LLVM is now the default compiler for all powerpc architectures. 1138 LLD is now the default linker for powerpc64. The change for powerpc64 1139 also includes a change to the ELFv2 ABI, incompatible with the existing 1140 ABI. 1141 114220191226: 1143 Kernel-loadable random(4) modules are no longer unloadable. 1144 114520191222: 1146 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 1147 been upgraded to 9.0.1. Please see the 20141231 entry below for 1148 information about prerequisites and upgrading, if you are not already 1149 using clang 3.5.0 or higher. 1150 115120191212: 1152 r355677 has modified the internal interface used between the 1153 NFS modules in the kernel. As such, they must all be upgraded 1154 simultaneously. I will do a version bump for this. 1155 115620191205: 1157 The root certificates of the Mozilla CA Certificate Store have been 1158 imported into the base system and can be managed with the certctl(8) 1159 utility. If you have installed the security/ca_root_nss port or package 1160 with the ETCSYMLINK option (the default), be advised that there may be 1161 differences between those included in the port and those included in 1162 base due to differences in nss branch used as well as general update 1163 frequency. Note also that certctl(8) cannot manage certs in the 1164 format used by the security/ca_root_nss port. 1165 116620191120: 1167 The amd(8) automount daemon has been disabled by default, and will be 1168 removed in the future. As of FreeBSD 10.1 the autofs(5) is available 1169 for automounting. 1170 117120191107: 1172 The nctgpio and wbwd drivers have been moved to the superio bus. 1173 If you have one of these drivers in a kernel configuration, then 1174 you should add device superio to it. If you use one of these drivers 1175 as a module and you compile a custom set of modules, then you should 1176 add superio to the set. 1177 117820191021: 1179 KPIs for network drivers to access interface addresses have changed. 1180 Users need to recompile NIC driver modules together with kernel. 1181 118220191021: 1183 The net.link.tap.user_open sysctl no longer prevents user opening of 1184 already created /dev/tapNN devices. Access is still controlled by 1185 node permissions, just like tun devices. The net.link.tap.user_open 1186 sysctl is now used only to allow users to perform devfs cloning of 1187 tap devices, and the subsequent open may not succeed if the user is not 1188 in the appropriate group. This sysctl may be deprecated/removed 1189 completely in the future. 1190 119120191009: 1192 mips, powerpc, and sparc64 are no longer built as part of 1193 universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If 1194 not defined, mips, powerpc, and sparc64 builds will look for 1195 the xtoolchain binaries and if installed use them for universe 1196 builds. As llvm 9.0 becomes vetted for these architectures, they 1197 will be removed from the list. 1198 119920191009: 1200 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 1201 been upgraded to 9.0.0. Please see the 20141231 entry below for 1202 information about prerequisites and upgrading, if you are not already 1203 using clang 3.5.0 or higher. 1204 120520191003: 1206 The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from 1207 GENERIC. They are available as modules and can be loaded by adding 1208 to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES", 1209 hptnr_load="YES", or hptrr_load="YES", respectively. 1210 121120190913: 1212 ntpd no longer by default locks its pages in memory, allowing them 1213 to be paged out by the kernel. Use rlimit memlock to restore 1214 historic BSD behaviour. For example, add "rlimit memlock 32" 1215 to ntp.conf to lock up to 32 MB of ntpd address space in memory. 1216 121720190823: 1218 Several of ping6's options have been renamed for better consistency 1219 with ping. If you use any of -ARWXaghmrtwx, you must update your 1220 scripts. See ping6(8) for details. 1221 122220190727: 1223 The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls 1224 and the "-o sync_unmount" and "-o init_backgrounded" mount options have 1225 been removed from mount_fusefs(8). You can safely remove them from 1226 your scripts, because they had no effect. 1227 1228 The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize, 1229 vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable, 1230 vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate 1231 sysctls have been removed. If you felt the need to set any of them to 1232 a non-default value, please tell asomers@FreeBSD.org why. 1233 123420190713: 1235 Default permissions on the /var/account/acct file (and copies of it 1236 rotated by periodic daily scripts) are changed from 0644 to 0640 1237 because the file contains sensitive information that should not be 1238 world-readable. If the /var/account directory must be created by 1239 rc.d/accounting, the mode used is now 0750. Admins who use the 1240 accounting feature are encouraged to change the mode of an existing 1241 /var/account directory to 0750 or 0700. 1242 124320190620: 1244 Entropy collection and the /dev/random device are no longer optional 1245 components. The "device random" option has been removed. 1246 Implementations of distilling algorithms can still be made loadable 1247 with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko). 1248 124920190612: 1250 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 1251 been upgraded to 8.0.1. Please see the 20141231 entry below for 1252 information about prerequisites and upgrading, if you are not already 1253 using clang 3.5.0 or higher. 1254 125520190608: 1256 A fix was applied to i386 kernel modules to avoid panics with 1257 dpcpu or vnet. Users need to recompile i386 kernel modules 1258 having pcpu or vnet sections or they will refuse to load. 1259 126020190513: 1261 User-wired pages now have their own counter, 1262 vm.stats.vm.v_user_wire_count. The vm.max_wired sysctl was renamed 1263 to vm.max_user_wired and changed from an unsigned int to an unsigned 1264 long. bhyve VMs wired with the -S are now subject to the user 1265 wiring limit; the vm.max_user_wired sysctl may need to be tuned to 1266 avoid running into the limit. 1267 126820190507: 1269 The IPSEC option has been removed from GENERIC. Users requiring 1270 ipsec(4) must now load the ipsec(4) kernel module. 1271 127220190507: 1273 The tap(4) driver has been folded into tun(4), and the module has been 1274 renamed to tuntap. You should update any kld_list="if_tap" or 1275 kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or 1276 if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap 1277 module instead, and "device tap" or "device tun" entries in kernel 1278 config files to select the tuntap device instead. 1279 128020190418: 1281 The following knobs have been added related to tradeoffs between 1282 safe use of the random device and availability in the absence of 1283 entropy: 1284 1285 kern.random.initial_seeding.bypass_before_seeding: tunable; set 1286 non-zero to bypass the random device prior to seeding, or zero to 1287 block random requests until the random device is initially seeded. 1288 For now, set to 1 (unsafe) by default to restore pre-r346250 boot 1289 availability properties. 1290 1291 kern.random.initial_seeding.read_random_bypassed_before_seeding: 1292 read-only diagnostic sysctl that is set when bypass is enabled and 1293 read_random(9) is bypassed, to enable programmatic handling of this 1294 initial condition, if desired. 1295 1296 kern.random.initial_seeding.arc4random_bypassed_before_seeding: 1297 Similar to the above, but for arc4random(9) initial seeding. 1298 1299 kern.random.initial_seeding.disable_bypass_warnings: tunable; set 1300 non-zero to disable warnings in dmesg when the same conditions are 1301 met as for the diagnostic sysctls above. Defaults to zero, i.e., 1302 produce warnings in dmesg when the conditions are met. 1303 130420190416: 1305 The loadable random module KPI has changed; the random_infra_init() 1306 routine now requires a 3rd function pointer for a bool (*)(void) 1307 method that returns true if the random device is seeded (and 1308 therefore unblocked). 1309 131020190404: 1311 r345895 reverts r320698. This implies that an nfsuserd(8) daemon 1312 built from head sources between r320757 (July 6, 2017) and 1313 r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" 1314 is added to the command line. 1315 nfsuserd daemons built from head sources that are post-r338192 are 1316 not affected and should continue to work. 1317 131820190320: 1319 The fuse(4) module has been renamed to fusefs(4) for consistency with 1320 other filesystems. You should update any kld_load="fuse" entries in 1321 /etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and 1322 "options FUSE" entries in kernel config files. 1323 132420190304: 1325 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1326 8.0.0. Please see the 20141231 entry below for information about 1327 prerequisites and upgrading, if you are not already using clang 3.5.0 1328 or higher. 1329 133020190226: 1331 geom_uzip(4) depends on the new module xz. If geom_uzip is statically 1332 compiled into your custom kernel, add 'device xz' statement to the 1333 kernel config. 1334 133520190219: 1336 drm and drm2 have been removed from the tree. Please see 1337 https://wiki.freebsd.org/Graphics for the latest information on 1338 migrating to the drm ports. 1339 134020190131: 1341 Iflib is no longer unconditionally compiled into the kernel. Drivers 1342 using iflib and statically compiled into the kernel, now require 1343 the 'device iflib' config option. For the same drivers loaded as 1344 modules on kernels not having 'device iflib', the iflib.ko module 1345 is loaded automatically. 1346 134720190125: 1348 The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration 1349 options no longer exist since r343219 and r343427 respectively; 1350 nothing uses them, so they should be just removed from custom 1351 kernel config files. 1352 135320181230: 1354 r342635 changes the way efibootmgr(8) works by requiring users to add 1355 the -b (bootnum) parameter for commands where the bootnum was previously 1356 specified with each option. For example 'efibootmgr -B 0001' is now 1357 'efibootmgr -B -b 0001'. 1358 135920181220: 1360 r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport 1361 in the same as it is applied to NFSv2 and 3. This implies that NFSv4 1362 servers that have vfs.nfsd.nfs_privport set will only allow mounts 1363 from clients using a reserved port. Since both the FreeBSD and Linux 1364 NFSv4 clients use reserved ports by default, this should not affect 1365 most NFSv4 mounts. 1366 136720181219: 1368 The XLP config has been removed. We can't support 64-bit atomics in this 1369 kernel because it is running in 32-bit mode. XLP users must transition 1370 to running a 64-bit kernel (XLP64 or XLPN32). 1371 1372 The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is 1373 the preferred emulator today and we don't need two different ones. 1374 1375 The old sibyte / swarm / Broadcom BCM1250 support has been 1376 removed from the mips port. 1377 137820181211: 1379 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1380 7.0.1. Please see the 20141231 entry below for information about 1381 prerequisites and upgrading, if you are not already using clang 3.5.0 1382 or higher. 1383 138420181211: 1385 Remove the timed and netdate programs from the base tree. Setting 1386 the time with these daemons has been obsolete for over a decade. 1387 138820181126: 1389 On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld 1390 linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as 1391 it produces broken binaries when ifuncs are in use. Users needing 1392 GNU ld should install the binutils port or package. 1393 139420181123: 1395 The BSD crtbegin and crtend code has been enabled by default. It has 1396 had extensive testing on amd64, arm64, and i386. It can be disabled 1397 by building a world with -DWITHOUT_BSD_CRTBEGIN. 1398 139920181115: 1400 The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue) 1401 has been converted to a port (misc/ctm) and will be removed from 1402 FreeBSD-13. It is available as a package (ctm) for all supported 1403 FreeBSD versions. 1404 140520181110: 1406 The default newsyslog.conf(5) file has been changed to only include 1407 files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if 1408 the filenames end in '.conf' and do not begin with a '.'. 1409 1410 You should check the configuration files in these two directories match 1411 this naming convention. You can verify which configuration files are 1412 being included using the command: 1413 $ newsyslog -Nrv 1414 141520181019: 1416 Stable/12 was branched created. 1417 141820181015: 1419 Ports for the DRM modules have been simplified. Now, amd64 users should 1420 just install the drm-kmod port. All others should install 1421 drm-legacy-kmod. 1422 1423 Graphics hardware that's newer than about 2010 usually works with 1424 drm-kmod. For hardware older than 2013, however, some users will need 1425 to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older 1426 than 2008 usually only works in drm-legacy-kmod. The graphics team can 1427 only commit to hardware made since 2013 due to the complexity of the 1428 market and difficulty to test all the older cards effectively. If you 1429 have hardware supported by drm-kmod, you are strongly encouraged to use 1430 that as you will get better support. 1431 1432 Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined 1433 elsewhere, the drm and drm2 modules will be eliminated from the src base 1434 soon (with a limited exception for arm). Please update to the package 1435 asap and report any issues to x11@freebsd.org. 1436 1437 Generally, anybody using the drm*-kmod packages should add 1438 WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty 1439 cross-threading surprises, especially with automatic driver 1440 loading from X11 startup. These will become the defaults in 13-current 1441 shortly. 1442 144320181012: 1444 The ixlv(4) driver has been renamed to iavf(4). As a consequence, 1445 custom kernel and module loading configuration files must be updated 1446 accordingly. Moreover, interfaces previous presented as ixlvN to the 1447 system are now exposed as iavfN and network configuration files must 1448 be adjusted as necessary. 1449 145020181009: 1451 OpenSSL has been updated to version 1.1.1. This update included 1452 additional various API changes throughout the base system. It is 1453 important to rebuild third-party software after upgrading. The value 1454 of __FreeBSD_version has been bumped accordingly. 1455 145620181006: 1457 The legacy DRM modules and drivers have now been added to the loader's 1458 module blacklist, in favor of loading them with kld_list in rc.conf(5). 1459 The module blacklist may be overridden with the loader.conf(5) 1460 'module_blacklist' variable, but loading them via rc.conf(5) is strongly 1461 encouraged. 1462 146320181002: 1464 The cam(4) based nda(4) driver will be used over nvd(4) by default on 1465 powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or 1466 loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing 1467 driver. Make sure to edit /boot/etc/kboot.conf and fstab to use the 1468 nda device name. 1469 147020180913: 1471 Reproducible build mode is now on by default, in preparation for 1472 FreeBSD 12.0. This eliminates build metadata such as the user, 1473 host, and time from the kernel (and uname), unless the working tree 1474 corresponds to a modified checkout from a version control system. 1475 The previous behavior can be obtained by setting the /etc/src.conf 1476 knob WITHOUT_REPRODUCIBLE_BUILD. 1477 147820180826: 1479 The Yarrow CSPRNG has been removed from the kernel as it has not been 1480 supported by its designers since at least 2003. Fortuna has been the 1481 default since FreeBSD-11. 1482 148320180822: 1484 devctl freeze/thaw have gone into the tree, the rc scripts have been 1485 updated to use them and devmatch has been changed. You should update 1486 kernel, userland and rc scripts all at the same time. 1487 148820180818: 1489 The default interpreter has been switched from 4th to Lua. 1490 LOADER_DEFAULT_INTERP, documented in build(7), will override the default 1491 interpreter. If you have custom FORTH code you will need to set 1492 LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in 1493 src.conf for the build. This will create default hard links between 1494 loader and loader_4th instead of loader and loader_lua, the new default. 1495 If you are using UEFI it will create the proper hard link to loader.efi. 1496 1497 bhyve uses userboot.so. It remains 4th-only until some issues are solved 1498 regarding coexisting with multiple versions of FreeBSD are resolved. 1499 150020180815: 1501 ls(1) now respects the COLORTERM environment variable used in other 1502 systems and software to indicate that a colored terminal is both 1503 supported and desired. If ls(1) is suddenly emitting colors, they may 1504 be disabled again by either removing the unwanted COLORTERM from your 1505 environment, or using `ls --color=never`. The ls(1) specific CLICOLOR 1506 may not be observed in a future release. 1507 150820180808: 1509 The default pager for most commands has been changed to "less". To 1510 restore the old behavior, set PAGER="more" and MANPAGER="more -s" in 1511 your environment. 1512 151320180731: 1514 The jedec_ts(4) driver has been removed. A superset of its functionality 1515 is available in the jedec_dimm(4) driver, and the manpage for that 1516 driver includes migration instructions. If you have "device jedec_ts" 1517 in your kernel configuration file, it must be removed. 1518 151920180730: 1520 amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default. 1521 This should have no effect if the kernel is booted via BIOS/legacy boot. 1522 EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system 1523 has a buggy firmware that prevents a successful boot due to use of 1524 runtime services. 1525 152620180727: 1527 Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale 1528 support has been removed from the tree. These ports were 1529 obsolete and/or known to be broken for many years. 1530 153120180723: 1532 loader.efi has been augmented to participate more fully in the 1533 UEFI boot manager protocol. loader.efi will now look at the 1534 BootXXXX environment variable to determine if a specific kernel 1535 or root partition was specified. XXXX is derived from BootCurrent. 1536 efibootmgr(8) manages these standard UEFI variables. 1537 153820180720: 1539 zfsloader's functionality has now been folded into loader. 1540 zfsloader is no longer necessary once you've updated your 1541 boot blocks. For a transition period, we will install a 1542 hardlink for zfsloader to loader to allow a smooth transition 1543 until the boot blocks can be updated (hard link because old 1544 zfs boot blocks don't understand symlinks). 1545 154620180719: 1547 ARM64 now have efifb support, if you want to have serial console 1548 on your arm64 board when an screen is connected and the bootloader 1549 setup a frame buffer for us to use, just add : 1550 boot_serial=YES 1551 boot_multicons=YES 1552 in /boot/loader.conf 1553 For Raspberry Pi 3 (RPI) users, this is needed even if you don't have 1554 an screen connected as the firmware will setup a frame buffer are that 1555 u-boot will expose as an EFI frame buffer. 1556 155720180719: 1558 New uid:gid added, ntpd:ntpd (123:123). Be sure to run mergemaster 1559 or take steps to update /etc/passwd before doing installworld on 1560 existing systems. Do not skip the "mergemaster -Fp" step before 1561 installworld, as described in the update procedures near the bottom 1562 of this document. Also, rc.d/ntpd now starts ntpd(8) as user ntpd 1563 if the new mac_ntpd(4) policy is available, unless ntpd_flags or 1564 the ntp config file contain options that change file/dir locations. 1565 When such options (e.g., "statsdir" or "crypto") are used, ntpd can 1566 still be run as non-root by setting ntpd_user=ntpd in rc.conf, after 1567 taking steps to ensure that all required files/dirs are accessible 1568 by the ntpd user. 1569 157020180717: 1571 Big endian arm support has been removed. 1572 157320180711: 1574 The static environment setup in kernel configs is no longer mutually 1575 exclusive with the loader(8) environment by default. In order to 1576 restore the previous default behavior of disabling the loader(8) 1577 environment if a static environment is present, you must specify 1578 loader_env.disabled=1 in the static environment. 1579 158020180705: 1581 The ABI of syscalls used by management tools like sockstat and 1582 netstat has been broken to allow 32-bit binaries to work on 1583 64-bit kernels without modification. These programs will need 1584 to match the kernel in order to function. External programs may 1585 require minor modifications to accommodate a change of type in 1586 structures from pointers to 64-bit virtual addresses. 1587 158820180702: 1589 On i386 and amd64 atomics are now inlined. Out of tree modules using 1590 atomics will need to be rebuilt. 1591 159220180701: 1593 The '%I' format in the kern.corefile sysctl limits the number of 1594 core files that a process can generate to the number stored in the 1595 debug.ncores sysctl. The '%I' format is replaced by the single digit 1596 index. Previously, if all indexes were taken the kernel would overwrite 1597 only a core file with the highest index in a filename. 1598 Currently the system will create a new core file if there is a free 1599 index or if all slots are taken it will overwrite the oldest one. 1600 160120180630: 1602 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1603 6.0.1. Please see the 20141231 entry below for information about 1604 prerequisites and upgrading, if you are not already using clang 3.5.0 1605 or higher. 1606 160720180628: 1608 r335753 introduced a new quoting method. However, etc/devd/devmatch.conf 1609 needed to be changed to work with it. This change was made with r335763 1610 and requires a mergemaster / etcupdate / etc to update the installed 1611 file. 1612 161320180612: 1614 r334930 changed the interface between the NFS modules, so they all 1615 need to be rebuilt. r335018 did a __FreeBSD_version bump for this. 1616 161720180530: 1618 As of r334391 lld is the default amd64 system linker; it is installed 1619 as /usr/bin/ld. Kernel build workarounds (see 20180510 entry) are no 1620 longer necessary. 1621 162220180530: 1623 The kernel / userland interface for devinfo changed, so you'll 1624 need a new kernel and userland as a pair for it to work (rebuilding 1625 lib/libdevinfo is all that's required). devinfo and devmatch will 1626 not work, but everything else will when there's a mismatch. 1627 162820180523: 1629 The on-disk format for hwpmc callchain records has changed to include 1630 threadid corresponding to a given record. This changes the field offsets 1631 and thus requires that libpmcstat be rebuilt before using a kernel 1632 later than r334108. 1633 163420180517: 1635 The vxge(4) driver has been removed. This driver was introduced into 1636 HEAD one week before the Exar left the Ethernet market and is not 1637 known to be used. If you have device vxge in your kernel config file 1638 it must be removed. 1639 164020180510: 1641 The amd64 kernel now requires a ld that supports ifunc to produce a 1642 working kernel, either lld or a newer binutils. lld is built by default 1643 on amd64, and the 'buildkernel' target uses it automatically. However, 1644 it is not the default linker, so building the kernel the traditional 1645 way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for 1646 binutils port/package). lld will soon be default, and this requirement 1647 will go away. 1648 1649 NOTE: As of r334391 lld is the default system linker on amd64, and no 1650 workaround is necessary. 1651 165220180508: 1653 The nxge(4) driver has been removed. This driver was for PCI-X 10g 1654 cards made by s2io/Neterion. The company was acquired by Exar and 1655 no longer sells or supports Ethernet products. If you have device 1656 nxge in your kernel config file it must be removed. 1657 165820180504: 1659 The tz database (tzdb) has been updated to 2018e. This version more 1660 correctly models time stamps in time zones with negative DST such as 1661 Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and 1662 Africa/Windhoek (1994/2017). This does not affect the UT offsets, only 1663 time zone abbreviations and the tm_isdst flag. 1664 166520180502: 1666 The ixgb(4) driver has been removed. This driver was for an early and 1667 uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel 1668 quickly shifted to the long lived ixgbe family. If you have device 1669 ixgb in your kernel config file it must be removed. 1670 167120180501: 1672 The lmc(4) driver has been removed. This was a WAN interface 1673 card that was already reportedly rare in 2003, and had an ambiguous 1674 license. If you have device lmc in your kernel config file it must 1675 be removed. 1676 167720180413: 1678 Support for Arcnet networks has been removed. If you have device 1679 arcnet or device cm in your kernel config file they must be 1680 removed. 1681 168220180411: 1683 Support for FDDI networks has been removed. If you have device 1684 fddi or device fpa in your kernel config file they must be 1685 removed. 1686 168720180406: 1688 In addition to supporting RFC 3164 formatted messages, the 1689 syslogd(8) service is now capable of parsing RFC 5424 formatted 1690 log messages. The main benefit of using RFC 5424 is that clients 1691 may now send log messages with timestamps containing year numbers, 1692 microseconds and time zone offsets. 1693 1694 Similarly, the syslog(3) C library function has been altered to 1695 send RFC 5424 formatted messages to the local system logging 1696 daemon. On systems using syslogd(8), this change should have no 1697 negative impact, as long as syslogd(8) and the C library are 1698 updated at the same time. On systems using a different system 1699 logging daemon, it may be necessary to make configuration 1700 adjustments, depending on the software used. 1701 1702 When using syslog-ng, add the 'syslog-protocol' flag to local 1703 input sources to enable parsing of RFC 5424 formatted messages: 1704 1705 source src { 1706 unix-dgram("/var/run/log" flags(syslog-protocol)); 1707 } 1708 1709 When using rsyslog, disable the 'SysSock.UseSpecialParser' option 1710 of the 'imuxsock' module to let messages be processed by the 1711 regular RFC 3164/5424 parsing pipeline: 1712 1713 module(load="imuxsock" SysSock.UseSpecialParser="off") 1714 1715 Do note that these changes only affect communication between local 1716 applications and syslogd(8). The format that syslogd(8) uses to 1717 store messages on disk or forward messages to other systems 1718 remains unchanged. syslogd(8) still uses RFC 3164 for these 1719 purposes. Options to customize this behaviour will be added in the 1720 future. Utilities that process log files stored in /var/log are 1721 thus expected to continue to function as before. 1722 1723 __FreeBSD_version has been incremented to 1200061 to denote this 1724 change. 1725 172620180328: 1727 Support for token ring networks has been removed. If you 1728 have "device token" in your kernel config you should remove 1729 it. No device drivers supported token ring. 1730 173120180323: 1732 makefs was modified to be able to tag ISO9660 El Torito boot catalog 1733 entries as EFI instead of overloading the i386 tag as done previously. 1734 The amd64 mkisoimages.sh script used to build amd64 ISO images for 1735 release was updated to use this. This may mean that makefs must be 1736 updated before "make cdrom" can be run in the release directory. This 1737 should be as simple as: 1738 1739 $ cd $SRCDIR/usr.sbin/makefs 1740 $ make depend all install 1741 174220180212: 1743 FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for 1744 now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf. 1745 Co-existence for the transition period will come shortly. Booting is a 1746 complex environment and test coverage for Lua-enabled loaders has been 1747 thin, so it would be prudent to assume it might not work and make 1748 provisions for backup boot methods. 1749 175020180211: 1751 devmatch functionality has been turned on in devd. It will automatically 1752 load drivers for unattached devices. This may cause unexpected drivers 1753 to be loaded. Please report any problems to current@ and 1754 imp@freebsd.org. 1755 175620180114: 1757 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 1758 6.0.0. Please see the 20141231 entry below for information about 1759 prerequisites and upgrading, if you are not already using clang 3.5.0 1760 or higher. 1761 176220180110: 1763 LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker. 1764 This means it is used to link the kernel and userland libraries and 1765 executables, but is not yet installed as /usr/bin/ld by default. 1766 1767 To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set 1768 WITHOUT_LLD_BOOTSTRAP=yes 1769 177020180110: 1771 On i386, pmtimer has been removed. Its functionality has been folded 1772 into apm. It was a no-op on ACPI in current for a while now (but was 1773 still needed on i386 in FreeBSD 11 and earlier). Users may need to 1774 remove it from kernel config files. 1775 177620180104: 1777 The use of RSS hash from the network card aka flowid has been 1778 disabled by default for lagg(4) as it's currently incompatible with 1779 the lacp and loadbalance protocols. 1780 1781 This can be re-enabled by setting the following in loader.conf: 1782 net.link.lagg.default_use_flowid="1" 1783 178420180102: 1785 The SW_WATCHDOG option is no longer necessary to enable the 1786 hardclock-based software watchdog if no hardware watchdog is 1787 configured. As before, SW_WATCHDOG will cause the software 1788 watchdog to be enabled even if a hardware watchdog is configured. 1789 179020171215: 1791 r326887 fixes the issue described in the 20171214 UPDATING entry. 1792 r326888 flips the switch back to building GELI support always. 1793 179420171214: 1795 r362593 broke ZFS + GELI support for reasons unknown. However, 1796 it also broke ZFS support generally, so GELI has been turned off 1797 by default as the lesser evil in r326857. If you boot off ZFS and/or 1798 GELI, it might not be a good time to update. 1799 180020171125: 1801 PowerPC users must update loader(8) by rebuilding world before 1802 installing a new kernel, as the protocol connecting them has 1803 changed. Without the update, loader metadata will not be passed 1804 successfully to the kernel and users will have to enter their 1805 root partition at the kernel mountroot prompt to continue booting. 1806 Newer versions of loader can boot old kernels without issue. 1807 180820171110: 1809 The LOADER_FIREWIRE_SUPPORT build variable has been renamed to 1810 WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed 1811 to WITH/OUT_LOADER_GELI. 1812 181320171106: 1814 The naive and non-compliant support of posix_fallocate(2) in ZFS 1815 has been removed as of r325320. The system call now returns EINVAL 1816 when used on a ZFS file. Although the new behavior complies with the 1817 standard, some consumers are not prepared to cope with it. 1818 One known victim is lld prior to r325420. 1819 182020171102: 1821 Building in a FreeBSD src checkout will automatically create object 1822 directories now rather than store files in the current directory if 1823 'make obj' was not ran. Calling 'make obj' is no longer necessary. 1824 This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in 1825 /etc/src-env.conf (not /etc/src.conf), or passing the option in the 1826 environment. 1827 182820171101: 1829 The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native 1830 builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified 1831 /usr/obj/<srcdir>/<arch>. This behavior can be changed to the old 1832 format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf, 1833 the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building. 1834 The UNIFIED_OBJDIR option is a transitional feature that will be 1835 removed for 12.0 release; please migrate to the new format for any 1836 tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather 1837 than hardcoding paths. 1838 183920171028: 1840 The native-xtools target no longer installs the files by default to the 1841 OBJDIR. Use the native-xtools-install target with a DESTDIR to install 1842 to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin. 1843 184420171021: 1845 As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT 1846 options are changing from controlling the build if defined / undefined 1847 to controlling the build with explicit 'yes' or 'no' values. They will 1848 shift to WITH/WITHOUT options to match other options in the system. 1849 185020171010: 1851 libstand has turned into a private library for sys/boot use only. 1852 It is no longer supported as a public interface outside of sys/boot. 1853 185420171005: 1855 The arm port has split armv6 into armv6 and armv7. armv7 is now 1856 a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system 1857 and are running a kernel from before r324363, you will need to add 1858 MACHINE_ARCH=armv7 to 'make buildworld' to do a native build. 1859 186020171003: 1861 When building multiple kernels using KERNCONF, non-existent KERNCONF 1862 files will produce an error and buildkernel will fail. Previously 1863 missing KERNCONF files silently failed giving no indication as to 1864 why, only to subsequently discover during installkernel that the 1865 desired kernel was never built in the first place. 1866 186720170912: 1868 The default serial number format for CTL LUNs has changed. This will 1869 affect users who use /dev/diskid/* device nodes, or whose FibreChannel 1870 or iSCSI clients care about their LUNs' serial numbers. Users who 1871 require serial number stability should hardcode serial numbers in 1872 /etc/ctl.conf . 1873 187420170912: 1875 For 32-bit arm compiled for hard-float support, soft-floating point 1876 binaries now always get their shared libraries from 1877 LD_SOFT_LIBRARY_PATH (in the past, this was only used if 1878 /usr/libsoft also existed). Only users with a hard-float ld.so, but 1879 soft-float everything else should be affected. 1880 188120170826: 1882 The geli password typed at boot is now hidden. To restore the previous 1883 behavior, see geli(8) for configuration options. 1884 188520170825: 1886 Move PMTUD blackhole counters to TCPSTATS and remove them from bare 1887 sysctl values. Minor nit, but requires a rebuild of both world/kernel 1888 to complete. 1889 189020170814: 1891 "make check" behavior (made in ^/head@r295380) has been changed to 1892 execute from a limited sandbox, as opposed to executing from 1893 ${TESTSDIR}. 1894 1895 Behavioral changes: 1896 - The "beforecheck" and "aftercheck" targets are now specified. 1897 - ${CHECKDIR} (added in commit noted above) has been removed. 1898 - Legacy behavior can be enabled by setting 1899 WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. 1900 1901 If the limited sandbox mode is enabled, "make check" will execute 1902 "make distribution", then install, execute the tests, and clean up the 1903 sandbox if successful. 1904 1905 The "make distribution" and "make install" targets are typically run as 1906 root to set appropriate permissions and ownership at installation time. 1907 The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the 1908 environment if executing "make check" with limited sandbox mode using 1909 an unprivileged user. 1910 191120170808: 1912 Since the switch to GPT disk labels, fsck for UFS/FFS has been 1913 unable to automatically find alternate superblocks. As of r322297, 1914 the information needed to find alternate superblocks has been 1915 moved to the end of the area reserved for the boot block. 1916 Filesystems created with a newfs of this vintage or later 1917 will create the recovery information. If you have a filesystem 1918 created prior to this change and wish to have a recovery block 1919 created for your filesystem, you can do so by running fsck in 1920 foreground mode (i.e., do not use the -p or -y options). As it 1921 starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS'' 1922 to which you should answer yes. 1923 192420170728: 1925 As of r321665, an NFSv4 server configuration that services 1926 Kerberos mounts or clients that do not support the uid/gid in 1927 owner/owner_group string capability, must explicitly enable 1928 the nfsuserd daemon by adding nfsuserd_enable="YES" to the 1929 machine's /etc/rc.conf file. 1930 193120170722: 1932 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0. 1933 Please see the 20141231 entry below for information about prerequisites 1934 and upgrading, if you are not already using clang 3.5.0 or higher. 1935 193620170701: 1937 WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the 1938 r-commands (rlogin, rsh, etc.) to be built with the base system. 1939 194020170625: 1941 The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is 1942 a very major ABI incompatible change, so users of FreeBSD/powerpc must 1943 be careful when performing source upgrades. It is best to run 1944 'make installworld' from an alternate root system, either a live 1945 CD/memory stick, or a temporary root partition. Additionally, all ports 1946 must be recompiled. powerpc64 is largely unaffected, except in the case 1947 of 32-bit compatibility. All 32-bit binaries will be affected. 1948 194920170623: 1950 Forward compatibility for the "ino64" project have been committed. This 1951 will allow most new binaries to run on older kernels in a limited 1952 fashion. This prevents many of the common foot-shooting actions in the 1953 upgrade as well as the limited ability to roll back the kernel across 1954 the ino64 upgrade. Complicated use cases may not work properly, though 1955 enough simpler ones work to allow recovery in most situations. 1956 195720170620: 1958 Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC 1959 if you require the GPL compiler. 1960 196120170619: 1962 Forward compatibility for the "ino64" project have been committed. This 1963 will allow most new binaries to run on older kernels in a limited 1964 fashion. This prevents many of the common foot-shooting actions in the 1965 upgrade as well as the limited ability to roll back the kernel across 1966 the ino64 upgrade. Complicated use cases may not work properly, though 1967 enough simpler ones work to allow recovery in most situations. 1968 196920170618: 1970 The internal ABI used for communication between the NFS kernel modules 1971 was changed by r320085, so __FreeBSD_version was bumped to 1972 ensure all the NFS related modules are updated together. 1973 197420170617: 1975 The ABI of struct event was changed by extending the data 1976 member to 64bit and adding ext fields. For upgrade, same 1977 precautions as for the entry 20170523 "ino64" must be 1978 followed. 1979 198020170531: 1981 The GNU roff toolchain has been removed from base. To render manpages 1982 which are not supported by mandoc(1), man(1) can fallback on GNU roff 1983 from ports (and recommends to install it). 1984 To render roff(7) documents, consider using GNU roff from ports or the 1985 heirloom doctools roff toolchain from ports via pkg install groff or 1986 via pkg install heirloom-doctools. 1987 198820170524: 1989 The ath(4) and ath_hal(4) modules now build piecemeal to allow for 1990 smaller runtime footprint builds. This is useful for embedded systems 1991 which only require one chipset support. 1992 1993 If you load it as a module, make sure this is in /boot/loader.conf: 1994 1995 if_ath_load="YES" 1996 1997 This will load the HAL, all chip/RF backends and if_ath_pci. 1998 If you have if_ath_pci in /boot/loader.conf, ensure it is after 1999 if_ath or it will not load any HAL chipset support. 2000 2001 If you want to selectively load things (eg on cheaper ARM/MIPS 2002 platforms where RAM is at a premium) you should: 2003 2004 * load ath_hal 2005 * load the chip modules in question 2006 * load ath_rate, ath_dfs 2007 * load ath_main 2008 * load if_ath_pci and/or if_ath_ahb depending upon your particular 2009 bus bind type - this is where probe/attach is done. 2010 2011 For further comments/feedback, poke adrian@ . 2012 201320170523: 2014 The "ino64" 64-bit inode project has been committed, which extends 2015 a number of types to 64 bits. Upgrading in place requires care and 2016 adherence to the documented upgrade procedure. 2017 2018 If using a custom kernel configuration ensure that the 2019 COMPAT_FREEBSD11 option is included (as during the upgrade the 2020 system will be running the ino64 kernel with the existing world). 2021 2022 For the safest in-place upgrade begin by removing previous build 2023 artifacts via "rm -rf /usr/obj/*". Then, carefully follow the full 2024 procedure documented below under the heading "To rebuild everything and 2025 install it on the current system." Specifically, a reboot is required 2026 after installing the new kernel before installing world. While an 2027 installworld normally works by accident from multiuser after rebooting 2028 the proper kernel, there are many cases where this will fail across this 2029 upgrade and installworld from single user is required. 2030 203120170424: 2032 The NATM framework including the en(4), fatm(4), hatm(4), and 2033 patm(4) devices has been removed. Consumers should plan a 2034 migration before the end-of-life date for FreeBSD 11. 2035 203620170420: 2037 GNU diff has been replaced by a BSD licensed diff. Some features of GNU 2038 diff has not been implemented, if those are needed a newer version of 2039 GNU diff is available via the diffutils package under the gdiff name. 2040 204120170413: 2042 As of r316810 for ipfilter, keep frags is no longer assumed when 2043 keep state is specified in a rule. r316810 aligns ipfilter with 2044 documentation in man pages separating keep frags from keep state. 2045 This allows keep state to be specified without forcing keep frags 2046 and allows keep frags to be specified independently of keep state. 2047 To maintain previous behaviour, also specify keep frags with 2048 keep state (as documented in ipf.conf.5). 2049 205020170407: 2051 arm64 builds now use the base system LLD 4.0.0 linker by default, 2052 instead of requiring that the aarch64-binutils port or package be 2053 installed. To continue using aarch64-binutils, set 2054 CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin . 2055 205620170405: 2057 The UDP optimization in entry 20160818 that added the sysctl 2058 net.inet.udp.require_l2_bcast has been reverted. L2 broadcast 2059 packets will no longer be treated as L3 broadcast packets. 2060 206120170331: 2062 Binds and sends to the loopback addresses, IPv6 and IPv4, will now 2063 use any explicitly assigned loopback address available in the jail 2064 instead of using the first assigned address of the jail. 2065 206620170329: 2067 The ctl.ko module no longer implements the iSCSI target frontend: 2068 cfiscsi.ko does instead. 2069 2070 If building cfiscsi.ko as a kernel module, the module can be loaded 2071 via one of the following methods: 2072 - `cfiscsi_load="YES"` in loader.conf(5). 2073 - Add `cfiscsi` to `$kld_list` in rc.conf(5). 2074 - ctladm(8)/ctld(8), when compiled with iSCSI support 2075 (`WITH_ISCSI=yes` in src.conf(5)) 2076 2077 Please see cfiscsi(4) for more details. 2078 207920170316: 2080 The mmcsd.ko module now additionally depends on geom_flashmap.ko. 2081 Also, mmc.ko and mmcsd.ko need to be a matching pair built from the 2082 same source (previously, the dependency of mmcsd.ko on mmc.ko was 2083 missing, but mmcsd.ko now will refuse to load if it is incompatible 2084 with mmc.ko). 2085 208620170315: 2087 The syntax of ipfw(8) named states was changed to avoid ambiguity. 2088 If you have used named states in the firewall rules, you need to modify 2089 them after installworld and before rebooting. Now named states must 2090 be prefixed with colon. 2091 209220170311: 2093 The old drm (sys/dev/drm/) drivers for i915 and radeon have been 2094 removed as the userland we provide cannot use them. The KMS version 2095 (sys/dev/drm2) supports the same hardware. 2096 209720170302: 2098 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0. 2099 Please see the 20141231 entry below for information about prerequisites 2100 and upgrading, if you are not already using clang 3.5.0 or higher. 2101 210220170221: 2103 The code that provides support for ZFS .zfs/ directory functionality 2104 has been reimplemented. It's not possible now to create a snapshot 2105 by mkdir under .zfs/snapshot/. That should be the only user visible 2106 change. 2107 210820170216: 2109 EISA bus support has been removed. The WITH_EISA option is no longer 2110 valid. 2111 211220170215: 2113 MCA bus support has been removed. 2114 211520170127: 2116 The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed 2117 WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC. 2118 211920170112: 2120 The EM_MULTIQUEUE kernel configuration option is deprecated now that 2121 the em(4) driver conforms to iflib specifications. 2122 212320170109: 2124 The igb(4), em(4) and lem(4) ethernet drivers are now implemented via 2125 IFLIB. If you have a custom kernel configuration that excludes em(4) 2126 but you use igb(4), you need to re-add em(4) to your custom 2127 configuration. 2128 212920161217: 2130 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1. 2131 Please see the 20141231 entry below for information about prerequisites 2132 and upgrading, if you are not already using clang 3.5.0 or higher. 2133 213420161124: 2135 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0. 2136 Please see the 20141231 entry below for information about prerequisites 2137 and upgrading, if you are not already using clang 3.5.0 or higher. 2138 213920161119: 2140 The layout of the pmap structure has changed for powerpc to put the pmap 2141 statistics at the front for all CPU variations. libkvm(3) and all tools 2142 that link against it need to be recompiled. 2143 214420161030: 2145 isl(4) and cyapa(4) drivers now require a new driver, 2146 chromebook_platform(4), to work properly on Chromebook-class hardware. 2147 On other types of hardware the drivers may need to be configured using 2148 device hints. Please see the corresponding manual pages for details. 2149 215020161017: 2151 The urtwn(4) driver was merged into rtwn(4) and now consists of 2152 rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific 2153 parts. 2154 Also, firmware for RTL8188CE was renamed due to possible name 2155 conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B)) 2156 215720161015: 2158 GNU rcs has been removed from base. It is available as packages: 2159 - rcs: Latest GPLv3 GNU rcs version. 2160 - rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was 2161 removed from base. 2162 216320161008: 2164 Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control 2165 modules now requires that the kernel configuration contain the 2166 TCP_HHOOK option. (This option is included in the GENERIC kernel.) 2167 216820161003: 2169 The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired. 2170 ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy. 2171 217220160924: 2173 Relocatable object files with the extension of .So have been renamed 2174 to use an extension of .pico instead. The purpose of this change is 2175 to avoid a name clash with shared libraries on case-insensitive file 2176 systems. On those file systems, foo.So is the same file as foo.so. 2177 217820160918: 2179 GNU rcs has been turned off by default. It can (temporarily) be built 2180 again by adding WITH_RCS knob in src.conf. 2181 Otherwise, GNU rcs is available from packages: 2182 - rcs: Latest GPLv3 GNU rcs version. 2183 - rcs57: Copy of the latest version of GNU rcs (GPLv2) from base. 2184 218520160918: 2186 The backup_uses_rcs functionality has been removed from rc.subr. 2187 218820160908: 2189 The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into 2190 two separate components, QUEUE_MACRO_DEBUG_TRACE and 2191 QUEUE_MACRO_DEBUG_TRASH. Define both for the original 2192 QUEUE_MACRO_DEBUG behavior. 2193 219420160824: 2195 r304787 changed some ioctl interfaces between the iSCSI userspace 2196 programs and the kernel. ctladm, ctld, iscsictl, and iscsid must be 2197 rebuilt to work with new kernels. __FreeBSD_version has been bumped 2198 to 1200005. 2199 220020160818: 2201 The UDP receive code has been updated to only treat incoming UDP 2202 packets that were addressed to an L2 broadcast address as L3 2203 broadcast packets. It is not expected that this will affect any 2204 standards-conforming UDP application. The new behaviour can be 2205 disabled by setting the sysctl net.inet.udp.require_l2_bcast to 2206 0. 2207 220820160818: 2209 Remove the openbsd_poll system call. 2210 __FreeBSD_version has been bumped because of this. 2211 221220160708: 2213 The stable/11 branch has been created from head@r302406. 2214 2215After branch N is created, entries older than the N-2 branch point are removed 2216from this file. After stable/14 is branched and current becomes FreeBSD 15, 2217entries older than stable/12 branch point will be removed from current's 2218UPDATING file. 2219 2220COMMON ITEMS: 2221 2222 General Notes 2223 ------------- 2224 Sometimes, obscure build problems are the result of environment 2225 poisoning. This can happen because the make utility reads its 2226 environment when searching for values for global variables. To run 2227 your build attempts in an "environmental clean room", prefix all make 2228 commands with 'env -i '. See the env(1) manual page for more details. 2229 Occasionally a build failure will occur with "make -j" due to a race 2230 condition. If this happens try building again without -j, and please 2231 report a bug if it happens consistently. 2232 2233 When upgrading from one major version to another it is generally best to 2234 upgrade to the latest code in the currently installed branch first, then 2235 do an upgrade to the new branch. This is the best-tested upgrade path, 2236 and has the highest probability of being successful. Please try this 2237 approach if you encounter problems with a major version upgrade. Since 2238 the stable 4.x branch point, one has generally been able to upgrade from 2239 anywhere in the most recent stable branch to head / current (or even the 2240 last couple of stable branches). See the top of this file when there's 2241 an exception. 2242 2243 The update process will emit an error on an attempt to perform a build 2244 or install from a FreeBSD version below the earliest supported version. 2245 When updating from an older version the update should be performed one 2246 major release at a time, including running `make delete-old` at each 2247 step. 2248 2249 When upgrading a live system, having a root shell around before 2250 installing anything can help undo problems. Not having a root shell 2251 around can lead to problems if pam has changed too much from your 2252 starting point to allow continued authentication after the upgrade. 2253 2254 This file should be read as a log of events. When a later event changes 2255 information of a prior event, the prior event should not be deleted. 2256 Instead, a pointer to the entry with the new information should be 2257 placed in the old entry. Readers of this file should also sanity check 2258 older entries before relying on them blindly. Authors of new entries 2259 should write them with this in mind. 2260 2261 ZFS notes 2262 --------- 2263 When upgrading the boot ZFS pool to a new version (via zpool upgrade), 2264 always follow these three steps: 2265 2266 1) recompile and reinstall the ZFS boot loader and boot block 2267 (this is part of "make buildworld" and "make installworld") 2268 2269 2) update the ZFS boot block on your boot drive (only required when 2270 doing a zpool upgrade): 2271 2272 When booting on x86 via BIOS, use the following to update the ZFS boot 2273 block on the freebsd-boot partition of a GPT partitioned drive ada0: 2274 gpart bootcode -p /boot/gptzfsboot -i $N ada0 2275 The value $N will typically be 1. For EFI booting, see EFI notes. 2276 2277 3) zpool upgrade the root pool. New bootblocks will work with old 2278 pools, but not vice versa, so they need to be updated before any 2279 zpool upgrade. 2280 2281 Non-boot pools do not need these updates. 2282 2283 EFI notes 2284 --------- 2285 2286 There are two locations the boot loader can be installed into. The 2287 current location (and the default) is \efi\freebsd\loader.efi and using 2288 efibootmgr(8) to configure it. The old location, that must be used on 2289 deficient systems that don't honor efibootmgr(8) protocols, is the 2290 fallback location of \EFI\BOOT\BOOTxxx.EFI. Generally, you will copy 2291 /boot/loader.efi to this location, but on systems installed a long time 2292 ago the ESP may be too small and /boot/boot1.efi may be needed unless 2293 the ESP has been expanded in the meantime. 2294 2295 Recent systems will have the ESP mounted on /boot/efi, but older ones 2296 may not have it mounted at all, or mounted in a different 2297 location. Older arm SD images with MBR used /boot/msdos as the 2298 mountpoint. The ESP is a MSDOS filesystem. 2299 2300 The EFI boot loader rarely needs to be updated. For ZFS booting, 2301 however, you must update loader.efi before you do 'zpool upgrade' the 2302 root zpool, otherwise the old loader.efi may reject the upgraded zpool 2303 since it does not automatically understand some new features. 2304 2305 See loader.efi(8) and uefi(8) for more details. 2306 2307 To build a kernel 2308 ----------------- 2309 If you are updating from a prior version of FreeBSD (even one just 2310 a few days old), you should follow this procedure. It is the most 2311 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 2312 2313 make kernel-toolchain 2314 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 2315 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 2316 2317 If you are running kernel modules from ports, see FOOTNOTE [1]. 2318 2319 To test a kernel once 2320 --------------------- 2321 If you just want to boot a kernel once (because you are not sure 2322 if it works, or if you want to boot a known bad kernel to provide 2323 debugging information) run 2324 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 2325 nextboot -k testkernel 2326 2327 To rebuild everything and install it on the current system. 2328 ----------------------------------------------------------- 2329 # Note: sometimes if you are running current you gotta do more than 2330 # is listed here if you are upgrading from a really old current. 2331 2332 <make sure you have good level 0 dumps> [2] 2333 make buildworld 2334 <make sure any needed PORTS_MODULES are set> [1] 2335 make buildkernel KERNCONF=YOUR_KERNEL_HERE 2336 make installkernel KERNCONF=YOUR_KERNEL_HERE 2337 <reboot in single user> [3] 2338 etcupdate -p [5] 2339 make installworld 2340 etcupdate -B [4] 2341 make delete-old [6] 2342 <reboot> 2343 2344 To cross-install current onto a separate partition 2345 -------------------------------------------------- 2346 # In this approach we use a separate partition to hold 2347 # current's root, 'usr', and 'var' directories. A partition 2348 # holding "/", "/usr" and "/var" should be about 2GB in 2349 # size. 2350 2351 <make sure you have good level 0 dumps> 2352 <boot into -stable> 2353 make buildworld 2354 make buildkernel KERNCONF=YOUR_KERNEL_HERE [1] 2355 <maybe newfs current's root partition> 2356 <mount current's root partition on directory ${CURRENT_ROOT}> 2357 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 2358 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 2359 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 2360 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 2361 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 2362 <reboot into current> 2363 <do a "native" rebuild/install as described in the previous section> 2364 <maybe install compatibility libraries from ports/misc/compat*> 2365 <reboot> 2366 2367 2368 To upgrade in-place from stable to current 2369 ---------------------------------------------- 2370 <make sure you have good level 0 dumps> [2] 2371 make buildworld [9] 2372 <make sure any needed PORTS_MODULES are set> [1] 2373 make buildkernel KERNCONF=YOUR_KERNEL_HERE [8] 2374 make installkernel KERNCONF=YOUR_KERNEL_HERE 2375 <reboot in single user> [3] 2376 etcupdate -p [5] 2377 make installworld 2378 etcupdate -B [4] 2379 make delete-old [6] 2380 <reboot> 2381 2382 Make sure that you've read the UPDATING file to understand the 2383 tweaks to various things you need. At this point in the life 2384 cycle of current, things change often and you are on your own 2385 to cope. The defaults can also change, so please read ALL of 2386 the UPDATING entries. 2387 2388 Also, if you are tracking -current, you must be subscribed to 2389 freebsd-current@freebsd.org. Make sure that before you update 2390 your sources that you have read and understood all the recent 2391 messages there. If in doubt, please track -stable which has 2392 much fewer pitfalls. 2393 2394FOOTNOTES: 2395 2396 [1] If you have third party modules, such as drm-kmod or vmware, you 2397 should disable them at this point so they don't crash your system on 2398 reboot. Alternatively, you should rebuild all the modules you have in 2399 your system and install them as well. If you are running -current, you 2400 should seriously consider placing all sources to all the modules for 2401 your system (or symlinks to them) in /usr/local/sys/modules so this 2402 happens automatically. If all your modules come from ports, then adding 2403 the port origin directories to PORTS_MODULES instead is also automatic 2404 and effective, eg: 2405 PORTS_MODULES+=graphics/drm-kmod graphics/nvidia-drm-kmod 2406 2407 [2] To make complete dumps on zfs(4), use bectl(8), which 2408 creates bootable snapshots of configurable depth that are 2409 selectable via the bootloader. For ufs(4), use dump(8) and 2410 restore(8). 2411 2412 [3] From the bootblocks, boot -s, and then do 2413 fsck -p 2414 mount -u / 2415 mount -a 2416 sh /etc/rc.d/zfs start # mount zfs filesystem, if needed 2417 cd src # full path to source 2418 adjkerntz -i # if CMOS is wall time 2419 Also, when doing a major release upgrade, it is required that you boot 2420 into single user mode to do the installworld. 2421 2422 [4] Note: This step is non-optional. Failure to do this step 2423 can result in a significant reduction in the functionality of the 2424 system. Attempting to do it by hand is not recommended and those 2425 that pursue this avenue should read this file carefully, as well 2426 as the archives of freebsd-current and freebsd-hackers mailing lists 2427 for potential gotchas. See etcupdate(8) for more information. 2428 2429 [5] Usually this step is a no-op. However, from time to time 2430 you may need to do this if you get unknown user in the following 2431 step. 2432 2433 [6] This only deletes old files and directories. Old libraries 2434 can be deleted by "make delete-old-libs", but you have to make 2435 sure that no program is using those libraries anymore. 2436 2437 [8] The new kernel must be able to run existing binaries used by an 2438 installworld. When upgrading across major versions, the new kernel's 2439 configuration must include the correct COMPAT_FREEBSD<n> option for 2440 existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries). Failure 2441 to do so may leave you with a system that is hard to boot to recover. A 2442 GENERIC kernel will include suitable compatibility options to run 2443 binaries from older branches. Note that the ability to run binaries 2444 from unsupported branches is not guaranteed. 2445 2446 Make sure that you merge any new devices from GENERIC since the 2447 last time you updated your kernel config file. Options also 2448 change over time, so you may need to adjust your custom kernels 2449 for these as well. 2450 2451 [9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the 2452 "?=" instead of the "=" assignment operator, so that buildworld can 2453 override the CPUTYPE if it needs to. 2454 2455 MAKEOBJDIRPREFIX must be defined in an environment variable, and 2456 not on the command line, or in /etc/make.conf. buildworld will 2457 warn if it is improperly defined. 2458FORMAT: 2459 2460This file contains a list, in reverse chronological order, of major 2461breakages in tracking -current. It is not guaranteed to be a complete 2462list of such breakages, and only contains entries since September 23, 2011. 2463If you need to see UPDATING entries from before that date, you will need 2464to fetch an UPDATING file from an older FreeBSD release. 2465 2466Copyright information: 2467 2468Copyright 1998-2009 M. Warner Losh <imp@FreeBSD.org> 2469 2470Redistribution, publication, translation and use, with or without 2471modification, in full or in part, in any form or format of this 2472document are permitted without further permission from the author. 2473 2474THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 2475IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 2476WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2477DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 2478INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2479(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2480SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2481HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2482STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 2483IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2484POSSIBILITY OF SUCH DAMAGE. 2485 2486Contact Warner Losh if you have any questions about your use of 2487this document. 2488