1Updating Information for FreeBSD current users 2 3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>. 4See end of file for further details. For commonly done items, please see the 5COMMON ITEMS: section later in the file. These instructions assume that you 6basically know what you are doing. If not, then please consult the FreeBSD 7handbook. 8 9Items affecting the ports and packages system can be found in 10/usr/ports/UPDATING. Please read that file before running portupgrade. 11 12NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.x IS SLOW: 13 FreeBSD 9.x has many debugging features turned on, in both the kernel 14 and userland. These features attempt to detect incorrect use of 15 system primitives, and encourage loud failure through extra sanity 16 checking and fail stop semantics. They also substantially impact 17 system performance. If you want to do performance measurement, 18 benchmarking, and optimization, you'll want to turn them off. This 19 includes various WITNESS- related kernel options, INVARIANTS, malloc 20 debugging flags in userland, and various verbose features in the 21 kernel. Many developers choose to disable these features on build 22 machines to maximize performance. (To disable malloc debugging, run 23 ln -s aj /etc/malloc.conf.) 24 2520110112: 26 The system dialog(1) has been replaced with a new version previously 27 in ports as devel/cdialog. dialog(1) is mostly command-line compatible 28 with the previous version, but the libdialog associated with it has 29 a largely incompatible API. As such, the original version of libdialog 30 will be kept temporarily as libodialog, until its base system consumers 31 are replaced or updated. Bump __FreeBSD_version to 900030. 32 3320110103: 34 If you are trying to run make universe on a -stable system, and you get 35 the following warning: 36"Makefile", line 356: "Target architecture for i386/conf/GENERIC unknown. config(8) likely too old." 37 or something similar to it, then you must upgrade your -stable system 38 to 8.2-Release or newer (really, any time after r210146 7/15/2010 in 39 stable/8) or build the config from the latest stable/8 branch and 40 install it on your system. 41 42 Prior to this date, building a current universe on 8-stable system from 43 between 7/15/2010 and 1/2/2011 would result in a weird shell parsing 44 error in the first kernel build phase. A new config on those old systems 45 will fix that problem for older versions of -current. 46 4720101228: 48 The TCP stack has been modified to allow Khelp modules to interact with 49 it via helper hook points and store per-connection data in the TCP 50 control block. Bump __FreeBSD_version to 900029. User space tools that 51 rely on the size of struct tcpcb in tcp_var.h (e.g. sockstat) need to 52 be recompiled. 53 5420101114: 55 Generic IEEE 802.3 annex 31B full duplex flow control support has been 56 added to mii(4) and bge(4), bce(4), msk(4), nfe(4) and stge(4) along 57 with brgphy(4), e1000phy(4) as well as ip1000phy() have been converted 58 to take advantage of it instead of using custom implementations. This 59 means that these drivers now no longer unconditionally advertise 60 support for flow control but only do so if flow control is a selected 61 media option. This was implemented in the generic support that way in 62 order to allow flow control to be switched on and off via ifconfig(8) 63 with the PHY specific default to typically off in order to protect 64 from unwanted effects. Consequently, if you used flow control with 65 one of the above mentioned drivers you now need to explicitly enable 66 it, for example via: 67 ifconfig bge0 media auto mediaopt flowcontrol 68 69 Along with the above mentioned changes generic support for setting 70 1000baseT master mode also has been added and brgphy(4), ciphy(4), 71 e1000phy(4) as well as ip1000phy(4) have been converted to take 72 advantage of it. This means that these drivers now no longer take the 73 link0 parameter for selecting master mode but the master media option 74 has to be used instead, for example like in the following: 75 ifconfig bge0 media 1000baseT mediaopt full-duplex,master 76 77 Selection of master mode now is also available with all other PHY 78 drivers supporting 1000baseT. 79 8020101111: 81 The TCP stack has received a significant update to add support for 82 modularised congestion control and generally improve the clarity of 83 congestion control decisions. Bump __FreeBSD_version to 900025. User 84 space tools that rely on the size of struct tcpcb in tcp_var.h (e.g. 85 sockstat) need to be recompiled. 86 8720101002: 88 The man(1) utility has been replaced by a new version that no longer 89 uses /etc/manpath.config. Please consult man.conf(5) for how to 90 migrate local entries to the new format. 91 9220100928: 93 The copyright strings printed by login(1) and sshd(8) at the time of a 94 new connection have been removed to follow other operating systems and 95 upstream sshd. 96 9720100915: 98 A workaround for a fixed ld bug has been removed in kernel code, 99 so make sure that your system ld is built from sources after 100 revision 210245 from 2010-07-19 (r211583 if building head kernel 101 on stable/8, r211584 for stable/7; both from 2010-08-21). 102 A symptom of incorrect ld version is different addresses for 103 set_pcpu section and __start_set_pcpu symbol in kernel and/or modules. 104 10520100913: 106 The $ipv6_prefer variable in rc.conf(5) has been split into 107 $ip6addrctl_policy and $ipv6_activate_all_interfaces. 108 109 The $ip6addrctl_policy is a variable to choose a pre-defined 110 address selection policy set by ip6addrctl(8). A value 111 "ipv4_prefer", "ipv6_prefer" or "AUTO" can be specified. The 112 default is "AUTO". 113 114 The $ipv6_activate_all_interfaces specifies whether IFDISABLED 115 flag (see an entry of 20090926) is set on an interface with no 116 corresponding $ifconfig_IF_ipv6 line. The default is "NO" for 117 security reason. If you want IPv6 link-local address on all 118 interfaces by default, set this to "YES". 119 120 The old ipv6_prefer="YES" is equivalent to 121 ipv6_activate_all_interfaces="YES" and 122 ip6addrctl_policy="ipv6_prefer". 123 12420100913: 125 DTrace has grown support for userland tracing. Due to this, DTrace is 126 now i386 and amd64 only. 127 dtruss(1) is now installed by default on those systems and a new 128 kernel module is needed for userland tracing: fasttrap. 129 No changes to your kernel config file are necessary to enable 130 userland tracing, but you might consider adding 'STRIP=' and 131 'CFLAGS+=-fno-omit-frame-pointer' to your make.conf if you want 132 to have informative userland stack traces in DTrace (ustack). 133 13420100725: 135 The acpi_aiboost(4) driver has been removed in favor of the new 136 aibs(4) driver. You should update your kernel configuration file. 137 13820100722: 139 BSD grep has been imported to the base system and it is built by 140 default. It is completely BSD licensed, highly GNU-compatible, uses 141 less memory than its GNU counterpart and has a small codebase. 142 However, it is slower than its GNU counterpart, which is mostly 143 noticeable for larger searches, for smaller ones it is measurable 144 but not significant. The reason is complex, the most important factor 145 is that we lack a modern and efficient regex library and GNU 146 overcomes this by optimizing the searches internally. Future work 147 on improving the regex performance is planned, for the meantime, 148 users that need better performance, can build GNU grep instead by 149 setting the WITH_GNU_GREP knob. 150 15120100713: 152 Due to the import of powerpc64 support, all existing powerpc kernel 153 configuration files must be updated with a machine directive like this: 154 machine powerpc powerpc 155 156 In addition, an updated config(8) is required to build powerpc kernels 157 after this change. 158 15920100713: 160 A new version of ZFS (version 15) has been merged to -HEAD. 161 This version uses a python library for the following subcommands: 162 zfs allow, zfs unallow, zfs groupspace, zfs userspace. 163 For full functionality of these commands the following port must 164 be installed: sysutils/py-zfs 165 16620100429: 167 'vm_page's are now hashed by physical address to an array of mutexes. 168 Currently this is only used to serialize access to hold_count. Over 169 time the page queue mutex will be peeled away. This changes the size 170 of pmap on every architecture. And requires all callers of vm_page_hold 171 and vm_page_unhold to be updated. 172 17320100402: 174 WITH_CTF can now be specified in src.conf (not recommended, there 175 are some problems with static executables), make.conf (would also 176 affect ports which do not use GNU make and do not override the 177 compile targets) or in the kernel config (via "makeoptions 178 WITH_CTF=yes"). 179 When WITH_CTF was specified there before this was silently ignored, 180 so make sure that WITH_CTF is not used in places which could lead 181 to unwanted behavior. 182 18320100311: 184 The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32 185 to allow 32-bit compatibility on non-x86 platforms. All kernel 186 configurations on amd64 and ia64 platforms using these options must 187 be modified accordingly. 188 18920100113: 190 The utmp user accounting database has been replaced with utmpx, 191 the user accounting interface standardized by POSIX. 192 Unfortunately the semantics of utmp and utmpx don't match, 193 making it practically impossible to support both interfaces. 194 The user accounting database is used by tools like finger(1), 195 last(1), talk(1), w(1) and ac(8). 196 197 All applications in the base system use utmpx. This means only 198 local binaries (e.g. from the ports tree) may still use these 199 utmp database files. These applications must be rebuilt to make 200 use of utmpx. 201 202 After the system has been upgraded, it is safe to remove the old 203 log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), 204 assuming their contents is of no importance anymore. Old wtmp 205 databases can only be used by last(1) and ac(8) after they have 206 been converted to the new format using wtmpcvt(1). 207 20820100108: 209 Introduce the kernel thread "deadlock resolver" (which can be enabled 210 via the DEADLKRES option, see NOTES for more details) and the 211 sleepq_type() function for sleepqueues. 212 21320091202: 214 The rc.firewall and rc.firewall6 were unified, and 215 rc.firewall6 and rc.d/ip6fw were removed. 216 According to the removal of rc.d/ip6fw, ipv6_firewall_* rc 217 variables are obsoleted. Instead, the following new rc 218 variables are added to rc.d/ipfw: 219 220 firewall_client_net_ipv6, firewall_simple_iif_ipv6, 221 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, 222 firewall_simple_onet_ipv6, firewall_trusted_ipv6 223 224 The meanings correspond to the relevant IPv4 variables. 225 22620091125: 227 8.0-RELEASE. 228 22920091113: 230 The default terminal emulation for syscons(4) has been changed 231 from cons25 to xterm on all platforms except pc98. This means 232 that the /etc/ttys file needs to be updated to ensure correct 233 operation of applications on the console. 234 235 The terminal emulation style can be toggled per window by using 236 vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration 237 options can be used to change the compile-time default back to 238 cons25. 239 240 To prevent graphical artifacts, make sure the TERM environment 241 variable is set to match the terminal emulation that is being 242 performed by syscons(4). 243 24420091109: 245 The layout of the structure ieee80211req_scan_result has changed. 246 Applications that require wireless scan results (e.g. ifconfig(8)) 247 from net80211 need to be recompiled. 248 249 Applications such as wpa_supplicant(8) may require a full world 250 build without using NO_CLEAN in order to get synchronized with the 251 new structure. 252 25320091025: 254 The iwn(4) driver has been updated to support the 5000 and 5150 series. 255 There's one kernel module for each firmware. Adding "device iwnfw" 256 to the kernel configuration file means including all three firmware 257 images inside the kernel. If you want to include just the one for 258 your wireless card, use the the devices iwn4965fw, iwn5000fw or 259 iwn5150fw. 260 26120090926: 262 The rc.d/network_ipv6, IPv6 configuration script has been integrated 263 into rc.d/netif. The changes are the following: 264 265 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF 266 for IPv4. For aliases, $ifconfig_IF_aliasN should be used. 267 Note that both variables need the "inet6" keyword at the head. 268 269 Do not set $ipv6_network_interfaces manually if you do not 270 understand what you are doing. It is not needed in most cases. 271 272 $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but 273 they are obsolete. 274 275 2. $ipv6_enable is obsolete. Use $ipv6_prefer and 276 "inet6 accept_rtadv" keyword in ifconfig(8) instead. 277 278 If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and 279 all configured interfaces have "inet6 accept_rtadv" in the 280 $ifconfig_IF_ipv6. These are for backward compatibility. 281 282 3. A new variable $ipv6_prefer has been added. If NO, IPv6 283 functionality of interfaces with no corresponding 284 $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag, 285 and the default address selection policy of ip6addrctl(8) 286 is the IPv4-preferred one (see rc.d/ip6addrctl for more details). 287 Note that if you want to configure IPv6 functionality on the 288 disabled interfaces after boot, first you need to clear the flag by 289 using ifconfig(8) like: 290 291 ifconfig em0 inet6 -ifdisabled 292 293 If YES, the default address selection policy is set as 294 IPv6-preferred. 295 296 The default value of $ipv6_prefer is NO. 297 298 4. If your system need to receive Router Advertisement messages, 299 define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8) 300 scripts automatically invoke rtsol(8) when the interface becomes 301 UP. The Router Advertisement messages are used for SLAAC 302 (State-Less Address AutoConfiguration). 303 30420090922: 305 802.11s D3.03 support was committed. This is incompatible with the 306 previous code, which was based on D3.0. 307 30820090912: 309 A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value 310 of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to 311 control whether accepting Router Advertisement messages or not. 312 Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and 313 a sysctl variable net.inet6.ip6.auto_linklocal is its default value. 314 The ifconfig(8) utility now supports these flags. 315 31620090910: 317 ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for 318 mount(8) and -a option for df(1) to see them. 319 32020090825: 321 The old tunable hw.bus.devctl_disable has been superseded by 322 hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be 323 replaced by hw.bus.devctl_queue=0. The default for this new tunable 324 is 1000. 325 32620090813: 327 Remove the option STOP_NMI. The default action is now to use NMI only 328 for KDB via the newly introduced function stop_cpus_hard() and 329 maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64. 330 33120090803: 332 The stable/8 branch created in subversion. This corresponds to the 333 RELENG_8 branch in CVS. 334 33520090719: 336 Bump the shared library version numbers for all libraries that do not 337 use symbol versioning as part of the 8.0-RELEASE cycle. Bump 338 __FreeBSD_version to 800105. 339 34020090714: 341 Due to changes in the implementation of virtual network stack support, 342 all network-related kernel modules must be recompiled. As this change 343 breaks the ABI, bump __FreeBSD_version to 800104. 344 34520090713: 346 The TOE interface to the TCP syncache has been modified to remove 347 struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack. 348 The cxgb driver is the only TOE consumer affected by this change, and 349 needs to be recompiled along with the kernel. As this change breaks 350 the ABI, bump __FreeBSD_version to 800103. 351 35220090712: 353 Padding has been added to struct tcpcb, sackhint and tcpstat in 354 <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst 355 maintaining the ABI. However, this change breaks the ABI, so bump 356 __FreeBSD_version to 800102. User space tools that rely on the size of 357 any of these structs (e.g. sockstat) need to be recompiled. 358 35920090630: 360 The NFS_LEGACYRPC option has been removed along with the old kernel 361 RPC implementation that this option selected. Kernel configurations 362 may need to be adjusted. 363 36420090629: 365 The network interface device nodes at /dev/net/<interface> have been 366 removed. All ioctl operations can be performed the normal way using 367 routing sockets. The kqueue functionality can generally be replaced 368 with routing sockets. 369 37020090628: 371 The documentation from the FreeBSD Documentation Project (Handbook, 372 FAQ, etc.) is now installed via packages by sysinstall(8) and under 373 the /usr/local/share/doc/freebsd directory instead of /usr/share/doc. 374 37520090624: 376 The ABI of various structures related to the SYSV IPC API have been 377 changed. As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel 378 options now all require COMPAT_FREEBSD7. Bump __FreeBSD_version to 379 800100. 380 38120090622: 382 Layout of struct vnet has changed as routing related variables were 383 moved to their own Vimage module. Modules need to be recompiled. Bump 384 __FreeBSD_version to 800099. 385 38620090619: 387 NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024 388 respectively. As long as no more than 16 groups per process are used, 389 no changes should be visible. When more than 16 groups are used, old 390 binaries may fail if they call getgroups() or getgrouplist() with 391 statically sized storage. Recompiling will work around this, but 392 applications should be modified to use dynamically allocated storage 393 for group arrays as POSIX.1-2008 does not cap an implementation's 394 number of supported groups at NGROUPS_MAX+1 as previous versions did. 395 396 NFS and portalfs mounts may also be affected as the list of groups is 397 truncated to 16. Users of NFS who use more than 16 groups, should 398 take care that negative group permissions are not used on the exported 399 file systems as they will not be reliable unless a GSSAPI based 400 authentication method is used. 401 40220090616: 403 The compiling option ADAPTIVE_LOCKMGRS has been introduced. This 404 option compiles in the support for adaptive spinning for lockmgrs 405 which want to enable it. The lockinit() function now accepts the flag 406 LK_ADAPTIVE in order to make the lock object subject to adaptive 407 spinning when both held in write and read mode. 408 40920090613: 410 The layout of the structure returned by IEEE80211_IOC_STA_INFO has 411 changed. User applications that use this ioctl need to be rebuilt. 412 41320090611: 414 The layout of struct thread has changed. Kernel and modules need to 415 be rebuilt. 416 41720090608: 418 The layout of structs ifnet, domain, protosw and vnet_net has changed. 419 Kernel modules need to be rebuilt. Bump __FreeBSD_version to 800097. 420 42120090602: 422 window(1) has been removed from the base system. It can now be 423 installed from ports. The port is called misc/window. 424 42520090601: 426 The way we are storing and accessing `routing table' entries has 427 changed. Programs reading the FIB, like netstat, need to be 428 re-compiled. 429 43020090601: 431 A new netisr implementation has been added for FreeBSD 8. Network 432 file system modules, such as igmp, ipdivert, and others, should be 433 rebuilt. 434 Bump __FreeBSD_version to 800096. 435 43620090530: 437 Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no 438 more valid. 439 44020090530: 441 Add VOP_ACCESSX(9). File system modules need to be rebuilt. 442 Bump __FreeBSD_version to 800094. 443 44420090529: 445 Add mnt_xflag field to 'struct mount'. File system modules need to be 446 rebuilt. 447 Bump __FreeBSD_version to 800093. 448 44920090528: 450 The compiling option ADAPTIVE_SX has been retired while it has been 451 introduced the option NO_ADAPTIVE_SX which handles the reversed logic. 452 The KPI for sx_init_flags() changes as accepting flags: 453 SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has 454 been introduced in order to handle the reversed logic. 455 Bump __FreeBSD_version to 800092. 456 45720090527: 458 Add support for hierarchical jails. Remove global securelevel. 459 Bump __FreeBSD_version to 800091. 460 46120090523: 462 The layout of struct vnet_net has changed, therefore modules 463 need to be rebuilt. 464 Bump __FreeBSD_version to 800090. 465 46620090523: 467 The newly imported zic(8) produces a new format in the output. Please 468 run tzsetup(8) to install the newly created data to /etc/localtime. 469 47020090520: 471 The sysctl tree for the usb stack has renamed from hw.usb2.* to 472 hw.usb.* and is now consistent again with previous releases. 473 47420090520: 475 802.11 monitor mode support was revised and driver api's were changed. 476 Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead 477 of DLT_IEEE802_11. No user-visible data structures were changed but 478 applications that use DLT_IEEE802_11 may require changes. 479 Bump __FreeBSD_version to 800088. 480 48120090430: 482 The layout of the following structs has changed: sysctl_oid, 483 socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, 484 vnet_inet6 and vnet_ipfw. Most modules need to be rebuild or 485 panics may be experienced. World rebuild is required for 486 correctly checking networking state from userland. 487 Bump __FreeBSD_version to 800085. 488 48920090429: 490 MLDv2 and Source-Specific Multicast (SSM) have been merged 491 to the IPv6 stack. VIMAGE hooks are in but not yet used. 492 The implementation of SSM within FreeBSD's IPv6 stack closely 493 follows the IPv4 implementation. 494 495 For kernel developers: 496 497 * The most important changes are that the ip6_output() and 498 ip6_input() paths no longer take the IN6_MULTI_LOCK, 499 and this lock has been downgraded to a non-recursive mutex. 500 501 * As with the changes to the IPv4 stack to support SSM, filtering 502 of inbound multicast traffic must now be performed by transport 503 protocols within the IPv6 stack. This does not apply to TCP and 504 SCTP, however, it does apply to UDP in IPv6 and raw IPv6. 505 506 * The KPIs used by IPv6 multicast are similar to those used by 507 the IPv4 stack, with the following differences: 508 * im6o_mc_filter() is analogous to imo_multicast_filter(). 509 * The legacy KAME entry points in6_joingroup and in6_leavegroup() 510 are shimmed to in6_mc_join() and in6_mc_leave() respectively. 511 * IN6_LOOKUP_MULTI() has been deprecated and removed. 512 * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs 513 for MLDv1 have an additional 'timer' argument which is used to 514 jitter the initial membership report for the solicited-node 515 multicast membership on-link. 516 * This is not strictly needed for MLDv2, which already jitters 517 its report transmissions. However, the 'timer' argument is 518 preserved in case MLDv1 is active on the interface. 519 520 * The KAME linked-list based IPv6 membership implementation has 521 been refactored to use a vector similar to that used by the IPv4 522 stack. 523 Code which maintains a list of its own multicast memberships 524 internally, e.g. carp, has been updated to reflect the new 525 semantics. 526 527 * There is a known Lock Order Reversal (LOR) due to in6_setscope() 528 acquiring the IF_AFDATA_LOCK and being called within ip6_output(). 529 Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an 530 implementation constraint which needs to be addressed in HEAD. 531 532 For application developers: 533 534 * The changes are broadly similar to those made for the IPv4 535 stack. 536 537 * The use of IPv4 and IPv6 multicast socket options on the same 538 socket, using mapped addresses, HAS NOT been tested or supported. 539 540 * There are a number of issues with the implementation of various 541 IPv6 multicast APIs which need to be resolved in the API surface 542 before the implementation is fully compatible with KAME userland 543 use, and these are mostly to do with interface index treatment. 544 545 * The literature available discusses the use of either the delta / ASM 546 API with setsockopt(2)/getsockopt(2), or the full-state / ASM API 547 using setsourcefilter(3)/getsourcefilter(3). For more information 548 please refer to RFC 3768, 'Socket Interface Extensions for 549 Multicast Source Filters'. 550 551 * Applications which use the published RFC 3678 APIs should be fine. 552 553 For systems administrators: 554 555 * The mtest(8) utility has been refactored to support IPv6, in 556 addition to IPv4. Interface addresses are no longer accepted 557 as arguments, their names must be used instead. The utility 558 will map the interface name to its first IPv4 address as 559 returned by getifaddrs(3). 560 561 * The ifmcstat(8) utility has also been updated to print the MLDv2 562 endpoint state and source filter lists via sysctl(3). 563 564 * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable 565 loopback of IPv6 multicast datagrams by default; it defaults to 1 566 to preserve the existing behaviour. Disabling multicast loopback is 567 recommended for optimal system performance. 568 569 * The IPv6 MROUTING code has been changed to examine this sysctl 570 instead of attempting to perform a group lookup before looping 571 back forwarded datagrams. 572 573 Bump __FreeBSD_version to 800084. 574 57520090422: 576 Implement low-level Bluetooth HCI API. 577 Bump __FreeBSD_version to 800083. 578 57920090419: 580 The layout of struct malloc_type, used by modules to register new 581 memory allocation types, has changed. Most modules will need to 582 be rebuilt or panics may be experienced. 583 Bump __FreeBSD_version to 800081. 584 58520090415: 586 Anticipate overflowing inp_flags - add inp_flags2. 587 This changes most offsets in inpcb, so checking v4 connection 588 state will require a world rebuild. 589 Bump __FreeBSD_version to 800080. 590 59120090415: 592 Add an llentry to struct route and struct route_in6. Modules 593 embedding a struct route will need to be recompiled. 594 Bump __FreeBSD_version to 800079. 595 59620090414: 597 The size of rt_metrics_lite and by extension rtentry has changed. 598 Networking administration apps will need to be recompiled. 599 The route command now supports show as an alias for get, weighting 600 of routes, sticky and nostick flags to alter the behavior of stateful 601 load balancing. 602 Bump __FreeBSD_version to 800078. 603 60420090408: 605 Do not use Giant for kbdmux(4) locking. This is wrong and 606 apparently causing more problems than it solves. This will 607 re-open the issue where interrupt handlers may race with 608 kbdmux(4) in polling mode. Typical symptoms include (but 609 not limited to) duplicated and/or missing characters when 610 low level console functions (such as gets) are used while 611 interrupts are enabled (for example geli password prompt, 612 mountroot prompt etc.). Disabling kbdmux(4) may help. 613 61420090407: 615 The size of structs vnet_net, vnet_inet and vnet_ipfw has changed; 616 kernel modules referencing any of the above need to be recompiled. 617 Bump __FreeBSD_version to 800075. 618 61920090320: 620 GEOM_PART has become the default partition slicer for storage devices, 621 replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It 622 introduces some changes: 623 624 MSDOS/EBR: the devices created from MSDOS extended partition entries 625 (EBR) can be named differently than with GEOM_MBR and are now symlinks 626 to devices with offset-based names. fstabs may need to be modified. 627 628 BSD: the "geometry does not match label" warning is harmless in most 629 cases but it points to problems in file system misalignment with 630 disk geometry. The "c" partition is now implicit, covers the whole 631 top-level drive and cannot be (mis)used by users. 632 633 General: Kernel dumps are now not allowed to be written to devices 634 whose partition types indicate they are meant to be used for file 635 systems (or, in case of MSDOS partitions, as something else than 636 the "386BSD" type). 637 638 Most of these changes date approximately from 200812. 639 64020090319: 641 The uscanner(4) driver has been removed from the kernel. This follows 642 Linux removing theirs in 2.6 and making libusb the default interface 643 (supported by sane). 644 64520090319: 646 The multicast forwarding code has been cleaned up. netstat(1) 647 only relies on KVM now for printing bandwidth upcall meters. 648 The IPv4 and IPv6 modules are split into ip_mroute_mod and 649 ip6_mroute_mod respectively. The config(5) options for statically 650 compiling this code remain the same, i.e. 'options MROUTING'. 651 65220090315: 653 Support for the IFF_NEEDSGIANT network interface flag has been 654 removed, which means that non-MPSAFE network device drivers are no 655 longer supported. In particular, if_ar, if_sr, and network device 656 drivers from the old (legacy) USB stack can no longer be built or 657 used. 658 65920090313: 660 POSIX.1 Native Language Support (NLS) has been enabled in libc and 661 a bunch of new language catalog files have also been added. 662 This means that some common libc messages are now localized and 663 they depend on the LC_MESSAGES environmental variable. 664 66520090313: 666 The k8temp(4) driver has been renamed to amdtemp(4) since 667 support for Family 10 and Family 11 CPU families was added. 668 66920090309: 670 IGMPv3 and Source-Specific Multicast (SSM) have been merged 671 to the IPv4 stack. VIMAGE hooks are in but not yet used. 672 673 For kernel developers, the most important changes are that the 674 ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(), 675 and this lock has been downgraded to a non-recursive mutex. 676 677 Transport protocols (UDP, Raw IP) are now responsible for filtering 678 inbound multicast traffic according to group membership and source 679 filters. The imo_multicast_filter() KPI exists for this purpose. 680 Transports which do not use multicast (SCTP, TCP) already reject 681 multicast by default. Forwarding and receive performance may improve 682 as a mutex acquisition is no longer needed in the ip_input() 683 low-level input path. in_addmulti() and in_delmulti() are shimmed 684 to new KPIs which exist to support SSM in-kernel. 685 686 For application developers, it is recommended that loopback of 687 multicast datagrams be disabled for best performance, as this 688 will still cause the lock to be taken for each looped-back 689 datagram transmission. The net.inet.ip.mcast.loop sysctl may 690 be tuned to 0 to disable loopback by default; it defaults to 1 691 to preserve the existing behaviour. 692 693 For systems administrators, to obtain best performance with 694 multicast reception and multiple groups, it is always recommended 695 that a card with a suitably precise hash filter is used. Hash 696 collisions will still result in the lock being taken within the 697 transport protocol input path to check group membership. 698 699 If deploying FreeBSD in an environment with IGMP snooping switches, 700 it is recommended that the net.inet.igmp.sendlocal sysctl remain 701 enabled; this forces 224.0.0.0/24 group membership to be announced 702 via IGMP. 703 704 The size of 'struct igmpstat' has changed; netstat needs to be 705 recompiled to reflect this. 706 Bump __FreeBSD_version to 800070. 707 70820090309: 709 libusb20.so.1 is now installed as libusb.so.1 and the ports system 710 updated to use it. This requires a buildworld/installworld in order to 711 update the library and dependencies (usbconfig, etc). Its advisable to 712 rebuild all ports which uses libusb. More specific directions are given 713 in the ports collection UPDATING file. Any /etc/libmap.conf entries for 714 libusb are no longer required and can be removed. 715 71620090302: 717 A workaround is committed to allow the creation of System V shared 718 memory segment of size > 2 GB on the 64-bit architectures. 719 Due to a limitation of the existing ABI, the shm_segsz member 720 of the struct shmid_ds, returned by shmctl(IPC_STAT) call is 721 wrong for large segments. Note that limits must be explicitly 722 raised to allow such segments to be created. 723 72420090301: 725 The layout of struct ifnet has changed, requiring a rebuild of all 726 network device driver modules. 727 72820090227: 729 The /dev handling for the new USB stack has changed, a 730 buildworld/installworld is required for libusb20. 731 73220090223: 733 The new USB2 stack has now been permanently moved in and all kernel and 734 module names reverted to their previous values (eg, usb, ehci, ohci, 735 ums, ...). The old usb stack can be compiled in by prefixing the name 736 with the letter 'o', the old usb modules have been removed. 737 Updating entry 20090216 for xorg and 20090215 for libmap may still 738 apply. 739 74020090217: 741 The rc.conf(5) option if_up_delay has been renamed to 742 defaultroute_delay to better reflect its purpose. If you have 743 customized this setting in /etc/rc.conf you need to update it to 744 use the new name. 745 74620090216: 747 xorg 7.4 wants to configure its input devices via hald which does not 748 yet work with USB2. If the keyboard/mouse does not work in xorg then 749 add 750 Option "AllowEmptyInput" "off" 751 to your ServerLayout section. This will cause X to use the configured 752 kbd and mouse sections from your xorg.conf. 753 75420090215: 755 The GENERIC kernels for all architectures now default to the new USB2 756 stack. No kernel config options or code have been removed so if a 757 problem arises please report it and optionally revert to the old USB 758 stack. If you are loading USB kernel modules or have a custom kernel 759 that includes GENERIC then ensure that usb names are also changed over, 760 eg uftdi -> usb2_serial_ftdi. 761 762 Older programs linked against the ports libusb 0.1 need to be 763 redirected to the new stack's libusb20. /etc/libmap.conf can 764 be used for this: 765 # Map old usb library to new one for usb2 stack 766 libusb-0.1.so.8 libusb20.so.1 767 76820090209: 769 All USB ethernet devices now attach as interfaces under the name ueN 770 (eg. ue0). This is to provide a predictable name as vendors often 771 change usb chipsets in a product without notice. 772 77320090203: 774 The ichsmb(4) driver has been changed to require SMBus slave 775 addresses be left-justified (xxxxxxx0b) rather than right-justified. 776 All of the other SMBus controller drivers require left-justified 777 slave addresses, so this change makes all the drivers provide the 778 same interface. 779 78020090201: 781 INET6 statistics (struct ip6stat) was updated. 782 netstat(1) needs to be recompiled. 783 78420090119: 785 NTFS has been removed from GENERIC kernel on amd64 to match 786 GENERIC on i386. Should not cause any issues since mount_ntfs(8) 787 will load ntfs.ko module automatically when NTFS support is 788 actually needed, unless ntfs.ko is not installed or security 789 level prohibits loading kernel modules. If either is the case, 790 "options NTFS" has to be added into kernel config. 791 79220090115: 793 TCP Appropriate Byte Counting (RFC 3465) support added to kernel. 794 New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to 795 800061. User space tools that rely on the size of struct tcpcb in 796 tcp_var.h (e.g. sockstat) need to be recompiled. 797 79820081225: 799 ng_tty(4) module updated to match the new TTY subsystem. 800 Due to API change, user-level applications must be updated. 801 New API support added to mpd5 CVS and expected to be present 802 in next mpd5.3 release. 803 80420081219: 805 With __FreeBSD_version 800060 the makefs tool is part of 806 the base system (it was a port). 807 80820081216: 809 The afdata and ifnet locks have been changed from mutexes to 810 rwlocks, network modules will need to be re-compiled. 811 81220081214: 813 __FreeBSD_version 800059 incorporates the new arp-v2 rewrite. 814 RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated. 815 The new code reduced struct rtentry{} by 16 bytes on 32-bit 816 architecture and 40 bytes on 64-bit architecture. The userland 817 applications "arp" and "ndp" have been updated accordingly. 818 The output from "netstat -r" shows only routing entries and 819 none of the L2 information. 820 82120081130: 822 __FreeBSD_version 800057 marks the switchover from the 823 binary ath hal to source code. Users must add the line: 824 825 options AH_SUPPORT_AR5416 826 827 to their kernel config files when specifying: 828 829 device ath_hal 830 831 The ath_hal module no longer exists; the code is now compiled 832 together with the driver in the ath module. It is now 833 possible to tailor chip support (i.e. reduce the set of chips 834 and thereby the code size); consult ath_hal(4) for details. 835 83620081121: 837 __FreeBSD_version 800054 adds memory barriers to 838 <machine/atomic.h>, new interfaces to ifnet to facilitate 839 multiple hardware transmit queues for cards that support 840 them, and a lock-less ring-buffer implementation to 841 enable drivers to more efficiently manage queueing of 842 packets. 843 84420081117: 845 A new version of ZFS (version 13) has been merged to -HEAD. 846 This version has zpool attribute "listsnapshots" off by 847 default, which means "zfs list" does not show snapshots, 848 and is the same as Solaris behavior. 849 85020081028: 851 dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. 852 85320081009: 854 The uhci, ohci, ehci and slhci USB Host controller drivers have 855 been put into separate modules. If you load the usb module 856 separately through loader.conf you will need to load the 857 appropriate *hci module as well. E.g. for a UHCI-based USB 2.0 858 controller add the following to loader.conf: 859 860 uhci_load="YES" 861 ehci_load="YES" 862 86320081009: 864 The ABI used by the PMC toolset has changed. Please keep 865 userland (libpmc(3)) and the kernel module (hwpmc(4)) in 866 sync. 867 86820081009: 869 atapci kernel module now includes only generic PCI ATA 870 driver. AHCI driver moved to ataahci kernel module. 871 All vendor-specific code moved into separate kernel modules: 872 ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, 873 atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, 874 atamarvell, atamicron, atanational, atanetcell, atanvidia, 875 atapromise, ataserverworks, atasiliconimage, atasis, atavia 876 87720080820: 878 The TTY subsystem of the kernel has been replaced by a new 879 implementation, which provides better scalability and an 880 improved driver model. Most common drivers have been migrated to 881 the new TTY subsystem, while others have not. The following 882 drivers have not yet been ported to the new TTY layer: 883 884 PCI/ISA: 885 cy, digi, rc, rp, sio 886 887 USB: 888 ubser, ucycom 889 890 Line disciplines: 891 ng_h4, ng_tty, ppp, sl, snp 892 893 Adding these drivers to your kernel configuration file shall 894 cause compilation to fail. 895 89620080818: 897 ntpd has been upgraded to 4.2.4p5. 898 89920080801: 900 OpenSSH has been upgraded to 5.1p1. 901 902 For many years, FreeBSD's version of OpenSSH preferred DSA 903 over RSA for host and user authentication keys. With this 904 upgrade, we've switched to the vendor's default of RSA over 905 DSA. This may cause upgraded clients to warn about unknown 906 host keys even for previously known hosts. Users should 907 follow the usual procedure for verifying host keys before 908 accepting the RSA key. 909 910 This can be circumvented by setting the "HostKeyAlgorithms" 911 option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh 912 command line. 913 914 Please note that the sequence of keys offered for 915 authentication has been changed as well. You may want to 916 specify IdentityFile in a different order to revert this 917 behavior. 918 91920080713: 920 The sio(4) driver has been removed from the i386 and amd64 921 kernel configuration files. This means uart(4) is now the 922 default serial port driver on those platforms as well. 923 924 To prevent collisions with the sio(4) driver, the uart(4) driver 925 uses different names for its device nodes. This means the 926 onboard serial port will now most likely be called "ttyu0" 927 instead of "ttyd0". You may need to reconfigure applications to 928 use the new device names. 929 930 When using the serial port as a boot console, be sure to update 931 /boot/device.hints and /etc/ttys before booting the new kernel. 932 If you forget to do so, you can still manually specify the hints 933 at the loader prompt: 934 935 set hint.uart.0.at="isa" 936 set hint.uart.0.port="0x3F8" 937 set hint.uart.0.flags="0x10" 938 set hint.uart.0.irq="4" 939 boot -s 940 94120080609: 942 The gpt(8) utility has been removed. Use gpart(8) to partition 943 disks instead. 944 94520080603: 946 The version that Linuxulator emulates was changed from 2.4.2 947 to 2.6.16. If you experience any problems with Linux binaries 948 please try to set sysctl compat.linux.osrelease to 2.4.2 and 949 if it fixes the problem contact emulation mailing list. 950 95120080525: 952 ISDN4BSD (I4B) was removed from the src tree. You may need to 953 update a your kernel configuration and remove relevant entries. 954 95520080509: 956 I have checked in code to support multiple routing tables. 957 See the man pages setfib(1) and setfib(2). 958 This is a hopefully backwards compatible version, 959 but to make use of it you need to compile your kernel 960 with options ROUTETABLES=2 (or more up to 16). 961 96220080420: 963 The 802.11 wireless support was redone to enable multi-bss 964 operation on devices that are capable. The underlying device 965 is no longer used directly but instead wlanX devices are 966 cloned with ifconfig. This requires changes to rc.conf files. 967 For example, change: 968 ifconfig_ath0="WPA DHCP" 969 to 970 wlans_ath0=wlan0 971 ifconfig_wlan0="WPA DHCP" 972 see rc.conf(5) for more details. In addition, mergemaster of 973 /etc/rc.d is highly recommended. Simultaneous update of userland 974 and kernel wouldn't hurt either. 975 976 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 977 modules were merged into the base wlan module. All references 978 to these modules (e.g. in kernel config files) must be removed. 979 98020080408: 981 psm(4) has gained write(2) support in native operation level. 982 Arbitrary commands can be written to /dev/psm%d and status can 983 be read back from it. Therefore, an application is responsible 984 for status validation and error recovery. It is a no-op in 985 other operation levels. 986 98720080312: 988 Support for KSE threading has been removed from the kernel. To 989 run legacy applications linked against KSE libmap.conf may 990 be used. The following libmap.conf may be used to ensure 991 compatibility with any prior release: 992 993 libpthread.so.1 libthr.so.1 994 libpthread.so.2 libthr.so.2 995 libkse.so.3 libthr.so.3 996 99720080301: 998 The layout of struct vmspace has changed. This affects libkvm 999 and any executables that link against libkvm and use the 1000 kvm_getprocs() function. In particular, but not exclusively, 1001 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 1002 The effects are minimal, but it's advisable to upgrade world 1003 nonetheless. 1004 100520080229: 1006 The latest em driver no longer has support in it for the 1007 82575 adapter, this is now moved to the igb driver. The 1008 split was done to make new features that are incompatible 1009 with older hardware easier to do. 1010 101120080220: 1012 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 1013 likewise the kernel option is now GEOM_LINUX_LVM. 1014 101520080211: 1016 The default NFS mount mode has changed from UDP to TCP for 1017 increased reliability. If you rely on (insecurely) NFS 1018 mounting across a firewall you may need to update your 1019 firewall rules. 1020 102120080208: 1022 Belatedly note the addition of m_collapse for compacting 1023 mbuf chains. 1024 102520080126: 1026 The fts(3) structures have been changed to use adequate 1027 integer types for their members and so to be able to cope 1028 with huge file trees. The old fts(3) ABI is preserved 1029 through symbol versioning in libc, so third-party binaries 1030 using fts(3) should still work, although they will not take 1031 advantage of the extended types. At the same time, some 1032 third-party software might fail to build after this change 1033 due to unportable assumptions made in its source code about 1034 fts(3) structure members. Such software should be fixed 1035 by its vendor or, in the worst case, in the ports tree. 1036 FreeBSD_version 800015 marks this change for the unlikely 1037 case that a portable fix is impossible. 1038 103920080123: 1040 To upgrade to -current after this date, you must be running 1041 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 1042 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 1043 104420071128: 1045 The ADAPTIVE_GIANT kernel option has been retired because its 1046 functionality is the default now. 1047 104820071118: 1049 The AT keyboard emulation of sunkbd(4) has been turned on 1050 by default. In order to make the special symbols of the Sun 1051 keyboards driven by sunkbd(4) work under X these now have 1052 to be configured the same way as Sun USB keyboards driven 1053 by ukbd(4) (which also does AT keyboard emulation), f.e.: 1054 1055 Option "XkbLayout" "us" 1056 Option "XkbRules" "xorg" 1057 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 1058 105920071024: 1060 It has been decided that it is desirable to provide ABI 1061 backwards compatibility to the FreeBSD 4/5/6 versions of the 1062 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 1063 broken with the introduction of PCI domain support (see the 1064 20070930 entry). Unfortunately, this required the ABI of 1065 PCIOCGETCONF to be broken again in order to be able to 1066 provide backwards compatibility to the old version of that 1067 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 1068 again. As for prominent ports this affects neither pciutils 1069 nor xorg-server this time, the hal port needs to be rebuilt 1070 however. 1071 107220071020: 1073 The misnamed kthread_create() and friends have been renamed 1074 to kproc_create() etc. Many of the callers already 1075 used kproc_start().. 1076 I will return kthread_create() and friends in a while 1077 with implementations that actually create threads, not procs. 1078 Renaming corresponds with version 800002. 1079 108020071010: 1081 RELENG_7 branched. 1082 1083COMMON ITEMS: 1084 1085 General Notes 1086 ------------- 1087 Avoid using make -j when upgrading. While generally safe, there are 1088 sometimes problems using -j to upgrade. If your upgrade fails with 1089 -j, please try again without -j. From time to time in the past there 1090 have been problems using -j with buildworld and/or installworld. This 1091 is especially true when upgrading between "distant" versions (eg one 1092 that cross a major release boundary or several minor releases, or when 1093 several months have passed on the -current branch). 1094 1095 Sometimes, obscure build problems are the result of environment 1096 poisoning. This can happen because the make utility reads its 1097 environment when searching for values for global variables. To run 1098 your build attempts in an "environmental clean room", prefix all make 1099 commands with 'env -i '. See the env(1) manual page for more details. 1100 1101 When upgrading from one major version to another it is generally best 1102 to upgrade to the latest code in the currently installed branch first, 1103 then do an upgrade to the new branch. This is the best-tested upgrade 1104 path, and has the highest probability of being successful. Please try 1105 this approach before reporting problems with a major version upgrade. 1106 1107 ZFS notes 1108 --------- 1109 When upgrading the boot ZFS pool to a new version, always follow 1110 these two steps: 1111 1112 1.) recompile and reinstall the ZFS boot loader and boot block 1113 (this is part of "make buildworld" and "make installworld") 1114 1115 2.) update the ZFS boot block on your boot drive 1116 1117 The following example updates the ZFS boot block on the first 1118 partition (freebsd-boot) of a GPT partitioned drive ad0: 1119 "gpart bootcode -p /boot/gptzfsboot -i 1 ad0" 1120 1121 Non-boot pools do not need these updates. 1122 1123 To build a kernel 1124 ----------------- 1125 If you are updating from a prior version of FreeBSD (even one just 1126 a few days old), you should follow this procedure. It is the most 1127 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1128 1129 make kernel-toolchain 1130 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1131 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1132 1133 To test a kernel once 1134 --------------------- 1135 If you just want to boot a kernel once (because you are not sure 1136 if it works, or if you want to boot a known bad kernel to provide 1137 debugging information) run 1138 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1139 nextboot -k testkernel 1140 1141 To just build a kernel when you know that it won't mess you up 1142 -------------------------------------------------------------- 1143 This assumes you are already running a CURRENT system. Replace 1144 ${arch} with the architecture of your machine (e.g. "i386", 1145 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1146 1147 cd src/sys/${arch}/conf 1148 config KERNEL_NAME_HERE 1149 cd ../compile/KERNEL_NAME_HERE 1150 make depend 1151 make 1152 make install 1153 1154 If this fails, go to the "To build a kernel" section. 1155 1156 To rebuild everything and install it on the current system. 1157 ----------------------------------------------------------- 1158 # Note: sometimes if you are running current you gotta do more than 1159 # is listed here if you are upgrading from a really old current. 1160 1161 <make sure you have good level 0 dumps> 1162 make buildworld 1163 make kernel KERNCONF=YOUR_KERNEL_HERE 1164 [1] 1165 <reboot in single user> [3] 1166 mergemaster -p [5] 1167 make installworld 1168 mergemaster -i [4] 1169 make delete-old [6] 1170 <reboot> 1171 1172 1173 To cross-install current onto a separate partition 1174 -------------------------------------------------- 1175 # In this approach we use a separate partition to hold 1176 # current's root, 'usr', and 'var' directories. A partition 1177 # holding "/", "/usr" and "/var" should be about 2GB in 1178 # size. 1179 1180 <make sure you have good level 0 dumps> 1181 <boot into -stable> 1182 make buildworld 1183 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1184 <maybe newfs current's root partition> 1185 <mount current's root partition on directory ${CURRENT_ROOT}> 1186 make installworld DESTDIR=${CURRENT_ROOT} 1187 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1188 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1189 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1190 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1191 <reboot into current> 1192 <do a "native" rebuild/install as described in the previous section> 1193 <maybe install compatibility libraries from ports/misc/compat*> 1194 <reboot> 1195 1196 1197 To upgrade in-place from 8.x-stable to current 1198 ---------------------------------------------- 1199 <make sure you have good level 0 dumps> 1200 make buildworld [9] 1201 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1202 [1] 1203 <reboot in single user> [3] 1204 mergemaster -p [5] 1205 make installworld 1206 mergemaster -i [4] 1207 make delete-old [6] 1208 <reboot> 1209 1210 Make sure that you've read the UPDATING file to understand the 1211 tweaks to various things you need. At this point in the life 1212 cycle of current, things change often and you are on your own 1213 to cope. The defaults can also change, so please read ALL of 1214 the UPDATING entries. 1215 1216 Also, if you are tracking -current, you must be subscribed to 1217 freebsd-current@freebsd.org. Make sure that before you update 1218 your sources that you have read and understood all the recent 1219 messages there. If in doubt, please track -stable which has 1220 much fewer pitfalls. 1221 1222 [1] If you have third party modules, such as vmware, you 1223 should disable them at this point so they don't crash your 1224 system on reboot. 1225 1226 [3] From the bootblocks, boot -s, and then do 1227 fsck -p 1228 mount -u / 1229 mount -a 1230 cd src 1231 adjkerntz -i # if CMOS is wall time 1232 Also, when doing a major release upgrade, it is required that 1233 you boot into single user mode to do the installworld. 1234 1235 [4] Note: This step is non-optional. Failure to do this step 1236 can result in a significant reduction in the functionality of the 1237 system. Attempting to do it by hand is not recommended and those 1238 that pursue this avenue should read this file carefully, as well 1239 as the archives of freebsd-current and freebsd-hackers mailing lists 1240 for potential gotchas. The -U option is also useful to consider. 1241 See mergemaster(8) for more information. 1242 1243 [5] Usually this step is a noop. However, from time to time 1244 you may need to do this if you get unknown user in the following 1245 step. It never hurts to do it all the time. You may need to 1246 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1247 install) after the buildworld before this step if you last updated 1248 from current before 20020224 or from -stable before 20020408. 1249 1250 [6] This only deletes old files and directories. Old libraries 1251 can be deleted by "make delete-old-libs", but you have to make 1252 sure that no program is using those libraries anymore. 1253 1254 [8] In order to have a kernel that can run the 4.x binaries needed to 1255 do an installworld, you must include the COMPAT_FREEBSD4 option in 1256 your kernel. Failure to do so may leave you with a system that is 1257 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1258 required to run the 5.x binaries on more recent kernels. And so on 1259 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1260 1261 Make sure that you merge any new devices from GENERIC since the 1262 last time you updated your kernel config file. 1263 1264 [9] When checking out sources, you must include the -P flag to have 1265 cvs prune empty directories. 1266 1267 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1268 "?=" instead of the "=" assignment operator, so that buildworld can 1269 override the CPUTYPE if it needs to. 1270 1271 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1272 not on the command line, or in /etc/make.conf. buildworld will 1273 warn if it is improperly defined. 1274FORMAT: 1275 1276This file contains a list, in reverse chronological order, of major 1277breakages in tracking -current. Not all things will be listed here, 1278and it only starts on October 16, 2004. Updating files can found in 1279previous releases if your system is older than this. 1280 1281Copyright information: 1282 1283Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1284 1285Redistribution, publication, translation and use, with or without 1286modification, in full or in part, in any form or format of this 1287document are permitted without further permission from the author. 1288 1289THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1290IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1291WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1292DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1293INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1294(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1295SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1296HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1297STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1298IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1299POSSIBILITY OF SUCH DAMAGE. 1300 1301Contact Warner Losh if you have any questions about your use of 1302this document. 1303 1304$FreeBSD$ 1305