1 Updating Information for FreeBSD stable/13 users. 2 3This file is maintained and copyrighted by M. Warner Losh <[email protected]>. 4See end of file for further details. For commonly done items, please see the 5COMMON ITEMS: section later in the file. These instructions assume that you 6basically know what you are doing. If not, then please consult the FreeBSD 7handbook: 8 9 https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html 10 11Items affecting the ports and packages system can be found in 12/usr/ports/UPDATING. Please read that file before running portupgrade. 13 1420210429: 15 Commit 5a45802b3c8c changed the internal KAPI between 16 the krpc and NFS. As such, the krpc, nfscommon and 17 nfscl modules must all be rebuilt from sources. 18 Without this patch, NFSv4.1/4.2 mounts should not 19 be done with the nfscbd(8) daemon running, to avoid 20 needing a working back channel for server->client RPCs. 21 2220210202: 23 Various LinuxKPI functionality was added which conflicts with DRM. 24 Please update your drm-kmod port to after the __FreeBSD_verison 1300139 25 update. 26 2720210122: 28 The stable/13 branch has been created from main. 29 3020210108: 31 PC Card attachments for all devices have been removed. In the case of 32 wi and cmx, the entire drivers were removed because they were only 33 PC Card devices. FreeBSD_version 1300134 should be used for this 34 since it was bumped so recently. 35 3620210107: 37 Transport-independent parts of HID support have been split off the USB 38 code in to separate subsystem. Kernel configs which include one of 39 ums, ukbd, uhid, atp, wsp, wmt, uaudio, ugold or ucycom drivers should 40 be updated with adding of "device hid" line. 41 4220210105: 43 ncurses installation has been modified to only keep the widechar 44 enabled version. Incremental build is broken for that change, so it 45 requires a clean build. 46 4720201223: 48 The FreeBSD project has migrated from Subversion to Git. Temporary 49 instructions can be found at 50 https://github.com/bsdimp/freebsd-git-docs/blob/main/src-cvt.md 51 and other documents in that repo. 52 5320201216: 54 The services database has been updated to cover more of the basic 55 services expected in a modern system. The database is big enough 56 that it will cause issues in mergemaster in Releases previous to 57 12.2 and 11.3, or in very old current systems from before r358154. 58 5920201215: 60 Obsolete in-tree GDB 6.1.1 has been removed. GDB (including kgdb) 61 may be installed from ports or packages. 62 6320201124: 64 ping6 has been merged into ping. It can now be called as "ping -6". 65 See ping(8) for details. 66 6720201108: 68 Default value of net.add_addr_allfibs has been changed to 0. 69 If you have multi-fib configuration and rely on existence of all 70 interface routes in every fib, you need to set the above sysctl to 1. 7120201030: 72 The internal pre-processor in the calendar(1) program has been 73 extended to support more C pre-processor commands (e.g. #ifdef, #else, 74 and #undef) and to detect unbalanced conditional statements. 75 Error messages have been extended to include the filename and line 76 number if processing stops to help fixing malformed data files. 77 7820201026: 79 All the data files for the calendar(1) program, except calendar.freebsd, 80 have been moved to the deskutils/calendar-data port, much like the 81 jewish calendar entries were moved to deskutils/hebcal years ago. After 82 make delete-old-files, you need to install it to retain full 83 functionality. calendar(1) will issue a reminder for files it can't 84 find. 85 8620200923: 87 LINT files are no longer generated. We now include the relevant NOTES 88 files. Note: This may cause conflicts with updating in some cases. 89 find sys -name LINT\* -delete 90 is suggested across this commit to remove the generated LINT files. 91 92 If you have tried to update with generated files there, the svn 93 command you want to un-auger the tree is 94 cd sys/amd64/conf 95 svn revert -R . 96 and then do the above find from the top level. Substitute 'amd64' 97 above with where the error message indicates a conflict. 98 9920200824: 100 OpenZFS support has been integrated. Do not upgrade root pools until 101 the loader is updated to support zstd. Furthermore, we caution against 102 'zpool upgrade' for the next few weeks. The change should be transparent 103 unless you want to use new features. 104 105 Not all "NO_CLEAN" build scenarios work across these changes. Many 106 scenarios have been tested and fixed, but rebuilding kernels without 107 rebuilding world may fail. 108 109 The ZFS cache file has moved from /boot to /etc to match the OpenZFS 110 upstream default. A fallback to /boot has been added for mountroot. 111 112 Pool auto import behavior at boot has been moved from the kernel module 113 to an explicit "zpool import -a" in one of the rc scripts enabled by 114 zfs_enable=YES. This means your non-root zpools won't auto import until 115 you upgrade your /etc/rc.d files. 116 11720200824: 118 The resume code now notifies devd with the 'kernel' system 119 rather than the old 'kern' subsystem to be consistent with 120 other use. The old notification will be created as well, but 121 will be removed prior to FreeBSD 14.0. 122 12320200821: 124 r362275 changed the internal API between the kernel RPC and the 125 NFS modules. As such, all the modules must be recompiled from 126 sources. 127 12820200817: 129 r364330 modified the internal API used between the NFS modules. 130 As such, all the NFS modules must be re-compiled from sources. 131 13220200816: 133 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 134 been upgraded to 11.0.0. Please see the 20141231 entry below for 135 information about prerequisites and upgrading, if you are not already 136 using clang 3.5.0 or higher. 137 13820200810: 139 r364092 modified the internal ABI used between the kernel NFS 140 modules. As such, all of these modules need to be rebuilt 141 from sources, so a version bump was done. 142 14320200807: 144 Makefile.inc has been updated to work around the issue documented in 145 20200729. It was a case where the optimization of using symbolic links 146 to point to binaries created a situation where we'd run new binaries 147 with old libraries starting midway through the installworld process. 148 14920200729: 150 r363679 has redefined some undefined behavior in regcomp(3); notably, 151 extraneous escapes of most ordinary characters will no longer be 152 accepted. An exp-run has identified all of the problems with this in 153 ports, but other non-ports software may need extra escapes removed to 154 continue to function. 155 156 Because of this change, installworld may encounter the following error 157 from rtld: Undefined symbol "regcomp@FBSD_1.6" -- It is imperative that 158 you do not halt installworld. Instead, let it run to completion (whether 159 successful or not) and run installworld once more. 160 16120200627: 162 A new implementation of bc and dc has been imported in r362681. This 163 implementation corrects non-conformant behavior of the previous bc 164 and adds GNU bc compatible options. It offers a number of extensions, 165 is much faster on large values, and has support for message catalogs 166 (a number of languages are already supported, contributions of further 167 languages welcome). The option WITHOUT_GH_BC can be used to build the 168 world with the previous versions of bc and dc. 169 17020200625: 171 r362639 changed the internal API used between the NFS kernel modules. 172 As such, they all need to be rebuilt from sources. 173 17420200613: 175 r362158 changed the arguments for VFS_CHECKEXP(). As such, any 176 out of tree file systems need to be modified and rebuilt. 177 Also, any file systems that are modules must be rebuilt. 178 17920200604: 180 read(2) of a directory fd is now rejected by default. root may 181 re-enable it for system root only on non-ZFS filesystems with the 182 security.bsd.allow_read_dir sysctl(8) MIB if 183 security.bsd.suser_enabled=1. 184 185 It may be advised to setup aliases for grep to default to `-d skip` if 186 commonly non-recursively grepping a list that includes directories and 187 the potential for the resulting stderr output is not tolerable. Example 188 aliases are now installed, commented out, in /root/.cshrc and 189 /root/.shrc. 190 19120200523: 192 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 193 been upgraded to 10.0.1. Please see the 20141231 entry below for 194 information about prerequisites and upgrading, if you are not already 195 using clang 3.5.0 or higher. 196 19720200512: 198 Support for obsolete compilers has been removed from the build system. 199 Clang 6 and GCC 6.4 are the minimum supported versions. 200 20120200424: 202 closefrom(2) has been moved under COMPAT12, and replaced in libc with a 203 stub that calls close_range(2). If using a custom kernel configuration, 204 you may want to ensure that the COMPAT_FREEBSD12 option is included, as 205 a slightly older -CURRENT userland and older FreeBSD userlands may not 206 be functional without closefrom(2). 207 20820200414: 209 Upstream DTS from Linux 5.6 was merged and they now have the SID 210 and THS (Secure ID controller and THermal Sensor) node present. 211 The DTB overlays have now been removed from the tree for the H3/H5 and 212 A64 SoCs and the aw_sid and aw_thermal driver have been updated to 213 deal with upstream DTS. If you are using those overlays you need to 214 remove them from loader.conf and update the DTBs on the FAT partition. 215 21620200310: 217 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 218 been upgraded to 10.0.0. Please see the 20141231 entry below for 219 information about prerequisites and upgrading, if you are not already 220 using clang 3.5.0 or higher. 221 22220200309: 223 The amd(8) automount daemon has been removed from the source tree. 224 As of FreeBSD 10.1 autofs(5) is the preferred tool for automounting. 225 amd is still available in the sysutils/am-utils port. 226 22720200301: 228 Removed brooktree driver (bktr.4) from the tree. 229 23020200229: 231 The WITH_GPL_DTC option has been removed. The BSD-licenced device tree 232 compiler in usr.bin/dtc is used on all architectures which use dtc, and 233 the GPL dtc is available (if needed) from the sysutils/dtc port. 234 23520200229: 236 The WITHOUT_LLVM_LIBUNWIND option has been removed. LLVM's libunwind 237 is used by all supported CPU architectures. 238 23920200229: 240 GCC 4.2.1 has been removed from the tree. The WITH_GCC, 241 WITH_GCC_BOOTSTRAP, and WITH_GNUCXX options are no longer available. 242 Users who wish to build FreeBSD with GCC must use the external toolchain 243 ports or packages. 244 24520200220: 246 ncurses has been updated to a newer version (6.2-20200215). Given the ABI 247 has changed, users will have to rebuild all the ports that are linked to 248 ncurses. 249 25020200217: 251 The size of struct vnet and the magic cookie have changed. 252 Users need to recompile libkvm and all modules using VIMAGE 253 together with their new kernel. 254 25520200212: 256 Defining the long deprecated NO_CTF, NO_DEBUG_FILES, NO_INSTALLLIB, 257 NO_MAN, NO_PROFILE, and NO_WARNS variables is now an error. Update 258 your Makefiles and scripts to define MK_<var>=no instead as required. 259 260 One exception to this is that program or library Makefiles should 261 define MAN to empty rather than setting MK_MAN=no. 262 26320200108: 264 Clang/LLVM is now the default compiler and LLD the default 265 linker for riscv64. 266 26720200107: 268 make universe no longer uses GCC 4.2.1 on any architectures. 269 Architectures not supported by in-tree Clang/LLVM require an 270 external toolchain package. 271 27220200104: 273 GCC 4.2.1 is now not built by default, as part of the GCC 4.2.1 274 retirement plan. Specifically, the GCC, GCC_BOOTSTRAP, and GNUCXX 275 options default to off for all supported CPU architectures. As a 276 short-term transition aid they may be enabled via WITH_* options. 277 GCC 4.2.1 is expected to be removed from the tree on 2020-03-31. 278 27920200102: 280 Support for armv5 has been disconnected and is being removed. The 281 machine combination MACHINE=arm MACHINE_ARCH=arm is no longer valid. 282 You must now use a MACHINE_ARCH of armv6 or armv7. The default 283 MACHINE_ARCH for MACHINE=arm is now armv7. 284 28520191226: 286 Clang/LLVM is now the default compiler for all powerpc architectures. 287 LLD is now the default linker for powerpc64. The change for powerpc64 288 also includes a change to the ELFv2 ABI, incompatible with the existing 289 ABI. 290 29120191226: 292 Kernel-loadable random(4) modules are no longer unloadable. 293 29420191222: 295 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 296 been upgraded to 9.0.1. Please see the 20141231 entry below for 297 information about prerequisites and upgrading, if you are not already 298 using clang 3.5.0 or higher. 299 30020191212: 301 r355677 has modified the internal interface used between the 302 NFS modules in the kernel. As such, they must all be upgraded 303 simultaneously. I will do a version bump for this. 304 30520191205: 306 The root certificates of the Mozilla CA Certificate Store have been 307 imported into the base system and can be managed with the certctl(8) 308 utility. If you have installed the security/ca_root_nss port or package 309 with the ETCSYMLINK option (the default), be advised that there may be 310 differences between those included in the port and those included in 311 base due to differences in nss branch used as well as general update 312 frequency. Note also that certctl(8) cannot manage certs in the 313 format used by the security/ca_root_nss port. 314 31520191120: 316 The amd(8) automount daemon has been disabled by default, and will be 317 removed in the future. As of FreeBSD 10.1 the autofs(5) is available 318 for automounting. 319 32020191107: 321 The nctgpio and wbwd drivers have been moved to the superio bus. 322 If you have one of these drivers in a kernel configuration, then 323 you should add device superio to it. If you use one of these drivers 324 as a module and you compile a custom set of modules, then you should 325 add superio to the set. 326 32720191021: 328 KPIs for network drivers to access interface addresses have changed. 329 Users need to recompile NIC driver modules together with kernel. 330 33120191021: 332 The net.link.tap.user_open sysctl no longer prevents user opening of 333 already created /dev/tapNN devices. Access is still controlled by 334 node permissions, just like tun devices. The net.link.tap.user_open 335 sysctl is now used only to allow users to perform devfs cloning of 336 tap devices, and the subsequent open may not succeed if the user is not 337 in the appropriate group. This sysctl may be deprecated/removed 338 completely in the future. 339 34020191009: 341 mips, powerpc, and sparc64 are no longer built as part of 342 universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If 343 not defined, mips, powerpc, and sparc64 builds will look for 344 the xtoolchain binaries and if installed use them for universe 345 builds. As llvm 9.0 becomes vetted for these architectures, they 346 will be removed from the list. 347 34820191009: 349 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 350 been upgraded to 9.0.0. Please see the 20141231 entry below for 351 information about prerequisites and upgrading, if you are not already 352 using clang 3.5.0 or higher. 353 35420191003: 355 The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from 356 GENERIC. They are available as modules and can be loaded by adding 357 to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES", 358 hptnr_load="YES", or hptrr_load="YES", respectively. 359 36020190913: 361 ntpd no longer by default locks its pages in memory, allowing them 362 to be paged out by the kernel. Use rlimit memlock to restore 363 historic BSD behaviour. For example, add "rlimit memlock 32" 364 to ntp.conf to lock up to 32 MB of ntpd address space in memory. 365 36620190823: 367 Several of ping6's options have been renamed for better consistency 368 with ping. If you use any of -ARWXaghmrtwx, you must update your 369 scripts. See ping6(8) for details. 370 37120190727: 372 The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls 373 and the "-o sync_unmount" and "-o init_backgrounded" mount options have 374 been removed from mount_fusefs(8). You can safely remove them from 375 your scripts, because they had no effect. 376 377 The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize, 378 vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable, 379 vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate 380 sysctls have been removed. If you felt the need to set any of them to 381 a non-default value, please tell [email protected] why. 382 38320190713: 384 Default permissions on the /var/account/acct file (and copies of it 385 rotated by periodic daily scripts) are changed from 0644 to 0640 386 because the file contains sensitive information that should not be 387 world-readable. If the /var/account directory must be created by 388 rc.d/accounting, the mode used is now 0750. Admins who use the 389 accounting feature are encouraged to change the mode of an existing 390 /var/account directory to 0750 or 0700. 391 39220190620: 393 Entropy collection and the /dev/random device are no longer optional 394 components. The "device random" option has been removed. 395 Implementations of distilling algorithms can still be made loadable 396 with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko). 397 39820190612: 399 Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have 400 been upgraded to 8.0.1. Please see the 20141231 entry below for 401 information about prerequisites and upgrading, if you are not already 402 using clang 3.5.0 or higher. 403 40420190608: 405 A fix was applied to i386 kernel modules to avoid panics with 406 dpcpu or vnet. Users need to recompile i386 kernel modules 407 having pcpu or vnet sections or they will refuse to load. 408 40920190513: 410 User-wired pages now have their own counter, 411 vm.stats.vm.v_user_wire_count. The vm.max_wired sysctl was renamed 412 to vm.max_user_wired and changed from an unsigned int to an unsigned 413 long. bhyve VMs wired with the -S are now subject to the user 414 wiring limit; the vm.max_user_wired sysctl may need to be tuned to 415 avoid running into the limit. 416 41720190507: 418 The IPSEC option has been removed from GENERIC. Users requiring 419 ipsec(4) must now load the ipsec(4) kernel module. 420 42120190507: 422 The tap(4) driver has been folded into tun(4), and the module has been 423 renamed to tuntap. You should update any kld_list="if_tap" or 424 kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or 425 if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap 426 module instead, and "device tap" or "device tun" entries in kernel 427 config files to select the tuntap device instead. 428 42920190418: 430 The following knobs have been added related to tradeoffs between 431 safe use of the random device and availability in the absence of 432 entropy: 433 434 kern.random.initial_seeding.bypass_before_seeding: tunable; set 435 non-zero to bypass the random device prior to seeding, or zero to 436 block random requests until the random device is initially seeded. 437 For now, set to 1 (unsafe) by default to restore pre-r346250 boot 438 availability properties. 439 440 kern.random.initial_seeding.read_random_bypassed_before_seeding: 441 read-only diagnostic sysctl that is set when bypass is enabled and 442 read_random(9) is bypassed, to enable programmatic handling of this 443 initial condition, if desired. 444 445 kern.random.initial_seeding.arc4random_bypassed_before_seeding: 446 Similar to the above, but for for arc4random(9) initial seeding. 447 448 kern.random.initial_seeding.disable_bypass_warnings: tunable; set 449 non-zero to disable warnings in dmesg when the same conditions are 450 met as for the diagnostic sysctls above. Defaults to zero, i.e., 451 produce warnings in dmesg when the conditions are met. 452 45320190416: 454 The loadable random module KPI has changed; the random_infra_init() 455 routine now requires a 3rd function pointer for a bool (*)(void) 456 method that returns true if the random device is seeded (and 457 therefore unblocked). 458 45920190404: 460 r345895 reverts r320698. This implies that an nfsuserd(8) daemon 461 built from head sources between r320757 (July 6, 2017) and 462 r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" 463 is added to the command line. 464 nfsuserd daemons built from head sources that are post-r338192 are 465 not affected and should continue to work. 466 46720190320: 468 The fuse(4) module has been renamed to fusefs(4) for consistency with 469 other filesystems. You should update any kld_load="fuse" entries in 470 /etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and 471 "options FUSE" entries in kernel config files. 472 47320190304: 474 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 475 8.0.0. Please see the 20141231 entry below for information about 476 prerequisites and upgrading, if you are not already using clang 3.5.0 477 or higher. 478 47920190226: 480 geom_uzip(4) depends on the new module xz. If geom_uzip is statically 481 compiled into your custom kernel, add 'device xz' statement to the 482 kernel config. 483 48420190219: 485 drm and drm2 have been removed from the tree. Please see 486 https://wiki.freebsd.org/Graphics for the latest information on 487 migrating to the drm ports. 488 48920190131: 490 Iflib is no longer unconditionally compiled into the kernel. Drivers 491 using iflib and statically compiled into the kernel, now require 492 the 'device iflib' config option. For the same drivers loaded as 493 modules on kernels not having 'device iflib', the iflib.ko module 494 is loaded automatically. 495 49620190125: 497 The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration 498 options no longer exist since r343219 and r343427 respectively; 499 nothing uses them, so they should be just removed from custom 500 kernel config files. 501 50220181230: 503 r342635 changes the way efibootmgr(8) works by requiring users to add 504 the -b (bootnum) parameter for commands where the bootnum was previously 505 specified with each option. For example 'efibootmgr -B 0001' is now 506 'efibootmgr -B -b 0001'. 507 50820181220: 509 r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport 510 in the same as it is applied to NFSv2 and 3. This implies that NFSv4 511 servers that have vfs.nfsd.nfs_privport set will only allow mounts 512 from clients using a reserved port#. Since both the FreeBSD and Linux 513 NFSv4 clients use reserved port#s by default, this should not affect 514 most NFSv4 mounts. 515 51620181219: 517 The XLP config has been removed. We can't support 64-bit atomics in this 518 kernel because it is running in 32-bit mode. XLP users must transition 519 to running a 64-bit kernel (XLP64 or XLPN32). 520 521 The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is 522 the preferred emulator today and we don't need two different ones. 523 524 The old sibyte / swarm / Broadcom BCM1250 support has been 525 removed from the mips port. 526 52720181211: 528 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 529 7.0.1. Please see the 20141231 entry below for information about 530 prerequisites and upgrading, if you are not already using clang 3.5.0 531 or higher. 532 53320181211: 534 Remove the timed and netdate programs from the base tree. Setting 535 the time with these daemons has been obsolete for over a decade. 536 53720181126: 538 On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld 539 linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as 540 it produces broken binaries when ifuncs are in use. Users needing 541 GNU ld should install the binutils port or package. 542 54320181123: 544 The BSD crtbegin and crtend code has been enabled by default. It has 545 had extensive testing on amd64, arm64, and i386. It can be disabled 546 by building a world with -DWITHOUT_BSD_CRTBEGIN. 547 54820181115: 549 The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue) 550 has been converted to a port (misc/ctm) and will be removed from 551 FreeBSD-13. It is available as a package (ctm) for all supported 552 FreeBSD versions. 553 55420181110: 555 The default newsyslog.conf(5) file has been changed to only include 556 files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if 557 the filenames end in '.conf' and do not begin with a '.'. 558 559 You should check the configuration files in these two directories match 560 this naming convention. You can verify which configuration files are 561 being included using the command: 562 $ newsyslog -Nrv 563 56420181015: 565 Ports for the DRM modules have been simplified. Now, amd64 users should 566 just install the drm-kmod port. All others should install 567 drm-legacy-kmod. 568 569 Graphics hardware that's newer than about 2010 usually works with 570 drm-kmod. For hardware older than 2013, however, some users will need 571 to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older 572 than 2008 usually only works in drm-legacy-kmod. The graphics team can 573 only commit to hardware made since 2013 due to the complexity of the 574 market and difficulty to test all the older cards effectively. If you 575 have hardware supported by drm-kmod, you are strongly encouraged to use 576 that as you will get better support. 577 578 Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined 579 elsewhere, the drm and drm2 modules will be eliminated from the src base 580 soon (with a limited exception for arm). Please update to the package 581 asap and report any issues to [email protected]. 582 583 Generally, anybody using the drm*-kmod packages should add 584 WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty 585 cross-threading surprises, especially with automatic driver 586 loading from X11 startup. These will become the defaults in 13-current 587 shortly. 588 58920181012: 590 The ixlv(4) driver has been renamed to iavf(4). As a consequence, 591 custom kernel and module loading configuration files must be updated 592 accordingly. Moreover, interfaces previous presented as ixlvN to the 593 system are now exposed as iavfN and network configuration files must 594 be adjusted as necessary. 595 59620181009: 597 OpenSSL has been updated to version 1.1.1. This update included 598 additional various API changes throughout the base system. It is 599 important to rebuild third-party software after upgrading. The value 600 of __FreeBSD_version has been bumped accordingly. 601 60220181006: 603 The legacy DRM modules and drivers have now been added to the loader's 604 module blacklist, in favor of loading them with kld_list in rc.conf(5). 605 The module blacklist may be overridden with the loader.conf(5) 606 'module_blacklist' variable, but loading them via rc.conf(5) is strongly 607 encouraged. 608 60920181002: 610 The cam(4) based nda(4) driver will be used over nvd(4) by default on 611 powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or 612 loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing 613 driver. Make sure to edit /boot/etc/kboot.conf and fstab to use the 614 nda device name. 615 61620180913: 617 Reproducible build mode is now on by default, in preparation for 618 FreeBSD 12.0. This eliminates build metadata such as the user, 619 host, and time from the kernel (and uname), unless the working tree 620 corresponds to a modified checkout from a version control system. 621 The previous behavior can be obtained by setting the /etc/src.conf 622 knob WITHOUT_REPRODUCIBLE_BUILD. 623 62420180826: 625 The Yarrow CSPRNG has been removed from the kernel as it has not been 626 supported by its designers since at least 2003. Fortuna has been the 627 default since FreeBSD-11. 628 62920180822: 630 devctl freeze/thaw have gone into the tree, the rc scripts have been 631 updated to use them and devmatch has been changed. You should update 632 kernel, userland and rc scripts all at the same time. 633 63420180818: 635 The default interpreter has been switched from 4th to Lua. 636 LOADER_DEFAULT_INTERP, documented in build(7), will override the default 637 interpreter. If you have custom FORTH code you will need to set 638 LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in 639 src.conf for the build. This will create default hard links between 640 loader and loader_4th instead of loader and loader_lua, the new default. 641 If you are using UEFI it will create the proper hard link to loader.efi. 642 643 bhyve uses userboot.so. It remains 4th-only until some issues are solved 644 regarding coexisting with multiple versions of FreeBSD are resolved. 645 64620180815: 647 ls(1) now respects the COLORTERM environment variable used in other 648 systems and software to indicate that a colored terminal is both 649 supported and desired. If ls(1) is suddenly emitting colors, they may 650 be disabled again by either removing the unwanted COLORTERM from your 651 environment, or using `ls --color=never`. The ls(1) specific CLICOLOR 652 may not be observed in a future release. 653 65420180808: 655 The default pager for most commands has been changed to "less". To 656 restore the old behavior, set PAGER="more" and MANPAGER="more -s" in 657 your environment. 658 65920180731: 660 The jedec_ts(4) driver has been removed. A superset of its functionality 661 is available in the jedec_dimm(4) driver, and the manpage for that 662 driver includes migration instructions. If you have "device jedec_ts" 663 in your kernel configuration file, it must be removed. 664 66520180730: 666 amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default. 667 This should have no effect if the kernel is booted via BIOS/legacy boot. 668 EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system 669 has a buggy firmware that prevents a successful boot due to use of 670 runtime services. 671 67220180727: 673 Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale 674 support has been removed from the tree. These ports were 675 obsolete and/or known to be broken for many years. 676 67720180723: 678 loader.efi has been augmented to participate more fully in the 679 UEFI boot manager protocol. loader.efi will now look at the 680 BootXXXX environment variable to determine if a specific kernel 681 or root partition was specified. XXXX is derived from BootCurrent. 682 efibootmgr(8) manages these standard UEFI variables. 683 68420180720: 685 zfsloader's functionality has now been folded into loader. 686 zfsloader is no longer necessary once you've updated your 687 boot blocks. For a transition period, we will install a 688 hardlink for zfsloader to loader to allow a smooth transition 689 until the boot blocks can be updated (hard link because old 690 zfs boot blocks don't understand symlinks). 691 69220180719: 693 ARM64 now have efifb support, if you want to have serial console 694 on your arm64 board when an screen is connected and the bootloader 695 setup a frame buffer for us to use, just add : 696 boot_serial=YES 697 boot_multicons=YES 698 in /boot/loader.conf 699 For Raspberry Pi 3 (RPI) users, this is needed even if you don't have 700 an screen connected as the firmware will setup a frame buffer are that 701 u-boot will expose as an EFI frame buffer. 702 70320180719: 704 New uid:gid added, ntpd:ntpd (123:123). Be sure to run mergemaster 705 or take steps to update /etc/passwd before doing installworld on 706 existing systems. Do not skip the "mergemaster -Fp" step before 707 installworld, as described in the update procedures near the bottom 708 of this document. Also, rc.d/ntpd now starts ntpd(8) as user ntpd 709 if the new mac_ntpd(4) policy is available, unless ntpd_flags or 710 the ntp config file contain options that change file/dir locations. 711 When such options (e.g., "statsdir" or "crypto") are used, ntpd can 712 still be run as non-root by setting ntpd_user=ntpd in rc.conf, after 713 taking steps to ensure that all required files/dirs are accessible 714 by the ntpd user. 715 71620180717: 717 Big endian arm support has been removed. 718 71920180711: 720 The static environment setup in kernel configs is no longer mutually 721 exclusive with the loader(8) environment by default. In order to 722 restore the previous default behavior of disabling the loader(8) 723 environment if a static environment is present, you must specify 724 loader_env.disabled=1 in the static environment. 725 72620180705: 727 The ABI of syscalls used by management tools like sockstat and 728 netstat has been broken to allow 32-bit binaries to work on 729 64-bit kernels without modification. These programs will need 730 to match the kernel in order to function. External programs may 731 require minor modifications to accommodate a change of type in 732 structures from pointers to 64-bit virtual addresses. 733 73420180702: 735 On i386 and amd64 atomics are now inlined. Out of tree modules using 736 atomics will need to be rebuilt. 737 73820180701: 739 The '%I' format in the kern.corefile sysctl limits the number of 740 core files that a process can generate to the number stored in the 741 debug.ncores sysctl. The '%I' format is replaced by the single digit 742 index. Previously, if all indexes were taken the kernel would overwrite 743 only a core file with the highest index in a filename. 744 Currently the system will create a new core file if there is a free 745 index or if all slots are taken it will overwrite the oldest one. 746 74720180630: 748 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 749 6.0.1. Please see the 20141231 entry below for information about 750 prerequisites and upgrading, if you are not already using clang 3.5.0 751 or higher. 752 75320180628: 754 r335753 introduced a new quoting method. However, etc/devd/devmatch.conf 755 needed to be changed to work with it. This change was made with r335763 756 and requires a mergemaster / etcupdate / etc to update the installed 757 file. 758 75920180612: 760 r334930 changed the interface between the NFS modules, so they all 761 need to be rebuilt. r335018 did a __FreeBSD_version bump for this. 762 76320180530: 764 As of r334391 lld is the default amd64 system linker; it is installed 765 as /usr/bin/ld. Kernel build workarounds (see 20180510 entry) are no 766 longer necessary. 767 76820180530: 769 The kernel / userland interface for devinfo changed, so you'll 770 need a new kernel and userland as a pair for it to work (rebuilding 771 lib/libdevinfo is all that's required). devinfo and devmatch will 772 not work, but everything else will when there's a mismatch. 773 77420180523: 775 The on-disk format for hwpmc callchain records has changed to include 776 threadid corresponding to a given record. This changes the field offsets 777 and thus requires that libpmcstat be rebuilt before using a kernel 778 later than r334108. 779 78020180517: 781 The vxge(4) driver has been removed. This driver was introduced into 782 HEAD one week before the Exar left the Ethernet market and is not 783 known to be used. If you have device vxge in your kernel config file 784 it must be removed. 785 78620180510: 787 The amd64 kernel now requires a ld that supports ifunc to produce a 788 working kernel, either lld or a newer binutils. lld is built by default 789 on amd64, and the 'buildkernel' target uses it automatically. However, 790 it is not the default linker, so building the kernel the traditional 791 way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for 792 binutils port/package). lld will soon be default, and this requirement 793 will go away. 794 795 NOTE: As of r334391 lld is the default system linker on amd64, and no 796 workaround is necessary. 797 79820180508: 799 The nxge(4) driver has been removed. This driver was for PCI-X 10g 800 cards made by s2io/Neterion. The company was acquired by Exar and 801 no longer sells or supports Ethernet products. If you have device 802 nxge in your kernel config file it must be removed. 803 80420180504: 805 The tz database (tzdb) has been updated to 2018e. This version more 806 correctly models time stamps in time zones with negative DST such as 807 Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and 808 Africa/Windhoek (1994/2017). This does not affect the UT offsets, only 809 time zone abbreviations and the tm_isdst flag. 810 81120180502: 812 The ixgb(4) driver has been removed. This driver was for an early and 813 uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel 814 quickly shifted to the long lived ixgbe family. If you have device 815 ixgb in your kernel config file it must be removed. 816 81720180501: 818 The lmc(4) driver has been removed. This was a WAN interface 819 card that was already reportedly rare in 2003, and had an ambiguous 820 license. If you have device lmc in your kernel config file it must 821 be removed. 822 82320180413: 824 Support for Arcnet networks has been removed. If you have device 825 arcnet or device cm in your kernel config file they must be 826 removed. 827 82820180411: 829 Support for FDDI networks has been removed. If you have device 830 fddi or device fpa in your kernel config file they must be 831 removed. 832 83320180406: 834 In addition to supporting RFC 3164 formatted messages, the 835 syslogd(8) service is now capable of parsing RFC 5424 formatted 836 log messages. The main benefit of using RFC 5424 is that clients 837 may now send log messages with timestamps containing year numbers, 838 microseconds and time zone offsets. 839 840 Similarly, the syslog(3) C library function has been altered to 841 send RFC 5424 formatted messages to the local system logging 842 daemon. On systems using syslogd(8), this change should have no 843 negative impact, as long as syslogd(8) and the C library are 844 updated at the same time. On systems using a different system 845 logging daemon, it may be necessary to make configuration 846 adjustments, depending on the software used. 847 848 When using syslog-ng, add the 'syslog-protocol' flag to local 849 input sources to enable parsing of RFC 5424 formatted messages: 850 851 source src { 852 unix-dgram("/var/run/log" flags(syslog-protocol)); 853 } 854 855 When using rsyslog, disable the 'SysSock.UseSpecialParser' option 856 of the 'imuxsock' module to let messages be processed by the 857 regular RFC 3164/5424 parsing pipeline: 858 859 module(load="imuxsock" SysSock.UseSpecialParser="off") 860 861 Do note that these changes only affect communication between local 862 applications and syslogd(8). The format that syslogd(8) uses to 863 store messages on disk or forward messages to other systems 864 remains unchanged. syslogd(8) still uses RFC 3164 for these 865 purposes. Options to customize this behaviour will be added in the 866 future. Utilities that process log files stored in /var/log are 867 thus expected to continue to function as before. 868 869 __FreeBSD_version has been incremented to 1200061 to denote this 870 change. 871 87220180328: 873 Support for token ring networks has been removed. If you 874 have "device token" in your kernel config you should remove 875 it. No device drivers supported token ring. 876 87720180323: 878 makefs was modified to be able to tag ISO9660 El Torito boot catalog 879 entries as EFI instead of overloading the i386 tag as done previously. 880 The amd64 mkisoimages.sh script used to build amd64 ISO images for 881 release was updated to use this. This may mean that makefs must be 882 updated before "make cdrom" can be run in the release directory. This 883 should be as simple as: 884 885 $ cd $SRCDIR/usr.sbin/makefs 886 $ make depend all install 887 88820180212: 889 FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for 890 now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf. 891 Co-existence for the transition period will come shortly. Booting is a 892 complex environment and test coverage for Lua-enabled loaders has been 893 thin, so it would be prudent to assume it might not work and make 894 provisions for backup boot methods. 895 89620180211: 897 devmatch functionality has been turned on in devd. It will automatically 898 load drivers for unattached devices. This may cause unexpected drivers 899 to be loaded. Please report any problems to current@ and 900 [email protected]. 901 90220180114: 903 Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to 904 6.0.0. Please see the 20141231 entry below for information about 905 prerequisites and upgrading, if you are not already using clang 3.5.0 906 or higher. 907 90820180110: 909 LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker. 910 This means it is used to link the kernel and userland libraries and 911 executables, but is not yet installed as /usr/bin/ld by default. 912 913 To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set 914 WITHOUT_LLD_BOOTSTRAP=yes 915 91620180110: 917 On i386, pmtimer has been removed. Its functionality has been folded 918 into apm. It was a no-op on ACPI in current for a while now (but was 919 still needed on i386 in FreeBSD 11 and earlier). Users may need to 920 remove it from kernel config files. 921 92220180104: 923 The use of RSS hash from the network card aka flowid has been 924 disabled by default for lagg(4) as it's currently incompatible with 925 the lacp and loadbalance protocols. 926 927 This can be re-enabled by setting the following in loader.conf: 928 net.link.lagg.default_use_flowid="1" 929 93020180102: 931 The SW_WATCHDOG option is no longer necessary to enable the 932 hardclock-based software watchdog if no hardware watchdog is 933 configured. As before, SW_WATCHDOG will cause the software 934 watchdog to be enabled even if a hardware watchdog is configured. 935 93620171215: 937 r326887 fixes the issue described in the 20171214 UPDATING entry. 938 r326888 flips the switch back to building GELI support always. 939 94020171214: 941 r362593 broke ZFS + GELI support for reasons unknown. However, 942 it also broke ZFS support generally, so GELI has been turned off 943 by default as the lesser evil in r326857. If you boot off ZFS and/or 944 GELI, it might not be a good time to update. 945 94620171125: 947 PowerPC users must update loader(8) by rebuilding world before 948 installing a new kernel, as the protocol connecting them has 949 changed. Without the update, loader metadata will not be passed 950 successfully to the kernel and users will have to enter their 951 root partition at the kernel mountroot prompt to continue booting. 952 Newer versions of loader can boot old kernels without issue. 953 95420171110: 955 The LOADER_FIREWIRE_SUPPORT build variable as been renamed to 956 WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed 957 to WITH/OUT_LOADER_GELI. 958 95920171106: 960 The naive and non-compliant support of posix_fallocate(2) in ZFS 961 has been removed as of r325320. The system call now returns EINVAL 962 when used on a ZFS file. Although the new behavior complies with the 963 standard, some consumers are not prepared to cope with it. 964 One known victim is lld prior to r325420. 965 96620171102: 967 Building in a FreeBSD src checkout will automatically create object 968 directories now rather than store files in the current directory if 969 'make obj' was not ran. Calling 'make obj' is no longer necessary. 970 This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in 971 /etc/src-env.conf (not /etc/src.conf), or passing the option in the 972 environment. 973 97420171101: 975 The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native 976 builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified 977 /usr/obj/<srcdir>/<arch>. This behavior can be changed to the old 978 format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf, 979 the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building. 980 The UNIFIED_OBJDIR option is a transitional feature that will be 981 removed for 12.0 release; please migrate to the new format for any 982 tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather 983 than hardcoding paths. 984 98520171028: 986 The native-xtools target no longer installs the files by default to the 987 OBJDIR. Use the native-xtools-install target with a DESTDIR to install 988 to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin. 989 99020171021: 991 As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT 992 options are changing from controlling the build if defined / undefined 993 to controlling the build with explicit 'yes' or 'no' values. They will 994 shift to WITH/WITHOUT options to match other options in the system. 995 99620171010: 997 libstand has turned into a private library for sys/boot use only. 998 It is no longer supported as a public interface outside of sys/boot. 999 100020171005: 1001 The arm port has split armv6 into armv6 and armv7. armv7 is now 1002 a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system 1003 and are running a kernel from before r324363, you will need to add 1004 MACHINE_ARCH=armv7 to 'make buildworld' to do a native build. 1005 100620171003: 1007 When building multiple kernels using KERNCONF, non-existent KERNCONF 1008 files will produce an error and buildkernel will fail. Previously 1009 missing KERNCONF files silently failed giving no indication as to 1010 why, only to subsequently discover during installkernel that the 1011 desired kernel was never built in the first place. 1012 101320170912: 1014 The default serial number format for CTL LUNs has changed. This will 1015 affect users who use /dev/diskid/* device nodes, or whose FibreChannel 1016 or iSCSI clients care about their LUNs' serial numbers. Users who 1017 require serial number stability should hardcode serial numbers in 1018 /etc/ctl.conf . 1019 102020170912: 1021 For 32-bit arm compiled for hard-float support, soft-floating point 1022 binaries now always get their shared libraries from 1023 LD_SOFT_LIBRARY_PATH (in the past, this was only used if 1024 /usr/libsoft also existed). Only users with a hard-float ld.so, but 1025 soft-float everything else should be affected. 1026 102720170826: 1028 The geli password typed at boot is now hidden. To restore the previous 1029 behavior, see geli(8) for configuration options. 1030 103120170825: 1032 Move PMTUD blackhole counters to TCPSTATS and remove them from bare 1033 sysctl values. Minor nit, but requires a rebuild of both world/kernel 1034 to complete. 1035 103620170814: 1037 "make check" behavior (made in ^/head@r295380) has been changed to 1038 execute from a limited sandbox, as opposed to executing from 1039 ${TESTSDIR}. 1040 1041 Behavioral changes: 1042 - The "beforecheck" and "aftercheck" targets are now specified. 1043 - ${CHECKDIR} (added in commit noted above) has been removed. 1044 - Legacy behavior can be enabled by setting 1045 WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. 1046 1047 If the limited sandbox mode is enabled, "make check" will execute 1048 "make distribution", then install, execute the tests, and clean up the 1049 sandbox if successful. 1050 1051 The "make distribution" and "make install" targets are typically run as 1052 root to set appropriate permissions and ownership at installation time. 1053 The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the 1054 environment if executing "make check" with limited sandbox mode using 1055 an unprivileged user. 1056 105720170808: 1058 Since the switch to GPT disk labels, fsck for UFS/FFS has been 1059 unable to automatically find alternate superblocks. As of r322297, 1060 the information needed to find alternate superblocks has been 1061 moved to the end of the area reserved for the boot block. 1062 Filesystems created with a newfs of this vintage or later 1063 will create the recovery information. If you have a filesystem 1064 created prior to this change and wish to have a recovery block 1065 created for your filesystem, you can do so by running fsck in 1066 foreground mode (i.e., do not use the -p or -y options). As it 1067 starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS'' 1068 to which you should answer yes. 1069 107020170728: 1071 As of r321665, an NFSv4 server configuration that services 1072 Kerberos mounts or clients that do not support the uid/gid in 1073 owner/owner_group string capability, must explicitly enable 1074 the nfsuserd daemon by adding nfsuserd_enable="YES" to the 1075 machine's /etc/rc.conf file. 1076 107720170722: 1078 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0. 1079 Please see the 20141231 entry below for information about prerequisites 1080 and upgrading, if you are not already using clang 3.5.0 or higher. 1081 108220170701: 1083 WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the 1084 r-commands (rlogin, rsh, etc.) to be built with the base system. 1085 108620170625: 1087 The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is 1088 a very major ABI incompatible change, so users of FreeBSD/powerpc must 1089 be careful when performing source upgrades. It is best to run 1090 'make installworld' from an alternate root system, either a live 1091 CD/memory stick, or a temporary root partition. Additionally, all ports 1092 must be recompiled. powerpc64 is largely unaffected, except in the case 1093 of 32-bit compatibility. All 32-bit binaries will be affected. 1094 109520170623: 1096 Forward compatibility for the "ino64" project have been committed. This 1097 will allow most new binaries to run on older kernels in a limited 1098 fashion. This prevents many of the common foot-shooting actions in the 1099 upgrade as well as the limited ability to roll back the kernel across 1100 the ino64 upgrade. Complicated use cases may not work properly, though 1101 enough simpler ones work to allow recovery in most situations. 1102 110320170620: 1104 Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC 1105 if you require the GPL compiler. 1106 110720170618: 1108 The internal ABI used for communication between the NFS kernel modules 1109 was changed by r320085, so __FreeBSD_version was bumped to 1110 ensure all the NFS related modules are updated together. 1111 111220170617: 1113 The ABI of struct event was changed by extending the data 1114 member to 64bit and adding ext fields. For upgrade, same 1115 precautions as for the entry 20170523 "ino64" must be 1116 followed. 1117 111820170531: 1119 The GNU roff toolchain has been removed from base. To render manpages 1120 which are not supported by mandoc(1), man(1) can fallback on GNU roff 1121 from ports (and recommends to install it). 1122 To render roff(7) documents, consider using GNU roff from ports or the 1123 heirloom doctools roff toolchain from ports via pkg install groff or 1124 via pkg install heirloom-doctools. 1125 112620170524: 1127 The ath(4) and ath_hal(4) modules now build piecemeal to allow for 1128 smaller runtime footprint builds. This is useful for embedded systems 1129 which only require one chipset support. 1130 1131 If you load it as a module, make sure this is in /boot/loader.conf: 1132 1133 if_ath_load="YES" 1134 1135 This will load the HAL, all chip/RF backends and if_ath_pci. 1136 If you have if_ath_pci in /boot/loader.conf, ensure it is after 1137 if_ath or it will not load any HAL chipset support. 1138 1139 If you want to selectively load things (eg on ye cheape ARM/MIPS 1140 platforms where RAM is at a premium) you should: 1141 1142 * load ath_hal 1143 * load the chip modules in question 1144 * load ath_rate, ath_dfs 1145 * load ath_main 1146 * load if_ath_pci and/or if_ath_ahb depending upon your particular 1147 bus bind type - this is where probe/attach is done. 1148 1149 For further comments/feedback, poke adrian@ . 1150 115120170523: 1152 The "ino64" 64-bit inode project has been committed, which extends 1153 a number of types to 64 bits. Upgrading in place requires care and 1154 adherence to the documented upgrade procedure. 1155 1156 If using a custom kernel configuration ensure that the 1157 COMPAT_FREEBSD11 option is included (as during the upgrade the 1158 system will be running the ino64 kernel with the existing world). 1159 1160 For the safest in-place upgrade begin by removing previous build 1161 artifacts via "rm -rf /usr/obj/*". Then, carefully follow the full 1162 procedure documented below under the heading "To rebuild everything and 1163 install it on the current system." Specifically, a reboot is required 1164 after installing the new kernel before installing world. While an 1165 installworld normally works by accident from multiuser after rebooting 1166 the proper kernel, there are many cases where this will fail across this 1167 upgrade and installworld from single user is required. 1168 116920170424: 1170 The NATM framework including the en(4), fatm(4), hatm(4), and 1171 patm(4) devices has been removed. Consumers should plan a 1172 migration before the end-of-life date for FreeBSD 11. 1173 117420170420: 1175 GNU diff has been replaced by a BSD licensed diff. Some features of GNU 1176 diff has not been implemented, if those are needed a newer version of 1177 GNU diff is available via the diffutils package under the gdiff name. 1178 117920170413: 1180 As of r316810 for ipfilter, keep frags is no longer assumed when 1181 keep state is specified in a rule. r316810 aligns ipfilter with 1182 documentation in man pages separating keep frags from keep state. 1183 This allows keep state to be specified without forcing keep frags 1184 and allows keep frags to be specified independently of keep state. 1185 To maintain previous behaviour, also specify keep frags with 1186 keep state (as documented in ipf.conf.5). 1187 118820170407: 1189 arm64 builds now use the base system LLD 4.0.0 linker by default, 1190 instead of requiring that the aarch64-binutils port or package be 1191 installed. To continue using aarch64-binutils, set 1192 CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin . 1193 119420170405: 1195 The UDP optimization in entry 20160818 that added the sysctl 1196 net.inet.udp.require_l2_bcast has been reverted. L2 broadcast 1197 packets will no longer be treated as L3 broadcast packets. 1198 119920170331: 1200 Binds and sends to the loopback addresses, IPv6 and IPv4, will now 1201 use any explicitly assigned loopback address available in the jail 1202 instead of using the first assigned address of the jail. 1203 120420170329: 1205 The ctl.ko module no longer implements the iSCSI target frontend: 1206 cfiscsi.ko does instead. 1207 1208 If building cfiscsi.ko as a kernel module, the module can be loaded 1209 via one of the following methods: 1210 - `cfiscsi_load="YES"` in loader.conf(5). 1211 - Add `cfiscsi` to `$kld_list` in rc.conf(5). 1212 - ctladm(8)/ctld(8), when compiled with iSCSI support 1213 (`WITH_ISCSI=yes` in src.conf(5)) 1214 1215 Please see cfiscsi(4) for more details. 1216 121720170316: 1218 The mmcsd.ko module now additionally depends on geom_flashmap.ko. 1219 Also, mmc.ko and mmcsd.ko need to be a matching pair built from the 1220 same source (previously, the dependency of mmcsd.ko on mmc.ko was 1221 missing, but mmcsd.ko now will refuse to load if it is incompatible 1222 with mmc.ko). 1223 122420170315: 1225 The syntax of ipfw(8) named states was changed to avoid ambiguity. 1226 If you have used named states in the firewall rules, you need to modify 1227 them after installworld and before rebooting. Now named states must 1228 be prefixed with colon. 1229 123020170311: 1231 The old drm (sys/dev/drm/) drivers for i915 and radeon have been 1232 removed as the userland we provide cannot use them. The KMS version 1233 (sys/dev/drm2) supports the same hardware. 1234 123520170302: 1236 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0. 1237 Please see the 20141231 entry below for information about prerequisites 1238 and upgrading, if you are not already using clang 3.5.0 or higher. 1239 124020170221: 1241 The code that provides support for ZFS .zfs/ directory functionality 1242 has been reimplemented. It's not possible now to create a snapshot 1243 by mkdir under .zfs/snapshot/. That should be the only user visible 1244 change. 1245 124620170216: 1247 EISA bus support has been removed. The WITH_EISA option is no longer 1248 valid. 1249 125020170215: 1251 MCA bus support has been removed. 1252 125320170127: 1254 The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed 1255 WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC. 1256 125720170112: 1258 The EM_MULTIQUEUE kernel configuration option is deprecated now that 1259 the em(4) driver conforms to iflib specifications. 1260 126120170109: 1262 The igb(4), em(4) and lem(4) ethernet drivers are now implemented via 1263 IFLIB. If you have a custom kernel configuration that excludes em(4) 1264 but you use igb(4), you need to re-add em(4) to your custom 1265 configuration. 1266 126720161217: 1268 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1. 1269 Please see the 20141231 entry below for information about prerequisites 1270 and upgrading, if you are not already using clang 3.5.0 or higher. 1271 127220161124: 1273 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0. 1274 Please see the 20141231 entry below for information about prerequisites 1275 and upgrading, if you are not already using clang 3.5.0 or higher. 1276 127720161119: 1278 The layout of the pmap structure has changed for powerpc to put the pmap 1279 statistics at the front for all CPU variations. libkvm(3) and all tools 1280 that link against it need to be recompiled. 1281 128220161030: 1283 isl(4) and cyapa(4) drivers now require a new driver, 1284 chromebook_platform(4), to work properly on Chromebook-class hardware. 1285 On other types of hardware the drivers may need to be configured using 1286 device hints. Please see the corresponding manual pages for details. 1287 128820161017: 1289 The urtwn(4) driver was merged into rtwn(4) and now consists of 1290 rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific 1291 parts. 1292 Also, firmware for RTL8188CE was renamed due to possible name 1293 conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B)) 1294 129520161015: 1296 GNU rcs has been removed from base. It is available as packages: 1297 - rcs: Latest GPLv3 GNU rcs version. 1298 - rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was 1299 removed from base. 1300 130120161008: 1302 Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control 1303 modules now requires that the kernel configuration contain the 1304 TCP_HHOOK option. (This option is included in the GENERIC kernel.) 1305 130620161003: 1307 The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired. 1308 ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy. 1309 131020160924: 1311 Relocatable object files with the extension of .So have been renamed 1312 to use an extension of .pico instead. The purpose of this change is 1313 to avoid a name clash with shared libraries on case-insensitive file 1314 systems. On those file systems, foo.So is the same file as foo.so. 1315 131620160918: 1317 GNU rcs has been turned off by default. It can (temporarily) be built 1318 again by adding WITH_RCS knob in src.conf. 1319 Otherwise, GNU rcs is available from packages: 1320 - rcs: Latest GPLv3 GNU rcs version. 1321 - rcs57: Copy of the latest version of GNU rcs (GPLv2) from base. 1322 132320160918: 1324 The backup_uses_rcs functionality has been removed from rc.subr. 1325 132620160908: 1327 The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into 1328 two separate components, QUEUE_MACRO_DEBUG_TRACE and 1329 QUEUE_MACRO_DEBUG_TRASH. Define both for the original 1330 QUEUE_MACRO_DEBUG behavior. 1331 133220160824: 1333 r304787 changed some ioctl interfaces between the iSCSI userspace 1334 programs and the kernel. ctladm, ctld, iscsictl, and iscsid must be 1335 rebuilt to work with new kernels. __FreeBSD_version has been bumped 1336 to 1200005. 1337 133820160818: 1339 The UDP receive code has been updated to only treat incoming UDP 1340 packets that were addressed to an L2 broadcast address as L3 1341 broadcast packets. It is not expected that this will affect any 1342 standards-conforming UDP application. The new behaviour can be 1343 disabled by setting the sysctl net.inet.udp.require_l2_bcast to 1344 0. 1345 134620160818: 1347 Remove the openbsd_poll system call. 1348 __FreeBSD_version has been bumped because of this. 1349 135020160708: 1351 The stable/11 branch has been created from head@r302406. 1352 135320160622: 1354 The libc stub for the pipe(2) system call has been replaced with 1355 a wrapper that calls the pipe2(2) system call and the pipe(2) 1356 system call is now only implemented by the kernels that include 1357 "options COMPAT_FREEBSD10" in their config file (this is the 1358 default). Users should ensure that this option is enabled in 1359 their kernel or upgrade userspace to r302092 before upgrading their 1360 kernel. 1361 136220160527: 1363 CAM will now strip leading spaces from SCSI disks' serial numbers. 1364 This will affect users who create UFS filesystems on SCSI disks using 1365 those disk's diskid device nodes. For example, if /etc/fstab 1366 previously contained a line like 1367 "/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should 1368 change it to "/dev/diskid/DISK-ABCDEFG0123456". Users of geom 1369 transforms like gmirror may also be affected. ZFS users should 1370 generally be fine. 1371 137220160523: 1373 The bitstring(3) API has been updated with new functionality and 1374 improved performance. But it is binary-incompatible with the old API. 1375 Objects built with the new headers may not be linked against objects 1376 built with the old headers. 1377 137820160520: 1379 The brk and sbrk functions have been removed from libc on arm64. 1380 Binutils from ports has been updated to not link to these 1381 functions and should be updated to the latest version before 1382 installing a new libc. 1383 138420160517: 1385 The armv6 port now defaults to hard float ABI. Limited support 1386 for running both hardfloat and soft float on the same system 1387 is available using the libraries installed with -DWITH_LIBSOFT. 1388 This has only been tested as an upgrade path for installworld 1389 and packages may fail or need manual intervention to run. New 1390 packages will be needed. 1391 1392 To update an existing self-hosted armv6hf system, you must add 1393 TARGET_ARCH=armv6 on the make command line for both the build 1394 and the install steps. 1395 139620160510: 1397 Kernel modules compiled outside of a kernel build now default to 1398 installing to /boot/modules instead of /boot/kernel. Many kernel 1399 modules built this way (such as those in ports) already overrode 1400 KMODDIR explicitly to install into /boot/modules. However, 1401 manually building and installing a module from /sys/modules will 1402 now install to /boot/modules instead of /boot/kernel. 1403 140420160414: 1405 The CAM I/O scheduler has been committed to the kernel. There should be 1406 no user visible impact. This does enable NCQ Trim on ada SSDs. While the 1407 list of known rogues that claim support for this but actually corrupt 1408 data is believed to be complete, be on the lookout for data 1409 corruption. The known rogue list is believed to be complete: 1410 1411 o Crucial MX100, M550 drives with MU01 firmware. 1412 o Micron M510 and M550 drives with MU01 firmware. 1413 o Micron M500 prior to MU07 firmware 1414 o Samsung 830, 840, and 850 all firmwares 1415 o FCCT M500 all firmwares 1416 1417 Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware 1418 with working NCQ TRIM. For Micron branded drives, see your sales rep for 1419 updated firmware. Black listed drives will work correctly because these 1420 drives work correctly so long as no NCQ TRIMs are sent to them. Given 1421 this list is the same as found in Linux, it's believed there are no 1422 other rogues in the market place. All other models from the above 1423 vendors work. 1424 1425 To be safe, if you are at all concerned, you can quirk each of your 1426 drives to prevent NCQ from being sent by setting: 1427 kern.cam.ada.X.quirks="0x2" 1428 in loader.conf. If the drive requires the 4k sector quirk, set the 1429 quirks entry to 0x3. 1430 143120160330: 1432 The FAST_DEPEND build option has been removed and its functionality is 1433 now the one true way. The old mkdep(1) style of 'make depend' has 1434 been removed. See 20160311 for further details. 1435 143620160317: 1437 Resource range types have grown from unsigned long to uintmax_t. All 1438 drivers, and anything using libdevinfo, need to be recompiled. 1439 144020160311: 1441 WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree 1442 builds. It no longer runs mkdep(1) during 'make depend', and the 1443 'make depend' stage can safely be skipped now as it is auto ran 1444 when building 'make all' and will generate all SRCS and DPSRCS before 1445 building anything else. Dependencies are gathered at compile time with 1446 -MF flags kept in separate .depend files per object file. Users should 1447 run 'make cleandepend' once if using -DNO_CLEAN to clean out older 1448 stale .depend files. 1449 145020160306: 1451 On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into 1452 kernel modules. Therefore, if you load any kernel modules at boot time, 1453 please install the boot loaders after you install the kernel, but before 1454 rebooting, e.g.: 1455 1456 make buildworld 1457 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1458 make installkernel KERNCONF=YOUR_KERNEL_HERE 1459 make -C sys/boot install 1460 <reboot in single user> 1461 1462 Then follow the usual steps, described in the General Notes section, 1463 below. 1464 146520160305: 1466 Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0. Please 1467 see the 20141231 entry below for information about prerequisites and 1468 upgrading, if you are not already using clang 3.5.0 or higher. 1469 147020160301: 1471 The AIO subsystem is now a standard part of the kernel. The 1472 VFS_AIO kernel option and aio.ko kernel module have been removed. 1473 Due to stability concerns, asynchronous I/O requests are only 1474 permitted on sockets and raw disks by default. To enable 1475 asynchronous I/O requests on all file types, set the 1476 vfs.aio.enable_unsafe sysctl to a non-zero value. 1477 147820160226: 1479 The ELF object manipulation tool objcopy is now provided by the 1480 ELF Tool Chain project rather than by GNU binutils. It should be a 1481 drop-in replacement, with the addition of arm64 support. The 1482 (temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set 1483 to obtain the GNU version if necessary. 1484 148520160129: 1486 Building ZFS pools on top of zvols is prohibited by default. That 1487 feature has never worked safely; it's always been prone to deadlocks. 1488 Using a zvol as the backing store for a VM guest's virtual disk will 1489 still work, even if the guest is using ZFS. Legacy behavior can be 1490 restored by setting vfs.zfs.vol.recursive=1. 1491 149220160119: 1493 The NONE and HPN patches has been removed from OpenSSH. They are 1494 still available in the security/openssh-portable port. 1495 149620160113: 1497 With the addition of ypldap(8), a new _ypldap user is now required 1498 during installworld. "mergemaster -p" can be used to add the user 1499 prior to installworld, as documented in the handbook. 1500 150120151216: 1502 The tftp loader (pxeboot) now uses the option root-path directive. As a 1503 consequence it no longer looks for a pxeboot.4th file on the tftp 1504 server. Instead it uses the regular /boot infrastructure as with the 1505 other loaders. 1506 150720151211: 1508 The code to start recording plug and play data into the modules has 1509 been committed. While the old tools will properly build a new kernel, 1510 a number of warnings about "unknown metadata record 4" will be produced 1511 for an older kldxref. To avoid such warnings, make sure to rebuild 1512 the kernel toolchain (or world). Make sure that you have r292078 or 1513 later when trying to build 292077 or later before rebuilding. 1514 151520151207: 1516 Debug data files are now built by default with 'make buildworld' and 1517 installed with 'make installworld'. This facilitates debugging but 1518 requires more disk space both during the build and for the installed 1519 world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes 1520 in src.conf(5). 1521 152220151130: 1523 r291527 changed the internal interface between the nfsd.ko and 1524 nfscommon.ko modules. As such, they must both be upgraded to-gether. 1525 __FreeBSD_version has been bumped because of this. 1526 152720151108: 1528 Add support for unicode collation strings leads to a change of 1529 order of files listed by ls(1) for example. To get back to the old 1530 behaviour, set LC_COLLATE environment variable to "C". 1531 1532 Databases administrators will need to reindex their databases given 1533 collation results will be different. 1534 1535 Due to a bug in install(1) it is recommended to remove the ancient 1536 locales before running make installworld. 1537 1538 rm -rf /usr/share/locale/* 1539 154020151030: 1541 The OpenSSL has been upgraded to 1.0.2d. Any binaries requiring 1542 libcrypto.so.7 or libssl.so.7 must be recompiled. 1543 154420151020: 1545 Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0. 1546 Kernel modules isp_2400_multi and isp_2500_multi were removed and 1547 should be replaced with isp_2400 and isp_2500 modules respectively. 1548 154920151017: 1550 The build previously allowed using 'make -n' to not recurse into 1551 sub-directories while showing what commands would be executed, and 1552 'make -n -n' to recursively show commands. Now 'make -n' will recurse 1553 and 'make -N' will not. 1554 155520151012: 1556 If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster 1557 and etcupdate will now use this file. A custom sendmail.cf is now 1558 updated via this mechanism rather than via installworld. If you had 1559 excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may 1560 want to remove the exclusion or change it to "always install". 1561 /etc/mail/sendmail.cf is now managed the same way regardless of 1562 whether SENDMAIL_MC/SENDMAIL_CF is used. If you are not using 1563 SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior. 1564 156520151011: 1566 Compatibility shims for legacy ATA device names have been removed. 1567 It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases 1568 and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.* 1569 environment variables, /dev/ad* and /dev/ar* symbolic links. 1570 157120151006: 1572 Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0. 1573 Please see the 20141231 entry below for information about prerequisites 1574 and upgrading, if you are not already using clang 3.5.0 or higher. 1575 157620150924: 1577 Kernel debug files have been moved to /usr/lib/debug/boot/kernel/, 1578 and renamed from .symbols to .debug. This reduces the size requirements 1579 on the boot partition or file system and provides consistency with 1580 userland debug files. 1581 1582 When using the supported kernel installation method the 1583 /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old) 1584 as is done with /boot/kernel. 1585 1586 Developers wishing to maintain the historical behavior of installing 1587 debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5). 1588 158920150827: 1590 The wireless drivers had undergone changes that remove the 'parent 1591 interface' from the ifconfig -l output. The rc.d network scripts 1592 used to check presence of a parent interface in the list, so old 1593 scripts would fail to start wireless networking. Thus, etcupdate(3) 1594 or mergemaster(8) run is required after kernel update, to update your 1595 rc.d scripts in /etc. 1596 159720150827: 1598 pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl' 1599 These configurations are now automatically interpreted as 1600 'scrub fragment reassemble'. 1601 160220150817: 1603 Kernel-loadable modules for the random(4) device are back. To use 1604 them, the kernel must have 1605 1606 device random 1607 options RANDOM_LOADABLE 1608 1609 kldload(8) can then be used to load random_fortuna.ko 1610 or random_yarrow.ko. Please note that due to the indirect 1611 function calls that the loadable modules need to provide, 1612 the build-in variants will be slightly more efficient. 1613 1614 The random(4) kernel option RANDOM_DUMMY has been retired due to 1615 unpopularity. It was not all that useful anyway. 1616 161720150813: 1618 The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired. 1619 Control over building the ELF Tool Chain tools is now provided by 1620 the WITHOUT_TOOLCHAIN knob. 1621 162220150810: 1623 The polarity of Pulse Per Second (PPS) capture events with the 1624 uart(4) driver has been corrected. Prior to this change the PPS 1625 "assert" event corresponded to the trailing edge of a positive PPS 1626 pulse and the "clear" event was the leading edge of the next pulse. 1627 1628 As the width of a PPS pulse in a typical GPS receiver is on the 1629 order of 1 millisecond, most users will not notice any significant 1630 difference with this change. 1631 1632 Anyone who has compensated for the historical polarity reversal by 1633 configuring a negative offset equal to the pulse width will need to 1634 remove that workaround. 1635 163620150809: 1637 The default group assigned to /dev/dri entries has been changed 1638 from 'wheel' to 'video' with the id of '44'. If you want to have 1639 access to the dri devices please add yourself to the video group 1640 with: 1641 1642 # pw groupmod video -m $USER 1643 164420150806: 1645 The menu.rc and loader.rc files will now be replaced during 1646 upgrades. Please migrate local changes to menu.rc.local and 1647 loader.rc.local instead. 1648 164920150805: 1650 GNU Binutils versions of addr2line, c++filt, nm, readelf, size, 1651 strings and strip have been removed. The src.conf(5) knob 1652 WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools. 1653 165420150728: 1655 As ZFS requires more kernel stack pages than is the default on some 1656 architectures e.g. i386, it now warns if KSTACK_PAGES is less than 1657 ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing). 1658 1659 Please consider using 'options KSTACK_PAGES=X' where X is greater 1660 than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations. 1661 166220150706: 1663 sendmail has been updated to 8.15.2. Starting with FreeBSD 11.0 1664 and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by 1665 default, i.e., they will not contain "::". For example, instead 1666 of ::1, it will be 0:0:0:0:0:0:0:1. This permits a zero subnet 1667 to have a more specific match, such as different map entries for 1668 IPv6:0:0 vs IPv6:0. This change requires that configuration 1669 data (including maps, files, classes, custom ruleset, etc.) must 1670 use the same format, so make certain such configuration data is 1671 upgrading. As a very simple check search for patterns like 1672 'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'. To return to the old 1673 behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or 1674 the cf option UseCompressedIPv6Addresses. 1675 167620150630: 1677 The default kernel entropy-processing algorithm is now 1678 Fortuna, replacing Yarrow. 1679 1680 Assuming you have 'device random' in your kernel config 1681 file, the configurations allow a kernel option to override 1682 this default. You may choose *ONE* of: 1683 1684 options RANDOM_YARROW # Legacy /dev/random algorithm. 1685 options RANDOM_DUMMY # Blocking-only driver. 1686 1687 If you have neither, you get Fortuna. For most people, 1688 read no further, Fortuna will give a /dev/random that works 1689 like it always used to, and the difference will be irrelevant. 1690 1691 If you remove 'device random', you get *NO* kernel-processed 1692 entropy at all. This may be acceptable to folks building 1693 embedded systems, but has complications. Carry on reading, 1694 and it is assumed you know what you need. 1695 1696 *PLEASE* read random(4) and random(9) if you are in the 1697 habit of tweaking kernel configs, and/or if you are a member 1698 of the embedded community, wanting specific and not-usual 1699 behaviour from your security subsystems. 1700 1701 NOTE!! If you use RANDOM_DUMMY and/or have no 'device 1702 random', you will NOT have a functioning /dev/random, and 1703 many cryptographic features will not work, including SSH. 1704 You may also find strange behaviour from the random(3) set 1705 of library functions, in particular sranddev(3), srandomdev(3) 1706 and arc4random(3). The reason for this is that the KERN_ARND 1707 sysctl only returns entropy if it thinks it has some to 1708 share, and with RANDOM_DUMMY or no 'device random' this 1709 will never happen. 1710 171120150623: 1712 An additional fix for the issue described in the 20150614 sendmail 1713 entry below has been committed in revision 284717. 1714 171520150616: 1716 FreeBSD's old make (fmake) has been removed from the system. It is 1717 available as the devel/fmake port or via pkg install fmake. 1718 171920150615: 1720 The fix for the issue described in the 20150614 sendmail entry 1721 below has been committed in revision 284436. The work 1722 around described in that entry is no longer needed unless the 1723 default setting is overridden by a confDH_PARAMETERS configuration 1724 setting of '5' or pointing to a 512 bit DH parameter file. 1725 172620150614: 1727 ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from 1728 atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf 1729 and devel/kyua to version 0.20+ and adjust any calling code to work 1730 with Kyuafile and kyua. 1731 173220150614: 1733 The import of openssl to address the FreeBSD-SA-15:10.openssl 1734 security advisory includes a change which rejects handshakes 1735 with DH parameters below 768 bits. sendmail releases prior 1736 to 8.15.2 (not yet released), defaulted to a 512 bit 1737 DH parameter setting for client connections. To work around 1738 this interoperability, sendmail can be configured to use a 1739 2048 bit DH parameter by: 1740 1741 1. Edit /etc/mail/`hostname`.mc 1742 2. If a setting for confDH_PARAMETERS does not exist or 1743 exists and is set to a string beginning with '5', 1744 replace it with '2'. 1745 3. If a setting for confDH_PARAMETERS exists and is set to 1746 a file path, create a new file with: 1747 openssl dhparam -out /path/to/file 2048 1748 4. Rebuild the .cf file: 1749 cd /etc/mail/; make; make install 1750 5. Restart sendmail: 1751 cd /etc/mail/; make restart 1752 1753 A sendmail patch is coming, at which time this file will be 1754 updated. 1755 175620150604: 1757 Generation of legacy formatted entries have been disabled by default 1758 in pwd_mkdb(8), as all base system consumers of the legacy formatted 1759 entries were converted to use the new format by default when the new, 1760 machine independent format have been added and supported since FreeBSD 1761 5.x. 1762 1763 Please see the pwd_mkdb(8) manual page for further details. 1764 176520150525: 1766 Clang and llvm have been upgraded to 3.6.1 release. Please see the 1767 20141231 entry below for information about prerequisites and upgrading, 1768 if you are not already using 3.5.0 or higher. 1769 177020150521: 1771 TI platform code switched to using vendor DTS files and this update 1772 may break existing systems running on Beaglebone, Beaglebone Black, 1773 and Pandaboard: 1774 1775 - dtb files should be regenerated/reinstalled. Filenames are the 1776 same but content is different now 1777 - GPIO addressing was changed, now each GPIO bank (32 pins per bank) 1778 has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old 1779 addressing scheme is now pin 25 on /dev/gpioc3. 1780 - Pandaboard: /etc/ttys should be updated, serial console device is 1781 now /dev/ttyu2, not /dev/ttyu0 1782 178320150501: 1784 soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim. 1785 If you need the GNU extension from groff soelim(1), install groff 1786 from package: pkg install groff, or via ports: textproc/groff. 1787 178820150423: 1789 chmod, chflags, chown and chgrp now affect symlinks in -R mode as 1790 defined in symlink(7); previously symlinks were silently ignored. 1791 179220150415: 1793 The const qualifier has been removed from iconv(3) to comply with 1794 POSIX. The ports tree is aware of this from r384038 onwards. 1795 179620150416: 1797 Libraries specified by LIBADD in Makefiles must have a corresponding 1798 DPADD_<lib> variable to ensure correct dependencies. This is now 1799 enforced in src.libnames.mk. 1800 180120150324: 1802 From legacy ata(4) driver was removed support for SATA controllers 1803 supported by more functional drivers ahci(4), siis(4) and mvs(4). 1804 Kernel modules ataahci and ataadaptec were removed completely, 1805 replaced by ahci and mvs modules respectively. 1806 180720150315: 1808 Clang, llvm and lldb have been upgraded to 3.6.0 release. Please see 1809 the 20141231 entry below for information about prerequisites and 1810 upgrading, if you are not already using 3.5.0 or higher. 1811 181220150307: 1813 The 32-bit PowerPC kernel has been changed to a position-independent 1814 executable. This can only be booted with a version of loader(8) 1815 newer than January 31, 2015, so make sure to update both world and 1816 kernel before rebooting. 1817 181820150217: 1819 If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014), 1820 but before r278950, the RNG was not seeded properly. Immediately 1821 upgrade the kernel to r278950 or later and regenerate any keys (e.g. 1822 ssh keys or openssl keys) that were generated w/ a kernel from that 1823 range. This does not affect programs that directly used /dev/random 1824 or /dev/urandom. All userland uses of arc4random(3) are affected. 1825 182620150210: 1827 The autofs(4) ABI was changed in order to restore binary compatibility 1828 with 10.1-RELEASE. The automountd(8) daemon needs to be rebuilt to work 1829 with the new kernel. 1830 183120150131: 1832 The powerpc64 kernel has been changed to a position-independent 1833 executable. This can only be booted with a new version of loader(8), 1834 so make sure to update both world and kernel before rebooting. 1835 183620150118: 1837 Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix 1838 only release, no new features have been added. Please see the 20141231 1839 entry below for information about prerequisites and upgrading, if you 1840 are not already using 3.5.0. 1841 184220150107: 1843 ELF tools addr2line, elfcopy (strip), nm, size, and strings are now 1844 taken from the ELF Tool Chain project rather than GNU binutils. They 1845 should be drop-in replacements, with the addition of arm64 support. 1846 The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the 1847 binutils tools, if necessary. See 20150805 for updated information. 1848 184920150105: 1850 The default Unbound configuration now enables remote control 1851 using a local socket. Users who have already enabled the 1852 local_unbound service should regenerate their configuration 1853 by running "service local_unbound setup" as root. 1854 185520150102: 1856 The GNU texinfo and GNU info pages have been removed. 1857 To be able to view GNU info pages please install texinfo from ports. 1858 185920141231: 1860 Clang, llvm and lldb have been upgraded to 3.5.0 release. 1861 1862 As of this release, a prerequisite for building clang, llvm and lldb is 1863 a C++11 capable compiler and C++11 standard library. This means that to 1864 be able to successfully build the cross-tools stage of buildworld, with 1865 clang as the bootstrap compiler, your system compiler or cross compiler 1866 should either be clang 3.3 or later, or gcc 4.8 or later, and your 1867 system C++ library should be libc++, or libdstdc++ from gcc 4.8 or 1868 later. 1869 1870 On any standard FreeBSD 10.x or 11.x installation, where clang and 1871 libc++ are on by default (that is, on x86 or arm), this should work out 1872 of the box. 1873 1874 On 9.x installations where clang is enabled by default, e.g. on x86 and 1875 powerpc, libc++ will not be enabled by default, so libc++ should be 1876 built (with clang) and installed first. If both clang and libc++ are 1877 missing, build clang first, then use it to build libc++. 1878 1879 On 8.x and earlier installations, upgrade to 9.x first, and then follow 1880 the instructions for 9.x above. 1881 1882 Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by 1883 default, and do not build clang. 1884 1885 Many embedded systems are resource constrained, and will not be able to 1886 build clang in a reasonable time, or in some cases at all. In those 1887 cases, cross building bootable systems on amd64 is a workaround. 1888 1889 This new version of clang introduces a number of new warnings, of which 1890 the following are most likely to appear: 1891 1892 -Wabsolute-value 1893 1894 This warns in two cases, for both C and C++: 1895 * When the code is trying to take the absolute value of an unsigned 1896 quantity, which is effectively a no-op, and almost never what was 1897 intended. The code should be fixed, if at all possible. If you are 1898 sure that the unsigned quantity can be safely cast to signed, without 1899 loss of information or undefined behavior, you can add an explicit 1900 cast, or disable the warning. 1901 1902 * When the code is trying to take an absolute value, but the called 1903 abs() variant is for the wrong type, which can lead to truncation. 1904 If you want to disable the warning instead of fixing the code, please 1905 make sure that truncation will not occur, or it might lead to unwanted 1906 side-effects. 1907 1908 -Wtautological-undefined-compare and 1909 -Wundefined-bool-conversion 1910 1911 These warn when C++ code is trying to compare 'this' against NULL, while 1912 'this' should never be NULL in well-defined C++ code. However, there is 1913 some legacy (pre C++11) code out there, which actively abuses this 1914 feature, which was less strictly defined in previous C++ versions. 1915 1916 Squid and openjdk do this, for example. The warning can be turned off 1917 for C++98 and earlier, but compiling the code in C++11 mode might result 1918 in unexpected behavior; for example, the parts of the program that are 1919 unreachable could be optimized away. 1920 192120141222: 1922 The old NFS client and server (kernel options NFSCLIENT, NFSSERVER) 1923 kernel sources have been removed. The .h files remain, since some 1924 utilities include them. This will need to be fixed later. 1925 If "mount -t oldnfs ..." is attempted, it will fail. 1926 If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used, 1927 the utilities will report errors. 1928 192920141121: 1930 The handling of LOCAL_LIB_DIRS has been altered to skip addition of 1931 directories to top level SUBDIR variable when their parent 1932 directory is included in LOCAL_DIRS. Users with build systems with 1933 such hierarchies and without SUBDIR entries in the parent 1934 directory Makefiles should add them or add the directories to 1935 LOCAL_DIRS. 1936 193720141109: 1938 faith(4) and faithd(8) have been removed from the base system. Faith 1939 has been obsolete for a very long time. 1940 194120141104: 1942 vt(4), the new console driver, is enabled by default. It brings 1943 support for Unicode and double-width characters, as well as 1944 support for UEFI and integration with the KMS kernel video 1945 drivers. 1946 1947 You may need to update your console settings in /etc/rc.conf, 1948 most probably the keymap. During boot, /etc/rc.d/syscons will 1949 indicate what you need to do. 1950 1951 vt(4) still has issues and lacks some features compared to 1952 syscons(4). See the wiki for up-to-date information: 1953 https://wiki.freebsd.org/Newcons 1954 1955 If you want to keep using syscons(4), you can do so by adding 1956 the following line to /boot/loader.conf: 1957 kern.vty=sc 1958 195920141102: 1960 pjdfstest has been integrated into kyua as an opt-in test suite. 1961 Please see share/doc/pjdfstest/README for more details on how to 1962 execute it. 1963 196420141009: 1965 gperf has been removed from the base system for architectures 1966 that use clang. Ports that require gperf will obtain it from the 1967 devel/gperf port. 1968 196920140923: 1970 pjdfstest has been moved from tools/regression/pjdfstest to 1971 contrib/pjdfstest . 1972 197320140922: 1974 At svn r271982, The default linux compat kernel ABI has been adjusted 1975 to 2.6.18 in support of the linux-c6 compat ports infrastructure 1976 update. If you wish to continue using the linux-f10 compat ports, 1977 add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are 1978 encouraged to update their linux-compat packages to linux-c6 during 1979 their next update cycle. 1980 198120140729: 1982 The ofwfb driver, used to provide a graphics console on PowerPC when 1983 using vt(4), no longer allows mmap() of all physical memory. This 1984 will prevent Xorg on PowerPC with some ATI graphics cards from 1985 initializing properly unless x11-servers/xorg-server is updated to 1986 1.12.4_8 or newer. 1987 198820140723: 1989 The xdev targets have been converted to using TARGET and 1990 TARGET_ARCH instead of XDEV and XDEV_ARCH. 1991 199220140719: 1993 The default unbound configuration has been modified to address 1994 issues with reverse lookups on networks that use private 1995 address ranges. If you use the local_unbound service, run 1996 "service local_unbound setup" as root to regenerate your 1997 configuration, then "service local_unbound reload" to load the 1998 new configuration. 1999 200020140709: 2001 The GNU texinfo and GNU info pages are not built and installed 2002 anymore, WITH_INFO knob has been added to allow to built and install 2003 them again. 2004 UPDATE: see 20150102 entry on texinfo's removal 2005 200620140708: 2007 The GNU readline library is now an INTERNALLIB - that is, it is 2008 statically linked into consumers (GDB and variants) in the base 2009 system, and the shared library is no longer installed. The 2010 devel/readline port is available for third party software that 2011 requires readline. 2012 201320140702: 2014 The Itanium architecture (ia64) has been removed from the list of 2015 known architectures. This is the first step in the removal of the 2016 architecture. 2017 201820140701: 2019 Commit r268115 has added NFSv4.1 server support, merged from 2020 projects/nfsv4.1-server. Since this includes changes to the 2021 internal interfaces between the NFS related modules, a full 2022 build of the kernel and modules will be necessary. 2023 __FreeBSD_version has been bumped. 2024 202520140629: 2026 The WITHOUT_VT_SUPPORT kernel config knob has been renamed 2027 WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning 2028 which differs from the behaviour controlled by this knob.) 2029 203020140619: 2031 Maximal length of the serial number in CTL was increased from 16 to 2032 64 chars, that breaks ABI. All CTL-related tools, such as ctladm 2033 and ctld, need to be rebuilt to work with a new kernel. 2034 203520140606: 2036 The libatf-c and libatf-c++ major versions were downgraded to 0 and 2037 1 respectively to match the upstream numbers. They were out of 2038 sync because, when they were originally added to FreeBSD, the 2039 upstream versions were not respected. These libraries are private 2040 and not yet built by default, so renumbering them should be a 2041 non-issue. However, unclean source trees will yield broken test 2042 programs once the operator executes "make delete-old-libs" after a 2043 "make installworld". 2044 2045 Additionally, the atf-sh binary was made private by moving it into 2046 /usr/libexec/. Already-built shell test programs will keep the 2047 path to the old binary so they will break after "make delete-old" 2048 is run. 2049 2050 If you are using WITH_TESTS=yes (not the default), wipe the object 2051 tree and rebuild from scratch to prevent spurious test failures. 2052 This is only needed once: the misnumbered libraries and misplaced 2053 binaries have been added to OptionalObsoleteFiles.inc so they will 2054 be removed during a clean upgrade. 2055 205620140512: 2057 Clang and llvm have been upgraded to 3.4.1 release. 2058 205920140508: 2060 We bogusly installed src.opts.mk in /usr/share/mk. This file should 2061 be removed to avoid issues in the future (and has been added to 2062 ObsoleteFiles.inc). 2063 206420140505: 2065 /etc/src.conf now affects only builds of the FreeBSD src tree. In the 2066 past, it affected all builds that used the bsd.*.mk files. The old 2067 behavior was a bug, but people may have relied upon it. To get this 2068 behavior back, you can .include /etc/src.conf from /etc/make.conf 2069 (which is still global and isn't changed). This also changes the 2070 behavior of incremental builds inside the tree of individual 2071 directories. Set MAKESYSPATH to ".../share/mk" to do that. 2072 Although this has survived make universe and some upgrade scenarios, 2073 other upgrade scenarios may have broken. At least one form of 2074 temporary breakage was fixed with MAKESYSPATH settings for buildworld 2075 as well... In cases where MAKESYSPATH isn't working with this 2076 setting, you'll need to set it to the full path to your tree. 2077 2078 One side effect of all this cleaning up is that bsd.compiler.mk 2079 is no longer implicitly included by bsd.own.mk. If you wish to 2080 use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk 2081 as well. 2082 208320140430: 2084 The lindev device has been removed since /dev/full has been made a 2085 standard device. __FreeBSD_version has been bumped. 2086 208720140424: 2088 The knob WITHOUT_VI was added to the base system, which controls 2089 building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1) 2090 in order to reorder files share/termcap and didn't build ex(1) as a 2091 build tool, so building/installing with WITH_VI is highly advised for 2092 build hosts for older releases. 2093 2094 This issue has been fixed in stable/9 and stable/10 in r277022 and 2095 r276991, respectively. 2096 209720140418: 2098 The YES_HESIOD knob has been removed. It has been obsolete for 2099 a decade. Please move to using WITH_HESIOD instead or your builds 2100 will silently lack HESIOD. 2101 210220140405: 2103 The uart(4) driver has been changed with respect to its handling 2104 of the low-level console. Previously the uart(4) driver prevented 2105 any process from changing the baudrate or the CLOCAL and HUPCL 2106 control flags. By removing the restrictions, operators can make 2107 changes to the serial console port without having to reboot. 2108 However, when getty(8) is started on the serial device that is 2109 associated with the low-level console, a misconfigured terminal 2110 line in /etc/ttys will now have a real impact. 2111 Before upgrading the kernel, make sure that /etc/ttys has the 2112 serial console device configured as 3wire without baudrate to 2113 preserve the previous behaviour. E.g: 2114 ttyu0 "/usr/libexec/getty 3wire" vt100 on secure 2115 211620140306: 2117 Support for libwrap (TCP wrappers) in rpcbind was disabled by default 2118 to improve performance. To re-enable it, if needed, run rpcbind 2119 with command line option -W. 2120 212120140226: 2122 Switched back to the GPL dtc compiler due to updates in the upstream 2123 dts files not being supported by the BSDL dtc compiler. You will need 2124 to rebuild your kernel toolchain to pick up the new compiler. Core dumps 2125 may result while building dtb files during a kernel build if you fail 2126 to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler. 2127 212820140216: 2129 Clang and llvm have been upgraded to 3.4 release. 2130 213120140216: 2132 The nve(4) driver has been removed. Please use the nfe(4) driver 2133 for NVIDIA nForce MCP Ethernet adapters instead. 2134 213520140212: 2136 An ABI incompatibility crept into the libc++ 3.4 import in r261283. 2137 This could cause certain C++ applications using shared libraries built 2138 against the previous version of libc++ to crash. The incompatibility 2139 has now been fixed, but any C++ applications or shared libraries built 2140 between r261283 and r261801 should be recompiled. 2141 214220140204: 2143 OpenSSH will now ignore errors caused by kernel lacking of Capsicum 2144 capability mode support. Please note that enabling the feature in 2145 kernel is still highly recommended. 2146 214720140131: 2148 OpenSSH is now built with sandbox support, and will use sandbox as 2149 the default privilege separation method. This requires Capsicum 2150 capability mode support in kernel. 2151 215220140128: 2153 The libelf and libdwarf libraries have been updated to newer 2154 versions from upstream. Shared library version numbers for 2155 these two libraries were bumped. Any ports or binaries 2156 requiring these two libraries should be recompiled. 2157 __FreeBSD_version is bumped to 1100006. 2158 215920140110: 2160 If a Makefile in a tests/ directory was auto-generating a Kyuafile 2161 instead of providing an explicit one, this would prevent such 2162 Makefile from providing its own Kyuafile in the future during 2163 NO_CLEAN builds. This has been fixed in the Makefiles but manual 2164 intervention is needed to clean an objdir if you use NO_CLEAN: 2165 # find /usr/obj -name Kyuafile | xargs rm -f 2166 216720131213: 2168 The behavior of gss_pseudo_random() for the krb5 mechanism 2169 has changed, for applications requesting a longer random string 2170 than produced by the underlying enctype's pseudo-random() function. 2171 In particular, the random string produced from a session key of 2172 enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will 2173 be different at the 17th octet and later, after this change. 2174 The counter used in the PRF+ construction is now encoded as a 2175 big-endian integer in accordance with RFC 4402. 2176 __FreeBSD_version is bumped to 1100004. 2177 217820131108: 2179 The WITHOUT_ATF build knob has been removed and its functionality 2180 has been subsumed into the more generic WITHOUT_TESTS. If you were 2181 using the former to disable the build of the ATF libraries, you 2182 should change your settings to use the latter. 2183 218420131025: 2185 The default version of mtree is nmtree which is obtained from 2186 NetBSD. The output is generally the same, but may vary 2187 slightly. If you found you need identical output adding 2188 "-F freebsd9" to the command line should do the trick. For the 2189 time being, the old mtree is available as fmtree. 2190 219120131014: 2192 libbsdyml has been renamed to libyaml and moved to /usr/lib/private. 2193 This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg 2194 1.1.4_8 and verify bsdyml not linked in, before running "make 2195 delete-old-libs": 2196 # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean 2197 or 2198 # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml 2199 220020131010: 2201 The stable/10 branch has been created in subversion from head 2202 revision r256279. 2203 2204COMMON ITEMS: 2205 2206 General Notes 2207 ------------- 2208 Sometimes, obscure build problems are the result of environment 2209 poisoning. This can happen because the make utility reads its 2210 environment when searching for values for global variables. To run 2211 your build attempts in an "environmental clean room", prefix all make 2212 commands with 'env -i '. See the env(1) manual page for more details. 2213 Occasionally a build failure will occur with "make -j" due to a race 2214 condition. If this happens try building again without -j, and please 2215 report a bug if it happens consistently. 2216 2217 When upgrading from one major version to another it is generally best to 2218 upgrade to the latest code in the currently installed branch first, then 2219 do an upgrade to the new branch. This is the best-tested upgrade path, 2220 and has the highest probability of being successful. Please try this 2221 approach if you encounter problems with a major version upgrade. Since 2222 the stable 4.x branch point, one has generally been able to upgrade from 2223 anywhere in the most recent stable branch to head / current (or even the 2224 last couple of stable branches). See the top of this file when there's 2225 an exception. 2226 2227 The update process will emit an error on an attempt to perform a build 2228 or install from a FreeBSD version below the earliest supported version. 2229 When updating from an older version the update should be performed one 2230 major release at a time, including running `make delete-old` at each 2231 step. 2232 2233 When upgrading a live system, having a root shell around before 2234 installing anything can help undo problems. Not having a root shell 2235 around can lead to problems if pam has changed too much from your 2236 starting point to allow continued authentication after the upgrade. 2237 2238 This file should be read as a log of events. When a later event changes 2239 information of a prior event, the prior event should not be deleted. 2240 Instead, a pointer to the entry with the new information should be 2241 placed in the old entry. Readers of this file should also sanity check 2242 older entries before relying on them blindly. Authors of new entries 2243 should write them with this in mind. 2244 2245 ZFS notes 2246 --------- 2247 When upgrading the boot ZFS pool to a new version, always follow 2248 these two steps: 2249 2250 1.) recompile and reinstall the ZFS boot loader and boot block 2251 (this is part of "make buildworld" and "make installworld") 2252 2253 2.) update the ZFS boot block on your boot drive 2254 2255 The following example updates the ZFS boot block on the 2256 freebsd-boot partition of a GPT partitioned drive ada0: 2257 "gpart bootcode -p /boot/gptzfsboot -i $N ada0" 2258 The value $N will typically be 1 (if booting from BIOS) or 2 (if 2259 booting from EFI). 2260 2261 Non-boot pools do not need these updates. 2262 2263 To build a kernel 2264 ----------------- 2265 If you are updating from a prior version of FreeBSD (even one just 2266 a few days old), you should follow this procedure. It is the most 2267 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 2268 2269 make kernel-toolchain 2270 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 2271 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 2272 2273 To test a kernel once 2274 --------------------- 2275 If you just want to boot a kernel once (because you are not sure 2276 if it works, or if you want to boot a known bad kernel to provide 2277 debugging information) run 2278 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 2279 nextboot -k testkernel 2280 2281 To rebuild everything and install it on the current system. 2282 ----------------------------------------------------------- 2283 # Note: sometimes if you are running current you gotta do more than 2284 # is listed here if you are upgrading from a really old current. 2285 2286 <make sure you have good level 0 dumps> 2287 make buildworld 2288 make buildkernel KERNCONF=YOUR_KERNEL_HERE 2289 make installkernel KERNCONF=YOUR_KERNEL_HERE 2290 [1] 2291 <reboot in single user> [3] 2292 mergemaster -Fp [5] 2293 make installworld 2294 mergemaster -Fi [4] 2295 make delete-old [6] 2296 <reboot> 2297 2298 To cross-install current onto a separate partition 2299 -------------------------------------------------- 2300 # In this approach we use a separate partition to hold 2301 # current's root, 'usr', and 'var' directories. A partition 2302 # holding "/", "/usr" and "/var" should be about 2GB in 2303 # size. 2304 2305 <make sure you have good level 0 dumps> 2306 <boot into -stable> 2307 make buildworld 2308 make buildkernel KERNCONF=YOUR_KERNEL_HERE 2309 <maybe newfs current's root partition> 2310 <mount current's root partition on directory ${CURRENT_ROOT}> 2311 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 2312 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 2313 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 2314 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 2315 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 2316 <reboot into current> 2317 <do a "native" rebuild/install as described in the previous section> 2318 <maybe install compatibility libraries from ports/misc/compat*> 2319 <reboot> 2320 2321 2322 To upgrade in-place from stable to current 2323 ---------------------------------------------- 2324 <make sure you have good level 0 dumps> 2325 make buildworld [9] 2326 make buildkernel KERNCONF=YOUR_KERNEL_HERE [8] 2327 make installkernel KERNCONF=YOUR_KERNEL_HERE 2328 [1] 2329 <reboot in single user> [3] 2330 mergemaster -Fp [5] 2331 make installworld 2332 mergemaster -Fi [4] 2333 make delete-old [6] 2334 <reboot> 2335 2336 Make sure that you've read the UPDATING file to understand the 2337 tweaks to various things you need. At this point in the life 2338 cycle of current, things change often and you are on your own 2339 to cope. The defaults can also change, so please read ALL of 2340 the UPDATING entries. 2341 2342 Also, if you are tracking -current, you must be subscribed to 2343 [email protected]. Make sure that before you update 2344 your sources that you have read and understood all the recent 2345 messages there. If in doubt, please track -stable which has 2346 much fewer pitfalls. 2347 2348 [1] If you have third party modules, such as vmware, you should disable 2349 them at this point so they don't crash your system on 2350 reboot. Alternatively, you should rebuild all the modules you have in 2351 your system and install them as well. If you are running -current, you 2352 should seriously consider placing all sources to all the modules for 2353 your system (or symlinks to them) in /usr/local/sys/modules so this 2354 happens automatically. If all your modules come from ports, then adding 2355 the port origin directories to PORTS_MODULES instead is also automatic 2356 and effective, eg: 2357 PORTS_MODULES+=x11/nvidia-driver 2358 2359 [3] From the bootblocks, boot -s, and then do 2360 fsck -p 2361 mount -u / 2362 mount -a 2363 sh /etc/rc.d/zfs start # mount zfs filesystem, if needed 2364 cd src # full path to source 2365 adjkerntz -i # if CMOS is wall time 2366 Also, when doing a major release upgrade, it is required that you boot 2367 into single user mode to do the installworld. 2368 2369 [4] Note: This step is non-optional. Failure to do this step 2370 can result in a significant reduction in the functionality of the 2371 system. Attempting to do it by hand is not recommended and those 2372 that pursue this avenue should read this file carefully, as well 2373 as the archives of freebsd-current and freebsd-hackers mailing lists 2374 for potential gotchas. The -U option is also useful to consider. 2375 See mergemaster(8) for more information. 2376 2377 [5] Usually this step is a no-op. However, from time to time 2378 you may need to do this if you get unknown user in the following 2379 step. It never hurts to do it all the time. You may need to 2380 install a new mergemaster (cd src/usr.sbin/mergemaster && make 2381 install) after the buildworld before this step if you last updated 2382 from current before 20130425 or from -stable before 20130430. 2383 2384 [6] This only deletes old files and directories. Old libraries 2385 can be deleted by "make delete-old-libs", but you have to make 2386 sure that no program is using those libraries anymore. 2387 2388 [8] The new kernel must be able to run existing binaries used by an 2389 installworld. When upgrading across major versions, the new kernel's 2390 configuration must include the correct COMPAT_FREEBSD<n> option for 2391 existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries). Failure 2392 to do so may leave you with a system that is hard to boot to recover. A 2393 GENERIC kernel will include suitable compatibility options to run 2394 binaries from older branches. Note that the ability to run binaries 2395 from unsupported branches is not guaranteed. 2396 2397 Make sure that you merge any new devices from GENERIC since the 2398 last time you updated your kernel config file. Options also 2399 change over time, so you may need to adjust your custom kernels 2400 for these as well. 2401 2402 [9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the 2403 "?=" instead of the "=" assignment operator, so that buildworld can 2404 override the CPUTYPE if it needs to. 2405 2406 MAKEOBJDIRPREFIX must be defined in an environment variable, and 2407 not on the command line, or in /etc/make.conf. buildworld will 2408 warn if it is improperly defined. 2409FORMAT: 2410 2411This file contains a list, in reverse chronological order, of major 2412breakages in tracking -current. It is not guaranteed to be a complete 2413list of such breakages, and only contains entries since September 23, 2011. 2414If you need to see UPDATING entries from before that date, you will need 2415to fetch an UPDATING file from an older FreeBSD release. 2416 2417Copyright information: 2418 2419Copyright 1998-2009 M. Warner Losh <[email protected]> 2420 2421Redistribution, publication, translation and use, with or without 2422modification, in full or in part, in any form or format of this 2423document are permitted without further permission from the author. 2424 2425THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 2426IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 2427WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2428DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 2429INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2430(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2431SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2432HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2433STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 2434IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2435POSSIBILITY OF SUCH DAMAGE. 2436 2437Contact Warner Losh if you have any questions about your use of 2438this document. 2439 2440$FreeBSD$ 2441