1Updating Information for FreeBSD current users. 2 3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>. 4See end of file for further details. For commonly done items, please see the 5COMMON ITEMS: section later in the file. These instructions assume that you 6basically know what you are doing. If not, then please consult the FreeBSD 7handbook: 8 9 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html 10 11Items affecting the ports and packages system can be found in 12/usr/ports/UPDATING. Please read that file before running portupgrade. 13 14NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping 15from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to 16the tip of head, and then rebuild without this option. The bootstrap process from 17older version of current across the gcc/clang cutover is a bit fragile. 18 19NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW: 20 FreeBSD 11.x has many debugging features turned on, in both the kernel 21 and userland. These features attempt to detect incorrect use of 22 system primitives, and encourage loud failure through extra sanity 23 checking and fail stop semantics. They also substantially impact 24 system performance. If you want to do performance measurement, 25 benchmarking, and optimization, you'll want to turn them off. This 26 includes various WITNESS- related kernel options, INVARIANTS, malloc 27 debugging flags in userland, and various verbose features in the 28 kernel. Many developers choose to disable these features on build 29 machines to maximize performance. (To completely disable malloc 30 debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely 31 disable the most expensive debugging functionality run 32 "ln -s 'abort:false,junk:false' /etc/malloc.conf".) 33 3420141104: 35 vt(4), the new console driver, is enabled by default. It brings 36 support for Unicode and double-width characters, as well as 37 support for UEFI and integration with the KMS kernel video 38 drivers. 39 40 You may need to update your console settings in /etc/rc.conf, 41 most probably the keymap. During boot, /etc/rc.d/syscons will 42 indicate what you need to do. 43 44 vt(4) still has issues and lacks some features compared to 45 syscons(4). See the wiki for up-to-date information: 46 https://wiki.freebsd.org/Newcons 47 48 If you want to keep using syscons(4), you can do so by adding 49 the following line to /boot/loader.conf: 50 kern.vty=sc 51 5220141102: 53 pjdfstest has been integrated into kyua as an opt-in test suite. 54 Please see share/doc/pjdfstest/README for a more details on how to 55 execute it. 56 5720141009: 58 gperf has been removed from the base system for architectures 59 that use clang. Ports that require gperf will obtain it from the 60 devel/gperf port. 61 6220140923: 63 pjdfstest has been moved from tools/regression/pjdfstest to 64 contrib/pjdfstest . 65 6620140922: 67 At svn r271982, The default linux compat kernel ABI has been adjusted 68 to 2.6.18 in support of the linux-c6 compat ports infrastructure 69 update. If you wish to continue using the linux-f10 compat ports, 70 add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are 71 encouraged to update their linux-compat packages to linux-c6 during 72 their next update cycle. 73 7420140729: 75 The ofwfb driver, used to provide a graphics console on PowerPC when 76 using vt(4), no longer allows mmap() of all of physical memory. This 77 will prevent Xorg on PowerPC with some ATI graphics cards from 78 initializing properly unless x11-servers/xorg-server is updated to 79 1.12.4_8 or newer. 80 8120140723: 82 The xdev targets have been converted to using TARGET and 83 TARGET_ARCH instead of XDEV and XDEV_ARCH. 84 8520140719: 86 The default unbound configuration has been modified to address 87 issues with reverse lookups on networks that use private 88 address ranges. If you use the local_unbound service, run 89 "service local_unbound setup" as root to regenerate your 90 configuration, then "service local_unbound reload" to load the 91 new configuration. 92 9320140709: 94 The GNU texinfo and GNU info pages are not built and installed 95 anymore, WITH_INFO knob has been added to allow to built and install 96 them again. 97 9820140708: 99 The GNU readline library is now an INTERNALLIB - that is, it is 100 statically linked into consumers (GDB and variants) in the base 101 system, and the shared library is no longer installed. The 102 devel/readline port is available for third party software that 103 requires readline. 104 10520140702: 106 The Itanium architecture (ia64) has been removed from the list of 107 known architectures. This is the first step in the removal of the 108 architecture. 109 11020140701: 111 Commit r268115 has added NFSv4.1 server support, merged from 112 projects/nfsv4.1-server. Since this includes changes to the 113 internal interfaces between the NFS related modules, a full 114 build of the kernel and modules will be necessary. 115 __FreeBSD_version has been bumped. 116 11720140629: 118 The WITHOUT_VT_SUPPORT kernel config knob has been renamed 119 WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning 120 which differs from the behaviour controlled by this knob.) 121 12220140619: 123 Maximal length of the serial number in CTL was increased from 16 to 124 64 chars, that breaks ABI. All CTL-related tools, such as ctladm 125 and ctld, need to be rebuilt to work with a new kernel. 126 12720140606: 128 The libatf-c and libatf-c++ major versions were downgraded to 0 and 129 1 respectively to match the upstream numbers. They were out of 130 sync because, when they were originally added to FreeBSD, the 131 upstream versions were not respected. These libraries are private 132 and not yet built by default, so renumbering them should be a 133 non-issue. However, unclean source trees will yield broken test 134 programs once the operator executes "make delete-old-libs" after a 135 "make installworld". 136 137 Additionally, the atf-sh binary was made private by moving it into 138 /usr/libexec/. Already-built shell test programs will keep the 139 path to the old binary so they will break after "make delete-old" 140 is run. 141 142 If you are using WITH_TESTS=yes (not the default), wipe the object 143 tree and rebuild from scratch to prevent spurious test failures. 144 This is only needed once: the misnumbered libraries and misplaced 145 binaries have been added to OptionalObsoleteFiles.inc so they will 146 be removed during a clean upgrade. 147 14820140512: 149 Clang and llvm have been upgraded to 3.4.1 release. 150 15120140508: 152 We bogusly installed src.opts.mk in /usr/share/mk. This file should 153 be removed to avoid issues in the future (and has been added to 154 ObsoleteFiles.inc). 155 15620140505: 157 /etc/src.conf now affects only builds of the FreeBSD src tree. In the 158 past, it affected all builds that used the bsd.*.mk files. The old 159 behavior was a bug, but people may have relied upon it. To get this 160 behavior back, you can .include /etc/src.conf from /etc/make.conf 161 (which is still global and isn't changed). This also changes the 162 behavior of incremental builds inside the tree of individual 163 directories. Set MAKESYSPATH to ".../share/mk" to do that. 164 Although this has survived make universe and some upgrade scenarios, 165 other upgrade scenarios may have broken. At least one form of 166 temporary breakage was fixed with MAKESYSPATH settings for buildworld 167 as well... In cases where MAKESYSPATH isn't working with this 168 setting, you'll need to set it to the full path to your tree. 169 170 One side effect of all this cleaning up is that bsd.compiler.mk 171 is no longer implicitly included by bsd.own.mk. If you wish to 172 use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk 173 as well. 174 17520140430: 176 The lindev device has been removed since /dev/full has been made a 177 standard device. __FreeBSD_version has been bumped. 178 17920140418: 180 The YES_HESIOD knob has been removed. It has been obsolete for 181 a decade. Please move to using WITH_HESIOD instead or your builds 182 will silently lack HESIOD. 183 18420140405: 185 The uart(4) driver has been changed with respect to its handling 186 of the low-level console. Previously the uart(4) driver prevented 187 any process from changing the baudrate or the CLOCAL and HUPCL 188 control flags. By removing the restrictions, operators can make 189 changes to the serial console port without having to reboot. 190 However, when getty(8) is started on the serial device that is 191 associated with the low-level console, a misconfigured terminal 192 line in /etc/ttys will now have a real impact. 193 Before upgrading the kernel, make sure that /etc/ttys has the 194 serial console device configured as 3wire without baudrate to 195 preserve the previous behaviour. E.g: 196 ttyu0 "/usr/libexec/getty 3wire" vt100 on secure 197 19820140306: 199 Support for libwrap (TCP wrappers) in rpcbind was disabled by default 200 to improve performance. To re-enable it, if needed, run rpcbind 201 with command line option -W. 202 20320140226: 204 Switched back to the GPL dtc compiler due to updates in the upstream 205 dts files not being supported by the BSDL dtc compiler. You will need 206 to rebuild your kernel toolchain to pick up the new compiler. Core dumps 207 may result while building dtb files during a kernel build if you fail 208 to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler. 209 21020140216: 211 Clang and llvm have been upgraded to 3.4 release. 212 21320140216: 214 The nve(4) driver has been removed. Please use the nfe(4) driver 215 for NVIDIA nForce MCP Ethernet adapters instead. 216 21720140212: 218 An ABI incompatibility crept into the libc++ 3.4 import in r261283. 219 This could cause certain C++ applications using shared libraries built 220 against the previous version of libc++ to crash. The incompatibility 221 has now been fixed, but any C++ applications or shared libraries built 222 between r261283 and r261801 should be recompiled. 223 22420140204: 225 OpenSSH will now ignore errors caused by kernel lacking of Capsicum 226 capability mode support. Please note that enabling the feature in 227 kernel is still highly recommended. 228 22920140131: 230 OpenSSH is now built with sandbox support, and will use sandbox as 231 the default privilege separation method. This requires Capsicum 232 capability mode support in kernel. 233 23420140128: 235 The libelf and libdwarf libraries have been updated to newer 236 versions from upstream. Shared library version numbers for 237 these two libraries were bumped. Any ports or binaries 238 requiring these two libraries should be recompiled. 239 __FreeBSD_version is bumped to 1100006. 240 24120140110: 242 If a Makefile in a tests/ directory was auto-generating a Kyuafile 243 instead of providing an explicit one, this would prevent such 244 Makefile from providing its own Kyuafile in the future during 245 NO_CLEAN builds. This has been fixed in the Makefiles but manual 246 intervention is needed to clean an objdir if you use NO_CLEAN: 247 # find /usr/obj -name Kyuafile | xargs rm -f 248 24920131213: 250 The behavior of gss_pseudo_random() for the krb5 mechanism 251 has changed, for applications requesting a longer random string 252 than produced by the underlying enctype's pseudo-random() function. 253 In particular, the random string produced from a session key of 254 enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will 255 be different at the 17th octet and later, after this change. 256 The counter used in the PRF+ construction is now encoded as a 257 big-endian integer in accordance with RFC 4402. 258 __FreeBSD_version is bumped to 1100004. 259 26020131108: 261 The WITHOUT_ATF build knob has been removed and its functionality 262 has been subsumed into the more generic WITHOUT_TESTS. If you were 263 using the former to disable the build of the ATF libraries, you 264 should change your settings to use the latter. 265 26620131025: 267 The default version of mtree is nmtree which is obtained from 268 NetBSD. The output is generally the same, but may vary 269 slightly. If you found you need identical output adding 270 "-F freebsd9" to the command line should do the trick. For the 271 time being, the old mtree is available as fmtree. 272 27320131014: 274 libbsdyml has been renamed to libyaml and moved to /usr/lib/private. 275 This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg 276 1.1.4_8 and verify bsdyml not linked in, before running "make 277 delete-old-libs": 278 # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean 279 or 280 # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml 281 28220131010: 283 The rc.d/jail script has been updated to support jail(8) 284 configuration file. The "jail_<jname>_*" rc.conf(5) variables 285 for per-jail configuration are automatically converted to 286 /var/run/jail.<jname>.conf before the jail(8) utility is invoked. 287 This is transparently backward compatible. See below about some 288 incompatibilities and rc.conf(5) manual page for more details. 289 290 These variables are now deprecated in favor of jail(8) configuration 291 file. One can use "rc.d/jail config <jname>" command to generate 292 a jail(8) configuration file in /var/run/jail.<jname>.conf without 293 running the jail(8) utility. The default pathname of the 294 configuration file is /etc/jail.conf and can be specified by 295 using $jail_conf or $jail_<jname>_conf variables. 296 297 Please note that jail_devfs_ruleset accepts an integer at 298 this moment. Please consider to rewrite the ruleset name 299 with an integer. 300 30120130930: 302 BIND has been removed from the base system. If all you need 303 is a local resolver, simply enable and start the local_unbound 304 service instead. Otherwise, several versions of BIND are 305 available in the ports tree. The dns/bind99 port is one example. 306 307 With this change, nslookup(1) and dig(1) are no longer in the base 308 system. Users should instead use host(1) and drill(1) which are 309 in the base system. Alternatively, nslookup and dig can 310 be obtained by installing the dns/bind-tools port. 311 31220130916: 313 With the addition of unbound(8), a new unbound user is now 314 required during installworld. "mergemaster -p" can be used to 315 add the user prior to installworld, as documented in the handbook. 316 31720130911: 318 OpenSSH is now built with DNSSEC support, and will by default 319 silently trust signed SSHFP records. This can be controlled with 320 the VerifyHostKeyDNS client configuration setting. DNSSEC support 321 can be disabled entirely with the WITHOUT_LDNS option in src.conf. 322 32320130906: 324 The GNU Compiler Collection and C++ standard library (libstdc++) 325 are no longer built by default on platforms where clang is the system 326 compiler. You can enable them with the WITH_GCC and WITH_GNUCXX 327 options in src.conf. 328 32920130905: 330 The PROCDESC kernel option is now part of the GENERIC kernel 331 configuration and is required for the rwhod(8) to work. 332 If you are using custom kernel configuration, you should include 333 'options PROCDESC'. 334 33520130905: 336 The API and ABI related to the Capsicum framework was modified 337 in backward incompatible way. The userland libraries and programs 338 have to be recompiled to work with the new kernel. This includes the 339 following libraries and programs, but the whole buildworld is 340 advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl, 341 kdump, procstat, rwho, rwhod, uniq. 342 34320130903: 344 AES-NI intrinsic support has been added to gcc. The AES-NI module 345 has been updated to use this support. A new gcc is required to build 346 the aesni module on both i386 and amd64. 347 34820130821: 349 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. 350 Thus "device padlock_rng" and "device rdrand_rng" should be 351 used instead of "options PADLOCK_RNG" & "options RDRAND_RNG". 352 35320130813: 354 WITH_ICONV has been split into two feature sets. WITH_ICONV now 355 enables just the iconv* functionality and is now on by default. 356 WITH_LIBICONV_COMPAT enables the libiconv api and link time 357 compatability. Set WITHOUT_ICONV to build the old way. 358 If you have been using WITH_ICONV before, you will very likely 359 need to turn on WITH_LIBICONV_COMPAT. 360 36120130806: 362 INVARIANTS option now enables DEBUG for code with OpenSolaris and 363 Illumos origin, including ZFS. If you have INVARIANTS in your 364 kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG 365 explicitly. 366 DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS) 367 locks if WITNESS option was set. Because that generated a lot of 368 witness(9) reports and all of them were believed to be false 369 positives, this is no longer done. New option OPENSOLARIS_WITNESS 370 can be used to achieve the previous behavior. 371 37220130806: 373 Timer values in IPv6 data structures now use time_uptime instead 374 of time_second. Although this is not a user-visible functional 375 change, userland utilities which directly use them---ndp(8), 376 rtadvd(8), and rtsold(8) in the base system---need to be updated 377 to r253970 or later. 378 37920130802: 380 find -delete can now delete the pathnames given as arguments, 381 instead of only files found below them or if the pathname did 382 not contain any slashes. Formerly, the following error message 383 would result: 384 385 find: -delete: <path>: relative path potentially not safe 386 387 Deleting the pathnames given as arguments can be prevented 388 without error messages using -mindepth 1 or by changing 389 directory and passing "." as argument to find. This works in the 390 old as well as the new version of find. 391 39220130726: 393 Behavior of devfs rules path matching has been changed. 394 Pattern is now always matched against fully qualified devfs 395 path and slash characters must be explicitly matched by 396 slashes in pattern (FNM_PATHNAME). Rulesets involving devfs 397 subdirectories must be reviewed. 398 39920130716: 400 The default ARM ABI has changed to the ARM EABI. The old ABI is 401 incompatible with the ARM EABI and all programs and modules will 402 need to be rebuilt to work with a new kernel. 403 404 To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set. 405 406 NOTE: Support for the old ABI will be removed in the future and 407 users are advised to upgrade. 408 40920130709: 410 pkg_install has been disconnected from the build if you really need it 411 you should add WITH_PKGTOOLS in your src.conf(5). 412 41320130709: 414 Most of network statistics structures were changed to be able 415 keep 64-bits counters. Thus all tools, that work with networking 416 statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.) 417 41820130629: 419 Fix targets that run multiple make's to use && rather than ; 420 so that subsequent steps depend on success of previous. 421 422 NOTE: if building 'universe' with -j* on stable/8 or stable/9 423 it would be better to start the build using bmake, to avoid 424 overloading the machine. 425 42620130618: 427 Fix a bug that allowed a tracing process (e.g. gdb) to write 428 to a memory-mapped file in the traced process's address space 429 even if neither the traced process nor the tracing process had 430 write access to that file. 431 43220130615: 433 CVS has been removed from the base system. An exact copy 434 of the code is available from the devel/cvs port. 435 43620130613: 437 Some people report the following error after the switch to bmake: 438 439 make: illegal option -- J 440 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable] 441 ... 442 *** [buildworld] Error code 2 443 444 this likely due to an old instance of make in 445 ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}) 446 which src/Makefile will use that blindly, if it exists, so if 447 you see the above error: 448 449 rm -rf `make -V MAKEPATH` 450 451 should resolve it. 452 45320130516: 454 Use bmake by default. 455 Whereas before one could choose to build with bmake via 456 -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old 457 make. The goal is to remove these knobs for 10-RELEASE. 458 459 It is worth noting that bmake (like gmake) treats the command 460 line as the unit of failure, rather than statements within the 461 command line. Thus '(cd some/where && dosomething)' is safer 462 than 'cd some/where; dosomething'. The '()' allows consistent 463 behavior in parallel build. 464 46520130429: 466 Fix a bug that allows NFS clients to issue READDIR on files. 467 46820130426: 469 The WITHOUT_IDEA option has been removed because 470 the IDEA patent expired. 471 47220130426: 473 The sysctl which controls TRIM support under ZFS has been renamed 474 from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been 475 enabled by default. 476 47720130425: 478 The mergemaster command now uses the default MAKEOBJDIRPREFIX 479 rather than creating it's own in the temporary directory in 480 order allow access to bootstrapped versions of tools such as 481 install and mtree. When upgrading from version of FreeBSD where 482 the install command does not support -l, you will need to 483 install a new mergemaster command if mergemaster -p is required. 484 This can be accomplished with the command (cd src/usr.sbin/mergemaster 485 && make install). 486 48720130404: 488 Legacy ATA stack, disabled and replaced by new CAM-based one since 489 FreeBSD 9.0, completely removed from the sources. Kernel modules 490 atadisk and atapi*, user-level tools atacontrol and burncd are 491 removed. Kernel option `options ATA_CAM` is now permanently enabled 492 and removed. 493 49420130319: 495 SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2) 496 and socketpair(2). Software, in particular Kerberos, may 497 automatically detect and use these during building. The resulting 498 binaries will not work on older kernels. 499 50020130308: 501 CTL_DISABLE has also been added to the sparc64 GENERIC (for further 502 information, see the respective 20130304 entry). 503 50420130304: 505 Recent commits to callout(9) changed the size of struct callout, 506 so the KBI is probably heavily disturbed. Also, some functions 507 in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced 508 by macros. Every kernel module using it won't load, so rebuild 509 is requested. 510 511 The ctl device has been re-enabled in GENERIC for i386 and amd64, 512 but does not initialize by default (because of the new CTL_DISABLE 513 option) to save memory. To re-enable it, remove the CTL_DISABLE 514 option from the kernel config file or set kern.cam.ctl.disable=0 515 in /boot/loader.conf. 516 51720130301: 518 The ctl device has been disabled in GENERIC for i386 and amd64. 519 This was done due to the extra memory being allocated at system 520 initialisation time by the ctl driver which was only used if 521 a CAM target device was created. This makes a FreeBSD system 522 unusable on 128MB or less of RAM. 523 52420130208: 525 A new compression method (lz4) has been merged to -HEAD. Please 526 refer to zpool-features(7) for more information. 527 528 Please refer to the "ZFS notes" section of this file for information 529 on upgrading boot ZFS pools. 530 53120130129: 532 A BSD-licensed patch(1) variant has been added and is installed 533 as bsdpatch, being the GNU version the default patch. 534 To inverse the logic and use the BSD-licensed one as default, 535 while having the GNU version installed as gnupatch, rebuild 536 and install world with the WITH_BSD_PATCH knob set. 537 53820130121: 539 Due to the use of the new -l option to install(1) during build 540 and install, you must take care not to directly set the INSTALL 541 make variable in your /etc/make.conf, /etc/src.conf, or on the 542 command line. If you wish to use the -C flag for all installs 543 you may be able to add INSTALL+=-C to /etc/make.conf or 544 /etc/src.conf. 545 54620130118: 547 The install(1) option -M has changed meaning and now takes an 548 argument that is a file or path to append logs to. In the 549 unlikely event that -M was the last option on the command line 550 and the command line contained at least two files and a target 551 directory the first file will have logs appended to it. The -M 552 option served little practical purpose in the last decade so its 553 use is expected to be extremely rare. 554 55520121223: 556 After switching to Clang as the default compiler some users of ZFS 557 on i386 systems started to experience stack overflow kernel panics. 558 Please consider using 'options KSTACK_PAGES=4' in such configurations. 559 56020121222: 561 GEOM_LABEL now mangles label names read from file system metadata. 562 Mangling affect labels containing spaces, non-printable characters, 563 '%' or '"'. Device names in /etc/fstab and other places may need to 564 be updated. 565 56620121217: 567 By default, only the 10 most recent kernel dumps will be saved. To 568 restore the previous behaviour (no limit on the number of kernel dumps 569 stored in the dump directory) add the following line to /etc/rc.conf: 570 571 savecore_flags="" 572 57320121201: 574 With the addition of auditdistd(8), a new auditdistd user is now 575 required during installworld. "mergemaster -p" can be used to 576 add the user prior to installworld, as documented in the handbook. 577 57820121117: 579 The sin6_scope_id member variable in struct sockaddr_in6 is now 580 filled by the kernel before passing the structure to the userland via 581 sysctl or routing socket. This means the KAME-specific embedded scope 582 id in sin6_addr.s6_addr[2] is always cleared in userland application. 583 This behavior can be controlled by net.inet6.ip6.deembed_scopeid. 584 __FreeBSD_version is bumped to 1000025. 585 58620121105: 587 On i386 and amd64 systems WITH_CLANG_IS_CC is now the default. 588 This means that the world and kernel will be compiled with clang 589 and that clang will be installed as /usr/bin/cc, /usr/bin/c++, 590 and /usr/bin/cpp. To disable this behavior and revert to building 591 with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions 592 of current may need to bootstrap WITHOUT_CLANG first if the clang 593 build fails (its compatibility window doesn't extend to the 9 stable 594 branch point). 595 59620121102: 597 The IPFIREWALL_FORWARD kernel option has been removed. Its 598 functionality now turned on by default. 599 60020121023: 601 The ZERO_COPY_SOCKET kernel option has been removed and 602 split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP. 603 NB: SOCKET_SEND_COW uses the VM page based copy-on-write 604 mechanism which is not safe and may result in kernel crashes. 605 NB: The SOCKET_RECV_PFLIP mechanism is useless as no current 606 driver supports disposeable external page sized mbuf storage. 607 Proper replacements for both zero-copy mechanisms are under 608 consideration and will eventually lead to complete removal 609 of the two kernel options. 610 61120121023: 612 The IPv4 network stack has been converted to network byte 613 order. The following modules need to be recompiled together 614 with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4), 615 pf(4), ipfw(4), ng_ipfw(4), stf(4). 616 61720121022: 618 Support for non-MPSAFE filesystems was removed from VFS. The 619 VFS_VERSION was bumped, all filesystem modules shall be 620 recompiled. 621 62220121018: 623 All the non-MPSAFE filesystems have been disconnected from 624 the build. The full list includes: codafs, hpfs, ntfs, nwfs, 625 portalfs, smbfs, xfs. 626 62720121016: 628 The interface cloning API and ABI has changed. The following 629 modules need to be recompiled together with kernel: 630 ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4), 631 vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4), 632 faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4). 633 63420121015: 635 The sdhci driver was split in two parts: sdhci (generic SD Host 636 Controller logic) and sdhci_pci (actual hardware driver). 637 No kernel config modifications are required, but if you 638 load sdhc as a module you must switch to sdhci_pci instead. 639 64020121014: 641 Import the FUSE kernel and userland support into base system. 642 64320121013: 644 The GNU sort(1) program has been removed since the BSD-licensed 645 sort(1) has been the default for quite some time and no serious 646 problems have been reported. The corresponding WITH_GNU_SORT 647 knob has also gone. 648 64920121006: 650 The pfil(9) API/ABI for AF_INET family has been changed. Packet 651 filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled 652 with new kernel. 653 65420121001: 655 The net80211(4) ABI has been changed to allow for improved driver 656 PS-POLL and power-save support. All wireless drivers need to be 657 recompiled to work with the new kernel. 658 65920120913: 660 The random(4) support for the VIA hardware random number 661 generator (`PADLOCK') is no longer enabled unconditionally. 662 Add the padlock_rng device in the custom kernel config if 663 needed. The GENERIC kernels on i386 and amd64 do include the 664 device, so the change only affects the custom kernel 665 configurations. 666 66720120908: 668 The pf(4) packet filter ABI has been changed. pfctl(8) and 669 snmp_pf module need to be recompiled to work with new kernel. 670 67120120828: 672 A new ZFS feature flag "com.delphix:empty_bpobj" has been merged 673 to -HEAD. Pools that have empty_bpobj in active state can not be 674 imported read-write with ZFS implementations that do not support 675 this feature. For more information read the zpool-features(5) 676 manual page. 677 67820120727: 679 The sparc64 ZFS loader has been changed to no longer try to auto- 680 detect ZFS providers based on diskN aliases but now requires these 681 to be explicitly listed in the OFW boot-device environment variable. 682 68320120712: 684 The OpenSSL has been upgraded to 1.0.1c. Any binaries requiring 685 libcrypto.so.6 or libssl.so.6 must be recompiled. Also, there are 686 configuration changes. Make sure to merge /etc/ssl/openssl.cnf. 687 68820120712: 689 The following sysctls and tunables have been renamed for consistency 690 with other variables: 691 kern.cam.da.da_send_ordered -> kern.cam.da.send_ordered 692 kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered 693 69420120628: 695 The sort utility has been replaced with BSD sort. For now, GNU sort 696 is also available as "gnusort" or the default can be set back to 697 GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be 698 installed as "bsdsort". 699 70020120611: 701 A new version of ZFS (pool version 5000) has been merged to -HEAD. 702 Starting with this version the old system of ZFS pool versioning 703 is superseded by "feature flags". This concept enables forward 704 compatibility against certain future changes in functionality of ZFS 705 pools. The first read-only compatible "feature flag" for ZFS pools 706 is named "com.delphix:async_destroy". For more information 707 read the new zpool-features(5) manual page. 708 Please refer to the "ZFS notes" section of this file for information 709 on upgrading boot ZFS pools. 710 71120120417: 712 The malloc(3) implementation embedded in libc now uses sources imported 713 as contrib/jemalloc. The most disruptive API change is to 714 /etc/malloc.conf. If your system has an old-style /etc/malloc.conf, 715 delete it prior to installworld, and optionally re-create it using the 716 new format after rebooting. See malloc.conf(5) for details 717 (specifically the TUNING section and the "opt.*" entries in the MALLCTL 718 NAMESPACE section). 719 72020120328: 721 Big-endian MIPS TARGET_ARCH values no longer end in "eb". mips64eb 722 is now spelled mips64. mipsn32eb is now spelled mipsn32. mipseb is 723 now spelled mips. This is to aid compatibility with third-party 724 software that expects this naming scheme in uname(3). Little-endian 725 settings are unchanged. If you are updating a big-endian mips64 machine 726 from before this change, you may need to set MACHINE_ARCH=mips64 in 727 your environment before the new build system will recognize your machine. 728 72920120306: 730 Disable by default the option VFS_ALLOW_NONMPSAFE for all supported 731 platforms. 732 73320120229: 734 Now unix domain sockets behave "as expected" on nullfs(5). Previously 735 nullfs(5) did not pass through all behaviours to the underlying layer, 736 as a result if we bound to a socket on the lower layer we could connect 737 only to the lower path; if we bound to the upper layer we could connect 738 only to the upper path. The new behavior is one can connect to both the 739 lower and the upper paths regardless what layer path one binds to. 740 74120120211: 742 The getifaddrs upgrade path broken with 20111215 has been restored. 743 If you have upgraded in between 20111215 and 20120209 you need to 744 recompile libc again with your kernel. You still need to recompile 745 world to be able to configure CARP but this restriction already 746 comes from 20111215. 747 74820120114: 749 The set_rcvar() function has been removed from /etc/rc.subr. All 750 base and ports rc.d scripts have been updated, so if you have a 751 port installed with a script in /usr/local/etc/rc.d you can either 752 hand-edit the rcvar= line, or reinstall the port. 753 754 An easy way to handle the mass-update of /etc/rc.d: 755 rm /etc/rc.d/* && mergemaster -i 756 75720120109: 758 panic(9) now stops other CPUs in the SMP systems, disables interrupts 759 on the current CPU and prevents other threads from running. 760 This behavior can be reverted using the kern.stop_scheduler_on_panic 761 tunable/sysctl. 762 The new behavior can be incompatible with kern.sync_on_panic. 763 76420111215: 765 The carp(4) facility has been changed significantly. Configuration 766 of the CARP protocol via ifconfig(8) has changed, as well as format 767 of CARP events submitted to devd(8) has changed. See manual pages 768 for more information. The arpbalance feature of carp(4) is currently 769 not supported anymore. 770 771 Size of struct in_aliasreq, struct in6_aliasreq has changed. User 772 utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8), 773 need to be recompiled. 774 77520111122: 776 The acpi_wmi(4) status device /dev/wmistat has been renamed to 777 /dev/wmistat0. 778 77920111108: 780 The option VFS_ALLOW_NONMPSAFE option has been added in order to 781 explicitely support non-MPSAFE filesystems. 782 It is on by default for all supported platform at this present 783 time. 784 78520111101: 786 The broken amd(4) driver has been replaced with esp(4) in the amd64, 787 i386 and pc98 GENERIC kernel configuration files. 788 78920110930: 790 sysinstall has been removed 791 79220110923: 793 The stable/9 branch created in subversion. This corresponds to the 794 RELENG_9 branch in CVS. 795 796COMMON ITEMS: 797 798 General Notes 799 ------------- 800 Avoid using make -j when upgrading. While generally safe, there are 801 sometimes problems using -j to upgrade. If your upgrade fails with 802 -j, please try again without -j. From time to time in the past there 803 have been problems using -j with buildworld and/or installworld. This 804 is especially true when upgrading between "distant" versions (eg one 805 that cross a major release boundary or several minor releases, or when 806 several months have passed on the -current branch). 807 808 Sometimes, obscure build problems are the result of environment 809 poisoning. This can happen because the make utility reads its 810 environment when searching for values for global variables. To run 811 your build attempts in an "environmental clean room", prefix all make 812 commands with 'env -i '. See the env(1) manual page for more details. 813 814 When upgrading from one major version to another it is generally best 815 to upgrade to the latest code in the currently installed branch first, 816 then do an upgrade to the new branch. This is the best-tested upgrade 817 path, and has the highest probability of being successful. Please try 818 this approach before reporting problems with a major version upgrade. 819 820 When upgrading a live system, having a root shell around before 821 installing anything can help undo problems. Not having a root shell 822 around can lead to problems if pam has changed too much from your 823 starting point to allow continued authentication after the upgrade. 824 825 ZFS notes 826 --------- 827 When upgrading the boot ZFS pool to a new version, always follow 828 these two steps: 829 830 1.) recompile and reinstall the ZFS boot loader and boot block 831 (this is part of "make buildworld" and "make installworld") 832 833 2.) update the ZFS boot block on your boot drive 834 835 The following example updates the ZFS boot block on the first 836 partition (freebsd-boot) of a GPT partitioned drive ad0: 837 "gpart bootcode -p /boot/gptzfsboot -i 1 ad0" 838 839 Non-boot pools do not need these updates. 840 841 To build a kernel 842 ----------------- 843 If you are updating from a prior version of FreeBSD (even one just 844 a few days old), you should follow this procedure. It is the most 845 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 846 847 make kernel-toolchain 848 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 849 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 850 851 To test a kernel once 852 --------------------- 853 If you just want to boot a kernel once (because you are not sure 854 if it works, or if you want to boot a known bad kernel to provide 855 debugging information) run 856 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 857 nextboot -k testkernel 858 859 To just build a kernel when you know that it won't mess you up 860 -------------------------------------------------------------- 861 This assumes you are already running a CURRENT system. Replace 862 ${arch} with the architecture of your machine (e.g. "i386", 863 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 864 865 cd src/sys/${arch}/conf 866 config KERNEL_NAME_HERE 867 cd ../compile/KERNEL_NAME_HERE 868 make depend 869 make 870 make install 871 872 If this fails, go to the "To build a kernel" section. 873 874 To rebuild everything and install it on the current system. 875 ----------------------------------------------------------- 876 # Note: sometimes if you are running current you gotta do more than 877 # is listed here if you are upgrading from a really old current. 878 879 <make sure you have good level 0 dumps> 880 make buildworld 881 make kernel KERNCONF=YOUR_KERNEL_HERE 882 [1] 883 <reboot in single user> [3] 884 mergemaster -Fp [5] 885 make installworld 886 mergemaster -Fi [4] 887 make delete-old [6] 888 <reboot> 889 890 To cross-install current onto a separate partition 891 -------------------------------------------------- 892 # In this approach we use a separate partition to hold 893 # current's root, 'usr', and 'var' directories. A partition 894 # holding "/", "/usr" and "/var" should be about 2GB in 895 # size. 896 897 <make sure you have good level 0 dumps> 898 <boot into -stable> 899 make buildworld 900 make buildkernel KERNCONF=YOUR_KERNEL_HERE 901 <maybe newfs current's root partition> 902 <mount current's root partition on directory ${CURRENT_ROOT}> 903 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 904 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 905 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 906 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 907 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 908 <reboot into current> 909 <do a "native" rebuild/install as described in the previous section> 910 <maybe install compatibility libraries from ports/misc/compat*> 911 <reboot> 912 913 914 To upgrade in-place from stable to current 915 ---------------------------------------------- 916 <make sure you have good level 0 dumps> 917 make buildworld [9] 918 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 919 [1] 920 <reboot in single user> [3] 921 mergemaster -Fp [5] 922 make installworld 923 mergemaster -Fi [4] 924 make delete-old [6] 925 <reboot> 926 927 Make sure that you've read the UPDATING file to understand the 928 tweaks to various things you need. At this point in the life 929 cycle of current, things change often and you are on your own 930 to cope. The defaults can also change, so please read ALL of 931 the UPDATING entries. 932 933 Also, if you are tracking -current, you must be subscribed to 934 freebsd-current@freebsd.org. Make sure that before you update 935 your sources that you have read and understood all the recent 936 messages there. If in doubt, please track -stable which has 937 much fewer pitfalls. 938 939 [1] If you have third party modules, such as vmware, you 940 should disable them at this point so they don't crash your 941 system on reboot. 942 943 [3] From the bootblocks, boot -s, and then do 944 fsck -p 945 mount -u / 946 mount -a 947 cd src 948 adjkerntz -i # if CMOS is wall time 949 Also, when doing a major release upgrade, it is required that 950 you boot into single user mode to do the installworld. 951 952 [4] Note: This step is non-optional. Failure to do this step 953 can result in a significant reduction in the functionality of the 954 system. Attempting to do it by hand is not recommended and those 955 that pursue this avenue should read this file carefully, as well 956 as the archives of freebsd-current and freebsd-hackers mailing lists 957 for potential gotchas. The -U option is also useful to consider. 958 See mergemaster(8) for more information. 959 960 [5] Usually this step is a noop. However, from time to time 961 you may need to do this if you get unknown user in the following 962 step. It never hurts to do it all the time. You may need to 963 install a new mergemaster (cd src/usr.sbin/mergemaster && make 964 install) after the buildworld before this step if you last updated 965 from current before 20130425 or from -stable before 20130430. 966 967 [6] This only deletes old files and directories. Old libraries 968 can be deleted by "make delete-old-libs", but you have to make 969 sure that no program is using those libraries anymore. 970 971 [8] In order to have a kernel that can run the 4.x binaries needed to 972 do an installworld, you must include the COMPAT_FREEBSD4 option in 973 your kernel. Failure to do so may leave you with a system that is 974 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 975 required to run the 5.x binaries on more recent kernels. And so on 976 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 977 978 Make sure that you merge any new devices from GENERIC since the 979 last time you updated your kernel config file. 980 981 [9] When checking out sources, you must include the -P flag to have 982 cvs prune empty directories. 983 984 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 985 "?=" instead of the "=" assignment operator, so that buildworld can 986 override the CPUTYPE if it needs to. 987 988 MAKEOBJDIRPREFIX must be defined in an environment variable, and 989 not on the command line, or in /etc/make.conf. buildworld will 990 warn if it is improperly defined. 991FORMAT: 992 993This file contains a list, in reverse chronological order, of major 994breakages in tracking -current. It is not guaranteed to be a complete 995list of such breakages, and only contains entries since October 10, 2007. 996If you need to see UPDATING entries from before that date, you will need 997to fetch an UPDATING file from an older FreeBSD release. 998 999Copyright information: 1000 1001Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1002 1003Redistribution, publication, translation and use, with or without 1004modification, in full or in part, in any form or format of this 1005document are permitted without further permission from the author. 1006 1007THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1008IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1009WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1010DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1011INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1012(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1013SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1014HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1015STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1016IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1017POSSIBILITY OF SUCH DAMAGE. 1018 1019Contact Warner Losh if you have any questions about your use of 1020this document. 1021 1022$FreeBSD$ 1023