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 to bootstrap to the tip of 16head, and then rebuild without this option. The bootstrap process from 17older version of current is a bit fragile. 18 19NOTE TO PEOPLE WHO THINK THAT FreeBSD 10.x IS SLOW: 20 FreeBSD 10.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 3420130629: 35 Fix targets that run multiple make's to use && rather than ; 36 so that subsequent steps depend on success of previous. 37 38 NOTE: if building 'universe' with -j* on stable/8 or stable/9 39 it would be better to start the build using bmake, to avoid 40 overloading the machine. 41 4220130618: 43 Fix a bug that allowed a tracing process (e.g. gdb) to write 44 to a memory-mapped file in the traced process's address space 45 even if neither the traced process nor the tracing process had 46 write access to that file. 47 4820130615: 49 CVS has been removed from the base system. An exact copy 50 of the code is available from the devel/cvs port. 51 5220130613: 53 Some people report the following error after the switch to bmake: 54 55 make: illegal option -- J 56 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable] 57 ... 58 *** [buildworld] Error code 2 59 60 this likely due to an old instance of make in 61 ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}) 62 which src/Makefile will use that blindly, if it exists, so if 63 you see the above error: 64 65 rm -rf `make -V MAKEPATH` 66 67 should resolve it. 68 6920130516: 70 Use bmake by default. 71 Whereas before one could choose to build with bmake via 72 -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old 73 make. The goal is to remove these knobs for 10-RELEASE. 74 75 It is worth noting that bmake (like gmake) treats the command 76 line as the unit of failure, rather than statements within the 77 command line. Thus '(cd some/where && dosomething)' is safer 78 than 'cd some/where; dosomething'. The '()' allows consistent 79 behavior in parallel build. 80 8120130429: 82 Fix a bug that allows NFS clients to issue READDIR on files. 83 8420130426: 85 The WITHOUT_IDEA option has been removed because 86 the IDEA patent expired. 87 8820130426: 89 The sysctl which controls TRIM support under ZFS has been renamed 90 from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been 91 enabled by default. 92 9320130425: 94 The mergemaster command now uses the default MAKEOBJDIRPREFIX 95 rather than creating it's own in the temporary directory in 96 order allow access to bootstrapped versions of tools such as 97 install and mtree. When upgrading from version of FreeBSD where 98 the install command does not support -l, you will need to 99 install a new mergemaster command if mergemaster -p is required. 100 This can be accomplished with the command (cd src/usr.sbin/mergemaster 101 && make install). 102 10320130404: 104 Legacy ATA stack, disabled and replaced by new CAM-based one since 105 FreeBSD 9.0, completely removed from the sources. Kernel modules 106 atadisk and atapi*, user-level tools atacontrol and burncd are 107 removed. Kernel option `options ATA_CAM` is now permanently enabled 108 and removed. 109 11020130319: 111 SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2) 112 and socketpair(2). Software, in particular Kerberos, may 113 automatically detect and use these during building. The resulting 114 binaries will not work on older kernels. 115 11620130308: 117 CTL_DISABLE has also been added to the sparc64 GENERIC (for further 118 information, see the respective 20130304 entry). 119 12020130304: 121 Recent commits to callout(9) changed the size of struct callout, 122 so the KBI is probably heavily disturbed. Also, some functions 123 in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced 124 by macros. Every kernel module using it won't load, so rebuild 125 is requested. 126 127 The ctl device has been re-enabled in GENERIC for i386 and amd64, 128 but does not initialize by default (because of the new CTL_DISABLE 129 option) to save memory. To re-enable it, remove the CTL_DISABLE 130 option from the kernel config file or set kern.cam.ctl.disable=0 131 in /boot/loader.conf. 132 13320130301: 134 The ctl device has been disabled in GENERIC for i386 and amd64. 135 This was done due to the extra memory being allocated at system 136 initialisation time by the ctl driver which was only used if 137 a CAM target device was created. This makes a FreeBSD system 138 unusable on 128MB or less of RAM. 139 14020130208: 141 A new compression method (lz4) has been merged to -HEAD. Please 142 refer to zpool-features(7) for more information. 143 144 Please refer to the "ZFS notes" section of this file for information 145 on upgrading boot ZFS pools. 146 14720130129: 148 A BSD-licensed patch(1) variant has been added and is installed 149 as bsdpatch, being the GNU version the default patch. 150 To inverse the logic and use the BSD-licensed one as default, 151 while having the GNU version installed as gnupatch, rebuild 152 and install world with the WITH_BSD_PATCH knob set. 153 15420130121: 155 Due to the use of the new -l option to install(1) during build 156 and install, you must take care not to directly set the INSTALL 157 make variable in your /etc/make.conf, /etc/src.conf, or on the 158 command line. If you wish to use the -C flag for all installs 159 you may be able to add INSTALL+=-C to /etc/make.conf or 160 /etc/src.conf. 161 16220130118: 163 The install(1) option -M has changed meaning and now takes an 164 argument that is a file or path to append logs to. In the 165 unlikely event that -M was the last option on the command line 166 and the command line contained at least two files and a target 167 directory the first file will have logs appended to it. The -M 168 option served little practical purpose in the last decade so its 169 use is expected to be extremely rare. 170 17120121223: 172 After switching to Clang as the default compiler some users of ZFS 173 on i386 systems started to experience stack overflow kernel panics. 174 Please consider using 'options KSTACK_PAGES=4' in such configurations. 175 17620121222: 177 GEOM_LABEL now mangles label names read from file system metadata. 178 Mangling affect labels containing spaces, non-printable characters, 179 '%' or '"'. Device names in /etc/fstab and other places may need to 180 be updated. 181 18220121217: 183 By default, only the 10 most recent kernel dumps will be saved. To 184 restore the previous behaviour (no limit on the number of kernel dumps 185 stored in the dump directory) add the following line to /etc/rc.conf: 186 187 savecore_flags="" 188 18920121201: 190 With the addition of auditdistd(8), a new auditdistd user is now 191 depended on during installworld. "mergemaster -p" can be used to add 192 the user prior to installworld, as documented in the handbook. 193 19420121117: 195 The sin6_scope_id member variable in struct sockaddr_in6 is now 196 filled by the kernel before passing the structure to the userland via 197 sysctl or routing socket. This means the KAME-specific embedded scope 198 id in sin6_addr.s6_addr[2] is always cleared in userland application. 199 This behavior can be controlled by net.inet6.ip6.deembed_scopeid. 200 __FreeBSD_version is bumped to 1000025. 201 20220121105: 203 On i386 and amd64 systems WITH_CLANG_IS_CC is now the default. 204 This means that the world and kernel will be compiled with clang 205 and that clang will be installed as /usr/bin/cc, /usr/bin/c++, 206 and /usr/bin/cpp. To disable this behavior and revert to building 207 with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions 208 of current may need to bootstrap WITHOUT_CLANG first if the clang 209 build fails (its compatibility window doesn't extend to the 9 stable 210 branch point). 211 21220121102: 213 The IPFIREWALL_FORWARD kernel option has been removed. Its 214 functionality now turned on by default. 215 21620121023: 217 The ZERO_COPY_SOCKET kernel option has been removed and 218 split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP. 219 NB: SOCKET_SEND_COW uses the VM page based copy-on-write 220 mechanism which is not safe and may result in kernel crashes. 221 NB: The SOCKET_RECV_PFLIP mechanism is useless as no current 222 driver supports disposeable external page sized mbuf storage. 223 Proper replacements for both zero-copy mechanisms are under 224 consideration and will eventually lead to complete removal 225 of the two kernel options. 226 22720121023: 228 The IPv4 network stack has been converted to network byte 229 order. The following modules need to be recompiled together 230 with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4), 231 pf(4), ipfw(4), ng_ipfw(4), stf(4). 232 23320121022: 234 Support for non-MPSAFE filesystems was removed from VFS. The 235 VFS_VERSION was bumped, all filesystem modules shall be 236 recompiled. 237 23820121018: 239 All the non-MPSAFE filesystems have been disconnected from 240 the build. The full list includes: codafs, hpfs, ntfs, nwfs, 241 portalfs, smbfs, xfs. 242 24320121016: 244 The interface cloning API and ABI has changed. The following 245 modules need to be recompiled together with kernel: 246 ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4), 247 vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4), 248 faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4). 249 25020121015: 251 The sdhci driver was split in two parts: sdhci (generic SD Host 252 Controller logic) and sdhci_pci (actual hardware driver). 253 No kernel config modifications are required, but if you 254 load sdhc as a module you must switch to sdhci_pci instead. 255 25620121014: 257 Import the FUSE kernel and userland support into base system. 258 25920121013: 260 The GNU sort(1) program has been removed since the BSD-licensed 261 sort(1) has been the default for quite some time and no serious 262 problems have been reported. The corresponding WITH_GNU_SORT 263 knob has also gone. 264 26520121006: 266 The pfil(9) API/ABI for AF_INET family has been changed. Packet 267 filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled 268 with new kernel. 269 27020121001: 271 The net80211(4) ABI has been changed to allow for improved driver 272 PS-POLL and power-save support. All wireless drivers need to be 273 recompiled to work with the new kernel. 274 27520120913: 276 The random(4) support for the VIA hardware random number 277 generator (`PADLOCK') is no longer enabled unconditionally. 278 Add the PADLOCK_RNG option in the custom kernel config if 279 needed. The GENERIC kernels on i386 and amd64 do include the 280 option, so the change only affects the custom kernel 281 configurations. 282 28320120908: 284 The pf(4) packet filter ABI has been changed. pfctl(8) and 285 snmp_pf module need to be recompiled to work with new kernel. 286 28720120828: 288 A new ZFS feature flag "com.delphix:empty_bpobj" has been merged 289 to -HEAD. Pools that have empty_bpobj in active state can not be 290 imported read-write with ZFS implementations that do not support 291 this feature. For more information read the zpool-features(5) 292 manual page. 293 29420120727: 295 The sparc64 ZFS loader has been changed to no longer try to auto- 296 detect ZFS providers based on diskN aliases but now requires these 297 to be explicitly listed in the OFW boot-device environment variable. 298 29920120712: 300 The OpenSSL has been upgraded to 1.0.1c. Any binaries requiring 301 libcrypto.so.6 or libssl.so.6 must be recompiled. Also, there are 302 configuration changes. Make sure to merge /etc/ssl/openssl.cnf. 303 30420120712: 305 The following sysctls and tunables have been renamed for consistency 306 with other variables: 307 kern.cam.da.da_send_ordered -> kern.cam.da.send_ordered 308 kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered 309 31020120628: 311 The sort utility has been replaced with BSD sort. For now, GNU sort 312 is also available as "gnusort" or the default can be set back to 313 GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be 314 installed as "bsdsort". 315 31620120611: 317 A new version of ZFS (pool version 5000) has been merged to -HEAD. 318 Starting with this version the old system of ZFS pool versioning 319 is superseded by "feature flags". This concept enables forward 320 compatibility against certain future changes in functionality of ZFS 321 pools. The first read-only compatible "feature flag" for ZFS pools 322 is named "com.delphix:async_destroy". For more information 323 read the new zpool-features(5) manual page. 324 Please refer to the "ZFS notes" section of this file for information 325 on upgrading boot ZFS pools. 326 32720120417: 328 The malloc(3) implementation embedded in libc now uses sources imported 329 as contrib/jemalloc. The most disruptive API change is to 330 /etc/malloc.conf. If your system has an old-style /etc/malloc.conf, 331 delete it prior to installworld, and optionally re-create it using the 332 new format after rebooting. See malloc.conf(5) for details 333 (specifically the TUNING section and the "opt.*" entries in the MALLCTL 334 NAMESPACE section). 335 33620120328: 337 Big-endian MIPS TARGET_ARCH values no longer end in "eb". mips64eb 338 is now spelled mips64. mipsn32eb is now spelled mipsn32. mipseb is 339 now spelled mips. This is to aid compatibility with third-party 340 software that expects this naming scheme in uname(3). Little-endian 341 settings are unchanged. If you are updating a big-endian mips64 machine 342 from before this change, you may need to set MACHINE_ARCH=mips64 in 343 your environment before the new build system will recognize your machine. 344 34520120306: 346 Disable by default the option VFS_ALLOW_NONMPSAFE for all supported 347 platforms. 348 34920120229: 350 Now unix domain sockets behave "as expected" on nullfs(5). Previously 351 nullfs(5) did not pass through all behaviours to the underlying layer, 352 as a result if we bound to a socket on the lower layer we could connect 353 only to the lower path; if we bound to the upper layer we could connect 354 only to the upper path. The new behavior is one can connect to both the 355 lower and the upper paths regardless what layer path one binds to. 356 35720120211: 358 The getifaddrs upgrade path broken with 20111215 has been restored. 359 If you have upgraded in between 20111215 and 20120209 you need to 360 recompile libc again with your kernel. You still need to recompile 361 world to be able to configure CARP but this restriction already 362 comes from 20111215. 363 36420120114: 365 The set_rcvar() function has been removed from /etc/rc.subr. All 366 base and ports rc.d scripts have been updated, so if you have a 367 port installed with a script in /usr/local/etc/rc.d you can either 368 hand-edit the rcvar= line, or reinstall the port. 369 370 An easy way to handle the mass-update of /etc/rc.d: 371 rm /etc/rc.d/* && mergemaster -i 372 37320120109: 374 panic(9) now stops other CPUs in the SMP systems, disables interrupts 375 on the current CPU and prevents other threads from running. 376 This behavior can be reverted using the kern.stop_scheduler_on_panic 377 tunable/sysctl. 378 The new behavior can be incompatible with kern.sync_on_panic. 379 38020111215: 381 The carp(4) facility has been changed significantly. Configuration 382 of the CARP protocol via ifconfig(8) has changed, as well as format 383 of CARP events submitted to devd(8) has changed. See manual pages 384 for more information. The arpbalance feature of carp(4) is currently 385 not supported anymore. 386 387 Size of struct in_aliasreq, struct in6_aliasreq has changed. User 388 utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8), 389 need to be recompiled. 390 39120111122: 392 The acpi_wmi(4) status device /dev/wmistat has been renamed to 393 /dev/wmistat0. 394 39520111108: 396 The option VFS_ALLOW_NONMPSAFE option has been added in order to 397 explicitely support non-MPSAFE filesystems. 398 It is on by default for all supported platform at this present 399 time. 400 40120111101: 402 The broken amd(4) driver has been replaced with esp(4) in the amd64, 403 i386 and pc98 GENERIC kernel configuration files. 404 40520110930: 406 sysinstall has been removed 407 40820110923: 409 The stable/9 branch created in subversion. This corresponds to the 410 RELENG_9 branch in CVS. 411 41220110913: 413 This commit modifies vfs_register() so that it uses a hash 414 calculation to set vfc_typenum, which is enabled by default. 415 The first time a system is booted after this change, the 416 vfc_typenum values will change for all file systems. The 417 main effect of this is a change to the NFS server file handles 418 for file systems that use vfc_typenum in their fsid, such as ZFS. 419 It will, however, prevent vfc_typenum from changing when file 420 systems are loaded in a different order for subsequent reboots. 421 To disable this, you can set vfs.typenumhash=0 in /boot/loader.conf 422 until you are ready to remount all NFS clients after a reboot. 423 42420110828: 425 Bump the shared library version numbers for libraries that 426 do not use symbol versioning, have changed the ABI compared 427 to stable/8 and which shared library version was not bumped. 428 Done as part of 9.0-RELEASE cycle. 429 43020110815: 431 During the merge of Capsicum features, the fget(9) KPI was modified. 432 This may require the rebuilding of out-of-tree device drivers -- 433 issues have been reported specifically with the nVidia device driver. 434 __FreeBSD_version is bumped to 900041. 435 436 Also, there is a period between 20110811 and 20110814 where the 437 special devices /dev/{stdin,stdout,stderr} did not work correctly. 438 Building world from a kernel during that window may not work. 439 44020110628: 441 The packet filter (pf) code has been updated to OpenBSD 4.5. 442 You need to update userland tools to be in sync with kernel. 443 This update breaks backward compatibility with earlier pfsync(4) 444 versions. Care must be taken when updating redundant firewall setups. 445 44620110608: 447 The following sysctls and tunables are retired on x86 platforms: 448 machdep.hlt_cpus 449 machdep.hlt_logical_cpus 450 The following sysctl is retired: 451 machdep.hyperthreading_allowed 452 The sysctls were supposed to provide a way to dynamically offline and 453 online selected CPUs on x86 platforms, but the implementation has not 454 been reliable especially with SCHED_ULE scheduler. 455 machdep.hyperthreading_allowed tunable is still available to ignore 456 hyperthreading CPUs at OS level. 457 Individual CPUs can be disabled using hint.lapic.X.disabled tunable, 458 where X is an APIC ID of a CPU. Be advised, though, that disabling 459 CPUs in non-uniform fashion will result in non-uniform topology and 460 may lead to sub-optimal system performance with SCHED_ULE, which is 461 a default scheduler. 462 46320110607: 464 cpumask_t type is retired and cpuset_t is used in order to describe 465 a mask of CPUs. 466 46720110531: 468 Changes to ifconfig(8) for dynamic address family detection mandate 469 that you are running a kernel of 20110525 or later. Make sure to 470 follow the update procedure to boot a new kernel before installing 471 world. 472 47320110513: 474 Support for sun4v architecture is officially dropped 475 47620110503: 477 Several KPI breaking changes have been committed to the mii(4) layer, 478 the PHY drivers and consequently some Ethernet drivers using mii(4). 479 This means that miibus.ko and the modules of the affected Ethernet 480 drivers need to be recompiled. 481 482 Note to kernel developers: Given that the OUI bit reversion problem 483 was fixed as part of these changes all mii(4) commits related to OUIs, 484 i.e. to sys/dev/mii/miidevs, PHY driver probing and vendor specific 485 handling, no longer can be merged verbatim to stable/8 and previous 486 branches. 487 48820110430: 489 Users of the Atheros AR71xx SoC code now need to add 'device ar71xx_pci' 490 into their kernel configurations along with 'device pci'. 491 49220110427: 493 The default NFS client is now the new NFS client, so fstype "newnfs" 494 is now "nfs" and the regular/old NFS client is now fstype "oldnfs". 495 Although mounts via fstype "nfs" will usually work without userland 496 changes, it is recommended that the mount(8) and mount_nfs(8) 497 commands be rebuilt from sources and that a link to mount_nfs called 498 mount_oldnfs be created. The new client is compiled into the 499 kernel with "options NFSCL" and this is needed for diskless root 500 file systems. The GENERIC kernel configs have been changed to use 501 NFSCL and NFSD (the new server) instead of NFSCLIENT and NFSSERVER. 502 To use the regular/old client, you can "mount -t oldnfs ...". For 503 a diskless root file system, you must also include a line like: 504 505 vfs.root.mountfrom="oldnfs:" 506 507 in the boot/loader.conf on the root fs on the NFS server to make 508 a diskless root fs use the old client. 509 51020110424: 511 The GENERIC kernels for all architectures now default to the new 512 CAM-based ATA stack. It means that all legacy ATA drivers were 513 removed and replaced by respective CAM drivers. If you are using 514 ATA device names in /etc/fstab or other places, make sure to update 515 them respectively (adX -> adaY, acdX -> cdY, afdX -> daY, astX -> saY, 516 where 'Y's are the sequential numbers starting from zero for each type 517 in order of detection, unless configured otherwise with tunables, 518 see cam(4)). There will be symbolic links created in /dev/ to map 519 old adX devices to the respective adaY. They should provide basic 520 compatibility for file systems mounting in most cases, but they do 521 not support old user-level APIs and do not have respective providers 522 in GEOM. Consider using updated management tools with new device names. 523 524 It is possible to load devices ahci, ata, siis and mvs as modules, 525 but option ATA_CAM should remain in kernel configuration to make ata 526 module work as CAM driver supporting legacy ATA controllers. Device ata 527 still can be used in modular fashion (atacore + ...). Modules atadisk 528 and atapi* are not used and won't affect operation in ATA_CAM mode. 529 Note that to use CAM-based ATA kernel should include CAM devices 530 scbus, pass, da (or explicitly ada), cd and optionally others. All of 531 them are parts of the cam module. 532 533 ataraid(4) functionality is now supported by the RAID GEOM class. 534 To use it you can load geom_raid kernel module and use graid(8) tool 535 for management. Instead of /dev/arX device names, use /dev/raid/rX. 536 537 No kernel config options or code have been removed, so if a problem 538 arises, please report it and optionally revert to the old ATA stack. 539 In order to do it you can remove from the kernel config: 540 options ATA_CAM 541 device ahci 542 device mvs 543 device siis 544 , and instead add back: 545 device atadisk # ATA disk drives 546 device ataraid # ATA RAID drives 547 device atapicd # ATAPI CDROM drives 548 device atapifd # ATAPI floppy drives 549 device atapist # ATAPI tape drives 550 55120110423: 552 The default NFS server has been changed to the new server, which 553 was referred to as the experimental server. If you need to switch 554 back to the old NFS server, you must now put the "-o" option on 555 both the mountd and nfsd commands. This can be done using the 556 mountd_flags and nfs_server_flags rc.conf variables until an 557 update to the rc scripts is committed, which is coming soon. 558 55920110418: 560 The GNU Objective-C runtime library (libobjc), and other Objective-C 561 related components have been removed from the base system. If you 562 require an Objective-C library, please use one of the available ports. 563 56420110331: 565 ath(4) has been split into bus- and device- modules. if_ath contains 566 the HAL, the TX rate control and the network device code. if_ath_pci 567 contains the PCI bus glue. For Atheros MIPS embedded systems, if_ath_ahb 568 contains the AHB glue. Users need to load both if_ath_pci and if_ath 569 in order to use ath on everything else. 570 571 TO REPEAT: if_ath_ahb is not needed for normal users. Normal users only 572 need to load if_ath and if_ath_pci for ath(4) operation. 573 57420110314: 575 As part of the replacement of sysinstall, the process of building 576 release media has changed significantly. For details, please re-read 577 release(7), which has been updated to reflect the new build process. 578 57920110218: 580 GNU binutils 2.17.50 (as of 2007-07-03) has been merged to -HEAD. This 581 is the last available version under GPLv2. It brings a number of new 582 features, such as support for newer x86 CPU's (with SSE-3, SSSE-3, SSE 583 4.1 and SSE 4.2), better support for powerpc64, a number of new 584 directives, and lots of other small improvements. See the ChangeLog 585 file in contrib/binutils for the full details. 586 58720110218: 588 IPsec's HMAC_SHA256-512 support has been fixed to be RFC4868 589 compliant, and will now use half of hash for authentication. 590 This will break interoperability with all stacks (including all 591 actual FreeBSD versions) who implement 592 draft-ietf-ipsec-ciph-sha-256-00 (they use 96 bits of hash for 593 authentication). 594 The only workaround with such peers is to use another HMAC 595 algorithm for IPsec ("phase 2") authentication. 596 59720110207: 598 Remove the uio_yield prototype and symbol. This function has 599 been misnamed since it was introduced and should not be 600 globally exposed with this name. The equivalent functionality 601 is now available using kern_yield(curthread->td_user_pri). 602 The function remains undocumented. 603 60420110112: 605 A SYSCTL_[ADD_]UQUAD was added for unsigned uint64_t pointers, 606 symmetric with the existing SYSCTL_[ADD_]QUAD. Type checking 607 for scalar sysctls is defined but disabled. Code that needs 608 UQUAD to pass the type checking that must compile on older 609 systems where the define is not present can check against 610 __FreeBSD_version >= 900030. 611 612 The system dialog(1) has been replaced with a new version previously 613 in ports as devel/cdialog. dialog(1) is mostly command-line compatible 614 with the previous version, but the libdialog associated with it has 615 a largely incompatible API. As such, the original version of libdialog 616 will be kept temporarily as libodialog, until its base system consumers 617 are replaced or updated. Bump __FreeBSD_version to 900030. 618 61920110103: 620 If you are trying to run make universe on a -stable system, and you get 621 the following warning: 622 "Makefile", line 356: "Target architecture for i386/conf/GENERIC 623 unknown. config(8) likely too old." 624 or something similar to it, then you must upgrade your -stable system 625 to 8.2-Release or newer (really, any time after r210146 7/15/2010 in 626 stable/8) or build the config from the latest stable/8 branch and 627 install it on your system. 628 629 Prior to this date, building a current universe on 8-stable system from 630 between 7/15/2010 and 1/2/2011 would result in a weird shell parsing 631 error in the first kernel build phase. A new config on those old 632 systems will fix that problem for older versions of -current. 633 63420101228: 635 The TCP stack has been modified to allow Khelp modules to interact with 636 it via helper hook points and store per-connection data in the TCP 637 control block. Bump __FreeBSD_version to 900029. User space tools that 638 rely on the size of struct tcpcb in tcp_var.h (e.g. sockstat) need to 639 be recompiled. 640 64120101114: 642 Generic IEEE 802.3 annex 31B full duplex flow control support has been 643 added to mii(4) and bge(4), bce(4), msk(4), nfe(4) and stge(4) along 644 with brgphy(4), e1000phy(4) as well as ip1000phy() have been converted 645 to take advantage of it instead of using custom implementations. This 646 means that these drivers now no longer unconditionally advertise 647 support for flow control but only do so if flow control is a selected 648 media option. This was implemented in the generic support that way in 649 order to allow flow control to be switched on and off via ifconfig(8) 650 with the PHY specific default to typically off in order to protect 651 from unwanted effects. Consequently, if you used flow control with 652 one of the above mentioned drivers you now need to explicitly enable 653 it, for example via: 654 ifconfig bge0 media auto mediaopt flowcontrol 655 656 Along with the above mentioned changes generic support for setting 657 1000baseT master mode also has been added and brgphy(4), ciphy(4), 658 e1000phy(4) as well as ip1000phy(4) have been converted to take 659 advantage of it. This means that these drivers now no longer take the 660 link0 parameter for selecting master mode but the master media option 661 has to be used instead, for example like in the following: 662 ifconfig bge0 media 1000baseT mediaopt full-duplex,master 663 664 Selection of master mode now is also available with all other PHY 665 drivers supporting 1000baseT. 666 66720101111: 668 The TCP stack has received a significant update to add support for 669 modularised congestion control and generally improve the clarity of 670 congestion control decisions. Bump __FreeBSD_version to 900025. User 671 space tools that rely on the size of struct tcpcb in tcp_var.h (e.g. 672 sockstat) need to be recompiled. 673 67420101002: 675 The man(1) utility has been replaced by a new version that no longer 676 uses /etc/manpath.config. Please consult man.conf(5) for how to 677 migrate local entries to the new format. 678 67920100928: 680 The copyright strings printed by login(1) and sshd(8) at the time of a 681 new connection have been removed to follow other operating systems and 682 upstream sshd. 683 68420100915: 685 A workaround for a fixed ld bug has been removed in kernel code, 686 so make sure that your system ld is built from sources after 687 revision 210245 from 2010-07-19 (r211583 if building head kernel 688 on stable/8, r211584 for stable/7; both from 2010-08-21). 689 A symptom of incorrect ld version is different addresses for 690 set_pcpu section and __start_set_pcpu symbol in kernel and/or modules. 691 69220100913: 693 The $ipv6_prefer variable in rc.conf(5) has been split into 694 $ip6addrctl_policy and $ipv6_activate_all_interfaces. 695 696 The $ip6addrctl_policy is a variable to choose a pre-defined 697 address selection policy set by ip6addrctl(8). A value 698 "ipv4_prefer", "ipv6_prefer" or "AUTO" can be specified. The 699 default is "AUTO". 700 701 The $ipv6_activate_all_interfaces specifies whether IFDISABLED 702 flag (see an entry of 20090926) is set on an interface with no 703 corresponding $ifconfig_IF_ipv6 line. The default is "NO" for 704 security reason. If you want IPv6 link-local address on all 705 interfaces by default, set this to "YES". 706 707 The old ipv6_prefer="YES" is equivalent to 708 ipv6_activate_all_interfaces="YES" and 709 ip6addrctl_policy="ipv6_prefer". 710 71120100913: 712 DTrace has grown support for userland tracing. Due to this, DTrace is 713 now i386 and amd64 only. 714 dtruss(1) is now installed by default on those systems and a new 715 kernel module is needed for userland tracing: fasttrap. 716 No changes to your kernel config file are necessary to enable 717 userland tracing, but you might consider adding 'STRIP=' and 718 'CFLAGS+=-fno-omit-frame-pointer' to your make.conf if you want 719 to have informative userland stack traces in DTrace (ustack). 720 72120100725: 722 The acpi_aiboost(4) driver has been removed in favor of the new 723 aibs(4) driver. You should update your kernel configuration file. 724 72520100722: 726 BSD grep has been imported to the base system and it is built by 727 default. It is completely BSD licensed, highly GNU-compatible, uses 728 less memory than its GNU counterpart and has a small codebase. 729 However, it is slower than its GNU counterpart, which is mostly 730 noticeable for larger searches, for smaller ones it is measurable 731 but not significant. The reason is complex, the most important factor 732 is that we lack a modern and efficient regex library and GNU 733 overcomes this by optimizing the searches internally. Future work 734 on improving the regex performance is planned, for the meantime, 735 users that need better performance, can build GNU grep instead by 736 setting the WITH_GNU_GREP knob. 737 73820100713: 739 Due to the import of powerpc64 support, all existing powerpc kernel 740 configuration files must be updated with a machine directive like this: 741 machine powerpc powerpc 742 743 In addition, an updated config(8) is required to build powerpc kernels 744 after this change. 745 74620100713: 747 A new version of ZFS (version 15) has been merged to -HEAD. 748 This version uses a python library for the following subcommands: 749 zfs allow, zfs unallow, zfs groupspace, zfs userspace. 750 For full functionality of these commands the following port must 751 be installed: sysutils/py-zfs 752 75320100429: 754 'vm_page's are now hashed by physical address to an array of mutexes. 755 Currently this is only used to serialize access to hold_count. Over 756 time the page queue mutex will be peeled away. This changes the size 757 of pmap on every architecture. And requires all callers of vm_page_hold 758 and vm_page_unhold to be updated. 759 76020100402: 761 WITH_CTF can now be specified in src.conf (not recommended, there 762 are some problems with static executables), make.conf (would also 763 affect ports which do not use GNU make and do not override the 764 compile targets) or in the kernel config (via "makeoptions 765 WITH_CTF=yes"). 766 When WITH_CTF was specified there before this was silently ignored, 767 so make sure that WITH_CTF is not used in places which could lead 768 to unwanted behavior. 769 77020100311: 771 The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32 772 to allow 32-bit compatibility on non-x86 platforms. All kernel 773 configurations on amd64 and ia64 platforms using these options must 774 be modified accordingly. 775 77620100113: 777 The utmp user accounting database has been replaced with utmpx, 778 the user accounting interface standardized by POSIX. 779 Unfortunately the semantics of utmp and utmpx don't match, 780 making it practically impossible to support both interfaces. 781 The user accounting database is used by tools like finger(1), 782 last(1), talk(1), w(1) and ac(8). 783 784 All applications in the base system use utmpx. This means only 785 local binaries (e.g. from the ports tree) may still use these 786 utmp database files. These applications must be rebuilt to make 787 use of utmpx. 788 789 After the system has been upgraded, it is safe to remove the old 790 log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), 791 assuming their contents is of no importance anymore. Old wtmp 792 databases can only be used by last(1) and ac(8) after they have 793 been converted to the new format using wtmpcvt(1). 794 79520100108: 796 Introduce the kernel thread "deadlock resolver" (which can be enabled 797 via the DEADLKRES option, see NOTES for more details) and the 798 sleepq_type() function for sleepqueues. 799 80020091202: 801 The rc.firewall and rc.firewall6 were unified, and 802 rc.firewall6 and rc.d/ip6fw were removed. 803 According to the removal of rc.d/ip6fw, ipv6_firewall_* rc 804 variables are obsoleted. Instead, the following new rc 805 variables are added to rc.d/ipfw: 806 807 firewall_client_net_ipv6, firewall_simple_iif_ipv6, 808 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, 809 firewall_simple_onet_ipv6, firewall_trusted_ipv6 810 811 The meanings correspond to the relevant IPv4 variables. 812 81320091125: 814 8.0-RELEASE. 815 81620091113: 817 The default terminal emulation for syscons(4) has been changed 818 from cons25 to xterm on all platforms except pc98. This means 819 that the /etc/ttys file needs to be updated to ensure correct 820 operation of applications on the console. 821 822 The terminal emulation style can be toggled per window by using 823 vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration 824 options can be used to change the compile-time default back to 825 cons25. 826 827 To prevent graphical artifacts, make sure the TERM environment 828 variable is set to match the terminal emulation that is being 829 performed by syscons(4). 830 83120091109: 832 The layout of the structure ieee80211req_scan_result has changed. 833 Applications that require wireless scan results (e.g. ifconfig(8)) 834 from net80211 need to be recompiled. 835 836 Applications such as wpa_supplicant(8) may require a full world 837 build without using NO_CLEAN in order to get synchronized with the 838 new structure. 839 84020091025: 841 The iwn(4) driver has been updated to support the 5000 and 5150 series. 842 There's one kernel module for each firmware. Adding "device iwnfw" 843 to the kernel configuration file means including all three firmware 844 images inside the kernel. If you want to include just the one for 845 your wireless card, use the devices iwn4965fw, iwn5000fw or 846 iwn5150fw. 847 84820090926: 849 The rc.d/network_ipv6, IPv6 configuration script has been integrated 850 into rc.d/netif. The changes are the following: 851 852 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF 853 for IPv4. For aliases, $ifconfig_IF_aliasN should be used. 854 Note that both variables need the "inet6" keyword at the head. 855 856 Do not set $ipv6_network_interfaces manually if you do not 857 understand what you are doing. It is not needed in most cases. 858 859 $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but 860 they are obsolete. 861 862 2. $ipv6_enable is obsolete. Use $ipv6_prefer and 863 "inet6 accept_rtadv" keyword in ifconfig(8) instead. 864 865 If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and 866 all configured interfaces have "inet6 accept_rtadv" in the 867 $ifconfig_IF_ipv6. These are for backward compatibility. 868 869 3. A new variable $ipv6_prefer has been added. If NO, IPv6 870 functionality of interfaces with no corresponding 871 $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag, 872 and the default address selection policy of ip6addrctl(8) 873 is the IPv4-preferred one (see rc.d/ip6addrctl for more details). 874 Note that if you want to configure IPv6 functionality on the 875 disabled interfaces after boot, first you need to clear the flag by 876 using ifconfig(8) like: 877 878 ifconfig em0 inet6 -ifdisabled 879 880 If YES, the default address selection policy is set as 881 IPv6-preferred. 882 883 The default value of $ipv6_prefer is NO. 884 885 4. If your system need to receive Router Advertisement messages, 886 define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8) 887 scripts automatically invoke rtsol(8) when the interface becomes 888 UP. The Router Advertisement messages are used for SLAAC 889 (State-Less Address AutoConfiguration). 890 89120090922: 892 802.11s D3.03 support was committed. This is incompatible with the 893 previous code, which was based on D3.0. 894 89520090912: 896 A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value 897 of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to 898 control whether accepting Router Advertisement messages or not. 899 Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and 900 a sysctl variable net.inet6.ip6.auto_linklocal is its default value. 901 The ifconfig(8) utility now supports these flags. 902 90320090910: 904 ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for 905 mount(8) and -a option for df(1) to see them. 906 90720090825: 908 The old tunable hw.bus.devctl_disable has been superseded by 909 hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be 910 replaced by hw.bus.devctl_queue=0. The default for this new tunable 911 is 1000. 912 91320090813: 914 Remove the option STOP_NMI. The default action is now to use NMI only 915 for KDB via the newly introduced function stop_cpus_hard() and 916 maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64. 917 91820090803: 919 The stable/8 branch created in subversion. This corresponds to the 920 RELENG_8 branch in CVS. 921 92220090719: 923 Bump the shared library version numbers for all libraries that do not 924 use symbol versioning as part of the 8.0-RELEASE cycle. Bump 925 __FreeBSD_version to 800105. 926 92720090714: 928 Due to changes in the implementation of virtual network stack support, 929 all network-related kernel modules must be recompiled. As this change 930 breaks the ABI, bump __FreeBSD_version to 800104. 931 93220090713: 933 The TOE interface to the TCP syncache has been modified to remove 934 struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack. 935 The cxgb driver is the only TOE consumer affected by this change, and 936 needs to be recompiled along with the kernel. As this change breaks 937 the ABI, bump __FreeBSD_version to 800103. 938 93920090712: 940 Padding has been added to struct tcpcb, sackhint and tcpstat in 941 <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst 942 maintaining the ABI. However, this change breaks the ABI, so bump 943 __FreeBSD_version to 800102. User space tools that rely on the size of 944 any of these structs (e.g. sockstat) need to be recompiled. 945 94620090630: 947 The NFS_LEGACYRPC option has been removed along with the old kernel 948 RPC implementation that this option selected. Kernel configurations 949 may need to be adjusted. 950 95120090629: 952 The network interface device nodes at /dev/net/<interface> have been 953 removed. All ioctl operations can be performed the normal way using 954 routing sockets. The kqueue functionality can generally be replaced 955 with routing sockets. 956 95720090628: 958 The documentation from the FreeBSD Documentation Project (Handbook, 959 FAQ, etc.) is now installed via packages by sysinstall(8) and under 960 the /usr/local/share/doc/freebsd directory instead of /usr/share/doc. 961 96220090624: 963 The ABI of various structures related to the SYSV IPC API have been 964 changed. As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel 965 options now all require COMPAT_FREEBSD7. Bump __FreeBSD_version to 966 800100. 967 96820090622: 969 Layout of struct vnet has changed as routing related variables were 970 moved to their own Vimage module. Modules need to be recompiled. Bump 971 __FreeBSD_version to 800099. 972 97320090619: 974 NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024 975 respectively. As long as no more than 16 groups per process are used, 976 no changes should be visible. When more than 16 groups are used, old 977 binaries may fail if they call getgroups() or getgrouplist() with 978 statically sized storage. Recompiling will work around this, but 979 applications should be modified to use dynamically allocated storage 980 for group arrays as POSIX.1-2008 does not cap an implementation's 981 number of supported groups at NGROUPS_MAX+1 as previous versions did. 982 983 NFS and portalfs mounts may also be affected as the list of groups is 984 truncated to 16. Users of NFS who use more than 16 groups, should 985 take care that negative group permissions are not used on the exported 986 file systems as they will not be reliable unless a GSSAPI based 987 authentication method is used. 988 98920090616: 990 The compiling option ADAPTIVE_LOCKMGRS has been introduced. This 991 option compiles in the support for adaptive spinning for lockmgrs 992 which want to enable it. The lockinit() function now accepts the flag 993 LK_ADAPTIVE in order to make the lock object subject to adaptive 994 spinning when both held in write and read mode. 995 99620090613: 997 The layout of the structure returned by IEEE80211_IOC_STA_INFO has 998 changed. User applications that use this ioctl need to be rebuilt. 999 100020090611: 1001 The layout of struct thread has changed. Kernel and modules need to 1002 be rebuilt. 1003 100420090608: 1005 The layout of structs ifnet, domain, protosw and vnet_net has changed. 1006 Kernel modules need to be rebuilt. Bump __FreeBSD_version to 800097. 1007 100820090602: 1009 window(1) has been removed from the base system. It can now be 1010 installed from ports. The port is called misc/window. 1011 101220090601: 1013 The way we are storing and accessing `routing table' entries has 1014 changed. Programs reading the FIB, like netstat, need to be 1015 re-compiled. 1016 101720090601: 1018 A new netisr implementation has been added for FreeBSD 8. Network 1019 file system modules, such as igmp, ipdivert, and others, should be 1020 rebuilt. 1021 Bump __FreeBSD_version to 800096. 1022 102320090530: 1024 Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no 1025 more valid. 1026 102720090530: 1028 Add VOP_ACCESSX(9). File system modules need to be rebuilt. 1029 Bump __FreeBSD_version to 800094. 1030 103120090529: 1032 Add mnt_xflag field to 'struct mount'. File system modules need to be 1033 rebuilt. 1034 Bump __FreeBSD_version to 800093. 1035 103620090528: 1037 The compiling option ADAPTIVE_SX has been retired while it has been 1038 introduced the option NO_ADAPTIVE_SX which handles the reversed logic. 1039 The KPI for sx_init_flags() changes as accepting flags: 1040 SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has 1041 been introduced in order to handle the reversed logic. 1042 Bump __FreeBSD_version to 800092. 1043 104420090527: 1045 Add support for hierarchical jails. Remove global securelevel. 1046 Bump __FreeBSD_version to 800091. 1047 104820090523: 1049 The layout of struct vnet_net has changed, therefore modules 1050 need to be rebuilt. 1051 Bump __FreeBSD_version to 800090. 1052 105320090523: 1054 The newly imported zic(8) produces a new format in the output. Please 1055 run tzsetup(8) to install the newly created data to /etc/localtime. 1056 105720090520: 1058 The sysctl tree for the usb stack has renamed from hw.usb2.* to 1059 hw.usb.* and is now consistent again with previous releases. 1060 106120090520: 1062 802.11 monitor mode support was revised and driver api's were changed. 1063 Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead 1064 of DLT_IEEE802_11. No user-visible data structures were changed but 1065 applications that use DLT_IEEE802_11 may require changes. 1066 Bump __FreeBSD_version to 800088. 1067 106820090430: 1069 The layout of the following structs has changed: sysctl_oid, 1070 socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, 1071 vnet_inet6 and vnet_ipfw. Most modules need to be rebuild or 1072 panics may be experienced. World rebuild is required for 1073 correctly checking networking state from userland. 1074 Bump __FreeBSD_version to 800085. 1075 107620090429: 1077 MLDv2 and Source-Specific Multicast (SSM) have been merged 1078 to the IPv6 stack. VIMAGE hooks are in but not yet used. 1079 The implementation of SSM within FreeBSD's IPv6 stack closely 1080 follows the IPv4 implementation. 1081 1082 For kernel developers: 1083 1084 * The most important changes are that the ip6_output() and 1085 ip6_input() paths no longer take the IN6_MULTI_LOCK, 1086 and this lock has been downgraded to a non-recursive mutex. 1087 1088 * As with the changes to the IPv4 stack to support SSM, filtering 1089 of inbound multicast traffic must now be performed by transport 1090 protocols within the IPv6 stack. This does not apply to TCP and 1091 SCTP, however, it does apply to UDP in IPv6 and raw IPv6. 1092 1093 * The KPIs used by IPv6 multicast are similar to those used by 1094 the IPv4 stack, with the following differences: 1095 * im6o_mc_filter() is analogous to imo_multicast_filter(). 1096 * The legacy KAME entry points in6_joingroup and in6_leavegroup() 1097 are shimmed to in6_mc_join() and in6_mc_leave() respectively. 1098 * IN6_LOOKUP_MULTI() has been deprecated and removed. 1099 * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs 1100 for MLDv1 have an additional 'timer' argument which is used to 1101 jitter the initial membership report for the solicited-node 1102 multicast membership on-link. 1103 * This is not strictly needed for MLDv2, which already jitters 1104 its report transmissions. However, the 'timer' argument is 1105 preserved in case MLDv1 is active on the interface. 1106 1107 * The KAME linked-list based IPv6 membership implementation has 1108 been refactored to use a vector similar to that used by the IPv4 1109 stack. 1110 Code which maintains a list of its own multicast memberships 1111 internally, e.g. carp, has been updated to reflect the new 1112 semantics. 1113 1114 * There is a known Lock Order Reversal (LOR) due to in6_setscope() 1115 acquiring the IF_AFDATA_LOCK and being called within ip6_output(). 1116 Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an 1117 implementation constraint which needs to be addressed in HEAD. 1118 1119 For application developers: 1120 1121 * The changes are broadly similar to those made for the IPv4 1122 stack. 1123 1124 * The use of IPv4 and IPv6 multicast socket options on the same 1125 socket, using mapped addresses, HAS NOT been tested or supported. 1126 1127 * There are a number of issues with the implementation of various 1128 IPv6 multicast APIs which need to be resolved in the API surface 1129 before the implementation is fully compatible with KAME userland 1130 use, and these are mostly to do with interface index treatment. 1131 1132 * The literature available discusses the use of either the delta / ASM 1133 API with setsockopt(2)/getsockopt(2), or the full-state / ASM API 1134 using setsourcefilter(3)/getsourcefilter(3). For more information 1135 please refer to RFC 3768, 'Socket Interface Extensions for 1136 Multicast Source Filters'. 1137 1138 * Applications which use the published RFC 3678 APIs should be fine. 1139 1140 For systems administrators: 1141 1142 * The mtest(8) utility has been refactored to support IPv6, in 1143 addition to IPv4. Interface addresses are no longer accepted 1144 as arguments, their names must be used instead. The utility 1145 will map the interface name to its first IPv4 address as 1146 returned by getifaddrs(3). 1147 1148 * The ifmcstat(8) utility has also been updated to print the MLDv2 1149 endpoint state and source filter lists via sysctl(3). 1150 1151 * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable 1152 loopback of IPv6 multicast datagrams by default; it defaults to 1 1153 to preserve the existing behaviour. Disabling multicast loopback is 1154 recommended for optimal system performance. 1155 1156 * The IPv6 MROUTING code has been changed to examine this sysctl 1157 instead of attempting to perform a group lookup before looping 1158 back forwarded datagrams. 1159 1160 Bump __FreeBSD_version to 800084. 1161 116220090422: 1163 Implement low-level Bluetooth HCI API. 1164 Bump __FreeBSD_version to 800083. 1165 116620090419: 1167 The layout of struct malloc_type, used by modules to register new 1168 memory allocation types, has changed. Most modules will need to 1169 be rebuilt or panics may be experienced. 1170 Bump __FreeBSD_version to 800081. 1171 117220090415: 1173 Anticipate overflowing inp_flags - add inp_flags2. 1174 This changes most offsets in inpcb, so checking v4 connection 1175 state will require a world rebuild. 1176 Bump __FreeBSD_version to 800080. 1177 117820090415: 1179 Add an llentry to struct route and struct route_in6. Modules 1180 embedding a struct route will need to be recompiled. 1181 Bump __FreeBSD_version to 800079. 1182 118320090414: 1184 The size of rt_metrics_lite and by extension rtentry has changed. 1185 Networking administration apps will need to be recompiled. 1186 The route command now supports show as an alias for get, weighting 1187 of routes, sticky and nostick flags to alter the behavior of stateful 1188 load balancing. 1189 Bump __FreeBSD_version to 800078. 1190 119120090408: 1192 Do not use Giant for kbdmux(4) locking. This is wrong and 1193 apparently causing more problems than it solves. This will 1194 re-open the issue where interrupt handlers may race with 1195 kbdmux(4) in polling mode. Typical symptoms include (but 1196 not limited to) duplicated and/or missing characters when 1197 low level console functions (such as gets) are used while 1198 interrupts are enabled (for example geli password prompt, 1199 mountroot prompt etc.). Disabling kbdmux(4) may help. 1200 120120090407: 1202 The size of structs vnet_net, vnet_inet and vnet_ipfw has changed; 1203 kernel modules referencing any of the above need to be recompiled. 1204 Bump __FreeBSD_version to 800075. 1205 120620090320: 1207 GEOM_PART has become the default partition slicer for storage devices, 1208 replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It 1209 introduces some changes: 1210 1211 MSDOS/EBR: the devices created from MSDOS extended partition entries 1212 (EBR) can be named differently than with GEOM_MBR and are now symlinks 1213 to devices with offset-based names. fstabs may need to be modified. 1214 1215 BSD: the "geometry does not match label" warning is harmless in most 1216 cases but it points to problems in file system misalignment with 1217 disk geometry. The "c" partition is now implicit, covers the whole 1218 top-level drive and cannot be (mis)used by users. 1219 1220 General: Kernel dumps are now not allowed to be written to devices 1221 whose partition types indicate they are meant to be used for file 1222 systems (or, in case of MSDOS partitions, as something else than 1223 the "386BSD" type). 1224 1225 Most of these changes date approximately from 200812. 1226 122720090319: 1228 The uscanner(4) driver has been removed from the kernel. This follows 1229 Linux removing theirs in 2.6 and making libusb the default interface 1230 (supported by sane). 1231 123220090319: 1233 The multicast forwarding code has been cleaned up. netstat(1) 1234 only relies on KVM now for printing bandwidth upcall meters. 1235 The IPv4 and IPv6 modules are split into ip_mroute_mod and 1236 ip6_mroute_mod respectively. The config(5) options for statically 1237 compiling this code remain the same, i.e. 'options MROUTING'. 1238 123920090315: 1240 Support for the IFF_NEEDSGIANT network interface flag has been 1241 removed, which means that non-MPSAFE network device drivers are no 1242 longer supported. In particular, if_ar, if_sr, and network device 1243 drivers from the old (legacy) USB stack can no longer be built or 1244 used. 1245 124620090313: 1247 POSIX.1 Native Language Support (NLS) has been enabled in libc and 1248 a bunch of new language catalog files have also been added. 1249 This means that some common libc messages are now localized and 1250 they depend on the LC_MESSAGES environmental variable. 1251 125220090313: 1253 The k8temp(4) driver has been renamed to amdtemp(4) since 1254 support for Family 10 and Family 11 CPU families was added. 1255 125620090309: 1257 IGMPv3 and Source-Specific Multicast (SSM) have been merged 1258 to the IPv4 stack. VIMAGE hooks are in but not yet used. 1259 1260 For kernel developers, the most important changes are that the 1261 ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(), 1262 and this lock has been downgraded to a non-recursive mutex. 1263 1264 Transport protocols (UDP, Raw IP) are now responsible for filtering 1265 inbound multicast traffic according to group membership and source 1266 filters. The imo_multicast_filter() KPI exists for this purpose. 1267 Transports which do not use multicast (SCTP, TCP) already reject 1268 multicast by default. Forwarding and receive performance may improve 1269 as a mutex acquisition is no longer needed in the ip_input() 1270 low-level input path. in_addmulti() and in_delmulti() are shimmed 1271 to new KPIs which exist to support SSM in-kernel. 1272 1273 For application developers, it is recommended that loopback of 1274 multicast datagrams be disabled for best performance, as this 1275 will still cause the lock to be taken for each looped-back 1276 datagram transmission. The net.inet.ip.mcast.loop sysctl may 1277 be tuned to 0 to disable loopback by default; it defaults to 1 1278 to preserve the existing behaviour. 1279 1280 For systems administrators, to obtain best performance with 1281 multicast reception and multiple groups, it is always recommended 1282 that a card with a suitably precise hash filter is used. Hash 1283 collisions will still result in the lock being taken within the 1284 transport protocol input path to check group membership. 1285 1286 If deploying FreeBSD in an environment with IGMP snooping switches, 1287 it is recommended that the net.inet.igmp.sendlocal sysctl remain 1288 enabled; this forces 224.0.0.0/24 group membership to be announced 1289 via IGMP. 1290 1291 The size of 'struct igmpstat' has changed; netstat needs to be 1292 recompiled to reflect this. 1293 Bump __FreeBSD_version to 800070. 1294 129520090309: 1296 libusb20.so.1 is now installed as libusb.so.1 and the ports system 1297 updated to use it. This requires a buildworld/installworld in order to 1298 update the library and dependencies (usbconfig, etc). Its advisable to 1299 rebuild all ports which uses libusb. More specific directions are given 1300 in the ports collection UPDATING file. Any /etc/libmap.conf entries for 1301 libusb are no longer required and can be removed. 1302 130320090302: 1304 A workaround is committed to allow the creation of System V shared 1305 memory segment of size > 2 GB on the 64-bit architectures. 1306 Due to a limitation of the existing ABI, the shm_segsz member 1307 of the struct shmid_ds, returned by shmctl(IPC_STAT) call is 1308 wrong for large segments. Note that limits must be explicitly 1309 raised to allow such segments to be created. 1310 131120090301: 1312 The layout of struct ifnet has changed, requiring a rebuild of all 1313 network device driver modules. 1314 131520090227: 1316 The /dev handling for the new USB stack has changed, a 1317 buildworld/installworld is required for libusb20. 1318 131920090223: 1320 The new USB2 stack has now been permanently moved in and all kernel and 1321 module names reverted to their previous values (eg, usb, ehci, ohci, 1322 ums, ...). The old usb stack can be compiled in by prefixing the name 1323 with the letter 'o', the old usb modules have been removed. 1324 Updating entry 20090216 for xorg and 20090215 for libmap may still 1325 apply. 1326 132720090217: 1328 The rc.conf(5) option if_up_delay has been renamed to 1329 defaultroute_delay to better reflect its purpose. If you have 1330 customized this setting in /etc/rc.conf you need to update it to 1331 use the new name. 1332 133320090216: 1334 xorg 7.4 wants to configure its input devices via hald which does not 1335 yet work with USB2. If the keyboard/mouse does not work in xorg then 1336 add 1337 Option "AllowEmptyInput" "off" 1338 to your ServerLayout section. This will cause X to use the configured 1339 kbd and mouse sections from your xorg.conf. 1340 134120090215: 1342 The GENERIC kernels for all architectures now default to the new USB2 1343 stack. No kernel config options or code have been removed so if a 1344 problem arises please report it and optionally revert to the old USB 1345 stack. If you are loading USB kernel modules or have a custom kernel 1346 that includes GENERIC then ensure that usb names are also changed over, 1347 eg uftdi -> usb2_serial_ftdi. 1348 1349 Older programs linked against the ports libusb 0.1 need to be 1350 redirected to the new stack's libusb20. /etc/libmap.conf can 1351 be used for this: 1352 # Map old usb library to new one for usb2 stack 1353 libusb-0.1.so.8 libusb20.so.1 1354 135520090209: 1356 All USB ethernet devices now attach as interfaces under the name ueN 1357 (eg. ue0). This is to provide a predictable name as vendors often 1358 change usb chipsets in a product without notice. 1359 136020090203: 1361 The ichsmb(4) driver has been changed to require SMBus slave 1362 addresses be left-justified (xxxxxxx0b) rather than right-justified. 1363 All of the other SMBus controller drivers require left-justified 1364 slave addresses, so this change makes all the drivers provide the 1365 same interface. 1366 136720090201: 1368 INET6 statistics (struct ip6stat) was updated. 1369 netstat(1) needs to be recompiled. 1370 137120090119: 1372 NTFS has been removed from GENERIC kernel on amd64 to match 1373 GENERIC on i386. Should not cause any issues since mount_ntfs(8) 1374 will load ntfs.ko module automatically when NTFS support is 1375 actually needed, unless ntfs.ko is not installed or security 1376 level prohibits loading kernel modules. If either is the case, 1377 "options NTFS" has to be added into kernel config. 1378 137920090115: 1380 TCP Appropriate Byte Counting (RFC 3465) support added to kernel. 1381 New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to 1382 800061. User space tools that rely on the size of struct tcpcb in 1383 tcp_var.h (e.g. sockstat) need to be recompiled. 1384 138520081225: 1386 ng_tty(4) module updated to match the new TTY subsystem. 1387 Due to API change, user-level applications must be updated. 1388 New API support added to mpd5 CVS and expected to be present 1389 in next mpd5.3 release. 1390 139120081219: 1392 With __FreeBSD_version 800060 the makefs tool is part of 1393 the base system (it was a port). 1394 139520081216: 1396 The afdata and ifnet locks have been changed from mutexes to 1397 rwlocks, network modules will need to be re-compiled. 1398 139920081214: 1400 __FreeBSD_version 800059 incorporates the new arp-v2 rewrite. 1401 RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated. 1402 The new code reduced struct rtentry{} by 16 bytes on 32-bit 1403 architecture and 40 bytes on 64-bit architecture. The userland 1404 applications "arp" and "ndp" have been updated accordingly. 1405 The output from "netstat -r" shows only routing entries and 1406 none of the L2 information. 1407 140820081130: 1409 __FreeBSD_version 800057 marks the switchover from the 1410 binary ath hal to source code. Users must add the line: 1411 1412 options AH_SUPPORT_AR5416 1413 1414 to their kernel config files when specifying: 1415 1416 device ath_hal 1417 1418 The ath_hal module no longer exists; the code is now compiled 1419 together with the driver in the ath module. It is now 1420 possible to tailor chip support (i.e. reduce the set of chips 1421 and thereby the code size); consult ath_hal(4) for details. 1422 142320081121: 1424 __FreeBSD_version 800054 adds memory barriers to 1425 <machine/atomic.h>, new interfaces to ifnet to facilitate 1426 multiple hardware transmit queues for cards that support 1427 them, and a lock-less ring-buffer implementation to 1428 enable drivers to more efficiently manage queueing of 1429 packets. 1430 143120081117: 1432 A new version of ZFS (version 13) has been merged to -HEAD. 1433 This version has zpool attribute "listsnapshots" off by 1434 default, which means "zfs list" does not show snapshots, 1435 and is the same as Solaris behavior. 1436 143720081028: 1438 dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. 1439 144020081009: 1441 The uhci, ohci, ehci and slhci USB Host controller drivers have 1442 been put into separate modules. If you load the usb module 1443 separately through loader.conf you will need to load the 1444 appropriate *hci module as well. E.g. for a UHCI-based USB 2.0 1445 controller add the following to loader.conf: 1446 1447 uhci_load="YES" 1448 ehci_load="YES" 1449 145020081009: 1451 The ABI used by the PMC toolset has changed. Please keep 1452 userland (libpmc(3)) and the kernel module (hwpmc(4)) in 1453 sync. 1454 145520081009: 1456 atapci kernel module now includes only generic PCI ATA 1457 driver. AHCI driver moved to ataahci kernel module. 1458 All vendor-specific code moved into separate kernel modules: 1459 ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, 1460 atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, 1461 atamarvell, atamicron, atanational, atanetcell, atanvidia, 1462 atapromise, ataserverworks, atasiliconimage, atasis, atavia 1463 146420080820: 1465 The TTY subsystem of the kernel has been replaced by a new 1466 implementation, which provides better scalability and an 1467 improved driver model. Most common drivers have been migrated to 1468 the new TTY subsystem, while others have not. The following 1469 drivers have not yet been ported to the new TTY layer: 1470 1471 PCI/ISA: 1472 cy, digi, rc, rp, sio 1473 1474 USB: 1475 ubser, ucycom 1476 1477 Line disciplines: 1478 ng_h4, ng_tty, ppp, sl, snp 1479 1480 Adding these drivers to your kernel configuration file shall 1481 cause compilation to fail. 1482 148320080818: 1484 ntpd has been upgraded to 4.2.4p5. 1485 148620080801: 1487 OpenSSH has been upgraded to 5.1p1. 1488 1489 For many years, FreeBSD's version of OpenSSH preferred DSA 1490 over RSA for host and user authentication keys. With this 1491 upgrade, we've switched to the vendor's default of RSA over 1492 DSA. This may cause upgraded clients to warn about unknown 1493 host keys even for previously known hosts. Users should 1494 follow the usual procedure for verifying host keys before 1495 accepting the RSA key. 1496 1497 This can be circumvented by setting the "HostKeyAlgorithms" 1498 option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh 1499 command line. 1500 1501 Please note that the sequence of keys offered for 1502 authentication has been changed as well. You may want to 1503 specify IdentityFile in a different order to revert this 1504 behavior. 1505 150620080713: 1507 The sio(4) driver has been removed from the i386 and amd64 1508 kernel configuration files. This means uart(4) is now the 1509 default serial port driver on those platforms as well. 1510 1511 To prevent collisions with the sio(4) driver, the uart(4) driver 1512 uses different names for its device nodes. This means the 1513 onboard serial port will now most likely be called "ttyu0" 1514 instead of "ttyd0". You may need to reconfigure applications to 1515 use the new device names. 1516 1517 When using the serial port as a boot console, be sure to update 1518 /boot/device.hints and /etc/ttys before booting the new kernel. 1519 If you forget to do so, you can still manually specify the hints 1520 at the loader prompt: 1521 1522 set hint.uart.0.at="isa" 1523 set hint.uart.0.port="0x3F8" 1524 set hint.uart.0.flags="0x10" 1525 set hint.uart.0.irq="4" 1526 boot -s 1527 152820080609: 1529 The gpt(8) utility has been removed. Use gpart(8) to partition 1530 disks instead. 1531 153220080603: 1533 The version that Linuxulator emulates was changed from 2.4.2 1534 to 2.6.16. If you experience any problems with Linux binaries 1535 please try to set sysctl compat.linux.osrelease to 2.4.2 and 1536 if it fixes the problem contact emulation mailing list. 1537 153820080525: 1539 ISDN4BSD (I4B) was removed from the src tree. You may need to 1540 update a your kernel configuration and remove relevant entries. 1541 154220080509: 1543 I have checked in code to support multiple routing tables. 1544 See the man pages setfib(1) and setfib(2). 1545 This is a hopefully backwards compatible version, 1546 but to make use of it you need to compile your kernel 1547 with options ROUTETABLES=2 (or more up to 16). 1548 154920080420: 1550 The 802.11 wireless support was redone to enable multi-bss 1551 operation on devices that are capable. The underlying device 1552 is no longer used directly but instead wlanX devices are 1553 cloned with ifconfig. This requires changes to rc.conf files. 1554 For example, change: 1555 ifconfig_ath0="WPA DHCP" 1556 to 1557 wlans_ath0=wlan0 1558 ifconfig_wlan0="WPA DHCP" 1559 see rc.conf(5) for more details. In addition, mergemaster of 1560 /etc/rc.d is highly recommended. Simultaneous update of userland 1561 and kernel wouldn't hurt either. 1562 1563 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 1564 modules were merged into the base wlan module. All references 1565 to these modules (e.g. in kernel config files) must be removed. 1566 156720080408: 1568 psm(4) has gained write(2) support in native operation level. 1569 Arbitrary commands can be written to /dev/psm%d and status can 1570 be read back from it. Therefore, an application is responsible 1571 for status validation and error recovery. It is a no-op in 1572 other operation levels. 1573 157420080312: 1575 Support for KSE threading has been removed from the kernel. To 1576 run legacy applications linked against KSE libmap.conf may 1577 be used. The following libmap.conf may be used to ensure 1578 compatibility with any prior release: 1579 1580 libpthread.so.1 libthr.so.1 1581 libpthread.so.2 libthr.so.2 1582 libkse.so.3 libthr.so.3 1583 158420080301: 1585 The layout of struct vmspace has changed. This affects libkvm 1586 and any executables that link against libkvm and use the 1587 kvm_getprocs() function. In particular, but not exclusively, 1588 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 1589 The effects are minimal, but it's advisable to upgrade world 1590 nonetheless. 1591 159220080229: 1593 The latest em driver no longer has support in it for the 1594 82575 adapter, this is now moved to the igb driver. The 1595 split was done to make new features that are incompatible 1596 with older hardware easier to do. 1597 159820080220: 1599 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 1600 likewise the kernel option is now GEOM_LINUX_LVM. 1601 160220080211: 1603 The default NFS mount mode has changed from UDP to TCP for 1604 increased reliability. If you rely on (insecurely) NFS 1605 mounting across a firewall you may need to update your 1606 firewall rules. 1607 160820080208: 1609 Belatedly note the addition of m_collapse for compacting 1610 mbuf chains. 1611 161220080126: 1613 The fts(3) structures have been changed to use adequate 1614 integer types for their members and so to be able to cope 1615 with huge file trees. The old fts(3) ABI is preserved 1616 through symbol versioning in libc, so third-party binaries 1617 using fts(3) should still work, although they will not take 1618 advantage of the extended types. At the same time, some 1619 third-party software might fail to build after this change 1620 due to unportable assumptions made in its source code about 1621 fts(3) structure members. Such software should be fixed 1622 by its vendor or, in the worst case, in the ports tree. 1623 FreeBSD_version 800015 marks this change for the unlikely 1624 case that a portable fix is impossible. 1625 162620080123: 1627 To upgrade to -current after this date, you must be running 1628 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 1629 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 1630 163120071128: 1632 The ADAPTIVE_GIANT kernel option has been retired because its 1633 functionality is the default now. 1634 163520071118: 1636 The AT keyboard emulation of sunkbd(4) has been turned on 1637 by default. In order to make the special symbols of the Sun 1638 keyboards driven by sunkbd(4) work under X these now have 1639 to be configured the same way as Sun USB keyboards driven 1640 by ukbd(4) (which also does AT keyboard emulation), f.e.: 1641 1642 Option "XkbLayout" "us" 1643 Option "XkbRules" "xorg" 1644 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 1645 164620071024: 1647 It has been decided that it is desirable to provide ABI 1648 backwards compatibility to the FreeBSD 4/5/6 versions of the 1649 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 1650 broken with the introduction of PCI domain support (see the 1651 20070930 entry). Unfortunately, this required the ABI of 1652 PCIOCGETCONF to be broken again in order to be able to 1653 provide backwards compatibility to the old version of that 1654 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 1655 again. As for prominent ports this affects neither pciutils 1656 nor xorg-server this time, the hal port needs to be rebuilt 1657 however. 1658 165920071020: 1660 The misnamed kthread_create() and friends have been renamed 1661 to kproc_create() etc. Many of the callers already 1662 used kproc_start().. 1663 I will return kthread_create() and friends in a while 1664 with implementations that actually create threads, not procs. 1665 Renaming corresponds with version 800002. 1666 166720071010: 1668 RELENG_7 branched. 1669 1670COMMON ITEMS: 1671 1672 General Notes 1673 ------------- 1674 Avoid using make -j when upgrading. While generally safe, there are 1675 sometimes problems using -j to upgrade. If your upgrade fails with 1676 -j, please try again without -j. From time to time in the past there 1677 have been problems using -j with buildworld and/or installworld. This 1678 is especially true when upgrading between "distant" versions (eg one 1679 that cross a major release boundary or several minor releases, or when 1680 several months have passed on the -current branch). 1681 1682 Sometimes, obscure build problems are the result of environment 1683 poisoning. This can happen because the make utility reads its 1684 environment when searching for values for global variables. To run 1685 your build attempts in an "environmental clean room", prefix all make 1686 commands with 'env -i '. See the env(1) manual page for more details. 1687 1688 When upgrading from one major version to another it is generally best 1689 to upgrade to the latest code in the currently installed branch first, 1690 then do an upgrade to the new branch. This is the best-tested upgrade 1691 path, and has the highest probability of being successful. Please try 1692 this approach before reporting problems with a major version upgrade. 1693 1694 When upgrading a live system, having a root shell around before 1695 installing anything can help undo problems. Not having a root shell 1696 around can lead to problems if pam has changed too much from your 1697 starting point to allow continued authentication after the upgrade. 1698 1699 ZFS notes 1700 --------- 1701 When upgrading the boot ZFS pool to a new version, always follow 1702 these two steps: 1703 1704 1.) recompile and reinstall the ZFS boot loader and boot block 1705 (this is part of "make buildworld" and "make installworld") 1706 1707 2.) update the ZFS boot block on your boot drive 1708 1709 The following example updates the ZFS boot block on the first 1710 partition (freebsd-boot) of a GPT partitioned drive ad0: 1711 "gpart bootcode -p /boot/gptzfsboot -i 1 ad0" 1712 1713 Non-boot pools do not need these updates. 1714 1715 To build a kernel 1716 ----------------- 1717 If you are updating from a prior version of FreeBSD (even one just 1718 a few days old), you should follow this procedure. It is the most 1719 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1720 1721 make kernel-toolchain 1722 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1723 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1724 1725 To test a kernel once 1726 --------------------- 1727 If you just want to boot a kernel once (because you are not sure 1728 if it works, or if you want to boot a known bad kernel to provide 1729 debugging information) run 1730 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1731 nextboot -k testkernel 1732 1733 To just build a kernel when you know that it won't mess you up 1734 -------------------------------------------------------------- 1735 This assumes you are already running a CURRENT system. Replace 1736 ${arch} with the architecture of your machine (e.g. "i386", 1737 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1738 1739 cd src/sys/${arch}/conf 1740 config KERNEL_NAME_HERE 1741 cd ../compile/KERNEL_NAME_HERE 1742 make depend 1743 make 1744 make install 1745 1746 If this fails, go to the "To build a kernel" section. 1747 1748 To rebuild everything and install it on the current system. 1749 ----------------------------------------------------------- 1750 # Note: sometimes if you are running current you gotta do more than 1751 # is listed here if you are upgrading from a really old current. 1752 1753 <make sure you have good level 0 dumps> 1754 make buildworld 1755 make kernel KERNCONF=YOUR_KERNEL_HERE 1756 [1] 1757 <reboot in single user> [3] 1758 mergemaster -p [5] 1759 make installworld 1760 mergemaster -i [4] 1761 make delete-old [6] 1762 <reboot> 1763 1764 To cross-install current onto a separate partition 1765 -------------------------------------------------- 1766 # In this approach we use a separate partition to hold 1767 # current's root, 'usr', and 'var' directories. A partition 1768 # holding "/", "/usr" and "/var" should be about 2GB in 1769 # size. 1770 1771 <make sure you have good level 0 dumps> 1772 <boot into -stable> 1773 make buildworld 1774 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1775 <maybe newfs current's root partition> 1776 <mount current's root partition on directory ${CURRENT_ROOT}> 1777 make installworld DESTDIR=${CURRENT_ROOT} 1778 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1779 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1780 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1781 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1782 <reboot into current> 1783 <do a "native" rebuild/install as described in the previous section> 1784 <maybe install compatibility libraries from ports/misc/compat*> 1785 <reboot> 1786 1787 1788 To upgrade in-place from stable to current 1789 ---------------------------------------------- 1790 <make sure you have good level 0 dumps> 1791 make buildworld [9] 1792 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1793 [1] 1794 <reboot in single user> [3] 1795 mergemaster -p [5] 1796 make installworld 1797 mergemaster -i [4] 1798 make delete-old [6] 1799 <reboot> 1800 1801 Make sure that you've read the UPDATING file to understand the 1802 tweaks to various things you need. At this point in the life 1803 cycle of current, things change often and you are on your own 1804 to cope. The defaults can also change, so please read ALL of 1805 the UPDATING entries. 1806 1807 Also, if you are tracking -current, you must be subscribed to 1808 freebsd-current@freebsd.org. Make sure that before you update 1809 your sources that you have read and understood all the recent 1810 messages there. If in doubt, please track -stable which has 1811 much fewer pitfalls. 1812 1813 [1] If you have third party modules, such as vmware, you 1814 should disable them at this point so they don't crash your 1815 system on reboot. 1816 1817 [3] From the bootblocks, boot -s, and then do 1818 fsck -p 1819 mount -u / 1820 mount -a 1821 cd src 1822 adjkerntz -i # if CMOS is wall time 1823 Also, when doing a major release upgrade, it is required that 1824 you boot into single user mode to do the installworld. 1825 1826 [4] Note: This step is non-optional. Failure to do this step 1827 can result in a significant reduction in the functionality of the 1828 system. Attempting to do it by hand is not recommended and those 1829 that pursue this avenue should read this file carefully, as well 1830 as the archives of freebsd-current and freebsd-hackers mailing lists 1831 for potential gotchas. The -U option is also useful to consider. 1832 See mergemaster(8) for more information. 1833 1834 [5] Usually this step is a noop. However, from time to time 1835 you may need to do this if you get unknown user in the following 1836 step. It never hurts to do it all the time. You may need to 1837 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1838 install) after the buildworld before this step if you last updated 1839 from current before 20130425 or from -stable before 20130430. 1840 1841 [6] This only deletes old files and directories. Old libraries 1842 can be deleted by "make delete-old-libs", but you have to make 1843 sure that no program is using those libraries anymore. 1844 1845 [8] In order to have a kernel that can run the 4.x binaries needed to 1846 do an installworld, you must include the COMPAT_FREEBSD4 option in 1847 your kernel. Failure to do so may leave you with a system that is 1848 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1849 required to run the 5.x binaries on more recent kernels. And so on 1850 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1851 1852 Make sure that you merge any new devices from GENERIC since the 1853 last time you updated your kernel config file. 1854 1855 [9] When checking out sources, you must include the -P flag to have 1856 cvs prune empty directories. 1857 1858 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1859 "?=" instead of the "=" assignment operator, so that buildworld can 1860 override the CPUTYPE if it needs to. 1861 1862 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1863 not on the command line, or in /etc/make.conf. buildworld will 1864 warn if it is improperly defined. 1865FORMAT: 1866 1867This file contains a list, in reverse chronological order, of major 1868breakages in tracking -current. It is not guaranteed to be a complete 1869list of such breakages, and only contains entries since October 10, 2007. 1870If you need to see UPDATING entries from before that date, you will need 1871to fetch an UPDATING file from an older FreeBSD release. 1872 1873Copyright information: 1874 1875Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1876 1877Redistribution, publication, translation and use, with or without 1878modification, in full or in part, in any form or format of this 1879document are permitted without further permission from the author. 1880 1881THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1882IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1883WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1884DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1885INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1886(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1887SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1888HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1889STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1890IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1891POSSIBILITY OF SUCH DAMAGE. 1892 1893Contact Warner Losh if you have any questions about your use of 1894this document. 1895 1896$FreeBSD$ 1897