1Updating Information for FreeBSD current users 2 3This file is maintained and copyrighted by M. Warner Losh 4<imp@village.org>. See end of file for further details. For commonly 5done items, please see the COMMON ITEMS: section later in the file. 6 7Items affecting the ports and packages system can be found in 8/usr/ports/UPDATING. Please read that file before running 9portupgrade. 10 11NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW: 12 FreeBSD 8.x has many debugging features turned on, in 13 both the kernel and userland. These features attempt to detect 14 incorrect use of system primitives, and encourage loud failure 15 through extra sanity checking and fail stop semantics. They 16 also substantially impact system performance. If you want to 17 do performance measurement, benchmarking, and optimization, 18 you'll want to turn them off. This includes various WITNESS- 19 related kernel options, INVARIANTS, malloc debugging flags 20 in userland, and various verbose features in the kernel. Many 21 developers choose to disable these features on build machines 22 to maximize performance. (To disable malloc debugging, run 23 ln -s aj /etc/malloc.conf.) 24 2520081130: 26 __FreeBSD_version 800057 marks the switchover from the 27 binary ath hal to source code. Users must add the line: 28 29 options AH_SUPPORT_AR5416 30 31 to their kernel config files when specifying: 32 33 device ath_hal 34 35 The ath_hal module no longer exists; the code is now compiled 36 together with the driver in the ath module. It is now 37 possible to tailor chip support (i.e. reduce the set of chips 38 and thereby the code size); consult ath_hal(4) for details. 39 4020081121: 41 __FreeBSD_version 800054 adds memory barriers to 42 <machine/atomic.h>, new interfaces to ifnet to facilitate 43 multiple hardware transmit queues for cards that support 44 them, and a lock-less ring-buffer implementation to 45 enable drivers to more efficiently manage queueing of 46 packets. 47 4820081117: 49 A new version of ZFS (version 13) has been merged to -HEAD. 50 This version has zpool attribute "listsnapshots" off by 51 default, which means "zfs list" does not show snapshots, 52 and is the same as Solaris behavior. 53 5420081028: 55 dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. 56 5720081009: 58 The uhci, ohci, ehci and slhci USB Host controller drivers have 59 been put into separate modules. If you load the usb module 60 separately through loader.conf you will need to load the 61 appropriate *hci module as well. E.g. for a UHCI-based USB 2.0 62 controller add the following to loader.conf: 63 64 uhci_load="YES" 65 ehci_load="YES" 66 6720081009: 68 The ABI used by the PMC toolset has changed. Please keep 69 userland (libpmc(3)) and the kernel module (hwpmc(4)) in 70 sync. 71 7220080820: 73 The TTY subsystem of the kernel has been replaced by a new 74 implementation, which provides better scalability and an 75 improved driver model. Most common drivers have been migrated to 76 the new TTY subsystem, while others have not. The following 77 drivers have not yet been ported to the new TTY layer: 78 79 PCI/ISA: 80 cy, digi, rc, rp, sio 81 82 USB: 83 ubser, ucycom 84 85 Line disciplines: 86 ng_h4, ng_tty, ppp, sl, snp 87 88 Adding these drivers to your kernel configuration file shall 89 cause compilation to fail. 90 9120080818: 92 ntpd has been upgraded to 4.2.4p5. 93 9420080801: 95 OpenSSH has been upgraded to 5.1p1. 96 97 For many years, FreeBSD's version of OpenSSH preferred DSA 98 over RSA for host and user authentication keys. With this 99 upgrade, we've switched to the vendor's default of RSA over 100 DSA. This may cause upgraded clients to warn about unknown 101 host keys even for previously known hosts. Users should 102 follow the usual procedure for verifying host keys before 103 accepting the RSA key. 104 105 This can be circumvented by setting the "HostKeyAlgorithms" 106 option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh 107 command line. 108 109 Please note that the sequence of keys offered for 110 authentication has been changed as well. You may want to 111 specify IdentityFile in a different order to revert this 112 behavior. 113 11420080713: 115 The sio(4) driver has been removed from the i386 and amd64 116 kernel configuration files. This means uart(4) is now the 117 default serial port driver on those platforms as well. 118 119 To prevent collisions with the sio(4) driver, the uart(4) driver 120 uses different names for its device nodes. This means the 121 onboard serial port will now most likely be called "ttyu0" 122 instead of "ttyd0". You may need to reconfigure applications to 123 use the new device names. 124 125 When using the serial port as a boot console, be sure to update 126 /boot/device.hints and /etc/ttys before booting the new kernel. 127 If you forget to do so, you can still manually specify the hints 128 at the loader prompt: 129 130 set hint.uart.0.at="isa" 131 set hint.uart.0.port="0x3F8" 132 set hint.uart.0.flags="0x10" 133 set hint.uart.0.irq="4" 134 boot -s 135 13620080609: 137 The gpt(8) utility has been removed. Use gpart(8) to partition 138 disks instead. 139 14020080603: 141 The version that Linuxulator emulates was changed from 2.4.2 142 to 2.6.16. If you experience any problems with Linux binaries 143 please try to set sysctl compat.linux.osrelease to 2.4.2 and 144 if it fixes the problem contact emulation mailing list. 145 14620080525: 147 ISDN4BSD (I4B) was removed from the src tree. You may need to 148 update a your kernel configuration and remove relevant entries. 149 15020080509: 151 I have checked in code to support multiple routing tables. 152 See the man pages setfib(1) and setfib(2). 153 This is a hopefully backwards compatible version, 154 but to make use of it you need to compile your kernel 155 with options ROUTETABLES=2 (or more up to 16). 156 15720080420: 158 The 802.11 wireless support was redone to enable multi-bss 159 operation on devices that are capable. The underlying device 160 is no longer used directly but instead wlanX devices are 161 cloned with ifconfig. This requires changes to rc.conf files. 162 For example, change: 163 ifconfig_ath0="WPA DHCP" 164 to 165 wlans_ath0=wlan0 166 ifconfig_wlan0="WPA DHCP" 167 see rc.conf(5) for more details. In addition, mergemaster of 168 /etc/rc.d is highly recommended. Simultaneous update of userland 169 and kernel wouldn't hurt either. 170 171 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 172 modules were merged into the base wlan module. All references 173 to these modules (e.g. in kernel config files) must be removed. 174 17520080408: 176 psm(4) has gained write(2) support in native operation level. 177 Arbitrary commands can be written to /dev/psm%d and status can 178 be read back from it. Therefore, an application is responsible 179 for status validation and error recovery. It is a no-op in 180 other operation levels. 181 18220080312: 183 Support for KSE threading has been removed from the kernel. To 184 run legacy applications linked against KSE libmap.conf may 185 be used. The following libmap.conf may be used to ensure 186 compatibility with any prior release: 187 188 libpthread.so.1 libthr.so.1 189 libpthread.so.2 libthr.so.2 190 libkse.so.3 libthr.so.3 191 19220080301: 193 The layout of struct vmspace has changed. This affects libkvm 194 and any executables that link against libkvm and use the 195 kvm_getprocs() function. In particular, but not exclusively, 196 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 197 The effects are minimal, but it's advisable to upgrade world 198 nonetheless. 199 20020080229: 201 The latest em driver no longer has support in it for the 202 82575 adapter, this is now moved to the igb driver. The 203 split was done to make new features that are incompatible 204 with older hardware easier to do. 205 20620080220: 207 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 208 likewise the kernel option is now GEOM_LINUX_LVM. 209 21020080211: 211 The default NFS mount mode has changed from UDP to TCP for 212 increased reliability. If you rely on (insecurely) NFS 213 mounting across a firewall you may need to update your 214 firewall rules. 215 21620080208: 217 Belatedly note the addition of m_collapse for compacting 218 mbuf chains. 219 22020080126: 221 The fts(3) structures have been changed to use adequate 222 integer types for their members and so to be able to cope 223 with huge file trees. The old fts(3) ABI is preserved 224 through symbol versioning in libc, so third-party binaries 225 using fts(3) should still work, although they will not take 226 advantage of the extended types. At the same time, some 227 third-party software might fail to build after this change 228 due to unportable assumptions made in its source code about 229 fts(3) structure members. Such software should be fixed 230 by its vendor or, in the worst case, in the ports tree. 231 FreeBSD_version 800015 marks this change for the unlikely 232 case that a portable fix is impossible. 233 23420080123: 235 To upgrade to -current after this date, you must be running 236 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 237 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 238 23920071128: 240 The ADAPTIVE_GIANT kernel option has been retired because its 241 functionality is the default now. 242 24320071118: 244 The AT keyboard emulation of sunkbd(4) has been turned on 245 by default. In order to make the special symbols of the Sun 246 keyboards driven by sunkbd(4) work under X these now have 247 to be configured the same way as Sun USB keyboards driven 248 by ukbd(4) (which also does AT keyboard emulation), f.e.: 249 250 Option "XkbLayout" "us" 251 Option "XkbRules" "xorg" 252 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 253 25420071024: 255 It has been decided that it is desirable to provide ABI 256 backwards compatibility to the FreeBSD 4/5/6 versions of the 257 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 258 broken with the introduction of PCI domain support (see the 259 20070930 entry). Unfortunately, this required the ABI of 260 PCIOCGETCONF to be broken again in order to be able to 261 provide backwards compatibility to the old version of that 262 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 263 again. As for prominent ports this affects neither pciutils 264 nor xorg-server this time, the hal port needs to be rebuilt 265 however. 266 26720071020: 268 The misnamed kthread_create() and friends have been renamed 269 to kproc_create() etc. Many of the callers already 270 used kproc_start().. 271 I will return kthread_create() and friends in a while 272 with implementations that actually create threads, not procs. 273 Renaming corresponds with version 800002. 274 27520071010: 276 RELENG_7 branched. 277 27820071009: 279 Setting WITHOUT_LIBPTHREAD now means WITHOUT_LIBKSE and 280 WITHOUT_LIBTHR are set. 281 28220070930: 283 The PCI code has been made aware of PCI domains. This means that 284 the location strings as used by pciconf(8) etc are now in the 285 following format: pci<domain>:<bus>:<device>[:<function>]. It 286 also means that consumers of <sys/pciio.h> potentially need to 287 be recompiled; this includes the hal and xorg-server ports. 288 28920070928: 290 The caching daemon (cached) was renamed to nscd. nscd.conf 291 configuration file should be used instead of cached.conf and 292 nscd_enable, nscd_pidfile and nscd_flags options should be used 293 instead of cached_enable, cached_pidfile and cached_flags in 294 rc.conf. 295 29620070921: 297 The getfacl(1) utility now prints owning user and group name 298 instead of owning uid and gid in the three line comment header. 299 This is the same behavior as getfacl(1) on Solaris and Linux. 300 30120070704: 302 The new IPsec code is now compiled in using the IPSEC option. The 303 IPSEC option now requires "device crypto" be defined in your kernel 304 configuration. The FAST_IPSEC kernel option is now deprecated. 305 30620070702: 307 The packet filter (pf) code has been updated to OpenBSD 4.1 Please 308 note the changed syntax - keep state is now on by default. Also 309 note the fact that ftp-proxy(8) has been changed from bottom up and 310 has been moved from libexec to usr/sbin. Changes in the ALTQ 311 handling also affect users of IPFW's ALTQ capabilities. 312 31320070701: 314 Remove KAME IPsec in favor of FAST_IPSEC, which is now the 315 only IPsec supported by FreeBSD. The new IPsec stack 316 supports both IPv4 and IPv6. The kernel option will change 317 after the code changes have settled in. For now the kernel 318 option IPSEC is deprecated and FAST_IPSEC is the only option, that 319 will change after some settling time. 320 32120070701: 322 The wicontrol(8) utility has been removed from the base system. wi(4) 323 cards should be configured using ifconfig(8), see the man page for more 324 information. 325 32620070612: 327 The i386/amd64 GENERIC kernel now defaults to the nfe(4) driver 328 instead of the nve(4) driver. Please update your configuration 329 accordingly. 330 33120070612: 332 By default, /etc/rc.d/sendmail no longer rebuilds the aliases 333 database if it is missing or older than the aliases file. If 334 desired, set the new rc.conf option sendmail_rebuild_aliases 335 to "YES" to restore that functionality. 336 33720070612: 338 The IPv4 multicast socket code has been considerably modified, and 339 moved to the file sys/netinet/in_mcast.c. Initial support for the 340 RFC 3678 Source-Specific Multicast Socket API has been added to 341 the IPv4 network stack. 342 343 Strict multicast and broadcast reception is now the default for 344 UDP/IPv4 sockets; the net.inet.udp.strict_mcast_mship sysctl variable 345 has now been removed. 346 347 The RFC 1724 hack for interface selection has been removed; the use 348 of the Linux-derived ip_mreqn structure with IP_MULTICAST_IF has 349 been added to replace it. Consumers such as routed will soon be 350 updated to reflect this. 351 352 These changes affect users who are running routed(8) or rdisc(8) 353 from the FreeBSD base system on point-to-point or unnumbered 354 interfaces. 355 35620070610: 357 The net80211 layer has changed significantly and all wireless 358 drivers that depend on it need to be recompiled. Further these 359 changes require that any program that interacts with the wireless 360 support in the kernel be recompiled; this includes: ifconfig, 361 wpa_supplicant, hostapd, and wlanstats. Users must also, for 362 the moment, kldload the wlan_scan_sta and/or wlan_scan_ap modules 363 if they use modules for wireless support. These modules implement 364 scanning support for station and ap modes, respectively. Failure 365 to load the appropriate module before marking a wireless interface 366 up will result in a message to the console and the device not 367 operating properly. 368 36920070610: 370 The pam_nologin(8) module ceases to provide an authentication 371 function and starts providing an account management function. 372 Consequent changes to /etc/pam.d should be brought in using 373 mergemaster(8). Third-party files in /usr/local/etc/pam.d may 374 need manual editing as follows. Locate this line (or similar): 375 376 auth required pam_nologin.so no_warn 377 378 and change it according to this example: 379 380 account required pam_nologin.so no_warn 381 382 That is, the first word needs to be changed from "auth" to 383 "account". The new line can be moved to the account section 384 within the file for clarity. Not updating pam.conf(5) files 385 will result in nologin(5) ignored by the respective services. 386 38720070529: 388 The ether_ioctl() function has been synchronized with ioctl(2) 389 and ifnet.if_ioctl. Due to that, the size of one of its arguments 390 has changed on 64-bit architectures. All kernel modules using 391 ether_ioctl() need to be rebuilt on such architectures. 392 39320070516: 394 Improved INCLUDE_CONFIG_FILE support has been introduced to the 395 config(8) utility. In order to take advantage of this new 396 functionality, you are expected to recompile and install 397 src/usr.sbin/config. If you don't rebuild config(8), and your 398 kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel 399 build will be broken because of a missing "kernconfstring" 400 symbol. 401 40220070513: 403 Symbol versioning is enabled by default. To disable it, use 404 option WITHOUT_SYMVER. It is not advisable to attempt to 405 disable symbol versioning once it is enabled; your installworld 406 will break because a symbol version-less libc will get installed 407 before the install tools. As a result, the old install tools, 408 which previously had symbol dependencies to FBSD_1.0, will fail 409 because the freshly installed libc will not have them. 410 411 The default threading library (providing "libpthread") has been 412 changed to libthr. If you wish to have libkse as your default, 413 use option DEFAULT_THREAD_LIB=libkse for the buildworld. 414 41520070423: 416 The ABI breakage in sendmail(8)'s libmilter has been repaired 417 so it is no longer necessary to recompile mail filters (aka, 418 milters). If you recompiled mail filters after the 20070408 419 note, it is not necessary to recompile them again. 420 42120070417: 422 The new trunk(4) driver has been renamed to lagg(4) as it better 423 reflects its purpose. ifconfig will need to be recompiled. 424 42520070408: 426 sendmail(8) has been updated to version 8.14.1. Mail filters 427 (aka, milters) compiled against the libmilter included in the 428 base operating system should be recompiled. 429 43020070302: 431 Firmwares for ipw(4) and iwi(4) are now included in the base tree. 432 In order to use them one must agree to the respective LICENSE in 433 share/doc/legal and define legal.intel_<name>.license_ack=1 via 434 loader.conf(5) or kenv(1). Make sure to deinstall the now 435 deprecated modules from the respective firmware ports. 436 43720070228: 438 The name resolution/mapping functions addr2ascii(3) and ascii2addr(3) 439 were removed from FreeBSD's libc. These originally came from INRIA 440 IPv6. Nothing in FreeBSD ever used them. They may be regarded as 441 deprecated in previous releases. 442 The AF_LINK support for getnameinfo(3) was merged from NetBSD to 443 replace it as a more portable (and re-entrant) API. 444 44520070224: 446 To support interrupt filtering a modification to the newbus API 447 has occurred, ABI was broken and __FreeBSD_version was bumped 448 to 700031. Please make sure that your kernel and modules are in 449 sync. For more info: 450 http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941 451 45220070224: 453 The IPv6 multicast forwarding code may now be loaded into GENERIC 454 kernels by loading the ip_mroute.ko module. This is built into the 455 module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are 456 set; see src.conf(5) for more information. 457 45820070214: 459 The output of netstat -r has changed. Without -n, we now only 460 print a "network name" without the prefix length if the network 461 address and mask exactly match a Class A/B/C network, and an entry 462 exists in the nsswitch "networks" map. 463 With -n, we print the full unabbreviated CIDR network prefix in 464 the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default". 465 This change is in preparation for changes such as equal-cost 466 multipath, and to more generally assist operational deployment 467 of FreeBSD as a modern IPv4 router. 468 46920070210: 470 PIM has been turned on by default in the IPv4 multicast 471 routing code. The kernel option 'PIM' has now been removed. 472 PIM is now built by default if option 'MROUTING' is specified. 473 It may now be loaded into GENERIC kernels by loading the 474 ip_mroute.ko module. 475 47620070207: 477 Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing 478 has been removed. Its functionality may be achieved by explicitly 479 configuring gif(4) interfaces and using the 'phyint' keyword in 480 mrouted.conf. 481 XORP does not support source-routed IPv4 multicast tunnels nor the 482 integrated IPIP tunneling, therefore it is not affected by this 483 change. The __FreeBSD_version macro has been bumped to 700030. 484 48520061221: 486 Support for PCI Message Signalled Interrupts has been 487 re-enabled in the bge driver, only for those chips which are 488 believed to support it properly. If there are any problems, 489 MSI can be disabled completely by setting the 490 'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0 491 in the loader. 492 49320061214: 494 Support for PCI Message Signalled Interrupts has been 495 disabled again in the bge driver. Many revisions of the 496 hardware fail to support it properly. Support can be 497 re-enabled by removing the #define of BGE_DISABLE_MSI in 498 "src/sys/dev/bge/if_bge.c". 499 50020061214: 501 Support for PCI Message Signalled Interrupts has been added 502 to the bge driver. If there are any problems, MSI can be 503 disabled completely by setting the 'hw.pci.enable_msi' and 504 'hw.pci.enable_msix' tunables to 0 in the loader. 505 50620061205: 507 The removal of several facets of the experimental Threading 508 system from the kernel means that the proc and thread structures 509 have changed quite a bit. I suggest all kernel modules that might 510 reference these structures be recompiled.. Especially the 511 linux module. 512 51320061126: 514 Sound infrastructure has been updated with various fixes and 515 improvements. Most of the changes are pretty much transparent, 516 with exceptions of followings: 517 1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been 518 moved to their own dev sysctl nodes, for example: 519 hw.snd.pcm0.vchans -> dev.pcm.0.vchans 520 2) /dev/dspr%d.%d has been deprecated. Each channel now has its 521 own chardev in the form of "dsp%d.<function>%d", where <function> 522 is p = playback, r = record and v = virtual, respectively. Users 523 are encouraged to use these devs instead of (old) "/dev/dsp%d.%d". 524 This does not affect those who are using "/dev/dsp". 525 52620061122: 527 geom(4)'s gmirror(8) class metadata structure has been 528 rev'd from v3 to v4. If you update across this point and 529 your metadata is converted for you, you will not be easily 530 able to downgrade since the /boot/kernel.old/geom_mirror.ko 531 kernel module will be unable to read the v4 metadata. You 532 can resolve this by doing from the loader(8) prompt: 533 534 set vfs.root.mountfrom="ufs:/dev/XXX" 535 536 where XXX is the root slice of one of the disks that composed 537 the mirror (i.e.: /dev/ad0s1a). You can then rebuild 538 the array the same way you built it originally. 539 54020061122: 541 The following binaries have been disconnected from the build: 542 mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs, 543 and mount_std. The functionality of these programs has been 544 moved into the mount program. For example, to mount a devfs 545 filesystem, instead of using mount_devfs, use: "mount -t devfs". 546 This does not affect entries in /etc/fstab, since entries in 547 /etc/fstab are always processed with "mount -t fstype". 548 54920061113: 550 Support for PCI Message Signalled Interrupts on i386 and amd64 551 has been added to the kernel and various drivers will soon be 552 updated to use MSI when it is available. If there are any problems, 553 MSI can be disabled completely by setting the 'hw.pci.enable_msi' 554 and 'hw.pci.enable_msix' tunables to 0 in the loader. 555 55620061110: 557 The MUTEX_PROFILING option has been renamed to LOCK_PROFILING. 558 The lockmgr object layout has been changed as a result of having 559 a lock_object embedded in it. As a consequence all file system 560 kernel modules must be re-compiled. The mutex profiling man page 561 has not yet been updated to reflect this change. 562 56320061026: 564 KSE in the kernel has now been made optional and turned on by 565 default. Use 'nooption KSE' in your kernel config to turn it 566 off. All kernel modules *must* be recompiled after this change. 567 There-after, modules from a KSE kernel should be compatible with 568 modules from a NOKSE kernel due to the temporary padding fields 569 added to 'struct proc'. 570 57120060929: 572 mrouted and its utilities have been removed from the base system. 573 57420060927: 575 Some ioctl(2) command codes have changed. Full backward ABI 576 compatibility is provided if the "options COMPAT_FREEBSD6" is 577 present in the kernel configuration file. Make sure to add 578 this option to your kernel config file, or recompile X.Org 579 and the rest of ports; otherwise they may refuse to work. 580 58120060924: 582 tcpslice has been removed from the base system. 583 58420060913: 585 The sizes of struct tcpcb (and struct xtcpcb) have changed due to 586 the rewrite of TCP syncookies. Tools like netstat, sockstat, and 587 systat needs to be rebuilt. 588 58920060903: 590 libpcap updated to v0.9.4 and tcpdump to v3.9.4 591 59220060816: 593 The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour 594 for IPFIREWALL_FORWARD is now as it was before when it was first 595 committed and for years after. The behaviour is now ON. 596 59720060725: 598 enigma(1)/crypt(1) utility has been changed on 64 bit architectures. 599 Now it can decrypt files created from different architectures. 600 Unfortunately, it is no longer able to decrypt a cipher text 601 generated with an older version on 64 bit architectures. 602 If you have such a file, you need old utility to decrypt it. 603 60420060709: 605 The interface version of the i4b kernel part has changed. So 606 after updating the kernel sources and compiling a new kernel, 607 the i4b user space tools in "/usr/src/usr.sbin/i4b" must also 608 be rebuilt, and vice versa. 609 61020060627: 611 The XBOX kernel now defaults to the nfe(4) driver instead of 612 the nve(4) driver. Please update your configuration 613 accordingly. 614 61520060514: 616 The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx 617 PCnet family of NICs has been removed. The new le(4) driver serves 618 as an equivalent but cross-platform replacement with the pcn(4) 619 driver still providing performance-optimized support for the subset 620 of AMD Am79C971 PCnet-FAST and greater chips as before. 621 62220060511: 623 The machdep.* sysctls and the adjkerntz utility have been 624 modified a bit. The new adjkerntz utility uses the new 625 sysctl names and sysctlbyname() calls, so it may be impossible 626 to run an old /sbin/adjkerntz utility in single-user mode 627 with a new kernel. Replace the `adjkerntz -i' step before 628 `make installworld' with: 629 630 /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i 631 632 and proceed as usual with the rest of the installworld-stage 633 steps. Otherwise, you risk installing binaries with their 634 timestamp set several hours in the future, especially if 635 you are running with local time set to GMT+X hours. 636 63720060412: 638 The ip6fw utility has been removed. The behavior provided by 639 ip6fw has been in ipfw2 for a good while and the rc.d scripts 640 have been updated to deal with it. There are some rules that 641 might not migrate cleanly. Use rc.firewall6 as a template to 642 rewrite rules. 643 64420060428: 645 The puc(4) driver has been overhauled. The ebus(4) and sbus(4) 646 attachments have been removed. Make sure to configure scc(4) 647 on sparc64. Note also that by default puc(4) will use uart(4) 648 and not sio(4) for serial ports because interrupt handling has 649 been optimized for multi-port serial cards and only uart(4) 650 implements the interface to support it. 651 65220060330: 653 The scc(4) driver replaces puc(4) for Serial Communications 654 Controllers (SCCs) like the Siemens SAB82532 and the Zilog 655 Z8530. On sparc64, it is advised to add scc(4) to the kernel 656 configuration to make sure that the serial ports remain 657 functional. 658 65920060317: 660 Most world/kernel related NO_* build options changed names. 661 New knobs have common prefixes WITHOUT_*/WITH_* (modelled 662 after FreeBSD ports) and should be set in /etc/src.conf 663 (the src.conf(5) manpage is provided). Full backwards 664 compatibility is maintained for the time being though it's 665 highly recommended to start moving old options out of the 666 system-wide /etc/make.conf file into the new /etc/src.conf 667 while also properly renaming them. More conversions will 668 likely follow. Posting to current@: 669 670 http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html 671 67220060305: 673 The NETSMBCRYPTO kernel option has been retired because its 674 functionality is always included in NETSMB and smbfs.ko now. 675 67620060303: 677 The TDFX_LINUX kernel option was retired and replaced by the 678 tdfx_linux device. The latter can be loaded as the 3dfx_linux.ko 679 kernel module. Loading it alone should suffice to get 3dfx support 680 for Linux apps because it will pull in 3dfx.ko and linux.ko through 681 its dependencies. 682 68320060204: 684 The 'audit' group was added to support the new auditing functionality 685 in the base system. Be sure to follow the directions for updating, 686 including the requirement to run mergemaster -p. 687 68820060201: 689 The kernel ABI to file system modules was changed on i386. 690 Please make sure that your kernel and modules are in sync. 691 69220060118: 693 This actually occured some time ago, but installing the kernel 694 now also installs a bunch of symbol files for the kernel modules. 695 This increases the size of /boot/kernel to about 67Mbytes. You 696 will need twice this if you will eventually back this up to kernel.old 697 on your next install. 698 If you have a shortage of room in your root partition, you should add 699 -DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes" 700 to your /etc/make.conf. 701 70220060113: 703 libc's malloc implementation has been replaced. This change has the 704 potential to uncover application bugs that previously went unnoticed. 705 See the malloc(3) manual page for more details. 706 70720060112: 708 The generic netgraph(4) cookie has been changed. If you upgrade 709 kernel passing this point, you also need to upgrade userland 710 and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4. 711 71220060106: 713 si(4)'s device files now contain the unit number. 714 Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f]. 715 71620060106: 717 The kernel ABI was mostly destroyed due to a change in the size 718 of struct lock_object which is nested in other structures such 719 as mutexes which are nested in all sorts of other structures. 720 Make sure your kernel and modules are in sync. 721 72220051231: 723 The page coloring algorithm in the VM subsystem was converted 724 from tuning with kernel options to autotuning. Please remove 725 any PQ_* option except PQ_NOOPT from your kernel config. 726 72720051211: 728 The net80211-related tools in the tools/tools/ath directory 729 have been moved to tools/tools/net80211 and renamed with a 730 "wlan" prefix. Scripts that use them should be adjusted 731 accordingly. 732 73320051202: 734 Scripts in the local_startup directories (as defined in 735 /etc/defaults/rc.conf) that have the new rc.d semantics will 736 now be run as part of the base system rcorder. If there are 737 errors or problems with one of these local scripts, it could 738 cause boot problems. If you encounter such problems, boot in 739 single user mode, remove that script from the */rc.d directory. 740 Please report the problem to the port's maintainer, and the 741 freebsd-ports@freebsd.org mailing list. 742 74320051129: 744 The nodev mount option was deprecated in RELENG_6 (where it 745 was a no-op), and is now unsupported. If you have nodev or dev listed 746 in /etc/fstab, remove it, otherwise it will result in a mount error. 747 74820051129: 749 ABI between ipfw(4) and ipfw(8) has been changed. You need 750 to rebuild ipfw(8) when rebuilding kernel. 751 75220051108: 753 rp(4)'s device files now contain the unit number. 754 Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f]. 755 75620051029: 757 /etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp. 758 Its /etc/rc.conf.d configuration file has been `ppp' from 759 the beginning, and hence there is no need to touch it. 760 76120051014: 762 Now most modules get their build-time options from the kernel 763 configuration file. A few modules still have fixed options 764 due to their non-conformant implementation, but they will be 765 corrected eventually. You may need to review the options of 766 the modules in use, explicitly specify the non-default options 767 in the kernel configuration file, and rebuild the kernel and 768 modules afterwards. 769 77020051001: 771 kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8) 772 to turn polling(4) on your interfaces. 773 77420050927: 775 The old bridge(4) implementation was retired. The new 776 if_bridge(4) serves as a full functional replacement. 777 77820050722: 779 The ai_addrlen of a struct addrinfo was changed to a socklen_t 780 to conform to POSIX-2001. This change broke an ABI 781 compatibility on 64 bit architecture. You have to recompile 782 userland programs that use getaddrinfo(3) on 64 bit 783 architecture. 784 78520050711: 786 RELENG_6 branched here. 787 78820050629: 789 The pccard_ifconfig rc.conf variable has been removed and a new 790 variable, ifconfig_DEFAULT has been introduced. Unlike 791 pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that 792 do not have ifconfig_ifn entries rather than just those in 793 removable_interfaces. 794 79520050616: 796 Some previous versions of PAM have permitted the use of 797 non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring 798 to third party PAM modules in /usr/local/lib. A change has been 799 made to require the use of absolute paths in order to avoid 800 ambiguity and dependence on library path configuration, which may 801 affect existing configurations. 802 80320050610: 804 Major changes to network interface API. All drivers must be 805 recompiled. Drivers not in the base system will need to be 806 updated to the new APIs. 807 80820050609: 809 Changes were made to kinfo_proc in sys/user.h. Please recompile 810 userland, or commands like `fstat', `pkill', `ps', `top' and `w' 811 will not behave correctly. 812 813 The API and ABI for hwpmc(4) have changed with the addition 814 of sampling support. Please recompile lib/libpmc(3) and 815 usr.sbin/{pmcstat,pmccontrol}. 816 81720050606: 818 The OpenBSD dhclient was imported in place of the ISC dhclient 819 and the network interface configuration scripts were updated 820 accordingly. If you use DHCP to configure your interfaces, you 821 must now run devd. Also, DNS updating was lost so you will need 822 to find a workaround if you use this feature. 823 824 The '_dhcp' user was added to support the OpenBSD dhclient. Be 825 sure to run mergemaster -p (like you are supposed to do every time 826 anyway). 827 82820050605: 829 if_bridge was added to the tree. This has changed struct ifnet. 830 Please recompile userland and all network related modules. 831 83220050603: 833 The n_net of a struct netent was changed to an uint32_t, and 834 1st argument of getnetbyaddr() was changed to an uint32_t, to 835 conform to POSIX-2001. These changes broke an ABI 836 compatibility on 64 bit architecture. With these changes, 837 shlib major of libpcap was bumped. You have to recompile 838 userland programs that use getnetbyaddr(3), getnetbyname(3), 839 getnetent(3) and/or libpcap on 64 bit architecture. 840 84120050528: 842 Kernel parsing of extra options on '#!' first lines of shell 843 scripts has changed. Lines with multiple options likely will 844 fail after this date. For full details, please see 845 http://people.freebsd.org/~gad/Updating-20050528.txt 846 84720050503: 848 The packet filter (pf) code has been updated to OpenBSD 3.7 849 Please note the changed anchor syntax and the fact that 850 authpf(8) now needs a mounted fdescfs(5) to function. 851 85220050415: 853 The NO_MIXED_MODE kernel option has been removed from the i386 854 amd64 platforms as its use has been superceded by the new local 855 APIC timer code. Any kernel config files containing this option 856 should be updated. 857 85820050227: 859 The on-disk format of LC_CTYPE files was changed to be machine 860 independent. Please make sure NOT to use NO_CLEAN buildworld 861 when crossing this point. Crossing this point also requires 862 recompile or reinstall of all locale depended packages. 863 86420050225: 865 The ifi_epoch member of struct if_data has been changed to 866 contain the uptime at which the interface was created or the 867 statistics zeroed rather then the wall clock time because 868 wallclock time may go backwards. This should have no impact 869 unless an snmp implementation is using this value (I know of 870 none at this point.) 871 87220050224: 873 The acpi_perf and acpi_throttle drivers are now part of the 874 acpi(4) main module. They are no longer built separately. 875 87620050223: 877 The layout of struct image_params has changed. You have to 878 recompile all compatibility modules (linux, svr4, etc) for use 879 with the new kernel. 880 88120050223: 882 The p4tcc driver has been merged into cpufreq(4). This makes 883 "options CPU_ENABLE_TCC" obsolete. Please load cpufreq.ko or 884 compile in "device cpufreq" to restore this functionality. 885 88620050220: 887 The responsibility of recomputing the file system summary of 888 a SoftUpdates-enabled dirty volume has been transferred to the 889 background fsck. A rebuild of fsck(8) utility is recommended 890 if you have updated the kernel. 891 892 To get the old behavior (recompute file system summary at mount 893 time), you can set vfs.ffs.compute_summary_at_mount=1 before 894 mounting the new volume. 895 89620050206: 897 The cpufreq import is complete. As part of this, the sysctls for 898 acpi(4) throttling have been removed. The power_profile script 899 has been updated, so you can use performance/economy_cpu_freq in 900 rc.conf(5) to set AC on/offline cpu frequencies. 901 90220050206: 903 NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko) 904 requires recompiling libnetgraph and userland netgraph utilities. 905 90620050114: 907 Support for abbreviated forms of a number of ipfw options is 908 now deprecated. Warnings are printed to stderr indicating the 909 correct full form when a match occurs. Some abbreviations may 910 be supported at a later date based on user feedback. To be 911 considered for support, abbreviations must be in use prior to 912 this commit and unlikely to be confused with current key words. 913 91420041221: 915 By a popular demand, a lot of NOFOO options were renamed 916 to NO_FOO (see bsd.compat.mk for a full list). The old 917 spellings are still supported, but will cause annoying 918 warnings on stderr. Make sure you upgrade properly (see 919 the COMMON ITEMS: section later in this file). 920 92120041219: 922 Auto-loading of ancillary wlan modules such as wlan_wep has 923 been temporarily disabled; you need to statically configure 924 the modules you need into your kernel or explicitly load them 925 prior to use. Specifically, if you intend to use WEP encryption 926 with an 802.11 device load/configure wlan_wep; if you want to 927 use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp, 928 and wlan_xauth as required. 929 93020041213: 931 The behaviour of ppp(8) has changed slightly. If lqr is enabled 932 (``enable lqr''), older versions would revert to LCP ECHO mode on 933 negotiation failure. Now, ``enable echo'' is required for this 934 behaviour. The ppp version number has been bumped to 3.4.2 to 935 reflect the change. 936 93720041201: 938 The wlan support has been updated to split the crypto support 939 into separate modules. For static WEP you must configure the 940 wlan_wep module in your system or build and install the module 941 in place where it can be loaded (the kernel will auto-load 942 the module when a wep key is configured). 943 94420041201: 945 The ath driver has been updated to split the tx rate control 946 algorithm into a separate module. You need to include either 947 ath_rate_onoe or ath_rate_amrr when configuring the kernel. 948 94920041116: 950 Support for systems with an 80386 CPU has been removed. Please 951 use FreeBSD 5.x or earlier on systems with an 80386. 952 95320041110: 954 We have had a hack which would mount the root filesystem 955 R/W if the device were named 'md*'. As part of the vnode 956 work I'm doing I have had to remove this hack. People 957 building systems which use preloaded MD root filesystems 958 may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in 959 their /etc/rc scripts. 960 96120041104: 962 FreeBSD 5.3 shipped here. 963 96420041102: 965 The size of struct tcpcb has changed again due to the removal 966 of RFC1644 T/TCP. You have to recompile userland programs that 967 read kmem for tcp sockets directly (netstat, sockstat, etc.) 968 96920041022: 970 The size of struct tcpcb has changed. You have to recompile 971 userland programs that read kmem for tcp sockets directly 972 (netstat, sockstat, etc.) 973 97420041016: 975 RELENG_5 branched here. For older entries, please see updating 976 in the RELENG_5 branch. 977 978COMMON ITEMS: 979 980 General Notes 981 ------------- 982 Avoid using make -j when upgrading. From time to time in the 983 past there have been problems using -j with buildworld and/or 984 installworld. This is especially true when upgrading between 985 "distant" versions (eg one that cross a major release boundary 986 or several minor releases, or when several months have passed 987 on the -current branch). 988 989 Sometimes, obscure build problems are the result of environment 990 poisoning. This can happen because the make utility reads its 991 environment when searching for values for global variables. 992 To run your build attempts in an "environmental clean room", 993 prefix all make commands with 'env -i '. See the env(1) manual 994 page for more details. 995 996 When upgrading from one major version to another it is generally 997 best to upgrade to the latest code in the currently installed branch 998 first, then do an upgrade to the new branch. This is the best-tested 999 upgrade path, and has the highest probability of being successful. 1000 Please try this approach before reporting problems with a major 1001 version upgrade. 1002 1003 To build a kernel 1004 ----------------- 1005 If you are updating from a prior version of FreeBSD (even one just 1006 a few days old), you should follow this procedure. It is the most 1007 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1008 1009 make kernel-toolchain 1010 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1011 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1012 1013 To test a kernel once 1014 --------------------- 1015 If you just want to boot a kernel once (because you are not sure 1016 if it works, or if you want to boot a known bad kernel to provide 1017 debugging information) run 1018 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1019 nextboot -k testkernel 1020 1021 To just build a kernel when you know that it won't mess you up 1022 -------------------------------------------------------------- 1023 This assumes you are already running a 5.X system. Replace 1024 ${arch} with the architecture of your machine (e.g. "i386", 1025 "alpha", "amd64", "ia64", "pc98", "sparc64", etc). 1026 1027 cd src/sys/${arch}/conf 1028 config KERNEL_NAME_HERE 1029 cd ../compile/KERNEL_NAME_HERE 1030 make depend 1031 make 1032 make install 1033 1034 If this fails, go to the "To build a kernel" section. 1035 1036 To rebuild everything and install it on the current system. 1037 ----------------------------------------------------------- 1038 # Note: sometimes if you are running current you gotta do more than 1039 # is listed here if you are upgrading from a really old current. 1040 1041 <make sure you have good level 0 dumps> 1042 make buildworld 1043 make kernel KERNCONF=YOUR_KERNEL_HERE 1044 [1] 1045 <reboot in single user> [3] 1046 mergemaster -p [5] 1047 make installworld 1048 make delete-old 1049 mergemaster [4] 1050 <reboot> 1051 1052 1053 To cross-install current onto a separate partition 1054 -------------------------------------------------- 1055 # In this approach we use a separate partition to hold 1056 # current's root, 'usr', and 'var' directories. A partition 1057 # holding "/", "/usr" and "/var" should be about 2GB in 1058 # size. 1059 1060 <make sure you have good level 0 dumps> 1061 <boot into -stable> 1062 make buildworld 1063 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1064 <maybe newfs current's root partition> 1065 <mount current's root partition on directory ${CURRENT_ROOT}> 1066 make installworld DESTDIR=${CURRENT_ROOT} 1067 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1068 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1069 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1070 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1071 <reboot into current> 1072 <do a "native" rebuild/install as described in the previous section> 1073 <maybe install compatibility libraries from ports/misc/compat*> 1074 <reboot> 1075 1076 1077 To upgrade in-place from 5.x-stable to current 1078 ---------------------------------------------- 1079 <make sure you have good level 0 dumps> 1080 make buildworld [9] 1081 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1082 [1] 1083 <reboot in single user> [3] 1084 mergemaster -p [5] 1085 make installworld 1086 make delete-old 1087 mergemaster -i [4] 1088 <reboot> 1089 1090 Make sure that you've read the UPDATING file to understand the 1091 tweaks to various things you need. At this point in the life 1092 cycle of current, things change often and you are on your own 1093 to cope. The defaults can also change, so please read ALL of 1094 the UPDATING entries. 1095 1096 Also, if you are tracking -current, you must be subscribed to 1097 freebsd-current@freebsd.org. Make sure that before you update 1098 your sources that you have read and understood all the recent 1099 messages there. If in doubt, please track -stable which has 1100 much fewer pitfalls. 1101 1102 [1] If you have third party modules, such as vmware, you 1103 should disable them at this point so they don't crash your 1104 system on reboot. 1105 1106 [3] From the bootblocks, boot -s, and then do 1107 fsck -p 1108 mount -u / 1109 mount -a 1110 cd src 1111 adjkerntz -i # if CMOS is wall time 1112 Also, when doing a major release upgrade, it is required that 1113 you boot into single user mode to do the installworld. 1114 1115 [4] Note: This step is non-optional. Failure to do this step 1116 can result in a significant reduction in the functionality of the 1117 system. Attempting to do it by hand is not recommended and those 1118 that pursue this avenue should read this file carefully, as well 1119 as the archives of freebsd-current and freebsd-hackers mailing lists 1120 for potential gotchas. 1121 1122 [5] Usually this step is a noop. However, from time to time 1123 you may need to do this if you get unknown user in the following 1124 step. It never hurts to do it all the time. You may need to 1125 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1126 install) after the buildworld before this step if you last updated 1127 from current before 20020224 or from -stable before 20020408. 1128 1129 [8] In order to have a kernel that can run the 4.x binaries 1130 needed to do an installworld, you must include the COMPAT_FREEBSD4 1131 option in your kernel. Failure to do so may leave you with a system 1132 that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 1133 is required to run the 5.x binaries on more recent kernels. 1134 1135 Make sure that you merge any new devices from GENERIC since the 1136 last time you updated your kernel config file. 1137 1138 [9] When checking out sources, you must include the -P flag to have 1139 cvs prune empty directories. 1140 1141 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1142 "?=" instead of the "=" assignment operator, so that buildworld can 1143 override the CPUTYPE if it needs to. 1144 1145 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1146 not on the command line, or in /etc/make.conf. buildworld will 1147 warn if it is improperly defined. 1148FORMAT: 1149 1150This file contains a list, in reverse chronological order, of major 1151breakages in tracking -current. Not all things will be listed here, 1152and it only starts on October 16, 2004. Updating files can found in 1153previous releases if your system is older than this. 1154 1155Copyright information: 1156 1157Copyright 1998-2005 M. Warner Losh. All Rights Reserved. 1158 1159Redistribution, publication, translation and use, with or without 1160modification, in full or in part, in any form or format of this 1161document are permitted without further permission from the author. 1162 1163THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1164IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1165WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1166DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1167INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1168(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1169SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1170HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1171STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1172IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1173POSSIBILITY OF SUCH DAMAGE. 1174 1175If you find this document useful, and you want to, you may buy the 1176author a beer. 1177 1178Contact Warner Losh if you have any questions about your use of 1179this document. 1180 1181$FreeBSD$ 1182