UPDATING revision 286596
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 3420150810: 35 The polarity of Pulse Per Second (PPS) capture events with the 36 uart(4) driver has been corrected. Prior to this change the PPS 37 "assert" event corresponded to the trailing edge of a positive PPS 38 pulse and the "clear" event was the leading edge of the next pulse. 39 40 As the width of a PPS pulse in a typical GPS receiver is on the 41 order of 1 millisecond, most users will not notice any significant 42 difference with this change. 43 44 Anyone who has compensated for the historical polarity reversal by 45 configuring a negative offset equal to the pulse width will need to 46 remove that workaround. 47 4820150809: 49 The default group assigned to /dev/dri entries has been changed 50 from 'wheel' to 'video' with the id of '44'. If you want to have 51 access to the dri devices please add yourself to the video group 52 with: 53 54 # pw groupmod video -m $USER 55 5620150806: 57 The menu.rc and loader.rc files will now be replaced during 58 upgrades. Please migrate local changes to menu.rc.local and 59 loader.rc.local instead. 60 6120150805: 62 GNU Binutils versions of addr2line, c++filt, nm, readelf, size, 63 strings and strip have been removed. The src.conf(5) knob 64 WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools. 65 6620150728: 67 As ZFS requires more kernel stack pages than is the default on some 68 architectures e.g. i386, it now warns if KSTACK_PAGES is less than 69 ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing). 70 71 Please consider using 'options KSTACK_PAGES=X' where X is greater 72 than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations. 73 7420150706: 75 sendmail has been updated to 8.15.2. Starting with FreeBSD 11.0 76 and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by 77 default, i.e., they will not contain "::". For example, instead 78 of ::1, it will be 0:0:0:0:0:0:0:1. This permits a zero subnet 79 to have a more specific match, such as different map entries for 80 IPv6:0:0 vs IPv6:0. This change requires that configuration 81 data (including maps, files, classes, custom ruleset, etc.) must 82 use the same format, so make certain such configuration data is 83 upgrading. As a very simple check search for patterns like 84 'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'. To return to the old 85 behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or 86 the cf option UseCompressedIPv6Addresses. 87 8820150630: 89 The default kernel entropy-processing algorithm is now 90 Fortuna, replacing Yarrow. 91 92 Assuming you have 'device random' in your kernel config 93 file, the configurations allow a kernel option to override 94 this default. You may choose *ONE* of: 95 96 options RANDOM_YARROW # Legacy /dev/random algorithm. 97 options RANDOM_DUMMY # Blocking-only driver. 98 99 If you have neither, you get Fortuna. For most people, 100 read no further, Fortuna will give a /dev/random that works 101 like it always used to, and the difference will be irrelevant. 102 103 If you remove 'device random', you get *NO* kernel-processed 104 entopy at all. This may be acceptable to folks building 105 embedded systems, but has complications. Carry on reading, 106 and it is assumed you know what you need. 107 108 *PLEASE* read random(4) and random(9) if you are in the 109 habit of tweeking kernel configs, and/or if you are a member 110 of the embedded community, wanting specific and not-usual 111 behaviour from your security subsystems. 112 113 NOTE!! If you use RANDOM_DUMMY and/or have no 'device 114 random', you will NOT have a functioning /dev/random, and 115 many cryptographic features will not work, including SSH. 116 You may also find strange behaviour from the random(3) set 117 of library functions, in particular sranddev(3), srandomdev(3) 118 and arc4random(3). The reason for this is that the KERN_ARND 119 sysctl only returns entropy if it thinks it has some to 120 share, and with RANDOM_DUMMY or no 'device random' this 121 will never happen. 122 12320150623: 124 An additional fix for the issue described in the 20150614 sendmail 125 entry below has been been committed in revision 284717. 126 12720150616: 128 FreeBSD's old make (fmake) has been removed from the system. It is 129 available as the devel/fmake port or via pkg install fmake. 130 13120150615: 132 The fix for the issue described in the 20150614 sendmail entry 133 below has been been committed in revision 284436. The work 134 around described in that entry is no longer needed unless the 135 default setting is overridden by a confDH_PARAMETERS configuration 136 setting of '5' or pointing to a 512 bit DH parameter file. 137 13820150614: 139 ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from 140 atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf 141 and devel/kyua to version 0.20+ and adjust any calling code to work 142 with Kyuafile and kyua. 143 14420150614: 145 The import of openssl to address the FreeBSD-SA-15:10.openssl 146 security advisory includes a change which rejects handshakes 147 with DH parameters below 768 bits. sendmail releases prior 148 to 8.15.2 (not yet released), defaulted to a 512 bit 149 DH parameter setting for client connections. To work around 150 this interoperability, sendmail can be configured to use a 151 2048 bit DH parameter by: 152 153 1. Edit /etc/mail/`hostname`.mc 154 2. If a setting for confDH_PARAMETERS does not exist or 155 exists and is set to a string beginning with '5', 156 replace it with '2'. 157 3. If a setting for confDH_PARAMETERS exists and is set to 158 a file path, create a new file with: 159 openssl dhparam -out /path/to/file 2048 160 4. Rebuild the .cf file: 161 cd /etc/mail/; make; make install 162 5. Restart sendmail: 163 cd /etc/mail/; make restart 164 165 A sendmail patch is coming, at which time this file will be 166 updated. 167 16820150604: 169 Generation of legacy formatted entries have been disabled by default 170 in pwd_mkdb(8), as all base system consumers of the legacy formatted 171 entries were converted to use the new format by default when the new, 172 machine independent format have been added and supported since FreeBSD 173 5.x. 174 175 Please see the pwd_mkdb(8) manual page for further details. 176 17720150525: 178 Clang and llvm have been upgraded to 3.6.1 release. Please see the 179 20141231 entry below for information about prerequisites and upgrading, 180 if you are not already using 3.5.0 or higher. 181 18220150521: 183 TI platform code switched to using vendor DTS files and this update 184 may break existing systems running on Beaglebone, Beaglebone Black, 185 and Pandaboard: 186 187 - dtb files should be regenerated/reinstalled. Filenames are the 188 same but content is different now 189 - GPIO addressing was changed, now each GPIO bank (32 pins per bank) 190 has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old 191 addressing scheme is now pin 25 on /dev/gpioc3. 192 - Pandaboard: /etc/ttys should be updated, serial console device is 193 now /dev/ttyu2, not /dev/ttyu0 194 19520150501: 196 soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim. 197 If you need the GNU extension from groff soelim(1), install groff 198 from package: pkg install groff, or via ports: textproc/groff. 199 20020150423: 201 chmod, chflags, chown and chgrp now affect symlinks in -R mode as 202 defined in symlink(7); previously symlinks were silently ignored. 203 20420150415: 205 The const qualifier has been removed from iconv(3) to comply with 206 POSIX. The ports tree is aware of this from r384038 onwards. 207 20820150416: 209 Libraries specified by LIBADD in Makefiles must have a corresponding 210 DPADD_<lib> variable to ensure correct dependencies. This is now 211 enforced in src.libnames.mk. 212 21320150324: 214 From legacy ata(4) driver was removed support for SATA controllers 215 supported by more functional drivers ahci(4), siis(4) and mvs(4). 216 Kernel modules ataahci and ataadaptec were removed completely, 217 replaced by ahci and mvs modules respectively. 218 21920150315: 220 Clang, llvm and lldb have been upgraded to 3.6.0 release. Please see 221 the 20141231 entry below for information about prerequisites and 222 upgrading, if you are not already using 3.5.0 or higher. 223 22420150307: 225 The 32-bit PowerPC kernel has been changed to a position-independent 226 executable. This can only be booted with a version of loader(8) 227 newer than January 31, 2015, so make sure to update both world and 228 kernel before rebooting. 229 23020150217: 231 If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014), 232 but before r278950, the RNG was not seeded properly. Immediately 233 upgrade the kernel to r278950 or later and regenerate any keys (e.g. 234 ssh keys or openssl keys) that were generated w/ a kernel from that 235 range. This does not affect programs that directly used /dev/random 236 or /dev/urandom. All userland uses of arc4random(3) are affected. 237 23820150210: 239 The autofs(4) ABI was changed in order to restore binary compatibility 240 with 10.1-RELEASE. The automountd(8) daemon needs to be rebuilt to work 241 with the new kernel. 242 24320150131: 244 The powerpc64 kernel has been changed to a position-independent 245 executable. This can only be booted with a new version of loader(8), 246 so make sure to update both world and kernel before rebooting. 247 24820150118: 249 Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix 250 only release, no new features have been added. Please see the 20141231 251 entry below for information about prerequisites and upgrading, if you 252 are not already using 3.5.0. 253 25420150107: 255 ELF tools addr2line, elfcopy (strip), nm, size, and strings are now 256 taken from the ELF Tool Chain project rather than GNU binutils. They 257 should be drop-in replacements, with the addition of arm64 support. 258 The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the 259 binutils tools, if necessary. See 20150805 for updated information. 260 26120150105: 262 The default Unbound configuration now enables remote control 263 using a local socket. Users who have already enabled the 264 local_unbound service should regenerate their configuration 265 by running "service local_unbound setup" as root. 266 26720150102: 268 The GNU texinfo and GNU info pages have been removed. 269 To be able to view GNU info pages please install texinfo from ports. 270 27120141231: 272 Clang, llvm and lldb have been upgraded to 3.5.0 release. 273 274 As of this release, a prerequisite for building clang, llvm and lldb is 275 a C++11 capable compiler and C++11 standard library. This means that to 276 be able to successfully build the cross-tools stage of buildworld, with 277 clang as the bootstrap compiler, your system compiler or cross compiler 278 should either be clang 3.3 or later, or gcc 4.8 or later, and your 279 system C++ library should be libc++, or libdstdc++ from gcc 4.8 or 280 later. 281 282 On any standard FreeBSD 10.x or 11.x installation, where clang and 283 libc++ are on by default (that is, on x86 or arm), this should work out 284 of the box. 285 286 On 9.x installations where clang is enabled by default, e.g. on x86 and 287 powerpc, libc++ will not be enabled by default, so libc++ should be 288 built (with clang) and installed first. If both clang and libc++ are 289 missing, build clang first, then use it to build libc++. 290 291 On 8.x and earlier installations, upgrade to 9.x first, and then follow 292 the instructions for 9.x above. 293 294 Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by 295 default, and do not build clang. 296 297 Many embedded systems are resource constrained, and will not be able to 298 build clang in a reasonable time, or in some cases at all. In those 299 cases, cross building bootable systems on amd64 is a workaround. 300 301 This new version of clang introduces a number of new warnings, of which 302 the following are most likely to appear: 303 304 -Wabsolute-value 305 306 This warns in two cases, for both C and C++: 307 * When the code is trying to take the absolute value of an unsigned 308 quantity, which is effectively a no-op, and almost never what was 309 intended. The code should be fixed, if at all possible. If you are 310 sure that the unsigned quantity can be safely cast to signed, without 311 loss of information or undefined behavior, you can add an explicit 312 cast, or disable the warning. 313 314 * When the code is trying to take an absolute value, but the called 315 abs() variant is for the wrong type, which can lead to truncation. 316 If you want to disable the warning instead of fixing the code, please 317 make sure that truncation will not occur, or it might lead to unwanted 318 side-effects. 319 320 -Wtautological-undefined-compare and 321 -Wundefined-bool-conversion 322 323 These warn when C++ code is trying to compare 'this' against NULL, while 324 'this' should never be NULL in well-defined C++ code. However, there is 325 some legacy (pre C++11) code out there, which actively abuses this 326 feature, which was less strictly defined in previous C++ versions. 327 328 Squid and openjdk do this, for example. The warning can be turned off 329 for C++98 and earlier, but compiling the code in C++11 mode might result 330 in unexpected behavior; for example, the parts of the program that are 331 unreachable could be optimized away. 332 33320141222: 334 The old NFS client and server (kernel options NFSCLIENT, NFSSERVER) 335 kernel sources have been removed. The .h files remain, since some 336 utilities include them. This will need to be fixed later. 337 If "mount -t oldnfs ..." is attempted, it will fail. 338 If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used, 339 the utilities will report errors. 340 34120141121: 342 The handling of LOCAL_LIB_DIRS has been altered to skip addition of 343 directories to top level SUBDIR variable when their parent 344 directory is included in LOCAL_DIRS. Users with build systems with 345 such hierarchies and without SUBDIR entries in the parent 346 directory Makefiles should add them or add the directories to 347 LOCAL_DIRS. 348 34920141109: 350 faith(4) and faithd(8) have been removed from the base system. Faith 351 has been obsolete for a very long time. 352 35320141104: 354 vt(4), the new console driver, is enabled by default. It brings 355 support for Unicode and double-width characters, as well as 356 support for UEFI and integration with the KMS kernel video 357 drivers. 358 359 You may need to update your console settings in /etc/rc.conf, 360 most probably the keymap. During boot, /etc/rc.d/syscons will 361 indicate what you need to do. 362 363 vt(4) still has issues and lacks some features compared to 364 syscons(4). See the wiki for up-to-date information: 365 https://wiki.freebsd.org/Newcons 366 367 If you want to keep using syscons(4), you can do so by adding 368 the following line to /boot/loader.conf: 369 kern.vty=sc 370 37120141102: 372 pjdfstest has been integrated into kyua as an opt-in test suite. 373 Please see share/doc/pjdfstest/README for more details on how to 374 execute it. 375 37620141009: 377 gperf has been removed from the base system for architectures 378 that use clang. Ports that require gperf will obtain it from the 379 devel/gperf port. 380 38120140923: 382 pjdfstest has been moved from tools/regression/pjdfstest to 383 contrib/pjdfstest . 384 38520140922: 386 At svn r271982, The default linux compat kernel ABI has been adjusted 387 to 2.6.18 in support of the linux-c6 compat ports infrastructure 388 update. If you wish to continue using the linux-f10 compat ports, 389 add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are 390 encouraged to update their linux-compat packages to linux-c6 during 391 their next update cycle. 392 39320140729: 394 The ofwfb driver, used to provide a graphics console on PowerPC when 395 using vt(4), no longer allows mmap() of all physical memory. This 396 will prevent Xorg on PowerPC with some ATI graphics cards from 397 initializing properly unless x11-servers/xorg-server is updated to 398 1.12.4_8 or newer. 399 40020140723: 401 The xdev targets have been converted to using TARGET and 402 TARGET_ARCH instead of XDEV and XDEV_ARCH. 403 40420140719: 405 The default unbound configuration has been modified to address 406 issues with reverse lookups on networks that use private 407 address ranges. If you use the local_unbound service, run 408 "service local_unbound setup" as root to regenerate your 409 configuration, then "service local_unbound reload" to load the 410 new configuration. 411 41220140709: 413 The GNU texinfo and GNU info pages are not built and installed 414 anymore, WITH_INFO knob has been added to allow to built and install 415 them again. 416 UPDATE: see 20150102 entry on texinfo's removal 417 41820140708: 419 The GNU readline library is now an INTERNALLIB - that is, it is 420 statically linked into consumers (GDB and variants) in the base 421 system, and the shared library is no longer installed. The 422 devel/readline port is available for third party software that 423 requires readline. 424 42520140702: 426 The Itanium architecture (ia64) has been removed from the list of 427 known architectures. This is the first step in the removal of the 428 architecture. 429 43020140701: 431 Commit r268115 has added NFSv4.1 server support, merged from 432 projects/nfsv4.1-server. Since this includes changes to the 433 internal interfaces between the NFS related modules, a full 434 build of the kernel and modules will be necessary. 435 __FreeBSD_version has been bumped. 436 43720140629: 438 The WITHOUT_VT_SUPPORT kernel config knob has been renamed 439 WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning 440 which differs from the behaviour controlled by this knob.) 441 44220140619: 443 Maximal length of the serial number in CTL was increased from 16 to 444 64 chars, that breaks ABI. All CTL-related tools, such as ctladm 445 and ctld, need to be rebuilt to work with a new kernel. 446 44720140606: 448 The libatf-c and libatf-c++ major versions were downgraded to 0 and 449 1 respectively to match the upstream numbers. They were out of 450 sync because, when they were originally added to FreeBSD, the 451 upstream versions were not respected. These libraries are private 452 and not yet built by default, so renumbering them should be a 453 non-issue. However, unclean source trees will yield broken test 454 programs once the operator executes "make delete-old-libs" after a 455 "make installworld". 456 457 Additionally, the atf-sh binary was made private by moving it into 458 /usr/libexec/. Already-built shell test programs will keep the 459 path to the old binary so they will break after "make delete-old" 460 is run. 461 462 If you are using WITH_TESTS=yes (not the default), wipe the object 463 tree and rebuild from scratch to prevent spurious test failures. 464 This is only needed once: the misnumbered libraries and misplaced 465 binaries have been added to OptionalObsoleteFiles.inc so they will 466 be removed during a clean upgrade. 467 46820140512: 469 Clang and llvm have been upgraded to 3.4.1 release. 470 47120140508: 472 We bogusly installed src.opts.mk in /usr/share/mk. This file should 473 be removed to avoid issues in the future (and has been added to 474 ObsoleteFiles.inc). 475 47620140505: 477 /etc/src.conf now affects only builds of the FreeBSD src tree. In the 478 past, it affected all builds that used the bsd.*.mk files. The old 479 behavior was a bug, but people may have relied upon it. To get this 480 behavior back, you can .include /etc/src.conf from /etc/make.conf 481 (which is still global and isn't changed). This also changes the 482 behavior of incremental builds inside the tree of individual 483 directories. Set MAKESYSPATH to ".../share/mk" to do that. 484 Although this has survived make universe and some upgrade scenarios, 485 other upgrade scenarios may have broken. At least one form of 486 temporary breakage was fixed with MAKESYSPATH settings for buildworld 487 as well... In cases where MAKESYSPATH isn't working with this 488 setting, you'll need to set it to the full path to your tree. 489 490 One side effect of all this cleaning up is that bsd.compiler.mk 491 is no longer implicitly included by bsd.own.mk. If you wish to 492 use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk 493 as well. 494 49520140430: 496 The lindev device has been removed since /dev/full has been made a 497 standard device. __FreeBSD_version has been bumped. 498 49920140424: 500 The knob WITHOUT_VI was added to the base system, which controls 501 building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1) 502 in order to reorder files share/termcap and didn't build ex(1) as a 503 build tool, so building/installing with WITH_VI is highly advised for 504 build hosts for older releases. 505 506 This issue has been fixed in stable/9 and stable/10 in r277022 and 507 r276991, respectively. 508 50920140418: 510 The YES_HESIOD knob has been removed. It has been obsolete for 511 a decade. Please move to using WITH_HESIOD instead or your builds 512 will silently lack HESIOD. 513 51420140405: 515 The uart(4) driver has been changed with respect to its handling 516 of the low-level console. Previously the uart(4) driver prevented 517 any process from changing the baudrate or the CLOCAL and HUPCL 518 control flags. By removing the restrictions, operators can make 519 changes to the serial console port without having to reboot. 520 However, when getty(8) is started on the serial device that is 521 associated with the low-level console, a misconfigured terminal 522 line in /etc/ttys will now have a real impact. 523 Before upgrading the kernel, make sure that /etc/ttys has the 524 serial console device configured as 3wire without baudrate to 525 preserve the previous behaviour. E.g: 526 ttyu0 "/usr/libexec/getty 3wire" vt100 on secure 527 52820140306: 529 Support for libwrap (TCP wrappers) in rpcbind was disabled by default 530 to improve performance. To re-enable it, if needed, run rpcbind 531 with command line option -W. 532 53320140226: 534 Switched back to the GPL dtc compiler due to updates in the upstream 535 dts files not being supported by the BSDL dtc compiler. You will need 536 to rebuild your kernel toolchain to pick up the new compiler. Core dumps 537 may result while building dtb files during a kernel build if you fail 538 to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler. 539 54020140216: 541 Clang and llvm have been upgraded to 3.4 release. 542 54320140216: 544 The nve(4) driver has been removed. Please use the nfe(4) driver 545 for NVIDIA nForce MCP Ethernet adapters instead. 546 54720140212: 548 An ABI incompatibility crept into the libc++ 3.4 import in r261283. 549 This could cause certain C++ applications using shared libraries built 550 against the previous version of libc++ to crash. The incompatibility 551 has now been fixed, but any C++ applications or shared libraries built 552 between r261283 and r261801 should be recompiled. 553 55420140204: 555 OpenSSH will now ignore errors caused by kernel lacking of Capsicum 556 capability mode support. Please note that enabling the feature in 557 kernel is still highly recommended. 558 55920140131: 560 OpenSSH is now built with sandbox support, and will use sandbox as 561 the default privilege separation method. This requires Capsicum 562 capability mode support in kernel. 563 56420140128: 565 The libelf and libdwarf libraries have been updated to newer 566 versions from upstream. Shared library version numbers for 567 these two libraries were bumped. Any ports or binaries 568 requiring these two libraries should be recompiled. 569 __FreeBSD_version is bumped to 1100006. 570 57120140110: 572 If a Makefile in a tests/ directory was auto-generating a Kyuafile 573 instead of providing an explicit one, this would prevent such 574 Makefile from providing its own Kyuafile in the future during 575 NO_CLEAN builds. This has been fixed in the Makefiles but manual 576 intervention is needed to clean an objdir if you use NO_CLEAN: 577 # find /usr/obj -name Kyuafile | xargs rm -f 578 57920131213: 580 The behavior of gss_pseudo_random() for the krb5 mechanism 581 has changed, for applications requesting a longer random string 582 than produced by the underlying enctype's pseudo-random() function. 583 In particular, the random string produced from a session key of 584 enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will 585 be different at the 17th octet and later, after this change. 586 The counter used in the PRF+ construction is now encoded as a 587 big-endian integer in accordance with RFC 4402. 588 __FreeBSD_version is bumped to 1100004. 589 59020131108: 591 The WITHOUT_ATF build knob has been removed and its functionality 592 has been subsumed into the more generic WITHOUT_TESTS. If you were 593 using the former to disable the build of the ATF libraries, you 594 should change your settings to use the latter. 595 59620131025: 597 The default version of mtree is nmtree which is obtained from 598 NetBSD. The output is generally the same, but may vary 599 slightly. If you found you need identical output adding 600 "-F freebsd9" to the command line should do the trick. For the 601 time being, the old mtree is available as fmtree. 602 60320131014: 604 libbsdyml has been renamed to libyaml and moved to /usr/lib/private. 605 This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg 606 1.1.4_8 and verify bsdyml not linked in, before running "make 607 delete-old-libs": 608 # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean 609 or 610 # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml 611 61220131010: 613 The stable/10 branch has been created in subversion from head 614 revision r256279. 615 61620131010: 617 The rc.d/jail script has been updated to support jail(8) 618 configuration file. The "jail_<jname>_*" rc.conf(5) variables 619 for per-jail configuration are automatically converted to 620 /var/run/jail.<jname>.conf before the jail(8) utility is invoked. 621 This is transparently backward compatible. See below about some 622 incompatibilities and rc.conf(5) manual page for more details. 623 624 These variables are now deprecated in favor of jail(8) configuration 625 file. One can use "rc.d/jail config <jname>" command to generate 626 a jail(8) configuration file in /var/run/jail.<jname>.conf without 627 running the jail(8) utility. The default pathname of the 628 configuration file is /etc/jail.conf and can be specified by 629 using $jail_conf or $jail_<jname>_conf variables. 630 631 Please note that jail_devfs_ruleset accepts an integer at 632 this moment. Please consider to rewrite the ruleset name 633 with an integer. 634 63520130930: 636 BIND has been removed from the base system. If all you need 637 is a local resolver, simply enable and start the local_unbound 638 service instead. Otherwise, several versions of BIND are 639 available in the ports tree. The dns/bind99 port is one example. 640 641 With this change, nslookup(1) and dig(1) are no longer in the base 642 system. Users should instead use host(1) and drill(1) which are 643 in the base system. Alternatively, nslookup and dig can 644 be obtained by installing the dns/bind-tools port. 645 64620130916: 647 With the addition of unbound(8), a new unbound user is now 648 required during installworld. "mergemaster -p" can be used to 649 add the user prior to installworld, as documented in the handbook. 650 65120130911: 652 OpenSSH is now built with DNSSEC support, and will by default 653 silently trust signed SSHFP records. This can be controlled with 654 the VerifyHostKeyDNS client configuration setting. DNSSEC support 655 can be disabled entirely with the WITHOUT_LDNS option in src.conf. 656 65720130906: 658 The GNU Compiler Collection and C++ standard library (libstdc++) 659 are no longer built by default on platforms where clang is the system 660 compiler. You can enable them with the WITH_GCC and WITH_GNUCXX 661 options in src.conf. 662 66320130905: 664 The PROCDESC kernel option is now part of the GENERIC kernel 665 configuration and is required for the rwhod(8) to work. 666 If you are using custom kernel configuration, you should include 667 'options PROCDESC'. 668 66920130905: 670 The API and ABI related to the Capsicum framework was modified 671 in backward incompatible way. The userland libraries and programs 672 have to be recompiled to work with the new kernel. This includes the 673 following libraries and programs, but the whole buildworld is 674 advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl, 675 kdump, procstat, rwho, rwhod, uniq. 676 67720130903: 678 AES-NI intrinsic support has been added to gcc. The AES-NI module 679 has been updated to use this support. A new gcc is required to build 680 the aesni module on both i386 and amd64. 681 68220130821: 683 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. 684 Thus "device padlock_rng" and "device rdrand_rng" should be 685 used instead of "options PADLOCK_RNG" & "options RDRAND_RNG". 686 68720130813: 688 WITH_ICONV has been split into two feature sets. WITH_ICONV now 689 enables just the iconv* functionality and is now on by default. 690 WITH_LIBICONV_COMPAT enables the libiconv api and link time 691 compatability. Set WITHOUT_ICONV to build the old way. 692 If you have been using WITH_ICONV before, you will very likely 693 need to turn on WITH_LIBICONV_COMPAT. 694 69520130806: 696 INVARIANTS option now enables DEBUG for code with OpenSolaris and 697 Illumos origin, including ZFS. If you have INVARIANTS in your 698 kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG 699 explicitly. 700 DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS) 701 locks if WITNESS option was set. Because that generated a lot of 702 witness(9) reports and all of them were believed to be false 703 positives, this is no longer done. New option OPENSOLARIS_WITNESS 704 can be used to achieve the previous behavior. 705 70620130806: 707 Timer values in IPv6 data structures now use time_uptime instead 708 of time_second. Although this is not a user-visible functional 709 change, userland utilities which directly use them---ndp(8), 710 rtadvd(8), and rtsold(8) in the base system---need to be updated 711 to r253970 or later. 712 71320130802: 714 find -delete can now delete the pathnames given as arguments, 715 instead of only files found below them or if the pathname did 716 not contain any slashes. Formerly, the following error message 717 would result: 718 719 find: -delete: <path>: relative path potentially not safe 720 721 Deleting the pathnames given as arguments can be prevented 722 without error messages using -mindepth 1 or by changing 723 directory and passing "." as argument to find. This works in the 724 old as well as the new version of find. 725 72620130726: 727 Behavior of devfs rules path matching has been changed. 728 Pattern is now always matched against fully qualified devfs 729 path and slash characters must be explicitly matched by 730 slashes in pattern (FNM_PATHNAME). Rulesets involving devfs 731 subdirectories must be reviewed. 732 73320130716: 734 The default ARM ABI has changed to the ARM EABI. The old ABI is 735 incompatible with the ARM EABI and all programs and modules will 736 need to be rebuilt to work with a new kernel. 737 738 To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set. 739 740 NOTE: Support for the old ABI will be removed in the future and 741 users are advised to upgrade. 742 74320130709: 744 pkg_install has been disconnected from the build if you really need it 745 you should add WITH_PKGTOOLS in your src.conf(5). 746 74720130709: 748 Most of network statistics structures were changed to be able 749 keep 64-bits counters. Thus all tools, that work with networking 750 statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.) 751 75220130629: 753 Fix targets that run multiple make's to use && rather than ; 754 so that subsequent steps depend on success of previous. 755 756 NOTE: if building 'universe' with -j* on stable/8 or stable/9 757 it would be better to start the build using bmake, to avoid 758 overloading the machine. 759 76020130618: 761 Fix a bug that allowed a tracing process (e.g. gdb) to write 762 to a memory-mapped file in the traced process's address space 763 even if neither the traced process nor the tracing process had 764 write access to that file. 765 76620130615: 767 CVS has been removed from the base system. An exact copy 768 of the code is available from the devel/cvs port. 769 77020130613: 771 Some people report the following error after the switch to bmake: 772 773 make: illegal option -- J 774 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable] 775 ... 776 *** [buildworld] Error code 2 777 778 this likely due to an old instance of make in 779 ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}) 780 which src/Makefile will use that blindly, if it exists, so if 781 you see the above error: 782 783 rm -rf `make -V MAKEPATH` 784 785 should resolve it. 786 78720130516: 788 Use bmake by default. 789 Whereas before one could choose to build with bmake via 790 -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old 791 make. The goal is to remove these knobs for 10-RELEASE. 792 793 It is worth noting that bmake (like gmake) treats the command 794 line as the unit of failure, rather than statements within the 795 command line. Thus '(cd some/where && dosomething)' is safer 796 than 'cd some/where; dosomething'. The '()' allows consistent 797 behavior in parallel build. 798 79920130429: 800 Fix a bug that allows NFS clients to issue READDIR on files. 801 80220130426: 803 The WITHOUT_IDEA option has been removed because 804 the IDEA patent expired. 805 80620130426: 807 The sysctl which controls TRIM support under ZFS has been renamed 808 from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been 809 enabled by default. 810 81120130425: 812 The mergemaster command now uses the default MAKEOBJDIRPREFIX 813 rather than creating it's own in the temporary directory in 814 order allow access to bootstrapped versions of tools such as 815 install and mtree. When upgrading from version of FreeBSD where 816 the install command does not support -l, you will need to 817 install a new mergemaster command if mergemaster -p is required. 818 This can be accomplished with the command (cd src/usr.sbin/mergemaster 819 && make install). 820 82120130404: 822 Legacy ATA stack, disabled and replaced by new CAM-based one since 823 FreeBSD 9.0, completely removed from the sources. Kernel modules 824 atadisk and atapi*, user-level tools atacontrol and burncd are 825 removed. Kernel option `options ATA_CAM` is now permanently enabled 826 and removed. 827 82820130319: 829 SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2) 830 and socketpair(2). Software, in particular Kerberos, may 831 automatically detect and use these during building. The resulting 832 binaries will not work on older kernels. 833 83420130308: 835 CTL_DISABLE has also been added to the sparc64 GENERIC (for further 836 information, see the respective 20130304 entry). 837 83820130304: 839 Recent commits to callout(9) changed the size of struct callout, 840 so the KBI is probably heavily disturbed. Also, some functions 841 in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced 842 by macros. Every kernel module using it won't load, so rebuild 843 is requested. 844 845 The ctl device has been re-enabled in GENERIC for i386 and amd64, 846 but does not initialize by default (because of the new CTL_DISABLE 847 option) to save memory. To re-enable it, remove the CTL_DISABLE 848 option from the kernel config file or set kern.cam.ctl.disable=0 849 in /boot/loader.conf. 850 85120130301: 852 The ctl device has been disabled in GENERIC for i386 and amd64. 853 This was done due to the extra memory being allocated at system 854 initialisation time by the ctl driver which was only used if 855 a CAM target device was created. This makes a FreeBSD system 856 unusable on 128MB or less of RAM. 857 85820130208: 859 A new compression method (lz4) has been merged to -HEAD. Please 860 refer to zpool-features(7) for more information. 861 862 Please refer to the "ZFS notes" section of this file for information 863 on upgrading boot ZFS pools. 864 86520130129: 866 A BSD-licensed patch(1) variant has been added and is installed 867 as bsdpatch, being the GNU version the default patch. 868 To inverse the logic and use the BSD-licensed one as default, 869 while having the GNU version installed as gnupatch, rebuild 870 and install world with the WITH_BSD_PATCH knob set. 871 87220130121: 873 Due to the use of the new -l option to install(1) during build 874 and install, you must take care not to directly set the INSTALL 875 make variable in your /etc/make.conf, /etc/src.conf, or on the 876 command line. If you wish to use the -C flag for all installs 877 you may be able to add INSTALL+=-C to /etc/make.conf or 878 /etc/src.conf. 879 88020130118: 881 The install(1) option -M has changed meaning and now takes an 882 argument that is a file or path to append logs to. In the 883 unlikely event that -M was the last option on the command line 884 and the command line contained at least two files and a target 885 directory the first file will have logs appended to it. The -M 886 option served little practical purpose in the last decade so its 887 use is expected to be extremely rare. 888 88920121223: 890 After switching to Clang as the default compiler some users of ZFS 891 on i386 systems started to experience stack overflow kernel panics. 892 Please consider using 'options KSTACK_PAGES=4' in such configurations. 893 89420121222: 895 GEOM_LABEL now mangles label names read from file system metadata. 896 Mangling affect labels containing spaces, non-printable characters, 897 '%' or '"'. Device names in /etc/fstab and other places may need to 898 be updated. 899 90020121217: 901 By default, only the 10 most recent kernel dumps will be saved. To 902 restore the previous behaviour (no limit on the number of kernel dumps 903 stored in the dump directory) add the following line to /etc/rc.conf: 904 905 savecore_flags="" 906 90720121201: 908 With the addition of auditdistd(8), a new auditdistd user is now 909 required during installworld. "mergemaster -p" can be used to 910 add the user prior to installworld, as documented in the handbook. 911 91220121117: 913 The sin6_scope_id member variable in struct sockaddr_in6 is now 914 filled by the kernel before passing the structure to the userland via 915 sysctl or routing socket. This means the KAME-specific embedded scope 916 id in sin6_addr.s6_addr[2] is always cleared in userland application. 917 This behavior can be controlled by net.inet6.ip6.deembed_scopeid. 918 __FreeBSD_version is bumped to 1000025. 919 92020121105: 921 On i386 and amd64 systems WITH_CLANG_IS_CC is now the default. 922 This means that the world and kernel will be compiled with clang 923 and that clang will be installed as /usr/bin/cc, /usr/bin/c++, 924 and /usr/bin/cpp. To disable this behavior and revert to building 925 with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions 926 of current may need to bootstrap WITHOUT_CLANG first if the clang 927 build fails (its compatibility window doesn't extend to the 9 stable 928 branch point). 929 93020121102: 931 The IPFIREWALL_FORWARD kernel option has been removed. Its 932 functionality now turned on by default. 933 93420121023: 935 The ZERO_COPY_SOCKET kernel option has been removed and 936 split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP. 937 NB: SOCKET_SEND_COW uses the VM page based copy-on-write 938 mechanism which is not safe and may result in kernel crashes. 939 NB: The SOCKET_RECV_PFLIP mechanism is useless as no current 940 driver supports disposeable external page sized mbuf storage. 941 Proper replacements for both zero-copy mechanisms are under 942 consideration and will eventually lead to complete removal 943 of the two kernel options. 944 94520121023: 946 The IPv4 network stack has been converted to network byte 947 order. The following modules need to be recompiled together 948 with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4), 949 pf(4), ipfw(4), ng_ipfw(4), stf(4). 950 95120121022: 952 Support for non-MPSAFE filesystems was removed from VFS. The 953 VFS_VERSION was bumped, all filesystem modules shall be 954 recompiled. 955 95620121018: 957 All the non-MPSAFE filesystems have been disconnected from 958 the build. The full list includes: codafs, hpfs, ntfs, nwfs, 959 portalfs, smbfs, xfs. 960 96120121016: 962 The interface cloning API and ABI has changed. The following 963 modules need to be recompiled together with kernel: 964 ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4), 965 vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4), 966 faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4). 967 96820121015: 969 The sdhci driver was split in two parts: sdhci (generic SD Host 970 Controller logic) and sdhci_pci (actual hardware driver). 971 No kernel config modifications are required, but if you 972 load sdhc as a module you must switch to sdhci_pci instead. 973 97420121014: 975 Import the FUSE kernel and userland support into base system. 976 97720121013: 978 The GNU sort(1) program has been removed since the BSD-licensed 979 sort(1) has been the default for quite some time and no serious 980 problems have been reported. The corresponding WITH_GNU_SORT 981 knob has also gone. 982 98320121006: 984 The pfil(9) API/ABI for AF_INET family has been changed. Packet 985 filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled 986 with new kernel. 987 98820121001: 989 The net80211(4) ABI has been changed to allow for improved driver 990 PS-POLL and power-save support. All wireless drivers need to be 991 recompiled to work with the new kernel. 992 99320120913: 994 The random(4) support for the VIA hardware random number 995 generator (`PADLOCK') is no longer enabled unconditionally. 996 Add the padlock_rng device in the custom kernel config if 997 needed. The GENERIC kernels on i386 and amd64 do include the 998 device, so the change only affects the custom kernel 999 configurations. 1000 100120120908: 1002 The pf(4) packet filter ABI has been changed. pfctl(8) and 1003 snmp_pf module need to be recompiled to work with new kernel. 1004 100520120828: 1006 A new ZFS feature flag "com.delphix:empty_bpobj" has been merged 1007 to -HEAD. Pools that have empty_bpobj in active state can not be 1008 imported read-write with ZFS implementations that do not support 1009 this feature. For more information read the zpool-features(5) 1010 manual page. 1011 101220120727: 1013 The sparc64 ZFS loader has been changed to no longer try to auto- 1014 detect ZFS providers based on diskN aliases but now requires these 1015 to be explicitly listed in the OFW boot-device environment variable. 1016 101720120712: 1018 The OpenSSL has been upgraded to 1.0.1c. Any binaries requiring 1019 libcrypto.so.6 or libssl.so.6 must be recompiled. Also, there are 1020 configuration changes. Make sure to merge /etc/ssl/openssl.cnf. 1021 102220120712: 1023 The following sysctls and tunables have been renamed for consistency 1024 with other variables: 1025 kern.cam.da.da_send_ordered -> kern.cam.da.send_ordered 1026 kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered 1027 102820120628: 1029 The sort utility has been replaced with BSD sort. For now, GNU sort 1030 is also available as "gnusort" or the default can be set back to 1031 GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be 1032 installed as "bsdsort". 1033 103420120611: 1035 A new version of ZFS (pool version 5000) has been merged to -HEAD. 1036 Starting with this version the old system of ZFS pool versioning 1037 is superseded by "feature flags". This concept enables forward 1038 compatibility against certain future changes in functionality of ZFS 1039 pools. The first read-only compatible "feature flag" for ZFS pools 1040 is named "com.delphix:async_destroy". For more information 1041 read the new zpool-features(5) manual page. 1042 Please refer to the "ZFS notes" section of this file for information 1043 on upgrading boot ZFS pools. 1044 104520120417: 1046 The malloc(3) implementation embedded in libc now uses sources imported 1047 as contrib/jemalloc. The most disruptive API change is to 1048 /etc/malloc.conf. If your system has an old-style /etc/malloc.conf, 1049 delete it prior to installworld, and optionally re-create it using the 1050 new format after rebooting. See malloc.conf(5) for details 1051 (specifically the TUNING section and the "opt.*" entries in the MALLCTL 1052 NAMESPACE section). 1053 105420120328: 1055 Big-endian MIPS TARGET_ARCH values no longer end in "eb". mips64eb 1056 is now spelled mips64. mipsn32eb is now spelled mipsn32. mipseb is 1057 now spelled mips. This is to aid compatibility with third-party 1058 software that expects this naming scheme in uname(3). Little-endian 1059 settings are unchanged. If you are updating a big-endian mips64 machine 1060 from before this change, you may need to set MACHINE_ARCH=mips64 in 1061 your environment before the new build system will recognize your machine. 1062 106320120306: 1064 Disable by default the option VFS_ALLOW_NONMPSAFE for all supported 1065 platforms. 1066 106720120229: 1068 Now unix domain sockets behave "as expected" on nullfs(5). Previously 1069 nullfs(5) did not pass through all behaviours to the underlying layer, 1070 as a result if we bound to a socket on the lower layer we could connect 1071 only to the lower path; if we bound to the upper layer we could connect 1072 only to the upper path. The new behavior is one can connect to both the 1073 lower and the upper paths regardless what layer path one binds to. 1074 107520120211: 1076 The getifaddrs upgrade path broken with 20111215 has been restored. 1077 If you have upgraded in between 20111215 and 20120209 you need to 1078 recompile libc again with your kernel. You still need to recompile 1079 world to be able to configure CARP but this restriction already 1080 comes from 20111215. 1081 108220120114: 1083 The set_rcvar() function has been removed from /etc/rc.subr. All 1084 base and ports rc.d scripts have been updated, so if you have a 1085 port installed with a script in /usr/local/etc/rc.d you can either 1086 hand-edit the rcvar= line, or reinstall the port. 1087 1088 An easy way to handle the mass-update of /etc/rc.d: 1089 rm /etc/rc.d/* && mergemaster -i 1090 109120120109: 1092 panic(9) now stops other CPUs in the SMP systems, disables interrupts 1093 on the current CPU and prevents other threads from running. 1094 This behavior can be reverted using the kern.stop_scheduler_on_panic 1095 tunable/sysctl. 1096 The new behavior can be incompatible with kern.sync_on_panic. 1097 109820111215: 1099 The carp(4) facility has been changed significantly. Configuration 1100 of the CARP protocol via ifconfig(8) has changed, as well as format 1101 of CARP events submitted to devd(8) has changed. See manual pages 1102 for more information. The arpbalance feature of carp(4) is currently 1103 not supported anymore. 1104 1105 Size of struct in_aliasreq, struct in6_aliasreq has changed. User 1106 utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8), 1107 need to be recompiled. 1108 110920111122: 1110 The acpi_wmi(4) status device /dev/wmistat has been renamed to 1111 /dev/wmistat0. 1112 111320111108: 1114 The option VFS_ALLOW_NONMPSAFE option has been added in order to 1115 explicitely support non-MPSAFE filesystems. 1116 It is on by default for all supported platform at this present 1117 time. 1118 111920111101: 1120 The broken amd(4) driver has been replaced with esp(4) in the amd64, 1121 i386 and pc98 GENERIC kernel configuration files. 1122 112320110930: 1124 sysinstall has been removed 1125 112620110923: 1127 The stable/9 branch created in subversion. This corresponds to the 1128 RELENG_9 branch in CVS. 1129 1130COMMON ITEMS: 1131 1132 General Notes 1133 ------------- 1134 Avoid using make -j when upgrading. While generally safe, there are 1135 sometimes problems using -j to upgrade. If your upgrade fails with 1136 -j, please try again without -j. From time to time in the past there 1137 have been problems using -j with buildworld and/or installworld. This 1138 is especially true when upgrading between "distant" versions (eg one 1139 that cross a major release boundary or several minor releases, or when 1140 several months have passed on the -current branch). 1141 1142 Sometimes, obscure build problems are the result of environment 1143 poisoning. This can happen because the make utility reads its 1144 environment when searching for values for global variables. To run 1145 your build attempts in an "environmental clean room", prefix all make 1146 commands with 'env -i '. See the env(1) manual page for more details. 1147 1148 When upgrading from one major version to another it is generally best 1149 to upgrade to the latest code in the currently installed branch first, 1150 then do an upgrade to the new branch. This is the best-tested upgrade 1151 path, and has the highest probability of being successful. Please try 1152 this approach before reporting problems with a major version upgrade. 1153 1154 When upgrading a live system, having a root shell around before 1155 installing anything can help undo problems. Not having a root shell 1156 around can lead to problems if pam has changed too much from your 1157 starting point to allow continued authentication after the upgrade. 1158 1159 This file should be read as a log of events. When a later event changes 1160 information of a prior event, the prior event should not be deleted. 1161 Instead, a pointer to the entry with the new information should be 1162 placed in the old entry. Readers of this file should also sanity check 1163 older entries before relying on them blindly. Authors of new entries 1164 should write them with this in mind. 1165 1166 ZFS notes 1167 --------- 1168 When upgrading the boot ZFS pool to a new version, always follow 1169 these two steps: 1170 1171 1.) recompile and reinstall the ZFS boot loader and boot block 1172 (this is part of "make buildworld" and "make installworld") 1173 1174 2.) update the ZFS boot block on your boot drive 1175 1176 The following example updates the ZFS boot block on the first 1177 partition (freebsd-boot) of a GPT partitioned drive ada0: 1178 "gpart bootcode -p /boot/gptzfsboot -i 1 ada0" 1179 1180 Non-boot pools do not need these updates. 1181 1182 To build a kernel 1183 ----------------- 1184 If you are updating from a prior version of FreeBSD (even one just 1185 a few days old), you should follow this procedure. It is the most 1186 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1187 1188 make kernel-toolchain 1189 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1190 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1191 1192 To test a kernel once 1193 --------------------- 1194 If you just want to boot a kernel once (because you are not sure 1195 if it works, or if you want to boot a known bad kernel to provide 1196 debugging information) run 1197 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1198 nextboot -k testkernel 1199 1200 To just build a kernel when you know that it won't mess you up 1201 -------------------------------------------------------------- 1202 This assumes you are already running a CURRENT system. Replace 1203 ${arch} with the architecture of your machine (e.g. "i386", 1204 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1205 1206 cd src/sys/${arch}/conf 1207 config KERNEL_NAME_HERE 1208 cd ../compile/KERNEL_NAME_HERE 1209 make depend 1210 make 1211 make install 1212 1213 If this fails, go to the "To build a kernel" section. 1214 1215 To rebuild everything and install it on the current system. 1216 ----------------------------------------------------------- 1217 # Note: sometimes if you are running current you gotta do more than 1218 # is listed here if you are upgrading from a really old current. 1219 1220 <make sure you have good level 0 dumps> 1221 make buildworld 1222 make kernel KERNCONF=YOUR_KERNEL_HERE 1223 [1] 1224 <reboot in single user> [3] 1225 mergemaster -Fp [5] 1226 make installworld 1227 mergemaster -Fi [4] 1228 make delete-old [6] 1229 <reboot> 1230 1231 To cross-install current onto a separate partition 1232 -------------------------------------------------- 1233 # In this approach we use a separate partition to hold 1234 # current's root, 'usr', and 'var' directories. A partition 1235 # holding "/", "/usr" and "/var" should be about 2GB in 1236 # size. 1237 1238 <make sure you have good level 0 dumps> 1239 <boot into -stable> 1240 make buildworld 1241 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1242 <maybe newfs current's root partition> 1243 <mount current's root partition on directory ${CURRENT_ROOT}> 1244 make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC 1245 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1246 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1247 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1248 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1249 <reboot into current> 1250 <do a "native" rebuild/install as described in the previous section> 1251 <maybe install compatibility libraries from ports/misc/compat*> 1252 <reboot> 1253 1254 1255 To upgrade in-place from stable to current 1256 ---------------------------------------------- 1257 <make sure you have good level 0 dumps> 1258 make buildworld [9] 1259 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1260 [1] 1261 <reboot in single user> [3] 1262 mergemaster -Fp [5] 1263 make installworld 1264 mergemaster -Fi [4] 1265 make delete-old [6] 1266 <reboot> 1267 1268 Make sure that you've read the UPDATING file to understand the 1269 tweaks to various things you need. At this point in the life 1270 cycle of current, things change often and you are on your own 1271 to cope. The defaults can also change, so please read ALL of 1272 the UPDATING entries. 1273 1274 Also, if you are tracking -current, you must be subscribed to 1275 freebsd-current@freebsd.org. Make sure that before you update 1276 your sources that you have read and understood all the recent 1277 messages there. If in doubt, please track -stable which has 1278 much fewer pitfalls. 1279 1280 [1] If you have third party modules, such as vmware, you 1281 should disable them at this point so they don't crash your 1282 system on reboot. 1283 1284 [3] From the bootblocks, boot -s, and then do 1285 fsck -p 1286 mount -u / 1287 mount -a 1288 cd src 1289 adjkerntz -i # if CMOS is wall time 1290 Also, when doing a major release upgrade, it is required that 1291 you boot into single user mode to do the installworld. 1292 1293 [4] Note: This step is non-optional. Failure to do this step 1294 can result in a significant reduction in the functionality of the 1295 system. Attempting to do it by hand is not recommended and those 1296 that pursue this avenue should read this file carefully, as well 1297 as the archives of freebsd-current and freebsd-hackers mailing lists 1298 for potential gotchas. The -U option is also useful to consider. 1299 See mergemaster(8) for more information. 1300 1301 [5] Usually this step is a noop. However, from time to time 1302 you may need to do this if you get unknown user in the following 1303 step. It never hurts to do it all the time. You may need to 1304 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1305 install) after the buildworld before this step if you last updated 1306 from current before 20130425 or from -stable before 20130430. 1307 1308 [6] This only deletes old files and directories. Old libraries 1309 can be deleted by "make delete-old-libs", but you have to make 1310 sure that no program is using those libraries anymore. 1311 1312 [8] In order to have a kernel that can run the 4.x binaries needed to 1313 do an installworld, you must include the COMPAT_FREEBSD4 option in 1314 your kernel. Failure to do so may leave you with a system that is 1315 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1316 required to run the 5.x binaries on more recent kernels. And so on 1317 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1318 1319 Make sure that you merge any new devices from GENERIC since the 1320 last time you updated your kernel config file. 1321 1322 [9] When checking out sources, you must include the -P flag to have 1323 cvs prune empty directories. 1324 1325 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1326 "?=" instead of the "=" assignment operator, so that buildworld can 1327 override the CPUTYPE if it needs to. 1328 1329 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1330 not on the command line, or in /etc/make.conf. buildworld will 1331 warn if it is improperly defined. 1332FORMAT: 1333 1334This file contains a list, in reverse chronological order, of major 1335breakages in tracking -current. It is not guaranteed to be a complete 1336list of such breakages, and only contains entries since September 23, 2011. 1337If you need to see UPDATING entries from before that date, you will need 1338to fetch an UPDATING file from an older FreeBSD release. 1339 1340Copyright information: 1341 1342Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1343 1344Redistribution, publication, translation and use, with or without 1345modification, in full or in part, in any form or format of this 1346document are permitted without further permission from the author. 1347 1348THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1349IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1350WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1351DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1352INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1353(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1354SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1355HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1356STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1357IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1358POSSIBILITY OF SUCH DAMAGE. 1359 1360Contact Warner Losh if you have any questions about your use of 1361this document. 1362 1363$FreeBSD: head/UPDATING 286596 2015-08-10 21:09:06Z ian $ 1364