25 2620100713: 27 Due to the import of powerpc64 support, all existing powerpc kernel 28 configuration files must be updated with a machine directive like this: 29 machine powerpc powerpc 30 31 In addition, an updated config(8) is required to build powerpc kernels 32 after this change. 33 3420100713: 35 A new version of ZFS (version 15) has been merged to -HEAD. 36 This version uses a python library for the following subcommands: 37 zfs allow, zfs unallow, zfs groupspace, zfs userspace. 38 For full functionality of these commands the following port must 39 be installed: sysutils/py-zfs 40 4120100429: 42 'vm_page's are now hashed by physical address to an array of mutexes. 43 Currently this is only used to serialize access to hold_count. Over 44 time the page queue mutex will be peeled away. This changes the size 45 of pmap on every architecture. And requires all callers of vm_page_hold 46 and vm_page_unhold to be updated. 47 4820100402: 49 WITH_CTF can now be specified in src.conf (not recommended, there 50 are some problems with static executables), make.conf (would also 51 affect ports which do not use GNU make and do not override the 52 compile targets) or in the kernel config (via "makeoptions 53 WITH_CTF=yes"). 54 When WITH_CTF was specified there before this was silently ignored, 55 so make sure that WITH_CTF is not used in places which could lead 56 to unwanted behavior. 57 5820100311: 59 The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32 60 to allow 32-bit compatibility on non-x86 platforms. All kernel 61 configurations on amd64 and ia64 platforms using these options must 62 be modified accordingly. 63 6420100113: 65 The utmp user accounting database has been replaced with utmpx, 66 the user accounting interface standardized by POSIX. 67 Unfortunately the semantics of utmp and utmpx don't match, 68 making it practically impossible to support both interfaces. 69 The user accounting database is used by tools like finger(1), 70 last(1), talk(1), w(1) and ac(8). 71 72 All applications in the base system use utmpx. This means only 73 local binaries (e.g. from the ports tree) may still use these 74 utmp database files. These applications must be rebuilt to make 75 use of utmpx. 76 77 After the system has been upgraded, it is safe to remove the old 78 log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), 79 assuming their contents is of no importance anymore. Old wtmp 80 databases can only be used by last(1) and ac(8) after they have 81 been converted to the new format using wtmpcvt(1). 82 8320100108: 84 Introduce the kernel thread "deadlock resolver" (which can be enabled 85 via the DEADLKRES option, see NOTES for more details) and the 86 sleepq_type() function for sleepqueues. 87 8820091202: 89 The rc.firewall and rc.firewall6 were unified, and 90 rc.firewall6 and rc.d/ip6fw were removed. 91 According to the removal of rc.d/ip6fw, ipv6_firewall_* rc 92 variables are obsoleted. Instead, the following new rc 93 variables are added to rc.d/ipfw: 94 95 firewall_client_net_ipv6, firewall_simple_iif_ipv6, 96 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, 97 firewall_simple_onet_ipv6, firewall_trusted_ipv6 98 99 The meanings correspond to the relevant IPv4 variables. 100 10120091125: 102 8.0-RELEASE. 103 10420091113: 105 The default terminal emulation for syscons(4) has been changed 106 from cons25 to xterm on all platforms except pc98. This means 107 that the /etc/ttys file needs to be updated to ensure correct 108 operation of applications on the console. 109 110 The terminal emulation style can be toggled per window by using 111 vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration 112 options can be used to change the compile-time default back to 113 cons25. 114 115 To prevent graphical artifacts, make sure the TERM environment 116 variable is set to match the terminal emulation that is being 117 performed by syscons(4). 118 11920091109: 120 The layout of the structure ieee80211req_scan_result has changed. 121 Applications that require wireless scan results (e.g. ifconfig(8)) 122 from net80211 need to be recompiled. 123 124 Applications such as wpa_supplicant(8) may require a full world 125 build without using NO_CLEAN in order to get synchronized with the 126 new structure. 127 12820091025: 129 The iwn(4) driver has been updated to support the 5000 and 5150 series. 130 There's one kernel module for each firmware. Adding "device iwnfw" 131 to the kernel configuration file means including all three firmware 132 images inside the kernel. If you want to include just the one for 133 your wireless card, use the the devices iwn4965fw, iwn5000fw or 134 iwn5150fw. 135 13620090926: 137 The rc.d/network_ipv6, IPv6 configuration script has been integrated 138 into rc.d/netif. The changes are the following: 139 140 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF 141 for IPv4. For aliases, $ifconfig_IF_aliasN should be used. 142 Note that both variables need the "inet6" keyword at the head. 143 144 Do not set $ipv6_network_interfaces manually if you do not 145 understand what you are doing. It is not needed in most cases. 146 147 $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but 148 they are obsolete. 149 150 2. $ipv6_enable is obsolete. Use $ipv6_prefer and 151 "inet6 accept_rtadv" keyword in ifconfig(8) instead. 152 153 If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and 154 all configured interfaces have "inet6 accept_rtadv" in the 155 $ifconfig_IF_ipv6. These are for backward compatibility. 156 157 3. A new variable $ipv6_prefer has been added. If NO, IPv6 158 functionality of interfaces with no corresponding 159 $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag, 160 and the default address selection policy of ip6addrctl(8) 161 is the IPv4-preferred one (see rc.d/ip6addrctl for more details). 162 Note that if you want to configure IPv6 functionality on the 163 disabled interfaces after boot, first you need to clear the flag by 164 using ifconfig(8) like: 165 166 ifconfig em0 inet6 -ifdisabled 167 168 If YES, the default address selection policy is set as 169 IPv6-preferred. 170 171 The default value of $ipv6_prefer is NO. 172 173 4. If your system need to receive Router Advertisement messages, 174 define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8) 175 scripts automatically invoke rtsol(8) when the interface becomes 176 UP. The Router Advertisement messages are used for SLAAC 177 (State-Less Address AutoConfiguration). 178 17920090922: 180 802.11s D3.03 support was committed. This is incompatible with the 181 previous code, which was based on D3.0. 182 18320090912: 184 A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value 185 of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to 186 control whether accepting Router Advertisement messages or not. 187 Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and 188 a sysctl variable net.inet6.ip6.auto_linklocal is its default value. 189 The ifconfig(8) utility now supports these flags. 190 19120090910: 192 ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for 193 mount(8) and -a option for df(1) to see them. 194 19520090825: 196 The old tunable hw.bus.devctl_disable has been superseded by 197 hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be 198 replaced by hw.bus.devctl_queue=0. The default for this new tunable 199 is 1000. 200 20120090813: 202 Remove the option STOP_NMI. The default action is now to use NMI only 203 for KDB via the newly introduced function stop_cpus_hard() and 204 maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64. 205 20620090803: 207 The stable/8 branch created in subversion. This corresponds to the 208 RELENG_8 branch in CVS. 209 21020090719: 211 Bump the shared library version numbers for all libraries that do not 212 use symbol versioning as part of the 8.0-RELEASE cycle. Bump 213 __FreeBSD_version to 800105. 214 21520090714: 216 Due to changes in the implementation of virtual network stack support, 217 all network-related kernel modules must be recompiled. As this change 218 breaks the ABI, bump __FreeBSD_version to 800104. 219 22020090713: 221 The TOE interface to the TCP syncache has been modified to remove 222 struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack. 223 The cxgb driver is the only TOE consumer affected by this change, and 224 needs to be recompiled along with the kernel. As this change breaks 225 the ABI, bump __FreeBSD_version to 800103. 226 22720090712: 228 Padding has been added to struct tcpcb, sackhint and tcpstat in 229 <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst 230 maintaining the ABI. However, this change breaks the ABI, so bump 231 __FreeBSD_version to 800102. User space tools that rely on the size of 232 any of these structs (e.g. sockstat) need to be recompiled. 233 23420090630: 235 The NFS_LEGACYRPC option has been removed along with the old kernel 236 RPC implementation that this option selected. Kernel configurations 237 may need to be adjusted. 238 23920090629: 240 The network interface device nodes at /dev/net/<interface> have been 241 removed. All ioctl operations can be performed the normal way using 242 routing sockets. The kqueue functionality can generally be replaced 243 with routing sockets. 244 24520090628: 246 The documentation from the FreeBSD Documentation Project (Handbook, 247 FAQ, etc.) is now installed via packages by sysinstall(8) and under 248 the /usr/local/share/doc/freebsd directory instead of /usr/share/doc. 249 25020090624: 251 The ABI of various structures related to the SYSV IPC API have been 252 changed. As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel 253 options now all require COMPAT_FREEBSD7. Bump __FreeBSD_version to 254 800100. 255 25620090622: 257 Layout of struct vnet has changed as routing related variables were 258 moved to their own Vimage module. Modules need to be recompiled. Bump 259 __FreeBSD_version to 800099. 260 26120090619: 262 NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024 263 respectively. As long as no more than 16 groups per process are used, 264 no changes should be visible. When more than 16 groups are used, old 265 binaries may fail if they call getgroups() or getgrouplist() with 266 statically sized storage. Recompiling will work around this, but 267 applications should be modified to use dynamically allocated storage 268 for group arrays as POSIX.1-2008 does not cap an implementation's 269 number of supported groups at NGROUPS_MAX+1 as previous versions did. 270 271 NFS and portalfs mounts may also be affected as the list of groups is 272 truncated to 16. Users of NFS who use more than 16 groups, should 273 take care that negative group permissions are not used on the exported 274 file systems as they will not be reliable unless a GSSAPI based 275 authentication method is used. 276 27720090616: 278 The compiling option ADAPTIVE_LOCKMGRS has been introduced. This 279 option compiles in the support for adaptive spinning for lockmgrs 280 which want to enable it. The lockinit() function now accepts the flag 281 LK_ADAPTIVE in order to make the lock object subject to adaptive 282 spinning when both held in write and read mode. 283 28420090613: 285 The layout of the structure returned by IEEE80211_IOC_STA_INFO has 286 changed. User applications that use this ioctl need to be rebuilt. 287 28820090611: 289 The layout of struct thread has changed. Kernel and modules need to 290 be rebuilt. 291 29220090608: 293 The layout of structs ifnet, domain, protosw and vnet_net has changed. 294 Kernel modules need to be rebuilt. Bump __FreeBSD_version to 800097. 295 29620090602: 297 window(1) has been removed from the base system. It can now be 298 installed from ports. The port is called misc/window. 299 30020090601: 301 The way we are storing and accessing `routing table' entries has 302 changed. Programs reading the FIB, like netstat, need to be 303 re-compiled. 304 30520090601: 306 A new netisr implementation has been added for FreeBSD 8. Network 307 file system modules, such as igmp, ipdivert, and others, should be 308 rebuilt. 309 Bump __FreeBSD_version to 800096. 310 31120090530: 312 Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no 313 more valid. 314 31520090530: 316 Add VOP_ACCESSX(9). File system modules need to be rebuilt. 317 Bump __FreeBSD_version to 800094. 318 31920090529: 320 Add mnt_xflag field to 'struct mount'. File system modules need to be 321 rebuilt. 322 Bump __FreeBSD_version to 800093. 323 32420090528: 325 The compiling option ADAPTIVE_SX has been retired while it has been 326 introduced the option NO_ADAPTIVE_SX which handles the reversed logic. 327 The KPI for sx_init_flags() changes as accepting flags: 328 SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has 329 been introduced in order to handle the reversed logic. 330 Bump __FreeBSD_version to 800092. 331 33220090527: 333 Add support for hierarchical jails. Remove global securelevel. 334 Bump __FreeBSD_version to 800091. 335 33620090523: 337 The layout of struct vnet_net has changed, therefore modules 338 need to be rebuilt. 339 Bump __FreeBSD_version to 800090. 340 34120090523: 342 The newly imported zic(8) produces a new format in the output. Please 343 run tzsetup(8) to install the newly created data to /etc/localtime. 344 34520090520: 346 The sysctl tree for the usb stack has renamed from hw.usb2.* to 347 hw.usb.* and is now consistent again with previous releases. 348 34920090520: 350 802.11 monitor mode support was revised and driver api's were changed. 351 Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead 352 of DLT_IEEE802_11. No user-visible data structures were changed but 353 applications that use DLT_IEEE802_11 may require changes. 354 Bump __FreeBSD_version to 800088. 355 35620090430: 357 The layout of the following structs has changed: sysctl_oid, 358 socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, 359 vnet_inet6 and vnet_ipfw. Most modules need to be rebuild or 360 panics may be experienced. World rebuild is required for 361 correctly checking networking state from userland. 362 Bump __FreeBSD_version to 800085. 363 36420090429: 365 MLDv2 and Source-Specific Multicast (SSM) have been merged 366 to the IPv6 stack. VIMAGE hooks are in but not yet used. 367 The implementation of SSM within FreeBSD's IPv6 stack closely 368 follows the IPv4 implementation. 369 370 For kernel developers: 371 372 * The most important changes are that the ip6_output() and 373 ip6_input() paths no longer take the IN6_MULTI_LOCK, 374 and this lock has been downgraded to a non-recursive mutex. 375 376 * As with the changes to the IPv4 stack to support SSM, filtering 377 of inbound multicast traffic must now be performed by transport 378 protocols within the IPv6 stack. This does not apply to TCP and 379 SCTP, however, it does apply to UDP in IPv6 and raw IPv6. 380 381 * The KPIs used by IPv6 multicast are similar to those used by 382 the IPv4 stack, with the following differences: 383 * im6o_mc_filter() is analogous to imo_multicast_filter(). 384 * The legacy KAME entry points in6_joingroup and in6_leavegroup() 385 are shimmed to in6_mc_join() and in6_mc_leave() respectively. 386 * IN6_LOOKUP_MULTI() has been deprecated and removed. 387 * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs 388 for MLDv1 have an additional 'timer' argument which is used to 389 jitter the initial membership report for the solicited-node 390 multicast membership on-link. 391 * This is not strictly needed for MLDv2, which already jitters 392 its report transmissions. However, the 'timer' argument is 393 preserved in case MLDv1 is active on the interface. 394 395 * The KAME linked-list based IPv6 membership implementation has 396 been refactored to use a vector similar to that used by the IPv4 397 stack. 398 Code which maintains a list of its own multicast memberships 399 internally, e.g. carp, has been updated to reflect the new 400 semantics. 401 402 * There is a known Lock Order Reversal (LOR) due to in6_setscope() 403 acquiring the IF_AFDATA_LOCK and being called within ip6_output(). 404 Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an 405 implementation constraint which needs to be addressed in HEAD. 406 407 For application developers: 408 409 * The changes are broadly similar to those made for the IPv4 410 stack. 411 412 * The use of IPv4 and IPv6 multicast socket options on the same 413 socket, using mapped addresses, HAS NOT been tested or supported. 414 415 * There are a number of issues with the implementation of various 416 IPv6 multicast APIs which need to be resolved in the API surface 417 before the implementation is fully compatible with KAME userland 418 use, and these are mostly to do with interface index treatment. 419 420 * The literature available discusses the use of either the delta / ASM 421 API with setsockopt(2)/getsockopt(2), or the full-state / ASM API 422 using setsourcefilter(3)/getsourcefilter(3). For more information 423 please refer to RFC 3768, 'Socket Interface Extensions for 424 Multicast Source Filters'. 425 426 * Applications which use the published RFC 3678 APIs should be fine. 427 428 For systems administrators: 429 430 * The mtest(8) utility has been refactored to support IPv6, in 431 addition to IPv4. Interface addresses are no longer accepted 432 as arguments, their names must be used instead. The utility 433 will map the interface name to its first IPv4 address as 434 returned by getifaddrs(3). 435 436 * The ifmcstat(8) utility has also been updated to print the MLDv2 437 endpoint state and source filter lists via sysctl(3). 438 439 * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable 440 loopback of IPv6 multicast datagrams by default; it defaults to 1 441 to preserve the existing behaviour. Disabling multicast loopback is 442 recommended for optimal system performance. 443 444 * The IPv6 MROUTING code has been changed to examine this sysctl 445 instead of attempting to perform a group lookup before looping 446 back forwarded datagrams. 447 448 Bump __FreeBSD_version to 800084. 449 45020090422: 451 Implement low-level Bluetooth HCI API. 452 Bump __FreeBSD_version to 800083. 453 45420090419: 455 The layout of struct malloc_type, used by modules to register new 456 memory allocation types, has changed. Most modules will need to 457 be rebuilt or panics may be experienced. 458 Bump __FreeBSD_version to 800081. 459 46020090415: 461 Anticipate overflowing inp_flags - add inp_flags2. 462 This changes most offsets in inpcb, so checking v4 connection 463 state will require a world rebuild. 464 Bump __FreeBSD_version to 800080. 465 46620090415: 467 Add an llentry to struct route and struct route_in6. Modules 468 embedding a struct route will need to be recompiled. 469 Bump __FreeBSD_version to 800079. 470 47120090414: 472 The size of rt_metrics_lite and by extension rtentry has changed. 473 Networking administration apps will need to be recompiled. 474 The route command now supports show as an alias for get, weighting 475 of routes, sticky and nostick flags to alter the behavior of stateful 476 load balancing. 477 Bump __FreeBSD_version to 800078. 478 47920090408: 480 Do not use Giant for kbdmux(4) locking. This is wrong and 481 apparently causing more problems than it solves. This will 482 re-open the issue where interrupt handlers may race with 483 kbdmux(4) in polling mode. Typical symptoms include (but 484 not limited to) duplicated and/or missing characters when 485 low level console functions (such as gets) are used while 486 interrupts are enabled (for example geli password prompt, 487 mountroot prompt etc.). Disabling kbdmux(4) may help. 488 48920090407: 490 The size of structs vnet_net, vnet_inet and vnet_ipfw has changed; 491 kernel modules referencing any of the above need to be recompiled. 492 Bump __FreeBSD_version to 800075. 493 49420090320: 495 GEOM_PART has become the default partition slicer for storage devices, 496 replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It 497 introduces some changes: 498 499 MSDOS/EBR: the devices created from MSDOS extended partition entries 500 (EBR) can be named differently than with GEOM_MBR and are now symlinks 501 to devices with offset-based names. fstabs may need to be modified. 502 503 BSD: the "geometry does not match label" warning is harmless in most 504 cases but it points to problems in file system misalignment with 505 disk geometry. The "c" partition is now implicit, covers the whole 506 top-level drive and cannot be (mis)used by users. 507 508 General: Kernel dumps are now not allowed to be written to devices 509 whose partition types indicate they are meant to be used for file 510 systems (or, in case of MSDOS partitions, as something else than 511 the "386BSD" type). 512 513 Most of these changes date approximately from 200812. 514 51520090319: 516 The uscanner(4) driver has been removed from the kernel. This follows 517 Linux removing theirs in 2.6 and making libusb the default interface 518 (supported by sane). 519 52020090319: 521 The multicast forwarding code has been cleaned up. netstat(1) 522 only relies on KVM now for printing bandwidth upcall meters. 523 The IPv4 and IPv6 modules are split into ip_mroute_mod and 524 ip6_mroute_mod respectively. The config(5) options for statically 525 compiling this code remain the same, i.e. 'options MROUTING'. 526 52720090315: 528 Support for the IFF_NEEDSGIANT network interface flag has been 529 removed, which means that non-MPSAFE network device drivers are no 530 longer supported. In particular, if_ar, if_sr, and network device 531 drivers from the old (legacy) USB stack can no longer be built or 532 used. 533 53420090313: 535 POSIX.1 Native Language Support (NLS) has been enabled in libc and 536 a bunch of new language catalog files have also been added. 537 This means that some common libc messages are now localized and 538 they depend on the LC_MESSAGES environmental variable. 539 54020090313: 541 The k8temp(4) driver has been renamed to amdtemp(4) since 542 support for Family 10 and Family 11 CPU families was added. 543 54420090309: 545 IGMPv3 and Source-Specific Multicast (SSM) have been merged 546 to the IPv4 stack. VIMAGE hooks are in but not yet used. 547 548 For kernel developers, the most important changes are that the 549 ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(), 550 and this lock has been downgraded to a non-recursive mutex. 551 552 Transport protocols (UDP, Raw IP) are now responsible for filtering 553 inbound multicast traffic according to group membership and source 554 filters. The imo_multicast_filter() KPI exists for this purpose. 555 Transports which do not use multicast (SCTP, TCP) already reject 556 multicast by default. Forwarding and receive performance may improve 557 as a mutex acquisition is no longer needed in the ip_input() 558 low-level input path. in_addmulti() and in_delmulti() are shimmed 559 to new KPIs which exist to support SSM in-kernel. 560 561 For application developers, it is recommended that loopback of 562 multicast datagrams be disabled for best performance, as this 563 will still cause the lock to be taken for each looped-back 564 datagram transmission. The net.inet.ip.mcast.loop sysctl may 565 be tuned to 0 to disable loopback by default; it defaults to 1 566 to preserve the existing behaviour. 567 568 For systems administrators, to obtain best performance with 569 multicast reception and multiple groups, it is always recommended 570 that a card with a suitably precise hash filter is used. Hash 571 collisions will still result in the lock being taken within the 572 transport protocol input path to check group membership. 573 574 If deploying FreeBSD in an environment with IGMP snooping switches, 575 it is recommended that the net.inet.igmp.sendlocal sysctl remain 576 enabled; this forces 224.0.0.0/24 group membership to be announced 577 via IGMP. 578 579 The size of 'struct igmpstat' has changed; netstat needs to be 580 recompiled to reflect this. 581 Bump __FreeBSD_version to 800070. 582 58320090309: 584 libusb20.so.1 is now installed as libusb.so.1 and the ports system 585 updated to use it. This requires a buildworld/installworld in order to 586 update the library and dependencies (usbconfig, etc). Its advisable to 587 rebuild all ports which uses libusb. More specific directions are given 588 in the ports collection UPDATING file. Any /etc/libmap.conf entries for 589 libusb are no longer required and can be removed. 590 59120090302: 592 A workaround is committed to allow the creation of System V shared 593 memory segment of size > 2 GB on the 64-bit architectures. 594 Due to a limitation of the existing ABI, the shm_segsz member 595 of the struct shmid_ds, returned by shmctl(IPC_STAT) call is 596 wrong for large segments. Note that limits must be explicitly 597 raised to allow such segments to be created. 598 59920090301: 600 The layout of struct ifnet has changed, requiring a rebuild of all 601 network device driver modules. 602 60320090227: 604 The /dev handling for the new USB stack has changed, a 605 buildworld/installworld is required for libusb20. 606 60720090223: 608 The new USB2 stack has now been permanently moved in and all kernel and 609 module names reverted to their previous values (eg, usb, ehci, ohci, 610 ums, ...). The old usb stack can be compiled in by prefixing the name 611 with the letter 'o', the old usb modules have been removed. 612 Updating entry 20090216 for xorg and 20090215 for libmap may still 613 apply. 614 61520090217: 616 The rc.conf(5) option if_up_delay has been renamed to 617 defaultroute_delay to better reflect its purpose. If you have 618 customized this setting in /etc/rc.conf you need to update it to 619 use the new name. 620 62120090216: 622 xorg 7.4 wants to configure its input devices via hald which does not 623 yet work with USB2. If the keyboard/mouse does not work in xorg then 624 add 625 Option "AllowEmptyInput" "off" 626 to your ServerLayout section. This will cause X to use the configured 627 kbd and mouse sections from your xorg.conf. 628 62920090215: 630 The GENERIC kernels for all architectures now default to the new USB2 631 stack. No kernel config options or code have been removed so if a 632 problem arises please report it and optionally revert to the old USB 633 stack. If you are loading USB kernel modules or have a custom kernel 634 that includes GENERIC then ensure that usb names are also changed over, 635 eg uftdi -> usb2_serial_ftdi. 636 637 Older programs linked against the ports libusb 0.1 need to be 638 redirected to the new stack's libusb20. /etc/libmap.conf can 639 be used for this: 640 # Map old usb library to new one for usb2 stack 641 libusb-0.1.so.8 libusb20.so.1 642 64320090209: 644 All USB ethernet devices now attach as interfaces under the name ueN 645 (eg. ue0). This is to provide a predictable name as vendors often 646 change usb chipsets in a product without notice. 647 64820090203: 649 The ichsmb(4) driver has been changed to require SMBus slave 650 addresses be left-justified (xxxxxxx0b) rather than right-justified. 651 All of the other SMBus controller drivers require left-justified 652 slave addresses, so this change makes all the drivers provide the 653 same interface. 654 65520090201: 656 INET6 statistics (struct ip6stat) was updated. 657 netstat(1) needs to be recompiled. 658 65920090119: 660 NTFS has been removed from GENERIC kernel on amd64 to match 661 GENERIC on i386. Should not cause any issues since mount_ntfs(8) 662 will load ntfs.ko module automatically when NTFS support is 663 actually needed, unless ntfs.ko is not installed or security 664 level prohibits loading kernel modules. If either is the case, 665 "options NTFS" has to be added into kernel config. 666 66720090115: 668 TCP Appropriate Byte Counting (RFC 3465) support added to kernel. 669 New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to 670 800061. User space tools that rely on the size of struct tcpcb in 671 tcp_var.h (e.g. sockstat) need to be recompiled. 672 67320081225: 674 ng_tty(4) module updated to match the new TTY subsystem. 675 Due to API change, user-level applications must be updated. 676 New API support added to mpd5 CVS and expected to be present 677 in next mpd5.3 release. 678 67920081219: 680 With __FreeBSD_version 800060 the makefs tool is part of 681 the base system (it was a port). 682 68320081216: 684 The afdata and ifnet locks have been changed from mutexes to 685 rwlocks, network modules will need to be re-compiled. 686 68720081214: 688 __FreeBSD_version 800059 incorporates the new arp-v2 rewrite. 689 RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated. 690 The new code reduced struct rtentry{} by 16 bytes on 32-bit 691 architecture and 40 bytes on 64-bit architecture. The userland 692 applications "arp" and "ndp" have been updated accordingly. 693 The output from "netstat -r" shows only routing entries and 694 none of the L2 information. 695 69620081130: 697 __FreeBSD_version 800057 marks the switchover from the 698 binary ath hal to source code. Users must add the line: 699 700 options AH_SUPPORT_AR5416 701 702 to their kernel config files when specifying: 703 704 device ath_hal 705 706 The ath_hal module no longer exists; the code is now compiled 707 together with the driver in the ath module. It is now 708 possible to tailor chip support (i.e. reduce the set of chips 709 and thereby the code size); consult ath_hal(4) for details. 710 71120081121: 712 __FreeBSD_version 800054 adds memory barriers to 713 <machine/atomic.h>, new interfaces to ifnet to facilitate 714 multiple hardware transmit queues for cards that support 715 them, and a lock-less ring-buffer implementation to 716 enable drivers to more efficiently manage queueing of 717 packets. 718 71920081117: 720 A new version of ZFS (version 13) has been merged to -HEAD. 721 This version has zpool attribute "listsnapshots" off by 722 default, which means "zfs list" does not show snapshots, 723 and is the same as Solaris behavior. 724 72520081028: 726 dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. 727 72820081009: 729 The uhci, ohci, ehci and slhci USB Host controller drivers have 730 been put into separate modules. If you load the usb module 731 separately through loader.conf you will need to load the 732 appropriate *hci module as well. E.g. for a UHCI-based USB 2.0 733 controller add the following to loader.conf: 734 735 uhci_load="YES" 736 ehci_load="YES" 737 73820081009: 739 The ABI used by the PMC toolset has changed. Please keep 740 userland (libpmc(3)) and the kernel module (hwpmc(4)) in 741 sync. 742 74320081009: 744 atapci kernel module now includes only generic PCI ATA 745 driver. AHCI driver moved to ataahci kernel module. 746 All vendor-specific code moved into separate kernel modules: 747 ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, 748 atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, 749 atamarvell, atamicron, atanational, atanetcell, atanvidia, 750 atapromise, ataserverworks, atasiliconimage, atasis, atavia 751 75220080820: 753 The TTY subsystem of the kernel has been replaced by a new 754 implementation, which provides better scalability and an 755 improved driver model. Most common drivers have been migrated to 756 the new TTY subsystem, while others have not. The following 757 drivers have not yet been ported to the new TTY layer: 758 759 PCI/ISA: 760 cy, digi, rc, rp, sio 761 762 USB: 763 ubser, ucycom 764 765 Line disciplines: 766 ng_h4, ng_tty, ppp, sl, snp 767 768 Adding these drivers to your kernel configuration file shall 769 cause compilation to fail. 770 77120080818: 772 ntpd has been upgraded to 4.2.4p5. 773 77420080801: 775 OpenSSH has been upgraded to 5.1p1. 776 777 For many years, FreeBSD's version of OpenSSH preferred DSA 778 over RSA for host and user authentication keys. With this 779 upgrade, we've switched to the vendor's default of RSA over 780 DSA. This may cause upgraded clients to warn about unknown 781 host keys even for previously known hosts. Users should 782 follow the usual procedure for verifying host keys before 783 accepting the RSA key. 784 785 This can be circumvented by setting the "HostKeyAlgorithms" 786 option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh 787 command line. 788 789 Please note that the sequence of keys offered for 790 authentication has been changed as well. You may want to 791 specify IdentityFile in a different order to revert this 792 behavior. 793 79420080713: 795 The sio(4) driver has been removed from the i386 and amd64 796 kernel configuration files. This means uart(4) is now the 797 default serial port driver on those platforms as well. 798 799 To prevent collisions with the sio(4) driver, the uart(4) driver 800 uses different names for its device nodes. This means the 801 onboard serial port will now most likely be called "ttyu0" 802 instead of "ttyd0". You may need to reconfigure applications to 803 use the new device names. 804 805 When using the serial port as a boot console, be sure to update 806 /boot/device.hints and /etc/ttys before booting the new kernel. 807 If you forget to do so, you can still manually specify the hints 808 at the loader prompt: 809 810 set hint.uart.0.at="isa" 811 set hint.uart.0.port="0x3F8" 812 set hint.uart.0.flags="0x10" 813 set hint.uart.0.irq="4" 814 boot -s 815 81620080609: 817 The gpt(8) utility has been removed. Use gpart(8) to partition 818 disks instead. 819 82020080603: 821 The version that Linuxulator emulates was changed from 2.4.2 822 to 2.6.16. If you experience any problems with Linux binaries 823 please try to set sysctl compat.linux.osrelease to 2.4.2 and 824 if it fixes the problem contact emulation mailing list. 825 82620080525: 827 ISDN4BSD (I4B) was removed from the src tree. You may need to 828 update a your kernel configuration and remove relevant entries. 829 83020080509: 831 I have checked in code to support multiple routing tables. 832 See the man pages setfib(1) and setfib(2). 833 This is a hopefully backwards compatible version, 834 but to make use of it you need to compile your kernel 835 with options ROUTETABLES=2 (or more up to 16). 836 83720080420: 838 The 802.11 wireless support was redone to enable multi-bss 839 operation on devices that are capable. The underlying device 840 is no longer used directly but instead wlanX devices are 841 cloned with ifconfig. This requires changes to rc.conf files. 842 For example, change: 843 ifconfig_ath0="WPA DHCP" 844 to 845 wlans_ath0=wlan0 846 ifconfig_wlan0="WPA DHCP" 847 see rc.conf(5) for more details. In addition, mergemaster of 848 /etc/rc.d is highly recommended. Simultaneous update of userland 849 and kernel wouldn't hurt either. 850 851 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 852 modules were merged into the base wlan module. All references 853 to these modules (e.g. in kernel config files) must be removed. 854 85520080408: 856 psm(4) has gained write(2) support in native operation level. 857 Arbitrary commands can be written to /dev/psm%d and status can 858 be read back from it. Therefore, an application is responsible 859 for status validation and error recovery. It is a no-op in 860 other operation levels. 861 86220080312: 863 Support for KSE threading has been removed from the kernel. To 864 run legacy applications linked against KSE libmap.conf may 865 be used. The following libmap.conf may be used to ensure 866 compatibility with any prior release: 867 868 libpthread.so.1 libthr.so.1 869 libpthread.so.2 libthr.so.2 870 libkse.so.3 libthr.so.3 871 87220080301: 873 The layout of struct vmspace has changed. This affects libkvm 874 and any executables that link against libkvm and use the 875 kvm_getprocs() function. In particular, but not exclusively, 876 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 877 The effects are minimal, but it's advisable to upgrade world 878 nonetheless. 879 88020080229: 881 The latest em driver no longer has support in it for the 882 82575 adapter, this is now moved to the igb driver. The 883 split was done to make new features that are incompatible 884 with older hardware easier to do. 885 88620080220: 887 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 888 likewise the kernel option is now GEOM_LINUX_LVM. 889 89020080211: 891 The default NFS mount mode has changed from UDP to TCP for 892 increased reliability. If you rely on (insecurely) NFS 893 mounting across a firewall you may need to update your 894 firewall rules. 895 89620080208: 897 Belatedly note the addition of m_collapse for compacting 898 mbuf chains. 899 90020080126: 901 The fts(3) structures have been changed to use adequate 902 integer types for their members and so to be able to cope 903 with huge file trees. The old fts(3) ABI is preserved 904 through symbol versioning in libc, so third-party binaries 905 using fts(3) should still work, although they will not take 906 advantage of the extended types. At the same time, some 907 third-party software might fail to build after this change 908 due to unportable assumptions made in its source code about 909 fts(3) structure members. Such software should be fixed 910 by its vendor or, in the worst case, in the ports tree. 911 FreeBSD_version 800015 marks this change for the unlikely 912 case that a portable fix is impossible. 913 91420080123: 915 To upgrade to -current after this date, you must be running 916 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 917 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 918 91920071128: 920 The ADAPTIVE_GIANT kernel option has been retired because its 921 functionality is the default now. 922 92320071118: 924 The AT keyboard emulation of sunkbd(4) has been turned on 925 by default. In order to make the special symbols of the Sun 926 keyboards driven by sunkbd(4) work under X these now have 927 to be configured the same way as Sun USB keyboards driven 928 by ukbd(4) (which also does AT keyboard emulation), f.e.: 929 930 Option "XkbLayout" "us" 931 Option "XkbRules" "xorg" 932 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 933 93420071024: 935 It has been decided that it is desirable to provide ABI 936 backwards compatibility to the FreeBSD 4/5/6 versions of the 937 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 938 broken with the introduction of PCI domain support (see the 939 20070930 entry). Unfortunately, this required the ABI of 940 PCIOCGETCONF to be broken again in order to be able to 941 provide backwards compatibility to the old version of that 942 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 943 again. As for prominent ports this affects neither pciutils 944 nor xorg-server this time, the hal port needs to be rebuilt 945 however. 946 94720071020: 948 The misnamed kthread_create() and friends have been renamed 949 to kproc_create() etc. Many of the callers already 950 used kproc_start().. 951 I will return kthread_create() and friends in a while 952 with implementations that actually create threads, not procs. 953 Renaming corresponds with version 800002. 954 95520071010: 956 RELENG_7 branched. 957 958COMMON ITEMS: 959 960 General Notes 961 ------------- 962 Avoid using make -j when upgrading. While generally safe, there are 963 sometimes problems using -j to upgrade. If your upgrade fails with 964 -j, please try again without -j. From time to time in the past there 965 have been problems using -j with buildworld and/or installworld. This 966 is especially true when upgrading between "distant" versions (eg one 967 that cross a major release boundary or several minor releases, or when 968 several months have passed on the -current branch). 969 970 Sometimes, obscure build problems are the result of environment 971 poisoning. This can happen because the make utility reads its 972 environment when searching for values for global variables. To run 973 your build attempts in an "environmental clean room", prefix all make 974 commands with 'env -i '. See the env(1) manual page for more details. 975 976 When upgrading from one major version to another it is generally best 977 to upgrade to the latest code in the currently installed branch first, 978 then do an upgrade to the new branch. This is the best-tested upgrade 979 path, and has the highest probability of being successful. Please try 980 this approach before reporting problems with a major version upgrade. 981 982 ZFS notes 983 --------- 984 When upgrading the boot ZFS pool to a new version, always follow 985 these two steps: 986 987 1.) recompile and reinstall the ZFS boot loader and boot block 988 (this is part of "make buildworld" and "make installworld") 989 990 2.) update the ZFS boot block on your boot drive 991 992 The following example updates the ZFS boot block on the first 993 partition (freebsd-boot) of a GPT partitioned drive ad0: 994 "gpart bootcode -p /boot/gptzfsboot -i 1 ad0" 995 996 Non-boot pools do not need these updates. 997 998 To build a kernel 999 ----------------- 1000 If you are updating from a prior version of FreeBSD (even one just 1001 a few days old), you should follow this procedure. It is the most 1002 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1003 1004 make kernel-toolchain 1005 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1006 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1007 1008 To test a kernel once 1009 --------------------- 1010 If you just want to boot a kernel once (because you are not sure 1011 if it works, or if you want to boot a known bad kernel to provide 1012 debugging information) run 1013 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1014 nextboot -k testkernel 1015 1016 To just build a kernel when you know that it won't mess you up 1017 -------------------------------------------------------------- 1018 This assumes you are already running a CURRENT system. Replace 1019 ${arch} with the architecture of your machine (e.g. "i386", 1020 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1021 1022 cd src/sys/${arch}/conf 1023 config KERNEL_NAME_HERE 1024 cd ../compile/KERNEL_NAME_HERE 1025 make depend 1026 make 1027 make install 1028 1029 If this fails, go to the "To build a kernel" section. 1030 1031 To rebuild everything and install it on the current system. 1032 ----------------------------------------------------------- 1033 # Note: sometimes if you are running current you gotta do more than 1034 # is listed here if you are upgrading from a really old current. 1035 1036 <make sure you have good level 0 dumps> 1037 make buildworld 1038 make kernel KERNCONF=YOUR_KERNEL_HERE 1039 [1] 1040 <reboot in single user> [3] 1041 mergemaster -p [5] 1042 make installworld 1043 make delete-old 1044 mergemaster -i [4] 1045 <reboot> 1046 1047 1048 To cross-install current onto a separate partition 1049 -------------------------------------------------- 1050 # In this approach we use a separate partition to hold 1051 # current's root, 'usr', and 'var' directories. A partition 1052 # holding "/", "/usr" and "/var" should be about 2GB in 1053 # size. 1054 1055 <make sure you have good level 0 dumps> 1056 <boot into -stable> 1057 make buildworld 1058 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1059 <maybe newfs current's root partition> 1060 <mount current's root partition on directory ${CURRENT_ROOT}> 1061 make installworld DESTDIR=${CURRENT_ROOT} 1062 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1063 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1064 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1065 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1066 <reboot into current> 1067 <do a "native" rebuild/install as described in the previous section> 1068 <maybe install compatibility libraries from ports/misc/compat*> 1069 <reboot> 1070 1071 1072 To upgrade in-place from 8.x-stable to current 1073 ---------------------------------------------- 1074 <make sure you have good level 0 dumps> 1075 make buildworld [9] 1076 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1077 [1] 1078 <reboot in single user> [3] 1079 mergemaster -p [5] 1080 make installworld 1081 make delete-old 1082 mergemaster -i [4] 1083 <reboot> 1084 1085 Make sure that you've read the UPDATING file to understand the 1086 tweaks to various things you need. At this point in the life 1087 cycle of current, things change often and you are on your own 1088 to cope. The defaults can also change, so please read ALL of 1089 the UPDATING entries. 1090 1091 Also, if you are tracking -current, you must be subscribed to 1092 freebsd-current@freebsd.org. Make sure that before you update 1093 your sources that you have read and understood all the recent 1094 messages there. If in doubt, please track -stable which has 1095 much fewer pitfalls. 1096 1097 [1] If you have third party modules, such as vmware, you 1098 should disable them at this point so they don't crash your 1099 system on reboot. 1100 1101 [3] From the bootblocks, boot -s, and then do 1102 fsck -p 1103 mount -u / 1104 mount -a 1105 cd src 1106 adjkerntz -i # if CMOS is wall time 1107 Also, when doing a major release upgrade, it is required that 1108 you boot into single user mode to do the installworld. 1109 1110 [4] Note: This step is non-optional. Failure to do this step 1111 can result in a significant reduction in the functionality of the 1112 system. Attempting to do it by hand is not recommended and those 1113 that pursue this avenue should read this file carefully, as well 1114 as the archives of freebsd-current and freebsd-hackers mailing lists 1115 for potential gotchas. The -U option is also useful to consider. 1116 See mergemaster(8) for more information. 1117 1118 [5] Usually this step is a noop. However, from time to time 1119 you may need to do this if you get unknown user in the following 1120 step. It never hurts to do it all the time. You may need to 1121 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1122 install) after the buildworld before this step if you last updated 1123 from current before 20020224 or from -stable before 20020408. 1124 1125 [8] In order to have a kernel that can run the 4.x binaries needed to 1126 do an installworld, you must include the COMPAT_FREEBSD4 option in 1127 your kernel. Failure to do so may leave you with a system that is 1128 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1129 required to run the 5.x binaries on more recent kernels. And so on 1130 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1131 1132 Make sure that you merge any new devices from GENERIC since the 1133 last time you updated your kernel config file. 1134 1135 [9] When checking out sources, you must include the -P flag to have 1136 cvs prune empty directories. 1137 1138 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1139 "?=" instead of the "=" assignment operator, so that buildworld can 1140 override the CPUTYPE if it needs to. 1141 1142 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1143 not on the command line, or in /etc/make.conf. buildworld will 1144 warn if it is improperly defined. 1145FORMAT: 1146 1147This file contains a list, in reverse chronological order, of major 1148breakages in tracking -current. Not all things will be listed here, 1149and it only starts on October 16, 2004. Updating files can found in 1150previous releases if your system is older than this. 1151 1152Copyright information: 1153 1154Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1155 1156Redistribution, publication, translation and use, with or without 1157modification, in full or in part, in any form or format of this 1158document are permitted without further permission from the author. 1159 1160THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1161IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1162WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1163DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1164INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1165(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1166SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1167HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1168STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1169IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1170POSSIBILITY OF SUCH DAMAGE. 1171 1172Contact Warner Losh if you have any questions about your use of 1173this document. 1174
| 37 3820100713: 39 Due to the import of powerpc64 support, all existing powerpc kernel 40 configuration files must be updated with a machine directive like this: 41 machine powerpc powerpc 42 43 In addition, an updated config(8) is required to build powerpc kernels 44 after this change. 45 4620100713: 47 A new version of ZFS (version 15) has been merged to -HEAD. 48 This version uses a python library for the following subcommands: 49 zfs allow, zfs unallow, zfs groupspace, zfs userspace. 50 For full functionality of these commands the following port must 51 be installed: sysutils/py-zfs 52 5320100429: 54 'vm_page's are now hashed by physical address to an array of mutexes. 55 Currently this is only used to serialize access to hold_count. Over 56 time the page queue mutex will be peeled away. This changes the size 57 of pmap on every architecture. And requires all callers of vm_page_hold 58 and vm_page_unhold to be updated. 59 6020100402: 61 WITH_CTF can now be specified in src.conf (not recommended, there 62 are some problems with static executables), make.conf (would also 63 affect ports which do not use GNU make and do not override the 64 compile targets) or in the kernel config (via "makeoptions 65 WITH_CTF=yes"). 66 When WITH_CTF was specified there before this was silently ignored, 67 so make sure that WITH_CTF is not used in places which could lead 68 to unwanted behavior. 69 7020100311: 71 The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32 72 to allow 32-bit compatibility on non-x86 platforms. All kernel 73 configurations on amd64 and ia64 platforms using these options must 74 be modified accordingly. 75 7620100113: 77 The utmp user accounting database has been replaced with utmpx, 78 the user accounting interface standardized by POSIX. 79 Unfortunately the semantics of utmp and utmpx don't match, 80 making it practically impossible to support both interfaces. 81 The user accounting database is used by tools like finger(1), 82 last(1), talk(1), w(1) and ac(8). 83 84 All applications in the base system use utmpx. This means only 85 local binaries (e.g. from the ports tree) may still use these 86 utmp database files. These applications must be rebuilt to make 87 use of utmpx. 88 89 After the system has been upgraded, it is safe to remove the old 90 log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), 91 assuming their contents is of no importance anymore. Old wtmp 92 databases can only be used by last(1) and ac(8) after they have 93 been converted to the new format using wtmpcvt(1). 94 9520100108: 96 Introduce the kernel thread "deadlock resolver" (which can be enabled 97 via the DEADLKRES option, see NOTES for more details) and the 98 sleepq_type() function for sleepqueues. 99 10020091202: 101 The rc.firewall and rc.firewall6 were unified, and 102 rc.firewall6 and rc.d/ip6fw were removed. 103 According to the removal of rc.d/ip6fw, ipv6_firewall_* rc 104 variables are obsoleted. Instead, the following new rc 105 variables are added to rc.d/ipfw: 106 107 firewall_client_net_ipv6, firewall_simple_iif_ipv6, 108 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, 109 firewall_simple_onet_ipv6, firewall_trusted_ipv6 110 111 The meanings correspond to the relevant IPv4 variables. 112 11320091125: 114 8.0-RELEASE. 115 11620091113: 117 The default terminal emulation for syscons(4) has been changed 118 from cons25 to xterm on all platforms except pc98. This means 119 that the /etc/ttys file needs to be updated to ensure correct 120 operation of applications on the console. 121 122 The terminal emulation style can be toggled per window by using 123 vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration 124 options can be used to change the compile-time default back to 125 cons25. 126 127 To prevent graphical artifacts, make sure the TERM environment 128 variable is set to match the terminal emulation that is being 129 performed by syscons(4). 130 13120091109: 132 The layout of the structure ieee80211req_scan_result has changed. 133 Applications that require wireless scan results (e.g. ifconfig(8)) 134 from net80211 need to be recompiled. 135 136 Applications such as wpa_supplicant(8) may require a full world 137 build without using NO_CLEAN in order to get synchronized with the 138 new structure. 139 14020091025: 141 The iwn(4) driver has been updated to support the 5000 and 5150 series. 142 There's one kernel module for each firmware. Adding "device iwnfw" 143 to the kernel configuration file means including all three firmware 144 images inside the kernel. If you want to include just the one for 145 your wireless card, use the the devices iwn4965fw, iwn5000fw or 146 iwn5150fw. 147 14820090926: 149 The rc.d/network_ipv6, IPv6 configuration script has been integrated 150 into rc.d/netif. The changes are the following: 151 152 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF 153 for IPv4. For aliases, $ifconfig_IF_aliasN should be used. 154 Note that both variables need the "inet6" keyword at the head. 155 156 Do not set $ipv6_network_interfaces manually if you do not 157 understand what you are doing. It is not needed in most cases. 158 159 $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but 160 they are obsolete. 161 162 2. $ipv6_enable is obsolete. Use $ipv6_prefer and 163 "inet6 accept_rtadv" keyword in ifconfig(8) instead. 164 165 If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and 166 all configured interfaces have "inet6 accept_rtadv" in the 167 $ifconfig_IF_ipv6. These are for backward compatibility. 168 169 3. A new variable $ipv6_prefer has been added. If NO, IPv6 170 functionality of interfaces with no corresponding 171 $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag, 172 and the default address selection policy of ip6addrctl(8) 173 is the IPv4-preferred one (see rc.d/ip6addrctl for more details). 174 Note that if you want to configure IPv6 functionality on the 175 disabled interfaces after boot, first you need to clear the flag by 176 using ifconfig(8) like: 177 178 ifconfig em0 inet6 -ifdisabled 179 180 If YES, the default address selection policy is set as 181 IPv6-preferred. 182 183 The default value of $ipv6_prefer is NO. 184 185 4. If your system need to receive Router Advertisement messages, 186 define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8) 187 scripts automatically invoke rtsol(8) when the interface becomes 188 UP. The Router Advertisement messages are used for SLAAC 189 (State-Less Address AutoConfiguration). 190 19120090922: 192 802.11s D3.03 support was committed. This is incompatible with the 193 previous code, which was based on D3.0. 194 19520090912: 196 A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value 197 of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to 198 control whether accepting Router Advertisement messages or not. 199 Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and 200 a sysctl variable net.inet6.ip6.auto_linklocal is its default value. 201 The ifconfig(8) utility now supports these flags. 202 20320090910: 204 ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for 205 mount(8) and -a option for df(1) to see them. 206 20720090825: 208 The old tunable hw.bus.devctl_disable has been superseded by 209 hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be 210 replaced by hw.bus.devctl_queue=0. The default for this new tunable 211 is 1000. 212 21320090813: 214 Remove the option STOP_NMI. The default action is now to use NMI only 215 for KDB via the newly introduced function stop_cpus_hard() and 216 maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64. 217 21820090803: 219 The stable/8 branch created in subversion. This corresponds to the 220 RELENG_8 branch in CVS. 221 22220090719: 223 Bump the shared library version numbers for all libraries that do not 224 use symbol versioning as part of the 8.0-RELEASE cycle. Bump 225 __FreeBSD_version to 800105. 226 22720090714: 228 Due to changes in the implementation of virtual network stack support, 229 all network-related kernel modules must be recompiled. As this change 230 breaks the ABI, bump __FreeBSD_version to 800104. 231 23220090713: 233 The TOE interface to the TCP syncache has been modified to remove 234 struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack. 235 The cxgb driver is the only TOE consumer affected by this change, and 236 needs to be recompiled along with the kernel. As this change breaks 237 the ABI, bump __FreeBSD_version to 800103. 238 23920090712: 240 Padding has been added to struct tcpcb, sackhint and tcpstat in 241 <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst 242 maintaining the ABI. However, this change breaks the ABI, so bump 243 __FreeBSD_version to 800102. User space tools that rely on the size of 244 any of these structs (e.g. sockstat) need to be recompiled. 245 24620090630: 247 The NFS_LEGACYRPC option has been removed along with the old kernel 248 RPC implementation that this option selected. Kernel configurations 249 may need to be adjusted. 250 25120090629: 252 The network interface device nodes at /dev/net/<interface> have been 253 removed. All ioctl operations can be performed the normal way using 254 routing sockets. The kqueue functionality can generally be replaced 255 with routing sockets. 256 25720090628: 258 The documentation from the FreeBSD Documentation Project (Handbook, 259 FAQ, etc.) is now installed via packages by sysinstall(8) and under 260 the /usr/local/share/doc/freebsd directory instead of /usr/share/doc. 261 26220090624: 263 The ABI of various structures related to the SYSV IPC API have been 264 changed. As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel 265 options now all require COMPAT_FREEBSD7. Bump __FreeBSD_version to 266 800100. 267 26820090622: 269 Layout of struct vnet has changed as routing related variables were 270 moved to their own Vimage module. Modules need to be recompiled. Bump 271 __FreeBSD_version to 800099. 272 27320090619: 274 NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024 275 respectively. As long as no more than 16 groups per process are used, 276 no changes should be visible. When more than 16 groups are used, old 277 binaries may fail if they call getgroups() or getgrouplist() with 278 statically sized storage. Recompiling will work around this, but 279 applications should be modified to use dynamically allocated storage 280 for group arrays as POSIX.1-2008 does not cap an implementation's 281 number of supported groups at NGROUPS_MAX+1 as previous versions did. 282 283 NFS and portalfs mounts may also be affected as the list of groups is 284 truncated to 16. Users of NFS who use more than 16 groups, should 285 take care that negative group permissions are not used on the exported 286 file systems as they will not be reliable unless a GSSAPI based 287 authentication method is used. 288 28920090616: 290 The compiling option ADAPTIVE_LOCKMGRS has been introduced. This 291 option compiles in the support for adaptive spinning for lockmgrs 292 which want to enable it. The lockinit() function now accepts the flag 293 LK_ADAPTIVE in order to make the lock object subject to adaptive 294 spinning when both held in write and read mode. 295 29620090613: 297 The layout of the structure returned by IEEE80211_IOC_STA_INFO has 298 changed. User applications that use this ioctl need to be rebuilt. 299 30020090611: 301 The layout of struct thread has changed. Kernel and modules need to 302 be rebuilt. 303 30420090608: 305 The layout of structs ifnet, domain, protosw and vnet_net has changed. 306 Kernel modules need to be rebuilt. Bump __FreeBSD_version to 800097. 307 30820090602: 309 window(1) has been removed from the base system. It can now be 310 installed from ports. The port is called misc/window. 311 31220090601: 313 The way we are storing and accessing `routing table' entries has 314 changed. Programs reading the FIB, like netstat, need to be 315 re-compiled. 316 31720090601: 318 A new netisr implementation has been added for FreeBSD 8. Network 319 file system modules, such as igmp, ipdivert, and others, should be 320 rebuilt. 321 Bump __FreeBSD_version to 800096. 322 32320090530: 324 Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no 325 more valid. 326 32720090530: 328 Add VOP_ACCESSX(9). File system modules need to be rebuilt. 329 Bump __FreeBSD_version to 800094. 330 33120090529: 332 Add mnt_xflag field to 'struct mount'. File system modules need to be 333 rebuilt. 334 Bump __FreeBSD_version to 800093. 335 33620090528: 337 The compiling option ADAPTIVE_SX has been retired while it has been 338 introduced the option NO_ADAPTIVE_SX which handles the reversed logic. 339 The KPI for sx_init_flags() changes as accepting flags: 340 SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has 341 been introduced in order to handle the reversed logic. 342 Bump __FreeBSD_version to 800092. 343 34420090527: 345 Add support for hierarchical jails. Remove global securelevel. 346 Bump __FreeBSD_version to 800091. 347 34820090523: 349 The layout of struct vnet_net has changed, therefore modules 350 need to be rebuilt. 351 Bump __FreeBSD_version to 800090. 352 35320090523: 354 The newly imported zic(8) produces a new format in the output. Please 355 run tzsetup(8) to install the newly created data to /etc/localtime. 356 35720090520: 358 The sysctl tree for the usb stack has renamed from hw.usb2.* to 359 hw.usb.* and is now consistent again with previous releases. 360 36120090520: 362 802.11 monitor mode support was revised and driver api's were changed. 363 Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead 364 of DLT_IEEE802_11. No user-visible data structures were changed but 365 applications that use DLT_IEEE802_11 may require changes. 366 Bump __FreeBSD_version to 800088. 367 36820090430: 369 The layout of the following structs has changed: sysctl_oid, 370 socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, 371 vnet_inet6 and vnet_ipfw. Most modules need to be rebuild or 372 panics may be experienced. World rebuild is required for 373 correctly checking networking state from userland. 374 Bump __FreeBSD_version to 800085. 375 37620090429: 377 MLDv2 and Source-Specific Multicast (SSM) have been merged 378 to the IPv6 stack. VIMAGE hooks are in but not yet used. 379 The implementation of SSM within FreeBSD's IPv6 stack closely 380 follows the IPv4 implementation. 381 382 For kernel developers: 383 384 * The most important changes are that the ip6_output() and 385 ip6_input() paths no longer take the IN6_MULTI_LOCK, 386 and this lock has been downgraded to a non-recursive mutex. 387 388 * As with the changes to the IPv4 stack to support SSM, filtering 389 of inbound multicast traffic must now be performed by transport 390 protocols within the IPv6 stack. This does not apply to TCP and 391 SCTP, however, it does apply to UDP in IPv6 and raw IPv6. 392 393 * The KPIs used by IPv6 multicast are similar to those used by 394 the IPv4 stack, with the following differences: 395 * im6o_mc_filter() is analogous to imo_multicast_filter(). 396 * The legacy KAME entry points in6_joingroup and in6_leavegroup() 397 are shimmed to in6_mc_join() and in6_mc_leave() respectively. 398 * IN6_LOOKUP_MULTI() has been deprecated and removed. 399 * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs 400 for MLDv1 have an additional 'timer' argument which is used to 401 jitter the initial membership report for the solicited-node 402 multicast membership on-link. 403 * This is not strictly needed for MLDv2, which already jitters 404 its report transmissions. However, the 'timer' argument is 405 preserved in case MLDv1 is active on the interface. 406 407 * The KAME linked-list based IPv6 membership implementation has 408 been refactored to use a vector similar to that used by the IPv4 409 stack. 410 Code which maintains a list of its own multicast memberships 411 internally, e.g. carp, has been updated to reflect the new 412 semantics. 413 414 * There is a known Lock Order Reversal (LOR) due to in6_setscope() 415 acquiring the IF_AFDATA_LOCK and being called within ip6_output(). 416 Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an 417 implementation constraint which needs to be addressed in HEAD. 418 419 For application developers: 420 421 * The changes are broadly similar to those made for the IPv4 422 stack. 423 424 * The use of IPv4 and IPv6 multicast socket options on the same 425 socket, using mapped addresses, HAS NOT been tested or supported. 426 427 * There are a number of issues with the implementation of various 428 IPv6 multicast APIs which need to be resolved in the API surface 429 before the implementation is fully compatible with KAME userland 430 use, and these are mostly to do with interface index treatment. 431 432 * The literature available discusses the use of either the delta / ASM 433 API with setsockopt(2)/getsockopt(2), or the full-state / ASM API 434 using setsourcefilter(3)/getsourcefilter(3). For more information 435 please refer to RFC 3768, 'Socket Interface Extensions for 436 Multicast Source Filters'. 437 438 * Applications which use the published RFC 3678 APIs should be fine. 439 440 For systems administrators: 441 442 * The mtest(8) utility has been refactored to support IPv6, in 443 addition to IPv4. Interface addresses are no longer accepted 444 as arguments, their names must be used instead. The utility 445 will map the interface name to its first IPv4 address as 446 returned by getifaddrs(3). 447 448 * The ifmcstat(8) utility has also been updated to print the MLDv2 449 endpoint state and source filter lists via sysctl(3). 450 451 * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable 452 loopback of IPv6 multicast datagrams by default; it defaults to 1 453 to preserve the existing behaviour. Disabling multicast loopback is 454 recommended for optimal system performance. 455 456 * The IPv6 MROUTING code has been changed to examine this sysctl 457 instead of attempting to perform a group lookup before looping 458 back forwarded datagrams. 459 460 Bump __FreeBSD_version to 800084. 461 46220090422: 463 Implement low-level Bluetooth HCI API. 464 Bump __FreeBSD_version to 800083. 465 46620090419: 467 The layout of struct malloc_type, used by modules to register new 468 memory allocation types, has changed. Most modules will need to 469 be rebuilt or panics may be experienced. 470 Bump __FreeBSD_version to 800081. 471 47220090415: 473 Anticipate overflowing inp_flags - add inp_flags2. 474 This changes most offsets in inpcb, so checking v4 connection 475 state will require a world rebuild. 476 Bump __FreeBSD_version to 800080. 477 47820090415: 479 Add an llentry to struct route and struct route_in6. Modules 480 embedding a struct route will need to be recompiled. 481 Bump __FreeBSD_version to 800079. 482 48320090414: 484 The size of rt_metrics_lite and by extension rtentry has changed. 485 Networking administration apps will need to be recompiled. 486 The route command now supports show as an alias for get, weighting 487 of routes, sticky and nostick flags to alter the behavior of stateful 488 load balancing. 489 Bump __FreeBSD_version to 800078. 490 49120090408: 492 Do not use Giant for kbdmux(4) locking. This is wrong and 493 apparently causing more problems than it solves. This will 494 re-open the issue where interrupt handlers may race with 495 kbdmux(4) in polling mode. Typical symptoms include (but 496 not limited to) duplicated and/or missing characters when 497 low level console functions (such as gets) are used while 498 interrupts are enabled (for example geli password prompt, 499 mountroot prompt etc.). Disabling kbdmux(4) may help. 500 50120090407: 502 The size of structs vnet_net, vnet_inet and vnet_ipfw has changed; 503 kernel modules referencing any of the above need to be recompiled. 504 Bump __FreeBSD_version to 800075. 505 50620090320: 507 GEOM_PART has become the default partition slicer for storage devices, 508 replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It 509 introduces some changes: 510 511 MSDOS/EBR: the devices created from MSDOS extended partition entries 512 (EBR) can be named differently than with GEOM_MBR and are now symlinks 513 to devices with offset-based names. fstabs may need to be modified. 514 515 BSD: the "geometry does not match label" warning is harmless in most 516 cases but it points to problems in file system misalignment with 517 disk geometry. The "c" partition is now implicit, covers the whole 518 top-level drive and cannot be (mis)used by users. 519 520 General: Kernel dumps are now not allowed to be written to devices 521 whose partition types indicate they are meant to be used for file 522 systems (or, in case of MSDOS partitions, as something else than 523 the "386BSD" type). 524 525 Most of these changes date approximately from 200812. 526 52720090319: 528 The uscanner(4) driver has been removed from the kernel. This follows 529 Linux removing theirs in 2.6 and making libusb the default interface 530 (supported by sane). 531 53220090319: 533 The multicast forwarding code has been cleaned up. netstat(1) 534 only relies on KVM now for printing bandwidth upcall meters. 535 The IPv4 and IPv6 modules are split into ip_mroute_mod and 536 ip6_mroute_mod respectively. The config(5) options for statically 537 compiling this code remain the same, i.e. 'options MROUTING'. 538 53920090315: 540 Support for the IFF_NEEDSGIANT network interface flag has been 541 removed, which means that non-MPSAFE network device drivers are no 542 longer supported. In particular, if_ar, if_sr, and network device 543 drivers from the old (legacy) USB stack can no longer be built or 544 used. 545 54620090313: 547 POSIX.1 Native Language Support (NLS) has been enabled in libc and 548 a bunch of new language catalog files have also been added. 549 This means that some common libc messages are now localized and 550 they depend on the LC_MESSAGES environmental variable. 551 55220090313: 553 The k8temp(4) driver has been renamed to amdtemp(4) since 554 support for Family 10 and Family 11 CPU families was added. 555 55620090309: 557 IGMPv3 and Source-Specific Multicast (SSM) have been merged 558 to the IPv4 stack. VIMAGE hooks are in but not yet used. 559 560 For kernel developers, the most important changes are that the 561 ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(), 562 and this lock has been downgraded to a non-recursive mutex. 563 564 Transport protocols (UDP, Raw IP) are now responsible for filtering 565 inbound multicast traffic according to group membership and source 566 filters. The imo_multicast_filter() KPI exists for this purpose. 567 Transports which do not use multicast (SCTP, TCP) already reject 568 multicast by default. Forwarding and receive performance may improve 569 as a mutex acquisition is no longer needed in the ip_input() 570 low-level input path. in_addmulti() and in_delmulti() are shimmed 571 to new KPIs which exist to support SSM in-kernel. 572 573 For application developers, it is recommended that loopback of 574 multicast datagrams be disabled for best performance, as this 575 will still cause the lock to be taken for each looped-back 576 datagram transmission. The net.inet.ip.mcast.loop sysctl may 577 be tuned to 0 to disable loopback by default; it defaults to 1 578 to preserve the existing behaviour. 579 580 For systems administrators, to obtain best performance with 581 multicast reception and multiple groups, it is always recommended 582 that a card with a suitably precise hash filter is used. Hash 583 collisions will still result in the lock being taken within the 584 transport protocol input path to check group membership. 585 586 If deploying FreeBSD in an environment with IGMP snooping switches, 587 it is recommended that the net.inet.igmp.sendlocal sysctl remain 588 enabled; this forces 224.0.0.0/24 group membership to be announced 589 via IGMP. 590 591 The size of 'struct igmpstat' has changed; netstat needs to be 592 recompiled to reflect this. 593 Bump __FreeBSD_version to 800070. 594 59520090309: 596 libusb20.so.1 is now installed as libusb.so.1 and the ports system 597 updated to use it. This requires a buildworld/installworld in order to 598 update the library and dependencies (usbconfig, etc). Its advisable to 599 rebuild all ports which uses libusb. More specific directions are given 600 in the ports collection UPDATING file. Any /etc/libmap.conf entries for 601 libusb are no longer required and can be removed. 602 60320090302: 604 A workaround is committed to allow the creation of System V shared 605 memory segment of size > 2 GB on the 64-bit architectures. 606 Due to a limitation of the existing ABI, the shm_segsz member 607 of the struct shmid_ds, returned by shmctl(IPC_STAT) call is 608 wrong for large segments. Note that limits must be explicitly 609 raised to allow such segments to be created. 610 61120090301: 612 The layout of struct ifnet has changed, requiring a rebuild of all 613 network device driver modules. 614 61520090227: 616 The /dev handling for the new USB stack has changed, a 617 buildworld/installworld is required for libusb20. 618 61920090223: 620 The new USB2 stack has now been permanently moved in and all kernel and 621 module names reverted to their previous values (eg, usb, ehci, ohci, 622 ums, ...). The old usb stack can be compiled in by prefixing the name 623 with the letter 'o', the old usb modules have been removed. 624 Updating entry 20090216 for xorg and 20090215 for libmap may still 625 apply. 626 62720090217: 628 The rc.conf(5) option if_up_delay has been renamed to 629 defaultroute_delay to better reflect its purpose. If you have 630 customized this setting in /etc/rc.conf you need to update it to 631 use the new name. 632 63320090216: 634 xorg 7.4 wants to configure its input devices via hald which does not 635 yet work with USB2. If the keyboard/mouse does not work in xorg then 636 add 637 Option "AllowEmptyInput" "off" 638 to your ServerLayout section. This will cause X to use the configured 639 kbd and mouse sections from your xorg.conf. 640 64120090215: 642 The GENERIC kernels for all architectures now default to the new USB2 643 stack. No kernel config options or code have been removed so if a 644 problem arises please report it and optionally revert to the old USB 645 stack. If you are loading USB kernel modules or have a custom kernel 646 that includes GENERIC then ensure that usb names are also changed over, 647 eg uftdi -> usb2_serial_ftdi. 648 649 Older programs linked against the ports libusb 0.1 need to be 650 redirected to the new stack's libusb20. /etc/libmap.conf can 651 be used for this: 652 # Map old usb library to new one for usb2 stack 653 libusb-0.1.so.8 libusb20.so.1 654 65520090209: 656 All USB ethernet devices now attach as interfaces under the name ueN 657 (eg. ue0). This is to provide a predictable name as vendors often 658 change usb chipsets in a product without notice. 659 66020090203: 661 The ichsmb(4) driver has been changed to require SMBus slave 662 addresses be left-justified (xxxxxxx0b) rather than right-justified. 663 All of the other SMBus controller drivers require left-justified 664 slave addresses, so this change makes all the drivers provide the 665 same interface. 666 66720090201: 668 INET6 statistics (struct ip6stat) was updated. 669 netstat(1) needs to be recompiled. 670 67120090119: 672 NTFS has been removed from GENERIC kernel on amd64 to match 673 GENERIC on i386. Should not cause any issues since mount_ntfs(8) 674 will load ntfs.ko module automatically when NTFS support is 675 actually needed, unless ntfs.ko is not installed or security 676 level prohibits loading kernel modules. If either is the case, 677 "options NTFS" has to be added into kernel config. 678 67920090115: 680 TCP Appropriate Byte Counting (RFC 3465) support added to kernel. 681 New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to 682 800061. User space tools that rely on the size of struct tcpcb in 683 tcp_var.h (e.g. sockstat) need to be recompiled. 684 68520081225: 686 ng_tty(4) module updated to match the new TTY subsystem. 687 Due to API change, user-level applications must be updated. 688 New API support added to mpd5 CVS and expected to be present 689 in next mpd5.3 release. 690 69120081219: 692 With __FreeBSD_version 800060 the makefs tool is part of 693 the base system (it was a port). 694 69520081216: 696 The afdata and ifnet locks have been changed from mutexes to 697 rwlocks, network modules will need to be re-compiled. 698 69920081214: 700 __FreeBSD_version 800059 incorporates the new arp-v2 rewrite. 701 RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated. 702 The new code reduced struct rtentry{} by 16 bytes on 32-bit 703 architecture and 40 bytes on 64-bit architecture. The userland 704 applications "arp" and "ndp" have been updated accordingly. 705 The output from "netstat -r" shows only routing entries and 706 none of the L2 information. 707 70820081130: 709 __FreeBSD_version 800057 marks the switchover from the 710 binary ath hal to source code. Users must add the line: 711 712 options AH_SUPPORT_AR5416 713 714 to their kernel config files when specifying: 715 716 device ath_hal 717 718 The ath_hal module no longer exists; the code is now compiled 719 together with the driver in the ath module. It is now 720 possible to tailor chip support (i.e. reduce the set of chips 721 and thereby the code size); consult ath_hal(4) for details. 722 72320081121: 724 __FreeBSD_version 800054 adds memory barriers to 725 <machine/atomic.h>, new interfaces to ifnet to facilitate 726 multiple hardware transmit queues for cards that support 727 them, and a lock-less ring-buffer implementation to 728 enable drivers to more efficiently manage queueing of 729 packets. 730 73120081117: 732 A new version of ZFS (version 13) has been merged to -HEAD. 733 This version has zpool attribute "listsnapshots" off by 734 default, which means "zfs list" does not show snapshots, 735 and is the same as Solaris behavior. 736 73720081028: 738 dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. 739 74020081009: 741 The uhci, ohci, ehci and slhci USB Host controller drivers have 742 been put into separate modules. If you load the usb module 743 separately through loader.conf you will need to load the 744 appropriate *hci module as well. E.g. for a UHCI-based USB 2.0 745 controller add the following to loader.conf: 746 747 uhci_load="YES" 748 ehci_load="YES" 749 75020081009: 751 The ABI used by the PMC toolset has changed. Please keep 752 userland (libpmc(3)) and the kernel module (hwpmc(4)) in 753 sync. 754 75520081009: 756 atapci kernel module now includes only generic PCI ATA 757 driver. AHCI driver moved to ataahci kernel module. 758 All vendor-specific code moved into separate kernel modules: 759 ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, 760 atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, 761 atamarvell, atamicron, atanational, atanetcell, atanvidia, 762 atapromise, ataserverworks, atasiliconimage, atasis, atavia 763 76420080820: 765 The TTY subsystem of the kernel has been replaced by a new 766 implementation, which provides better scalability and an 767 improved driver model. Most common drivers have been migrated to 768 the new TTY subsystem, while others have not. The following 769 drivers have not yet been ported to the new TTY layer: 770 771 PCI/ISA: 772 cy, digi, rc, rp, sio 773 774 USB: 775 ubser, ucycom 776 777 Line disciplines: 778 ng_h4, ng_tty, ppp, sl, snp 779 780 Adding these drivers to your kernel configuration file shall 781 cause compilation to fail. 782 78320080818: 784 ntpd has been upgraded to 4.2.4p5. 785 78620080801: 787 OpenSSH has been upgraded to 5.1p1. 788 789 For many years, FreeBSD's version of OpenSSH preferred DSA 790 over RSA for host and user authentication keys. With this 791 upgrade, we've switched to the vendor's default of RSA over 792 DSA. This may cause upgraded clients to warn about unknown 793 host keys even for previously known hosts. Users should 794 follow the usual procedure for verifying host keys before 795 accepting the RSA key. 796 797 This can be circumvented by setting the "HostKeyAlgorithms" 798 option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh 799 command line. 800 801 Please note that the sequence of keys offered for 802 authentication has been changed as well. You may want to 803 specify IdentityFile in a different order to revert this 804 behavior. 805 80620080713: 807 The sio(4) driver has been removed from the i386 and amd64 808 kernel configuration files. This means uart(4) is now the 809 default serial port driver on those platforms as well. 810 811 To prevent collisions with the sio(4) driver, the uart(4) driver 812 uses different names for its device nodes. This means the 813 onboard serial port will now most likely be called "ttyu0" 814 instead of "ttyd0". You may need to reconfigure applications to 815 use the new device names. 816 817 When using the serial port as a boot console, be sure to update 818 /boot/device.hints and /etc/ttys before booting the new kernel. 819 If you forget to do so, you can still manually specify the hints 820 at the loader prompt: 821 822 set hint.uart.0.at="isa" 823 set hint.uart.0.port="0x3F8" 824 set hint.uart.0.flags="0x10" 825 set hint.uart.0.irq="4" 826 boot -s 827 82820080609: 829 The gpt(8) utility has been removed. Use gpart(8) to partition 830 disks instead. 831 83220080603: 833 The version that Linuxulator emulates was changed from 2.4.2 834 to 2.6.16. If you experience any problems with Linux binaries 835 please try to set sysctl compat.linux.osrelease to 2.4.2 and 836 if it fixes the problem contact emulation mailing list. 837 83820080525: 839 ISDN4BSD (I4B) was removed from the src tree. You may need to 840 update a your kernel configuration and remove relevant entries. 841 84220080509: 843 I have checked in code to support multiple routing tables. 844 See the man pages setfib(1) and setfib(2). 845 This is a hopefully backwards compatible version, 846 but to make use of it you need to compile your kernel 847 with options ROUTETABLES=2 (or more up to 16). 848 84920080420: 850 The 802.11 wireless support was redone to enable multi-bss 851 operation on devices that are capable. The underlying device 852 is no longer used directly but instead wlanX devices are 853 cloned with ifconfig. This requires changes to rc.conf files. 854 For example, change: 855 ifconfig_ath0="WPA DHCP" 856 to 857 wlans_ath0=wlan0 858 ifconfig_wlan0="WPA DHCP" 859 see rc.conf(5) for more details. In addition, mergemaster of 860 /etc/rc.d is highly recommended. Simultaneous update of userland 861 and kernel wouldn't hurt either. 862 863 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 864 modules were merged into the base wlan module. All references 865 to these modules (e.g. in kernel config files) must be removed. 866 86720080408: 868 psm(4) has gained write(2) support in native operation level. 869 Arbitrary commands can be written to /dev/psm%d and status can 870 be read back from it. Therefore, an application is responsible 871 for status validation and error recovery. It is a no-op in 872 other operation levels. 873 87420080312: 875 Support for KSE threading has been removed from the kernel. To 876 run legacy applications linked against KSE libmap.conf may 877 be used. The following libmap.conf may be used to ensure 878 compatibility with any prior release: 879 880 libpthread.so.1 libthr.so.1 881 libpthread.so.2 libthr.so.2 882 libkse.so.3 libthr.so.3 883 88420080301: 885 The layout of struct vmspace has changed. This affects libkvm 886 and any executables that link against libkvm and use the 887 kvm_getprocs() function. In particular, but not exclusively, 888 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 889 The effects are minimal, but it's advisable to upgrade world 890 nonetheless. 891 89220080229: 893 The latest em driver no longer has support in it for the 894 82575 adapter, this is now moved to the igb driver. The 895 split was done to make new features that are incompatible 896 with older hardware easier to do. 897 89820080220: 899 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 900 likewise the kernel option is now GEOM_LINUX_LVM. 901 90220080211: 903 The default NFS mount mode has changed from UDP to TCP for 904 increased reliability. If you rely on (insecurely) NFS 905 mounting across a firewall you may need to update your 906 firewall rules. 907 90820080208: 909 Belatedly note the addition of m_collapse for compacting 910 mbuf chains. 911 91220080126: 913 The fts(3) structures have been changed to use adequate 914 integer types for their members and so to be able to cope 915 with huge file trees. The old fts(3) ABI is preserved 916 through symbol versioning in libc, so third-party binaries 917 using fts(3) should still work, although they will not take 918 advantage of the extended types. At the same time, some 919 third-party software might fail to build after this change 920 due to unportable assumptions made in its source code about 921 fts(3) structure members. Such software should be fixed 922 by its vendor or, in the worst case, in the ports tree. 923 FreeBSD_version 800015 marks this change for the unlikely 924 case that a portable fix is impossible. 925 92620080123: 927 To upgrade to -current after this date, you must be running 928 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 929 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 930 93120071128: 932 The ADAPTIVE_GIANT kernel option has been retired because its 933 functionality is the default now. 934 93520071118: 936 The AT keyboard emulation of sunkbd(4) has been turned on 937 by default. In order to make the special symbols of the Sun 938 keyboards driven by sunkbd(4) work under X these now have 939 to be configured the same way as Sun USB keyboards driven 940 by ukbd(4) (which also does AT keyboard emulation), f.e.: 941 942 Option "XkbLayout" "us" 943 Option "XkbRules" "xorg" 944 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 945 94620071024: 947 It has been decided that it is desirable to provide ABI 948 backwards compatibility to the FreeBSD 4/5/6 versions of the 949 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 950 broken with the introduction of PCI domain support (see the 951 20070930 entry). Unfortunately, this required the ABI of 952 PCIOCGETCONF to be broken again in order to be able to 953 provide backwards compatibility to the old version of that 954 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 955 again. As for prominent ports this affects neither pciutils 956 nor xorg-server this time, the hal port needs to be rebuilt 957 however. 958 95920071020: 960 The misnamed kthread_create() and friends have been renamed 961 to kproc_create() etc. Many of the callers already 962 used kproc_start().. 963 I will return kthread_create() and friends in a while 964 with implementations that actually create threads, not procs. 965 Renaming corresponds with version 800002. 966 96720071010: 968 RELENG_7 branched. 969 970COMMON ITEMS: 971 972 General Notes 973 ------------- 974 Avoid using make -j when upgrading. While generally safe, there are 975 sometimes problems using -j to upgrade. If your upgrade fails with 976 -j, please try again without -j. From time to time in the past there 977 have been problems using -j with buildworld and/or installworld. This 978 is especially true when upgrading between "distant" versions (eg one 979 that cross a major release boundary or several minor releases, or when 980 several months have passed on the -current branch). 981 982 Sometimes, obscure build problems are the result of environment 983 poisoning. This can happen because the make utility reads its 984 environment when searching for values for global variables. To run 985 your build attempts in an "environmental clean room", prefix all make 986 commands with 'env -i '. See the env(1) manual page for more details. 987 988 When upgrading from one major version to another it is generally best 989 to upgrade to the latest code in the currently installed branch first, 990 then do an upgrade to the new branch. This is the best-tested upgrade 991 path, and has the highest probability of being successful. Please try 992 this approach before reporting problems with a major version upgrade. 993 994 ZFS notes 995 --------- 996 When upgrading the boot ZFS pool to a new version, always follow 997 these two steps: 998 999 1.) recompile and reinstall the ZFS boot loader and boot block 1000 (this is part of "make buildworld" and "make installworld") 1001 1002 2.) update the ZFS boot block on your boot drive 1003 1004 The following example updates the ZFS boot block on the first 1005 partition (freebsd-boot) of a GPT partitioned drive ad0: 1006 "gpart bootcode -p /boot/gptzfsboot -i 1 ad0" 1007 1008 Non-boot pools do not need these updates. 1009 1010 To build a kernel 1011 ----------------- 1012 If you are updating from a prior version of FreeBSD (even one just 1013 a few days old), you should follow this procedure. It is the most 1014 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1015 1016 make kernel-toolchain 1017 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1018 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1019 1020 To test a kernel once 1021 --------------------- 1022 If you just want to boot a kernel once (because you are not sure 1023 if it works, or if you want to boot a known bad kernel to provide 1024 debugging information) run 1025 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1026 nextboot -k testkernel 1027 1028 To just build a kernel when you know that it won't mess you up 1029 -------------------------------------------------------------- 1030 This assumes you are already running a CURRENT system. Replace 1031 ${arch} with the architecture of your machine (e.g. "i386", 1032 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1033 1034 cd src/sys/${arch}/conf 1035 config KERNEL_NAME_HERE 1036 cd ../compile/KERNEL_NAME_HERE 1037 make depend 1038 make 1039 make install 1040 1041 If this fails, go to the "To build a kernel" section. 1042 1043 To rebuild everything and install it on the current system. 1044 ----------------------------------------------------------- 1045 # Note: sometimes if you are running current you gotta do more than 1046 # is listed here if you are upgrading from a really old current. 1047 1048 <make sure you have good level 0 dumps> 1049 make buildworld 1050 make kernel KERNCONF=YOUR_KERNEL_HERE 1051 [1] 1052 <reboot in single user> [3] 1053 mergemaster -p [5] 1054 make installworld 1055 make delete-old 1056 mergemaster -i [4] 1057 <reboot> 1058 1059 1060 To cross-install current onto a separate partition 1061 -------------------------------------------------- 1062 # In this approach we use a separate partition to hold 1063 # current's root, 'usr', and 'var' directories. A partition 1064 # holding "/", "/usr" and "/var" should be about 2GB in 1065 # size. 1066 1067 <make sure you have good level 0 dumps> 1068 <boot into -stable> 1069 make buildworld 1070 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1071 <maybe newfs current's root partition> 1072 <mount current's root partition on directory ${CURRENT_ROOT}> 1073 make installworld DESTDIR=${CURRENT_ROOT} 1074 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1075 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1076 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1077 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1078 <reboot into current> 1079 <do a "native" rebuild/install as described in the previous section> 1080 <maybe install compatibility libraries from ports/misc/compat*> 1081 <reboot> 1082 1083 1084 To upgrade in-place from 8.x-stable to current 1085 ---------------------------------------------- 1086 <make sure you have good level 0 dumps> 1087 make buildworld [9] 1088 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1089 [1] 1090 <reboot in single user> [3] 1091 mergemaster -p [5] 1092 make installworld 1093 make delete-old 1094 mergemaster -i [4] 1095 <reboot> 1096 1097 Make sure that you've read the UPDATING file to understand the 1098 tweaks to various things you need. At this point in the life 1099 cycle of current, things change often and you are on your own 1100 to cope. The defaults can also change, so please read ALL of 1101 the UPDATING entries. 1102 1103 Also, if you are tracking -current, you must be subscribed to 1104 freebsd-current@freebsd.org. Make sure that before you update 1105 your sources that you have read and understood all the recent 1106 messages there. If in doubt, please track -stable which has 1107 much fewer pitfalls. 1108 1109 [1] If you have third party modules, such as vmware, you 1110 should disable them at this point so they don't crash your 1111 system on reboot. 1112 1113 [3] From the bootblocks, boot -s, and then do 1114 fsck -p 1115 mount -u / 1116 mount -a 1117 cd src 1118 adjkerntz -i # if CMOS is wall time 1119 Also, when doing a major release upgrade, it is required that 1120 you boot into single user mode to do the installworld. 1121 1122 [4] Note: This step is non-optional. Failure to do this step 1123 can result in a significant reduction in the functionality of the 1124 system. Attempting to do it by hand is not recommended and those 1125 that pursue this avenue should read this file carefully, as well 1126 as the archives of freebsd-current and freebsd-hackers mailing lists 1127 for potential gotchas. The -U option is also useful to consider. 1128 See mergemaster(8) for more information. 1129 1130 [5] Usually this step is a noop. However, from time to time 1131 you may need to do this if you get unknown user in the following 1132 step. It never hurts to do it all the time. You may need to 1133 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1134 install) after the buildworld before this step if you last updated 1135 from current before 20020224 or from -stable before 20020408. 1136 1137 [8] In order to have a kernel that can run the 4.x binaries needed to 1138 do an installworld, you must include the COMPAT_FREEBSD4 option in 1139 your kernel. Failure to do so may leave you with a system that is 1140 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1141 required to run the 5.x binaries on more recent kernels. And so on 1142 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1143 1144 Make sure that you merge any new devices from GENERIC since the 1145 last time you updated your kernel config file. 1146 1147 [9] When checking out sources, you must include the -P flag to have 1148 cvs prune empty directories. 1149 1150 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1151 "?=" instead of the "=" assignment operator, so that buildworld can 1152 override the CPUTYPE if it needs to. 1153 1154 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1155 not on the command line, or in /etc/make.conf. buildworld will 1156 warn if it is improperly defined. 1157FORMAT: 1158 1159This file contains a list, in reverse chronological order, of major 1160breakages in tracking -current. Not all things will be listed here, 1161and it only starts on October 16, 2004. Updating files can found in 1162previous releases if your system is older than this. 1163 1164Copyright information: 1165 1166Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1167 1168Redistribution, publication, translation and use, with or without 1169modification, in full or in part, in any form or format of this 1170document are permitted without further permission from the author. 1171 1172THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1173IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1174WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1175DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1176INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1177(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1178SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1179HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1180STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1181IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1182POSSIBILITY OF SUCH DAMAGE. 1183 1184Contact Warner Losh if you have any questions about your use of 1185this document. 1186
|