UPDATING revision 181827
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 2520080713: 26 The sio(4) driver has been removed from the i386 and amd64 27 kernel configuration files. This means uart(4) is now the 28 default serial port driver on those platforms as well. 29 30 To prevent collisions with the sio(4) driver, the uart(4) driver 31 uses different names for its device nodes. This means the 32 onboard serial port will now most likely be called "ttyu0" 33 instead of "ttyd0". You may need to reconfigure applications to 34 use the new device names. 35 36 When using the serial port as a boot console, be sure to update 37 /boot/device.hints and /etc/ttys before booting the new kernel. 38 If you forget to do so, you can still manually specify the hints 39 at the loader prompt: 40 41 set hint.uart.0.at="isa" 42 set hint.uart.0.port="0x3F8" 43 set hint.uart.0.flags="0x10" 44 set hint.uart.0.irq="4" 45 boot -s 46 4720080609: 48 The gpt(8) utility has been removed. Use gpart(8) to partition 49 disks instead. 50 5120080603: 52 The version that Linuxulator emulates was changed from 2.4.2 53 to 2.6.16. If you experience any problems with Linux binaries 54 please try to set sysctl compat.linux.osrelease to 2.4.2 and 55 if it fixes the problem contact emulation mailing list. 56 5720080525: 58 ISDN4BSD (I4B) was removed from the src tree. You may need to 59 update a your kernel configuration and remove relevant entries. 60 6120080509: 62 I have checked in code to support multiple routing tables. 63 See the man pages setfib(1) and setfib(2). 64 This is a hopefully backwards compatible version, 65 but to make use of it you need to compile your kernel 66 with options ROUTETABLES=2 (or more up to 16). 67 6820080420: 69 The 802.11 wireless support was redone to enable multi-bss 70 operation on devices that are capable. The underlying device 71 is no longer used directly but instead wlanX devices are 72 cloned with ifconfig. This requires changes to rc.conf files. 73 For example, change: 74 ifconfig_ath0="WPA DHCP" 75 to 76 wlans_ath0=wlan0 77 ifconfig_wlan0="WPA DHCP" 78 see rc.conf(5) for more details. In addition, mergemaster of 79 /etc/rc.d is highly recommended. Simultaneous update of userland 80 and kernel wouldn't hurt either. 81 82 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 83 modules were merged into the base wlan module. All references 84 to these modules (e.g. in kernel config files) must be removed. 85 8620080408: 87 psm(4) has gained write(2) support in native operation level. 88 Arbitrary commands can be written to /dev/psm%d and status can 89 be read back from it. Therefore, an application is responsible 90 for status validation and error recovery. It is a no-op in 91 other operation levels. 92 9320080312: 94 Support for KSE threading has been removed from the kernel. To 95 run legacy applications linked against KSE libmap.conf may 96 be used. The following libmap.conf may be used to ensure 97 compatibility with any prior release: 98 99 libpthread.so.1 libthr.so.1 100 libpthread.so.2 libthr.so.2 101 libkse.so.3 libthr.so.3 102 10320080301: 104 The layout of struct vmspace has changed. This affects libkvm 105 and any executables that link against libkvm and use the 106 kvm_getprocs() function. In particular, but not exclusively, 107 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 108 The effects are minimal, but it's advisable to upgrade world 109 nonetheless. 110 11120080229: 112 The latest em driver no longer has support in it for the 113 82575 adapter, this is now moved to the igb driver. The 114 split was done to make new features that are incompatible 115 with older hardware easier to do. 116 11720080220: 118 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 119 likewise the kernel option is now GEOM_LINUX_LVM. 120 12120080211: 122 The default NFS mount mode has changed from UDP to TCP for 123 increased reliability. If you rely on (insecurely) NFS 124 mounting across a firewall you may need to update your 125 firewall rules. 126 12720080208: 128 Belatedly note the addition of m_collapse for compacting 129 mbuf chains. 130 13120080126: 132 The fts(3) structures have been changed to use adequate 133 integer types for their members and so to be able to cope 134 with huge file trees. The old fts(3) ABI is preserved 135 through symbol versioning in libc, so third-party binaries 136 using fts(3) should still work, although they will not take 137 advantage of the extended types. At the same time, some 138 third-party software might fail to build after this change 139 due to unportable assumptions made in its source code about 140 fts(3) structure members. Such software should be fixed 141 by its vendor or, in the worst case, in the ports tree. 142 FreeBSD_version 800015 marks this change for the unlikely 143 case that a portable fix is impossible. 144 14520080123: 146 To upgrade to -current after this date, you must be running 147 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 148 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 149 15020071128: 151 The ADAPTIVE_GIANT kernel option has been retired because its 152 functionality is the default now. 153 15420071118: 155 The AT keyboard emulation of sunkbd(4) has been turned on 156 by default. In order to make the special symbols of the Sun 157 keyboards driven by sunkbd(4) work under X these now have 158 to be configured the same way as Sun USB keyboards driven 159 by ukbd(4) (which also does AT keyboard emulation), f.e.: 160 161 Option "XkbLayout" "us" 162 Option "XkbRules" "xorg" 163 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 164 16520071024: 166 It has been decided that it is desirable to provide ABI 167 backwards compatibility to the FreeBSD 4/5/6 versions of the 168 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 169 broken with the introduction of PCI domain support (see the 170 20070930 entry). Unfortunately, this required the ABI of 171 PCIOCGETCONF to be broken again in order to be able to 172 provide backwards compatibility to the old version of that 173 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 174 again. As for prominent ports this affects neither pciutils 175 nor xorg-server this time, the hal port needs to be rebuilt 176 however. 177 17820071020: 179 The misnamed kthread_create() and friends have been renamed 180 to kproc_create() etc. Many of the callers already 181 used kproc_start().. 182 I will return kthread_create() and friends in a while 183 with implementations that actually create threads, not procs. 184 Renaming corresponds with version 800002. 185 18620071010: 187 RELENG_7 branched. 188 18920071009: 190 Setting WITHOUT_LIBPTHREAD now means WITHOUT_LIBKSE and 191 WITHOUT_LIBTHR are set. 192 19320070930: 194 The PCI code has been made aware of PCI domains. This means that 195 the location strings as used by pciconf(8) etc are now in the 196 following format: pci<domain>:<bus>:<device>[:<function>]. It 197 also means that consumers of <sys/pciio.h> potentially need to 198 be recompiled; this includes the hal and xorg-server ports. 199 20020070928: 201 The caching daemon (cached) was renamed to nscd. nscd.conf 202 configuration file should be used instead of cached.conf and 203 nscd_enable, nscd_pidfile and nscd_flags options should be used 204 instead of cached_enable, cached_pidfile and cached_flags in 205 rc.conf. 206 20720070921: 208 The getfacl(1) utility now prints owning user and group name 209 instead of owning uid and gid in the three line comment header. 210 This is the same behavior as getfacl(1) on Solaris and Linux. 211 21220070704: 213 The new IPsec code is now compiled in using the IPSEC option. The 214 IPSEC option now requires "device crypto" be defined in your kernel 215 configuration. The FAST_IPSEC kernel option is now deprecated. 216 21720070702: 218 The packet filter (pf) code has been updated to OpenBSD 4.1 Please 219 note the changed syntax - keep state is now on by default. Also 220 note the fact that ftp-proxy(8) has been changed from bottom up and 221 has been moved from libexec to usr/sbin. Changes in the ALTQ 222 handling also affect users of IPFW's ALTQ capabilities. 223 22420070701: 225 Remove KAME IPsec in favor of FAST_IPSEC, which is now the 226 only IPsec supported by FreeBSD. The new IPsec stack 227 supports both IPv4 and IPv6. The kernel option will change 228 after the code changes have settled in. For now the kernel 229 option IPSEC is deprecated and FAST_IPSEC is the only option, that 230 will change after some settling time. 231 23220070701: 233 The wicontrol(8) utility has been removed from the base system. wi(4) 234 cards should be configured using ifconfig(8), see the man page for more 235 information. 236 23720070612: 238 The i386/amd64 GENERIC kernel now defaults to the nfe(4) driver 239 instead of the nve(4) driver. Please update your configuration 240 accordingly. 241 24220070612: 243 By default, /etc/rc.d/sendmail no longer rebuilds the aliases 244 database if it is missing or older than the aliases file. If 245 desired, set the new rc.conf option sendmail_rebuild_aliases 246 to "YES" to restore that functionality. 247 24820070612: 249 The IPv4 multicast socket code has been considerably modified, and 250 moved to the file sys/netinet/in_mcast.c. Initial support for the 251 RFC 3678 Source-Specific Multicast Socket API has been added to 252 the IPv4 network stack. 253 254 Strict multicast and broadcast reception is now the default for 255 UDP/IPv4 sockets; the net.inet.udp.strict_mcast_mship sysctl variable 256 has now been removed. 257 258 The RFC 1724 hack for interface selection has been removed; the use 259 of the Linux-derived ip_mreqn structure with IP_MULTICAST_IF has 260 been added to replace it. Consumers such as routed will soon be 261 updated to reflect this. 262 263 These changes affect users who are running routed(8) or rdisc(8) 264 from the FreeBSD base system on point-to-point or unnumbered 265 interfaces. 266 26720070610: 268 The net80211 layer has changed significantly and all wireless 269 drivers that depend on it need to be recompiled. Further these 270 changes require that any program that interacts with the wireless 271 support in the kernel be recompiled; this includes: ifconfig, 272 wpa_supplicant, hostapd, and wlanstats. Users must also, for 273 the moment, kldload the wlan_scan_sta and/or wlan_scan_ap modules 274 if they use modules for wireless support. These modules implement 275 scanning support for station and ap modes, respectively. Failure 276 to load the appropriate module before marking a wireless interface 277 up will result in a message to the console and the device not 278 operating properly. 279 28020070610: 281 The pam_nologin(8) module ceases to provide an authentication 282 function and starts providing an account management function. 283 Consequent changes to /etc/pam.d should be brought in using 284 mergemaster(8). Third-party files in /usr/local/etc/pam.d may 285 need manual editing as follows. Locate this line (or similar): 286 287 auth required pam_nologin.so no_warn 288 289 and change it according to this example: 290 291 account required pam_nologin.so no_warn 292 293 That is, the first word needs to be changed from "auth" to 294 "account". The new line can be moved to the account section 295 within the file for clarity. Not updating pam.conf(5) files 296 will result in nologin(5) ignored by the respective services. 297 29820070529: 299 The ether_ioctl() function has been synchronized with ioctl(2) 300 and ifnet.if_ioctl. Due to that, the size of one of its arguments 301 has changed on 64-bit architectures. All kernel modules using 302 ether_ioctl() need to be rebuilt on such architectures. 303 30420070516: 305 Improved INCLUDE_CONFIG_FILE support has been introduced to the 306 config(8) utility. In order to take advantage of this new 307 functionality, you are expected to recompile and install 308 src/usr.sbin/config. If you don't rebuild config(8), and your 309 kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel 310 build will be broken because of a missing "kernconfstring" 311 symbol. 312 31320070513: 314 Symbol versioning is enabled by default. To disable it, use 315 option WITHOUT_SYMVER. It is not advisable to attempt to 316 disable symbol versioning once it is enabled; your installworld 317 will break because a symbol version-less libc will get installed 318 before the install tools. As a result, the old install tools, 319 which previously had symbol dependencies to FBSD_1.0, will fail 320 because the freshly installed libc will not have them. 321 322 The default threading library (providing "libpthread") has been 323 changed to libthr. If you wish to have libkse as your default, 324 use option DEFAULT_THREAD_LIB=libkse for the buildworld. 325 32620070423: 327 The ABI breakage in sendmail(8)'s libmilter has been repaired 328 so it is no longer necessary to recompile mail filters (aka, 329 milters). If you recompiled mail filters after the 20070408 330 note, it is not necessary to recompile them again. 331 33220070417: 333 The new trunk(4) driver has been renamed to lagg(4) as it better 334 reflects its purpose. ifconfig will need to be recompiled. 335 33620070408: 337 sendmail(8) has been updated to version 8.14.1. Mail filters 338 (aka, milters) compiled against the libmilter included in the 339 base operating system should be recompiled. 340 34120070302: 342 Firmwares for ipw(4) and iwi(4) are now included in the base tree. 343 In order to use them one must agree to the respective LICENSE in 344 share/doc/legal and define legal.intel_<name>.license_ack=1 via 345 loader.conf(5) or kenv(1). Make sure to deinstall the now 346 deprecated modules from the respective firmware ports. 347 34820070228: 349 The name resolution/mapping functions addr2ascii(3) and ascii2addr(3) 350 were removed from FreeBSD's libc. These originally came from INRIA 351 IPv6. Nothing in FreeBSD ever used them. They may be regarded as 352 deprecated in previous releases. 353 The AF_LINK support for getnameinfo(3) was merged from NetBSD to 354 replace it as a more portable (and re-entrant) API. 355 35620070224: 357 To support interrupt filtering a modification to the newbus API 358 has occurred, ABI was broken and __FreeBSD_version was bumped 359 to 700031. Please make sure that your kernel and modules are in 360 sync. For more info: 361 http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941 362 36320070224: 364 The IPv6 multicast forwarding code may now be loaded into GENERIC 365 kernels by loading the ip_mroute.ko module. This is built into the 366 module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are 367 set; see src.conf(5) for more information. 368 36920070214: 370 The output of netstat -r has changed. Without -n, we now only 371 print a "network name" without the prefix length if the network 372 address and mask exactly match a Class A/B/C network, and an entry 373 exists in the nsswitch "networks" map. 374 With -n, we print the full unabbreviated CIDR network prefix in 375 the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default". 376 This change is in preparation for changes such as equal-cost 377 multipath, and to more generally assist operational deployment 378 of FreeBSD as a modern IPv4 router. 379 38020070210: 381 PIM has been turned on by default in the IPv4 multicast 382 routing code. The kernel option 'PIM' has now been removed. 383 PIM is now built by default if option 'MROUTING' is specified. 384 It may now be loaded into GENERIC kernels by loading the 385 ip_mroute.ko module. 386 38720070207: 388 Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing 389 has been removed. Its functionality may be achieved by explicitly 390 configuring gif(4) interfaces and using the 'phyint' keyword in 391 mrouted.conf. 392 XORP does not support source-routed IPv4 multicast tunnels nor the 393 integrated IPIP tunneling, therefore it is not affected by this 394 change. The __FreeBSD_version macro has been bumped to 700030. 395 39620061221: 397 Support for PCI Message Signalled Interrupts has been 398 re-enabled in the bge driver, only for those chips which are 399 believed to support it properly. If there are any problems, 400 MSI can be disabled completely by setting the 401 'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0 402 in the loader. 403 40420061214: 405 Support for PCI Message Signalled Interrupts has been 406 disabled again in the bge driver. Many revisions of the 407 hardware fail to support it properly. Support can be 408 re-enabled by removing the #define of BGE_DISABLE_MSI in 409 "src/sys/dev/bge/if_bge.c". 410 41120061214: 412 Support for PCI Message Signalled Interrupts has been added 413 to the bge driver. If there are any problems, MSI can be 414 disabled completely by setting the 'hw.pci.enable_msi' and 415 'hw.pci.enable_msix' tunables to 0 in the loader. 416 41720061205: 418 The removal of several facets of the experimental Threading 419 system from the kernel means that the proc and thread structures 420 have changed quite a bit. I suggest all kernel modules that might 421 reference these structures be recompiled.. Especially the 422 linux module. 423 42420061126: 425 Sound infrastructure has been updated with various fixes and 426 improvements. Most of the changes are pretty much transparent, 427 with exceptions of followings: 428 1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been 429 moved to their own dev sysctl nodes, for example: 430 hw.snd.pcm0.vchans -> dev.pcm.0.vchans 431 2) /dev/dspr%d.%d has been deprecated. Each channel now has its 432 own chardev in the form of "dsp%d.<function>%d", where <function> 433 is p = playback, r = record and v = virtual, respectively. Users 434 are encouraged to use these devs instead of (old) "/dev/dsp%d.%d". 435 This does not affect those who are using "/dev/dsp". 436 43720061122: 438 geom(4)'s gmirror(8) class metadata structure has been 439 rev'd from v3 to v4. If you update across this point and 440 your metadata is converted for you, you will not be easily 441 able to downgrade since the /boot/kernel.old/geom_mirror.ko 442 kernel module will be unable to read the v4 metadata. You 443 can resolve this by doing from the loader(8) prompt: 444 445 set vfs.root.mountfrom="ufs:/dev/XXX" 446 447 where XXX is the root slice of one of the disks that composed 448 the mirror (i.e.: /dev/ad0s1a). You can then rebuild 449 the array the same way you built it originally. 450 45120061122: 452 The following binaries have been disconnected from the build: 453 mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs, 454 and mount_std. The functionality of these programs has been 455 moved into the mount program. For example, to mount a devfs 456 filesystem, instead of using mount_devfs, use: "mount -t devfs". 457 This does not affect entries in /etc/fstab, since entries in 458 /etc/fstab are always processed with "mount -t fstype". 459 46020061113: 461 Support for PCI Message Signalled Interrupts on i386 and amd64 462 has been added to the kernel and various drivers will soon be 463 updated to use MSI when it is available. If there are any problems, 464 MSI can be disabled completely by setting the 'hw.pci.enable_msi' 465 and 'hw.pci.enable_msix' tunables to 0 in the loader. 466 46720061110: 468 The MUTEX_PROFILING option has been renamed to LOCK_PROFILING. 469 The lockmgr object layout has been changed as a result of having 470 a lock_object embedded in it. As a consequence all file system 471 kernel modules must be re-compiled. The mutex profiling man page 472 has not yet been updated to reflect this change. 473 47420061026: 475 KSE in the kernel has now been made optional and turned on by 476 default. Use 'nooption KSE' in your kernel config to turn it 477 off. All kernel modules *must* be recompiled after this change. 478 There-after, modules from a KSE kernel should be compatible with 479 modules from a NOKSE kernel due to the temporary padding fields 480 added to 'struct proc'. 481 48220060929: 483 mrouted and its utilities have been removed from the base system. 484 48520060927: 486 Some ioctl(2) command codes have changed. Full backward ABI 487 compatibility is provided if the "options COMPAT_FREEBSD6" is 488 present in the kernel configuration file. Make sure to add 489 this option to your kernel config file, or recompile X.Org 490 and the rest of ports; otherwise they may refuse to work. 491 49220060924: 493 tcpslice has been removed from the base system. 494 49520060913: 496 The sizes of struct tcpcb (and struct xtcpcb) have changed due to 497 the rewrite of TCP syncookies. Tools like netstat, sockstat, and 498 systat needs to be rebuilt. 499 50020060903: 501 libpcap updated to v0.9.4 and tcpdump to v3.9.4 502 50320060816: 504 The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour 505 for IPFIREWALL_FORWARD is now as it was before when it was first 506 committed and for years after. The behaviour is now ON. 507 50820060725: 509 enigma(1)/crypt(1) utility has been changed on 64 bit architectures. 510 Now it can decrypt files created from different architectures. 511 Unfortunately, it is no longer able to decrypt a cipher text 512 generated with an older version on 64 bit architectures. 513 If you have such a file, you need old utility to decrypt it. 514 51520060709: 516 The interface version of the i4b kernel part has changed. So 517 after updating the kernel sources and compiling a new kernel, 518 the i4b user space tools in "/usr/src/usr.sbin/i4b" must also 519 be rebuilt, and vice versa. 520 52120060627: 522 The XBOX kernel now defaults to the nfe(4) driver instead of 523 the nve(4) driver. Please update your configuration 524 accordingly. 525 52620060514: 527 The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx 528 PCnet family of NICs has been removed. The new le(4) driver serves 529 as an equivalent but cross-platform replacement with the pcn(4) 530 driver still providing performance-optimized support for the subset 531 of AMD Am79C971 PCnet-FAST and greater chips as before. 532 53320060511: 534 The machdep.* sysctls and the adjkerntz utility have been 535 modified a bit. The new adjkerntz utility uses the new 536 sysctl names and sysctlbyname() calls, so it may be impossible 537 to run an old /sbin/adjkerntz utility in single-user mode 538 with a new kernel. Replace the `adjkerntz -i' step before 539 `make installworld' with: 540 541 /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i 542 543 and proceed as usual with the rest of the installworld-stage 544 steps. Otherwise, you risk installing binaries with their 545 timestamp set several hours in the future, especially if 546 you are running with local time set to GMT+X hours. 547 54820060412: 549 The ip6fw utility has been removed. The behavior provided by 550 ip6fw has been in ipfw2 for a good while and the rc.d scripts 551 have been updated to deal with it. There are some rules that 552 might not migrate cleanly. Use rc.firewall6 as a template to 553 rewrite rules. 554 55520060428: 556 The puc(4) driver has been overhauled. The ebus(4) and sbus(4) 557 attachments have been removed. Make sure to configure scc(4) 558 on sparc64. Note also that by default puc(4) will use uart(4) 559 and not sio(4) for serial ports because interrupt handling has 560 been optimized for multi-port serial cards and only uart(4) 561 implements the interface to support it. 562 56320060330: 564 The scc(4) driver replaces puc(4) for Serial Communications 565 Controllers (SCCs) like the Siemens SAB82532 and the Zilog 566 Z8530. On sparc64, it is advised to add scc(4) to the kernel 567 configuration to make sure that the serial ports remain 568 functional. 569 57020060317: 571 Most world/kernel related NO_* build options changed names. 572 New knobs have common prefixes WITHOUT_*/WITH_* (modelled 573 after FreeBSD ports) and should be set in /etc/src.conf 574 (the src.conf(5) manpage is provided). Full backwards 575 compatibility is maintained for the time being though it's 576 highly recommended to start moving old options out of the 577 system-wide /etc/make.conf file into the new /etc/src.conf 578 while also properly renaming them. More conversions will 579 likely follow. Posting to current@: 580 581 http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html 582 58320060305: 584 The NETSMBCRYPTO kernel option has been retired because its 585 functionality is always included in NETSMB and smbfs.ko now. 586 58720060303: 588 The TDFX_LINUX kernel option was retired and replaced by the 589 tdfx_linux device. The latter can be loaded as the 3dfx_linux.ko 590 kernel module. Loading it alone should suffice to get 3dfx support 591 for Linux apps because it will pull in 3dfx.ko and linux.ko through 592 its dependencies. 593 59420060204: 595 The 'audit' group was added to support the new auditing functionality 596 in the base system. Be sure to follow the directions for updating, 597 including the requirement to run mergemaster -p. 598 59920060201: 600 The kernel ABI to file system modules was changed on i386. 601 Please make sure that your kernel and modules are in sync. 602 60320060118: 604 This actually occured some time ago, but installing the kernel 605 now also installs a bunch of symbol files for the kernel modules. 606 This increases the size of /boot/kernel to about 67Mbytes. You 607 will need twice this if you will eventually back this up to kernel.old 608 on your next install. 609 If you have a shortage of room in your root partition, you should add 610 -DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes" 611 to your /etc/make.conf. 612 61320060113: 614 libc's malloc implementation has been replaced. This change has the 615 potential to uncover application bugs that previously went unnoticed. 616 See the malloc(3) manual page for more details. 617 61820060112: 619 The generic netgraph(4) cookie has been changed. If you upgrade 620 kernel passing this point, you also need to upgrade userland 621 and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4. 622 62320060106: 624 si(4)'s device files now contain the unit number. 625 Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f]. 626 62720060106: 628 The kernel ABI was mostly destroyed due to a change in the size 629 of struct lock_object which is nested in other structures such 630 as mutexes which are nested in all sorts of other structures. 631 Make sure your kernel and modules are in sync. 632 63320051231: 634 The page coloring algorithm in the VM subsystem was converted 635 from tuning with kernel options to autotuning. Please remove 636 any PQ_* option except PQ_NOOPT from your kernel config. 637 63820051211: 639 The net80211-related tools in the tools/tools/ath directory 640 have been moved to tools/tools/net80211 and renamed with a 641 "wlan" prefix. Scripts that use them should be adjusted 642 accordingly. 643 64420051202: 645 Scripts in the local_startup directories (as defined in 646 /etc/defaults/rc.conf) that have the new rc.d semantics will 647 now be run as part of the base system rcorder. If there are 648 errors or problems with one of these local scripts, it could 649 cause boot problems. If you encounter such problems, boot in 650 single user mode, remove that script from the */rc.d directory. 651 Please report the problem to the port's maintainer, and the 652 freebsd-ports@freebsd.org mailing list. 653 65420051129: 655 The nodev mount option was deprecated in RELENG_6 (where it 656 was a no-op), and is now unsupported. If you have nodev or dev listed 657 in /etc/fstab, remove it, otherwise it will result in a mount error. 658 65920051129: 660 ABI between ipfw(4) and ipfw(8) has been changed. You need 661 to rebuild ipfw(8) when rebuilding kernel. 662 66320051108: 664 rp(4)'s device files now contain the unit number. 665 Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f]. 666 66720051029: 668 /etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp. 669 Its /etc/rc.conf.d configuration file has been `ppp' from 670 the beginning, and hence there is no need to touch it. 671 67220051014: 673 Now most modules get their build-time options from the kernel 674 configuration file. A few modules still have fixed options 675 due to their non-conformant implementation, but they will be 676 corrected eventually. You may need to review the options of 677 the modules in use, explicitly specify the non-default options 678 in the kernel configuration file, and rebuild the kernel and 679 modules afterwards. 680 68120051001: 682 kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8) 683 to turn polling(4) on your interfaces. 684 68520050927: 686 The old bridge(4) implementation was retired. The new 687 if_bridge(4) serves as a full functional replacement. 688 68920050722: 690 The ai_addrlen of a struct addrinfo was changed to a socklen_t 691 to conform to POSIX-2001. This change broke an ABI 692 compatibility on 64 bit architecture. You have to recompile 693 userland programs that use getaddrinfo(3) on 64 bit 694 architecture. 695 69620050711: 697 RELENG_6 branched here. 698 69920050629: 700 The pccard_ifconfig rc.conf variable has been removed and a new 701 variable, ifconfig_DEFAULT has been introduced. Unlike 702 pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that 703 do not have ifconfig_ifn entries rather than just those in 704 removable_interfaces. 705 70620050616: 707 Some previous versions of PAM have permitted the use of 708 non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring 709 to third party PAM modules in /usr/local/lib. A change has been 710 made to require the use of absolute paths in order to avoid 711 ambiguity and dependence on library path configuration, which may 712 affect existing configurations. 713 71420050610: 715 Major changes to network interface API. All drivers must be 716 recompiled. Drivers not in the base system will need to be 717 updated to the new APIs. 718 71920050609: 720 Changes were made to kinfo_proc in sys/user.h. Please recompile 721 userland, or commands like `fstat', `pkill', `ps', `top' and `w' 722 will not behave correctly. 723 724 The API and ABI for hwpmc(4) have changed with the addition 725 of sampling support. Please recompile lib/libpmc(3) and 726 usr.sbin/{pmcstat,pmccontrol}. 727 72820050606: 729 The OpenBSD dhclient was imported in place of the ISC dhclient 730 and the network interface configuration scripts were updated 731 accordingly. If you use DHCP to configure your interfaces, you 732 must now run devd. Also, DNS updating was lost so you will need 733 to find a workaround if you use this feature. 734 735 The '_dhcp' user was added to support the OpenBSD dhclient. Be 736 sure to run mergemaster -p (like you are supposed to do every time 737 anyway). 738 73920050605: 740 if_bridge was added to the tree. This has changed struct ifnet. 741 Please recompile userland and all network related modules. 742 74320050603: 744 The n_net of a struct netent was changed to an uint32_t, and 745 1st argument of getnetbyaddr() was changed to an uint32_t, to 746 conform to POSIX-2001. These changes broke an ABI 747 compatibility on 64 bit architecture. With these changes, 748 shlib major of libpcap was bumped. You have to recompile 749 userland programs that use getnetbyaddr(3), getnetbyname(3), 750 getnetent(3) and/or libpcap on 64 bit architecture. 751 75220050528: 753 Kernel parsing of extra options on '#!' first lines of shell 754 scripts has changed. Lines with multiple options likely will 755 fail after this date. For full details, please see 756 http://people.freebsd.org/~gad/Updating-20050528.txt 757 75820050503: 759 The packet filter (pf) code has been updated to OpenBSD 3.7 760 Please note the changed anchor syntax and the fact that 761 authpf(8) now needs a mounted fdescfs(5) to function. 762 76320050415: 764 The NO_MIXED_MODE kernel option has been removed from the i386 765 amd64 platforms as its use has been superceded by the new local 766 APIC timer code. Any kernel config files containing this option 767 should be updated. 768 76920050227: 770 The on-disk format of LC_CTYPE files was changed to be machine 771 independent. Please make sure NOT to use NO_CLEAN buildworld 772 when crossing this point. Crossing this point also requires 773 recompile or reinstall of all locale depended packages. 774 77520050225: 776 The ifi_epoch member of struct if_data has been changed to 777 contain the uptime at which the interface was created or the 778 statistics zeroed rather then the wall clock time because 779 wallclock time may go backwards. This should have no impact 780 unless an snmp implementation is using this value (I know of 781 none at this point.) 782 78320050224: 784 The acpi_perf and acpi_throttle drivers are now part of the 785 acpi(4) main module. They are no longer built separately. 786 78720050223: 788 The layout of struct image_params has changed. You have to 789 recompile all compatibility modules (linux, svr4, etc) for use 790 with the new kernel. 791 79220050223: 793 The p4tcc driver has been merged into cpufreq(4). This makes 794 "options CPU_ENABLE_TCC" obsolete. Please load cpufreq.ko or 795 compile in "device cpufreq" to restore this functionality. 796 79720050220: 798 The responsibility of recomputing the file system summary of 799 a SoftUpdates-enabled dirty volume has been transferred to the 800 background fsck. A rebuild of fsck(8) utility is recommended 801 if you have updated the kernel. 802 803 To get the old behavior (recompute file system summary at mount 804 time), you can set vfs.ffs.compute_summary_at_mount=1 before 805 mounting the new volume. 806 80720050206: 808 The cpufreq import is complete. As part of this, the sysctls for 809 acpi(4) throttling have been removed. The power_profile script 810 has been updated, so you can use performance/economy_cpu_freq in 811 rc.conf(5) to set AC on/offline cpu frequencies. 812 81320050206: 814 NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko) 815 requires recompiling libnetgraph and userland netgraph utilities. 816 81720050114: 818 Support for abbreviated forms of a number of ipfw options is 819 now deprecated. Warnings are printed to stderr indicating the 820 correct full form when a match occurs. Some abbreviations may 821 be supported at a later date based on user feedback. To be 822 considered for support, abbreviations must be in use prior to 823 this commit and unlikely to be confused with current key words. 824 82520041221: 826 By a popular demand, a lot of NOFOO options were renamed 827 to NO_FOO (see bsd.compat.mk for a full list). The old 828 spellings are still supported, but will cause annoying 829 warnings on stderr. Make sure you upgrade properly (see 830 the COMMON ITEMS: section later in this file). 831 83220041219: 833 Auto-loading of ancillary wlan modules such as wlan_wep has 834 been temporarily disabled; you need to statically configure 835 the modules you need into your kernel or explicitly load them 836 prior to use. Specifically, if you intend to use WEP encryption 837 with an 802.11 device load/configure wlan_wep; if you want to 838 use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp, 839 and wlan_xauth as required. 840 84120041213: 842 The behaviour of ppp(8) has changed slightly. If lqr is enabled 843 (``enable lqr''), older versions would revert to LCP ECHO mode on 844 negotiation failure. Now, ``enable echo'' is required for this 845 behaviour. The ppp version number has been bumped to 3.4.2 to 846 reflect the change. 847 84820041201: 849 The wlan support has been updated to split the crypto support 850 into separate modules. For static WEP you must configure the 851 wlan_wep module in your system or build and install the module 852 in place where it can be loaded (the kernel will auto-load 853 the module when a wep key is configured). 854 85520041201: 856 The ath driver has been updated to split the tx rate control 857 algorithm into a separate module. You need to include either 858 ath_rate_onoe or ath_rate_amrr when configuring the kernel. 859 86020041116: 861 Support for systems with an 80386 CPU has been removed. Please 862 use FreeBSD 5.x or earlier on systems with an 80386. 863 86420041110: 865 We have had a hack which would mount the root filesystem 866 R/W if the device were named 'md*'. As part of the vnode 867 work I'm doing I have had to remove this hack. People 868 building systems which use preloaded MD root filesystems 869 may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in 870 their /etc/rc scripts. 871 87220041104: 873 FreeBSD 5.3 shipped here. 874 87520041102: 876 The size of struct tcpcb has changed again due to the removal 877 of RFC1644 T/TCP. You have to recompile userland programs that 878 read kmem for tcp sockets directly (netstat, sockstat, etc.) 879 88020041022: 881 The size of struct tcpcb has changed. You have to recompile 882 userland programs that read kmem for tcp sockets directly 883 (netstat, sockstat, etc.) 884 88520041016: 886 RELENG_5 branched here. For older entries, please see updating 887 in the RELENG_5 branch. 888 889COMMON ITEMS: 890 891 General Notes 892 ------------- 893 Avoid using make -j when upgrading. From time to time in the 894 past there have been problems using -j with buildworld and/or 895 installworld. This is especially true when upgrading between 896 "distant" versions (eg one that cross a major release boundary 897 or several minor releases, or when several months have passed 898 on the -current branch). 899 900 Sometimes, obscure build problems are the result of environment 901 poisoning. This can happen because the make utility reads its 902 environment when searching for values for global variables. 903 To run your build attempts in an "environmental clean room", 904 prefix all make commands with 'env -i '. See the env(1) manual 905 page for more details. 906 907 When upgrading from one major version to another it is generally 908 best to upgrade to the latest code in the currently installed branch 909 first, then do an upgrade to the new branch. This is the best-tested 910 upgrade path, and has the highest probability of being successful. 911 Please try this approach before reporting problems with a major 912 version upgrade. 913 914 To build a kernel 915 ----------------- 916 If you are updating from a prior version of FreeBSD (even one just 917 a few days old), you should follow this procedure. It is the most 918 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 919 920 make kernel-toolchain 921 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 922 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 923 924 To test a kernel once 925 --------------------- 926 If you just want to boot a kernel once (because you are not sure 927 if it works, or if you want to boot a known bad kernel to provide 928 debugging information) run 929 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 930 nextboot -k testkernel 931 932 To just build a kernel when you know that it won't mess you up 933 -------------------------------------------------------------- 934 This assumes you are already running a 5.X system. Replace 935 ${arch} with the architecture of your machine (e.g. "i386", 936 "alpha", "amd64", "ia64", "pc98", "sparc64", etc). 937 938 cd src/sys/${arch}/conf 939 config KERNEL_NAME_HERE 940 cd ../compile/KERNEL_NAME_HERE 941 make depend 942 make 943 make install 944 945 If this fails, go to the "To build a kernel" section. 946 947 To rebuild everything and install it on the current system. 948 ----------------------------------------------------------- 949 # Note: sometimes if you are running current you gotta do more than 950 # is listed here if you are upgrading from a really old current. 951 952 <make sure you have good level 0 dumps> 953 make buildworld 954 make kernel KERNCONF=YOUR_KERNEL_HERE 955 [1] 956 <reboot in single user> [3] 957 mergemaster -p [5] 958 make installworld 959 make delete-old 960 mergemaster [4] 961 <reboot> 962 963 964 To cross-install current onto a separate partition 965 -------------------------------------------------- 966 # In this approach we use a separate partition to hold 967 # current's root, 'usr', and 'var' directories. A partition 968 # holding "/", "/usr" and "/var" should be about 2GB in 969 # size. 970 971 <make sure you have good level 0 dumps> 972 <boot into -stable> 973 make buildworld 974 make buildkernel KERNCONF=YOUR_KERNEL_HERE 975 <maybe newfs current's root partition> 976 <mount current's root partition on directory ${CURRENT_ROOT}> 977 make installworld DESTDIR=${CURRENT_ROOT} 978 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 979 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 980 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 981 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 982 <reboot into current> 983 <do a "native" rebuild/install as described in the previous section> 984 <maybe install compatibility libraries from src/lib/compat> 985 <reboot> 986 987 988 To upgrade in-place from 5.x-stable to current 989 ---------------------------------------------- 990 <make sure you have good level 0 dumps> 991 make buildworld [9] 992 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 993 [1] 994 <reboot in single user> [3] 995 mergemaster -p [5] 996 make installworld 997 make delete-old 998 mergemaster -i [4] 999 <reboot> 1000 1001 Make sure that you've read the UPDATING file to understand the 1002 tweaks to various things you need. At this point in the life 1003 cycle of current, things change often and you are on your own 1004 to cope. The defaults can also change, so please read ALL of 1005 the UPDATING entries. 1006 1007 Also, if you are tracking -current, you must be subscribed to 1008 freebsd-current@freebsd.org. Make sure that before you update 1009 your sources that you have read and understood all the recent 1010 messages there. If in doubt, please track -stable which has 1011 much fewer pitfalls. 1012 1013 [1] If you have third party modules, such as vmware, you 1014 should disable them at this point so they don't crash your 1015 system on reboot. 1016 1017 [3] From the bootblocks, boot -s, and then do 1018 fsck -p 1019 mount -u / 1020 mount -a 1021 cd src 1022 adjkerntz -i # if CMOS is wall time 1023 Also, when doing a major release upgrade, it is required that 1024 you boot into single user mode to do the installworld. 1025 1026 [4] Note: This step is non-optional. Failure to do this step 1027 can result in a significant reduction in the functionality of the 1028 system. Attempting to do it by hand is not recommended and those 1029 that pursue this avenue should read this file carefully, as well 1030 as the archives of freebsd-current and freebsd-hackers mailing lists 1031 for potential gotchas. 1032 1033 [5] Usually this step is a noop. However, from time to time 1034 you may need to do this if you get unknown user in the following 1035 step. It never hurts to do it all the time. You may need to 1036 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1037 install) after the buildworld before this step if you last updated 1038 from current before 20020224 or from -stable before 20020408. 1039 1040 [8] In order to have a kernel that can run the 4.x binaries 1041 needed to do an installworld, you must include the COMPAT_FREEBSD4 1042 option in your kernel. Failure to do so may leave you with a system 1043 that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 1044 is required to run the 5.x binaries on more recent kernels. 1045 1046 Make sure that you merge any new devices from GENERIC since the 1047 last time you updated your kernel config file. 1048 1049 [9] When checking out sources, you must include the -P flag to have 1050 cvs prune empty directories. 1051 1052 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1053 "?=" instead of the "=" assignment operator, so that buildworld can 1054 override the CPUTYPE if it needs to. 1055 1056 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1057 not on the command line, or in /etc/make.conf. buildworld will 1058 warn if it is improperly defined. 1059FORMAT: 1060 1061This file contains a list, in reverse chronological order, of major 1062breakages in tracking -current. Not all things will be listed here, 1063and it only starts on October 16, 2004. Updating files can found in 1064previous releases if your system is older than this. 1065 1066Copyright information: 1067 1068Copyright 1998-2005 M. Warner Losh. All Rights Reserved. 1069 1070Redistribution, publication, translation and use, with or without 1071modification, in full or in part, in any form or format of this 1072document are permitted without further permission from the author. 1073 1074THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1075IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1076WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1077DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1078INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1079(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1080SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1081HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1082STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1083IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1084POSSIBILITY OF SUCH DAMAGE. 1085 1086If you find this document useful, and you want to, you may buy the 1087author a beer. 1088 1089Contact Warner Losh if you have any questions about your use of 1090this document. 1091 1092$FreeBSD: head/UPDATING 181827 2008-08-18 10:38:16Z ed $ 1093