UPDATING revision 170510
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 7.x IS SLOW: 12 FreeBSD 7.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. 23 2420070610: 25 The pam_nologin(8) module ceases to provide an authentication 26 function and starts providing an account management function. 27 Consequent changes to /etc/pam.d should be brought in using 28 mergemaster(8). Third-party files in /usr/local/etc/pam.d may 29 need manual editing as follows. Locate this line (or similar): 30 31 auth required pam_nologin.so no_warn 32 33 and change it according to this example: 34 35 account required pam_nologin.so no_warn 36 37 That is, the first word needs to be changed from "auth" to 38 "account". The new line can be moved to the account section 39 within the file for clarity. Not updating pam.conf(5) files 40 will result in nologin(5) ignored by the respective services. 41 4220070529: 43 The ether_ioctl() function has been synchronized with ioctl(2) 44 and ifnet.if_ioctl. Due to that, the size of one of its arguments 45 has changed on 64-bit architectures. All kernel modules using 46 ether_ioctl() need to be rebuilt on such architectures. 47 4820070516: 49 Improved INCLUDE_CONFIG_FILE support has been introduced to the 50 config(8) utility. In order to take advantage of this new 51 functionality, you are expected to recompile and install 52 src/usr.sbin/config. If you don't rebuild config(8), and your 53 kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel 54 build will be broken because of a missing "kernconfstring" 55 symbol. 56 5720070513: 58 Symbol versioning is enabled by default. To disable it, use 59 option WITHOUT_SYMVER. It is not advisable to attempt to 60 disable symbol versioning once it is enabled; your installworld 61 will break because a symbol version-less libc will get installed 62 before the install tools. As a result, the old install tools, 63 which previously had symbol dependencies to FBSD_1.0, will fail 64 because the freshly installed libc will not have them. 65 66 The default threading library has been changed to libthr. If 67 you wish to have libpthread as your default, use option 68 DEFAULT_THREAD_LIB=libpthread for the buildworld. 69 7020070423: 71 The ABI breakage in sendmail(8)'s libmilter has been repaired 72 so it is no longer necessary to recompile mail filters (aka, 73 milters). If you recompiled mail filters after the 20070408 74 note, it is not necessary to recompile them again. 75 7620070417: 77 The new trunk(4) driver has been renamed to lagg(4) as it better 78 reflects its purpose. ifconfig will need to be recompiled. 79 8020070408: 81 sendmail(8) has been updated to version 8.14.1. Mail filters 82 (aka, milters) compiled against the libmilter included in the 83 base operating system should be recompiled. 84 8520070302: 86 Firmwares for ipw(4) and iwi(4) are now included in the base tree. 87 In order to use them one must agree to the respective LICENSE in 88 share/doc/legal and define legal.intel_<name>.license_ack=1 via 89 loader.conf(5) or kenv(1). Make sure to deinstall the now 90 deprecated modules from the respective firmware ports. 91 9220070228: 93 The name resolution/mapping functions addr2ascii(3) and ascii2addr(3) 94 were removed from FreeBSD's libc. These originally came from INRIA 95 IPv6. Nothing in FreeBSD ever used them. They may be regarded as 96 deprecated in previous releases. 97 The AF_LINK support for getnameinfo(3) was merged from NetBSD to 98 replace it as a more portable (and re-entrant) API. 99 10020070224: 101 To support interrupt filtering a modification to the newbus API 102 has occurred, ABI was broken and __FreeBSD_version was bumped 103 to 700031. Please make sure that your kernel and modules are in 104 sync. For more info: 105 http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941 106 10720070224: 108 The IPv6 multicast forwarding code may now be loaded into GENERIC 109 kernels by loading the ip_mroute.ko module. This is built into the 110 module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are 111 set; see src.conf(5) for more information. 112 11320070214: 114 The output of netstat -r has changed. Without -n, we now only 115 print a "network name" without the prefix length if the network 116 address and mask exactly match a Class A/B/C network, and an entry 117 exists in the nsswitch "networks" map. 118 With -n, we print the full unabbreviated CIDR network prefix in 119 the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default". 120 This change is in preparation for changes such as equal-cost 121 multipath, and to more generally assist operational deployment 122 of FreeBSD as a modern IPv4 router. 123 12420070210: 125 PIM has been turned on by default in the IPv4 multicast 126 routing code. The kernel option 'PIM' has now been removed. 127 PIM is now built by default if option 'MROUTING' is specified. 128 It may now be loaded into GENERIC kernels by loading the 129 ip_mroute.ko module. 130 13120070207: 132 Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing 133 has been removed. Its functionality may be achieved by explicitly 134 configuring gif(4) interfaces and using the 'phyint' keyword in 135 mrouted.conf. 136 XORP does not support source-routed IPv4 multicast tunnels nor the 137 integrated IPIP tunneling, therefore it is not affected by this 138 change. The __FreeBSD_version macro has been bumped to 700030. 139 14020061221: 141 Support for PCI Message Signalled Interrupts has been 142 re-enabled in the bge driver, only for those chips which are 143 believed to support it properly. If there are any problems, 144 MSI can be disabled completely by setting the 145 'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0 146 in the loader. 147 14820061214: 149 Support for PCI Message Signalled Interrupts has been 150 disabled again in the bge driver. Many revisions of the 151 hardware fail to support it properly. Support can be 152 re-enabled by removing the #define of BGE_DISABLE_MSI in 153 "src/sys/dev/bge/if_bge.c". 154 15520061214: 156 Support for PCI Message Signalled Interrupts has been added 157 to the bge driver. If there are any problems, MSI can be 158 disabled completely by setting the 'hw.pci.enable_msi' and 159 'hw.pci.enable_msix' tunables to 0 in the loader. 160 16120061205: 162 The removal of several facets of the experimental Threading 163 system from the kernel means that the proc and thread structures 164 have changed quite a bit. I suggest all kernel modules that might 165 reference these structures be recompiled.. Especially the 166 linux module. 167 16820061126: 169 Sound infrastructure has been updated with various fixes and 170 improvements. Most of the changes are pretty much transparent, 171 with exceptions of followings: 172 1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been 173 moved to their own dev sysctl nodes, for example: 174 hw.snd.pcm0.vchans -> dev.pcm.0.vchans 175 2) /dev/dspr%d.%d has been deprecated. Each channel now has its 176 own chardev in the form of "dsp%d.<function>%d", where <function> 177 is p = playback, r = record and v = virtual, respectively. Users 178 are encouraged to use these devs instead of (old) "/dev/dsp%d.%d". 179 This does not affect those who are using "/dev/dsp". 180 18120061122: 182 The following binaries have been disconnected from the build: 183 mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs, 184 and mount_std. The functionality of these programs has been 185 moved into the mount program. For example, to mount a devfs 186 filesystem, instead of using mount_devfs, use: "mount -t devfs". 187 This does not affect entries in /etc/fstab, since entries in 188 /etc/fstab are always processed with "mount -t fstype". 189 19020061113: 191 Support for PCI Message Signalled Interrupts on i386 and amd64 192 has been added to the kernel and various drivers will soon be 193 updated to use MSI when it is available. If there are any problems, 194 MSI can be disabled completely by setting the 'hw.pci.enable_msi' 195 and 'hw.pci.enable_msix' tunables to 0 in the loader. 196 19720061110: 198 The MUTEX_PROFILING option has been renamed to LOCK_PROFILING. 199 The lockmgr object layout has been changed as a result of having 200 a lock_object embedded in it. As a consequence all file system 201 kernel modules must be re-compiled. The mutex profiling man page 202 has not yet been updated to reflect this change. 203 20420061026: 205 KSE in the kernel has now been made optional and turned on by 206 default. Use 'nooption KSE' in your kernel config to turn it 207 off. All kernel modules *must* be recompiled after this change. 208 There-after, modules from a KSE kernel should be compatible with 209 modules from a NOKSE kernel due to the temporary padding fields 210 added to 'struct proc'. 211 21220060929: 213 mrouted and its utilities have been removed from the base system. 214 21520060927: 216 Some ioctl(2) command codes have changed. Full backward ABI 217 compatibility is provided if the "options COMPAT_FREEBSD6" is 218 present in the kernel configuration file. Make sure to add 219 this option to your kernel config file, or recompile X.Org 220 and the rest of ports; otherwise they may refuse to work. 221 22220060924: 223 tcpslice has been removed from the base system. 224 22520060913: 226 The sizes of struct tcpcb (and struct xtcpcb) have changed due to 227 the rewrite of TCP syncookies. Tools like netstat, sockstat, and 228 systat needs to be rebuilt. 229 23020060903: 231 libpcap updated to v0.9.4 and tcpdump to v3.9.4 232 23320060816: 234 The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour 235 for IPFIREWALL_FORWARD is now as it was before when it was first 236 committed and for years after. The behaviour is now ON. 237 23820060725: 239 enigma(1)/crypt(1) utility has been changed on 64 bit architectures. 240 Now it can decrypt files created from different architectures. 241 Unfortunately, it is no longer able to decrypt a cipher text 242 generated with an older version on 64 bit architectures. 243 If you have such a file, you need old utility to decrypt it. 244 24520060709: 246 The interface version of the i4b kernel part has changed. So 247 after updating the kernel sources and compiling a new kernel, 248 the i4b user space tools in "/usr/src/usr.sbin/i4b" must also 249 be rebuilt, and vice versa. 250 25120060627: 252 The XBOX kernel now defaults to the nfe(4) driver instead of 253 the nve(4) driver. Please update your configuration 254 accordingly. 255 25620060514: 257 The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx 258 PCnet family of NICs has been removed. The new le(4) driver serves 259 as an equivalent but cross-platform replacement with the pcn(4) 260 driver still providing performance-optimized support for the subset 261 of AMD Am79C971 PCnet-FAST and greater chips as before. 262 26320060511: 264 The machdep.* sysctls and the adjkerntz utility have been 265 modified a bit. The new adjkerntz utility uses the new 266 sysctl names and sysctlbyname() calls, so it may be impossible 267 to run an old /sbin/adjkerntz utility in single-user mode 268 with a new kernel. Replace the `adjkerntz -i' step before 269 `make installworld' with: 270 271 /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i 272 273 and proceed as usual with the rest of the installworld-stage 274 steps. Otherwise, you risk installing binaries with their 275 timestamp set several hours in the future, especially if 276 you are running with local time set to GMT+X hours. 277 27820060412: 279 The ip6fw utility has been removed. The behavior provided by 280 ip6fw has been in ipfw2 for a good while and the rc.d scripts 281 have been updated to deal with it. There are some rules that 282 might not migrate cleanly. Use rc.firewall6 as a template to 283 rewrite rules. 284 28520060428: 286 The puc(4) driver has been overhauled. The ebus(4) and sbus(4) 287 attachments have been removed. Make sure to configure scc(4) 288 on sparc64. Note also that by default puc(4) will use uart(4) 289 and not sio(4) for serial ports because interrupt handling has 290 been optimized for multi-port serial cards and only uart(4) 291 implements the interface to support it. 292 29320060330: 294 The scc(4) driver replaces puc(4) for Serial Communications 295 Controllers (SCCs) like the Siemens SAB82532 and the Zilog 296 Z8530. On sparc64, it is advised to add scc(4) to the kernel 297 configuration to make sure that the serial ports remain 298 functional. 299 30020060317: 301 Most world/kernel related NO_* build options changed names. 302 New knobs have common prefixes WITHOUT_*/WITH_* (modelled 303 after FreeBSD ports) and should be set in /etc/src.conf 304 (the src.conf(5) manpage is provided). Full backwards 305 compatibility is maintained for the time being though it's 306 highly recommended to start moving old options out of the 307 system-wide /etc/make.conf file into the new /etc/src.conf 308 while also properly renaming them. More conversions will 309 likely follow. Posting to current@: 310 311 http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html 312 31320060305: 314 The NETSMBCRYPTO kernel option has been retired because its 315 functionality is always included in NETSMB and smbfs.ko now. 316 31720060303: 318 The TDFX_LINUX kernel option was retired and replaced by the 319 tdfx_linux device. The latter can be loaded as the 3dfx_linux.ko 320 kernel module. Loading it alone should suffice to get 3dfx support 321 for Linux apps because it will pull in 3dfx.ko and linux.ko through 322 its dependencies. 323 32420060204: 325 The 'audit' group was added to support the new auditing functionality 326 in the base system. Be sure to follow the directions for updating, 327 including the requirement to run mergemaster -p. 328 32920060201: 330 The kernel ABI to file system modules was changed on i386. 331 Please make sure that your kernel and modules are in sync. 332 33320060118: 334 This actually occured some time ago, but installing the kernel 335 now also installs a bunch of symbol files for the kernel modules. 336 This increases the size of /boot/kernel to about 67Mbytes. You 337 will need twice this if you will eventually back this up to kernel.old 338 on your next install. 339 If you have a shortage of room in your root partition, you should add 340 -DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes" 341 to your /etc/make.conf. 342 34320060113: 344 libc's malloc implementation has been replaced. This change has the 345 potential to uncover application bugs that previously went unnoticed. 346 See the malloc(3) manual page for more details. 347 34820060112: 349 The generic netgraph(4) cookie has been changed. If you upgrade 350 kernel passing this point, you also need to upgrade userland 351 and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4. 352 35320060106: 354 si(4)'s device files now contain the unit number. 355 Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f]. 356 35720060106: 358 The kernel ABI was mostly destroyed due to a change in the size 359 of struct lock_object which is nested in other structures such 360 as mutexes which are nested in all sorts of other structures. 361 Make sure your kernel and modules are in sync. 362 36320051231: 364 The page coloring algorithm in the VM subsystem was converted 365 from tuning with kernel options to autotuning. Please remove 366 any PQ_* option except PQ_NOOPT from your kernel config. 367 36820051211: 369 The net80211-related tools in the tools/tools/ath directory 370 have been moved to tools/tools/net80211 and renamed with a 371 "wlan" prefix. Scripts that use them should be adjusted 372 accordingly. 373 37420051202: 375 Scripts in the local_startup directories (as defined in 376 /etc/defaults/rc.conf) that have the new rc.d semantics will 377 now be run as part of the base system rcorder. If there are 378 errors or problems with one of these local scripts, it could 379 cause boot problems. If you encounter such problems, boot in 380 single user mode, remove that script from the */rc.d directory. 381 Please report the problem to the port's maintainer, and the 382 freebsd-ports@freebsd.org mailing list. 383 38420051129: 385 The nodev mount option was deprecated in RELENG_6 (where it 386 was a no-op), and is now unsupported. If you have nodev or dev listed 387 in /etc/fstab, remove it, otherwise it will result in a mount error. 388 38920051129: 390 ABI between ipfw(4) and ipfw(8) has been changed. You need 391 to rebuild ipfw(8) when rebuilding kernel. 392 39320051108: 394 rp(4)'s device files now contain the unit number. 395 Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f]. 396 39720051029: 398 /etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp. 399 Its /etc/rc.conf.d configuration file has been `ppp' from 400 the beginning, and hence there is no need to touch it. 401 40220051014: 403 Now most modules get their build-time options from the kernel 404 configuration file. A few modules still have fixed options 405 due to their non-conformant implementation, but they will be 406 corrected eventually. You may need to review the options of 407 the modules in use, explicitly specify the non-default options 408 in the kernel configuration file, and rebuild the kernel and 409 modules afterwards. 410 41120051001: 412 kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8) 413 to turn polling(4) on your interfaces. 414 41520050927: 416 The old bridge(4) implementation was retired. The new 417 if_bridge(4) serves as a full functional replacement. 418 41920050722: 420 The ai_addrlen of a struct addrinfo was changed to a socklen_t 421 to conform to POSIX-2001. This change broke an ABI 422 compatibility on 64 bit architecture. You have to recompile 423 userland programs that use getaddrinfo(3) on 64 bit 424 architecture. 425 42620050711: 427 RELENG_6 branched here. 428 42920050629: 430 The pccard_ifconfig rc.conf variable has been removed and a new 431 variable, ifconfig_DEFAULT has been introduced. Unlike 432 pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that 433 do not have ifconfig_ifn entries rather than just those in 434 removable_interfaces. 435 43620050616: 437 Some previous versions of PAM have permitted the use of 438 non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring 439 to third party PAM modules in /usr/local/lib. A change has been 440 made to require the use of absolute paths in order to avoid 441 ambiguity and dependence on library path configuration, which may 442 affect existing configurations. 443 44420050610: 445 Major changes to network interface API. All drivers must be 446 recompiled. Drivers not in the base system will need to be 447 updated to the new APIs. 448 44920050609: 450 Changes were made to kinfo_proc in sys/user.h. Please recompile 451 userland, or commands like `fstat', `pkill', `ps', `top' and `w' 452 will not behave correctly. 453 454 The API and ABI for hwpmc(4) have changed with the addition 455 of sampling support. Please recompile lib/libpmc(3) and 456 usr.sbin/{pmcstat,pmccontrol}. 457 45820050606: 459 The OpenBSD dhclient was imported in place of the ISC dhclient 460 and the network interface configuration scripts were updated 461 accordingly. If you use DHCP to configure your interfaces, you 462 must now run devd. Also, DNS updating was lost so you will need 463 to find a workaround if you use this feature. 464 465 The '_dhcp' user was added to support the OpenBSD dhclient. Be 466 sure to run mergemaster -p (like you are supposed to do every time 467 anyway). 468 46920050605: 470 if_bridge was added to the tree. This has changed struct ifnet. 471 Please recompile userland and all network related modules. 472 47320050603: 474 The n_net of a struct netent was changed to an uint32_t, and 475 1st argument of getnetbyaddr() was changed to an uint32_t, to 476 conform to POSIX-2001. These changes broke an ABI 477 compatibility on 64 bit architecture. With these changes, 478 shlib major of libpcap was bumped. You have to recompile 479 userland programs that use getnetbyaddr(3), getnetbyname(3), 480 getnetent(3) and/or libpcap on 64 bit architecture. 481 48220050528: 483 Kernel parsing of extra options on '#!' first lines of shell 484 scripts has changed. Lines with multiple options likely will 485 fail after this date. For full details, please see 486 http://people.freebsd.org/~gad/Updating-20050528.txt 487 48820050503: 489 The packet filter (pf) code has been updated to OpenBSD 3.7 490 Please note the changed anchor syntax and the fact that 491 authpf(8) now needs a mounted fdescfs(5) to function. 492 49320050415: 494 The NO_MIXED_MODE kernel option has been removed from the i386 495 amd64 platforms as its use has been superceded by the new local 496 APIC timer code. Any kernel config files containing this option 497 should be updated. 498 49920050227: 500 The on-disk format of LC_CTYPE files was changed to be machine 501 independent. Please make sure NOT to use NO_CLEAN buildworld 502 when crossing this point. Crossing this point also requires 503 recompile or reinstall of all locale depended packages. 504 50520050225: 506 The ifi_epoch member of struct if_data has been changed to 507 contain the uptime at which the interface was created or the 508 statistics zeroed rather then the wall clock time because 509 wallclock time may go backwards. This should have no impact 510 unless an snmp implementation is using this value (I know of 511 none at this point.) 512 51320050224: 514 The acpi_perf and acpi_throttle drivers are now part of the 515 acpi(4) main module. They are no longer built separately. 516 51720050223: 518 The layout of struct image_params has changed. You have to 519 recompile all compatibility modules (linux, svr4, etc) for use 520 with the new kernel. 521 52220050223: 523 The p4tcc driver has been merged into cpufreq(4). This makes 524 "options CPU_ENABLE_TCC" obsolete. Please load cpufreq.ko or 525 compile in "device cpufreq" to restore this functionality. 526 52720050220: 528 The responsibility of recomputing the file system summary of 529 a SoftUpdates-enabled dirty volume has been transferred to the 530 background fsck. A rebuild of fsck(8) utility is recommended 531 if you have updated the kernel. 532 533 To get the old behavior (recompute file system summary at mount 534 time), you can set vfs.ffs.compute_summary_at_mount=1 before 535 mounting the new volume. 536 53720050206: 538 The cpufreq import is complete. As part of this, the sysctls for 539 acpi(4) throttling have been removed. The power_profile script 540 has been updated, so you can use performance/economy_cpu_freq in 541 rc.conf(5) to set AC on/offline cpu frequencies. 542 54320050206: 544 NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko) 545 requires recompiling libnetgraph and userland netgraph utilities. 546 54720050114: 548 Support for abbreviated forms of a number of ipfw options is 549 now deprecated. Warnings are printed to stderr indicating the 550 correct full form when a match occurs. Some abbreviations may 551 be supported at a later date based on user feedback. To be 552 considered for support, abbreviations must be in use prior to 553 this commit and unlikely to be confused with current key words. 554 55520041221: 556 By a popular demand, a lot of NOFOO options were renamed 557 to NO_FOO (see bsd.compat.mk for a full list). The old 558 spellings are still supported, but will cause annoying 559 warnings on stderr. Make sure you upgrade properly (see 560 the COMMON ITEMS: section later in this file). 561 56220041219: 563 Auto-loading of ancillary wlan modules such as wlan_wep has 564 been temporarily disabled; you need to statically configure 565 the modules you need into your kernel or explicitly load them 566 prior to use. Specifically, if you intend to use WEP encryption 567 with an 802.11 device load/configure wlan_wep; if you want to 568 use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp, 569 and wlan_xauth as required. 570 57120041213: 572 The behaviour of ppp(8) has changed slightly. If lqr is enabled 573 (``enable lqr''), older versions would revert to LCP ECHO mode on 574 negotiation failure. Now, ``enable echo'' is required for this 575 behaviour. The ppp version number has been bumped to 3.4.2 to 576 reflect the change. 577 57820041201: 579 The wlan support has been updated to split the crypto support 580 into separate modules. For static WEP you must configure the 581 wlan_wep module in your system or build and install the module 582 in place where it can be loaded (the kernel will auto-load 583 the module when a wep key is configured). 584 58520041201: 586 The ath driver has been updated to split the tx rate control 587 algorithm into a separate module. You need to include either 588 ath_rate_onoe or ath_rate_amrr when configuring the kernel. 589 59020041116: 591 Support for systems with an 80386 CPU has been removed. Please 592 use FreeBSD 5.x or earlier on systems with an 80386. 593 59420041110: 595 We have had a hack which would mount the root filesystem 596 R/W if the device were named 'md*'. As part of the vnode 597 work I'm doing I have had to remove this hack. People 598 building systems which use preloaded MD root filesystems 599 may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in 600 their /etc/rc scripts. 601 60220041104: 603 FreeBSD 5.3 shipped here. 604 60520041102: 606 The size of struct tcpcb has changed again due to the removal 607 of RFC1644 T/TCP. You have to recompile userland programs that 608 read kmem for tcp sockets directly (netstat, sockstat, etc.) 609 61020041022: 611 The size of struct tcpcb has changed. You have to recompile 612 userland programs that read kmem for tcp sockets directly 613 (netstat, sockstat, etc.) 614 61520041016: 616 RELENG_5 branched here. For older entries, please see updating 617 in the RELENG_5 branch. 618 619COMMON ITEMS: 620 621 General Notes 622 ------------- 623 Avoid using make -j when upgrading. From time to time in the 624 past there have been problems using -j with buildworld and/or 625 installworld. This is especially true when upgrading between 626 "distant" versions (eg one that cross a major release boundary 627 or several minor releases, or when several months have passed 628 on the -current branch). 629 630 Sometimes, obscure build problems are the result of environment 631 poisoning. This can happen because the make utility reads its 632 environment when searching for values for global variables. 633 To run your build attempts in an "environmental clean room", 634 prefix all make commands with 'env -i '. See the env(1) manual 635 page for more details. 636 637 When upgrading from one major version to another it is generally 638 best to upgrade to the latest code in the currently installed branch 639 first, then do an upgrade to the new branch. This is the best-tested 640 upgrade path, and has the highest probability of being successful. 641 Please try this approach before reporting problems with a major 642 version upgrade. 643 644 To build a kernel 645 ----------------- 646 If you are updating from a prior version of FreeBSD (even one just 647 a few days old), you should follow this procedure. It is the most 648 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 649 650 make kernel-toolchain 651 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 652 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 653 654 To test a kernel once 655 --------------------- 656 If you just want to boot a kernel once (because you are not sure 657 if it works, or if you want to boot a known bad kernel to provide 658 debugging information) run 659 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 660 nextboot -k testkernel 661 662 To just build a kernel when you know that it won't mess you up 663 -------------------------------------------------------------- 664 This assumes you are already running a 5.X system. Replace 665 ${arch} with the architecture of your machine (e.g. "i386", 666 "alpha", "amd64", "ia64", "pc98", "sparc64", etc). 667 668 cd src/sys/${arch}/conf 669 config KERNEL_NAME_HERE 670 cd ../compile/KERNEL_NAME_HERE 671 make depend 672 make 673 make install 674 675 If this fails, go to the "To build a kernel" section. 676 677 To rebuild everything and install it on the current system. 678 ----------------------------------------------------------- 679 # Note: sometimes if you are running current you gotta do more than 680 # is listed here if you are upgrading from a really old current. 681 682 <make sure you have good level 0 dumps> 683 make buildworld 684 make kernel KERNCONF=YOUR_KERNEL_HERE 685 [1] 686 <reboot in single user> [3] 687 mergemaster -p [5] 688 make installworld 689 make delete-old 690 mergemaster [4] 691 <reboot> 692 693 694 To cross-install current onto a separate partition 695 -------------------------------------------------- 696 # In this approach we use a separate partition to hold 697 # current's root, 'usr', and 'var' directories. A partition 698 # holding "/", "/usr" and "/var" should be about 2GB in 699 # size. 700 701 <make sure you have good level 0 dumps> 702 <boot into -stable> 703 make buildworld 704 make buildkernel KERNCONF=YOUR_KERNEL_HERE 705 <maybe newfs current's root partition> 706 <mount current's root partition on directory ${CURRENT_ROOT}> 707 make installworld DESTDIR=${CURRENT_ROOT} 708 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 709 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 710 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 711 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 712 <reboot into current> 713 <do a "native" rebuild/install as described in the previous section> 714 <maybe install compatibility libraries from src/lib/compat> 715 <reboot> 716 717 718 To upgrade in-place from 5.x-stable to current 719 ---------------------------------------------- 720 <make sure you have good level 0 dumps> 721 make buildworld [9] 722 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 723 [1] 724 <reboot in single user> [3] 725 mergemaster -p [5] 726 make installworld 727 make delete-old 728 mergemaster -i [4] 729 <reboot> 730 731 Make sure that you've read the UPDATING file to understand the 732 tweaks to various things you need. At this point in the life 733 cycle of current, things change often and you are on your own 734 to cope. The defaults can also change, so please read ALL of 735 the UPDATING entries. 736 737 Also, if you are tracking -current, you must be subscribed to 738 freebsd-current@freebsd.org. Make sure that before you update 739 your sources that you have read and understood all the recent 740 messages there. If in doubt, please track -stable which has 741 much fewer pitfalls. 742 743 [1] If you have third party modules, such as vmware, you 744 should disable them at this point so they don't crash your 745 system on reboot. 746 747 [3] From the bootblocks, boot -s, and then do 748 fsck -p 749 mount -u / 750 mount -a 751 cd src 752 adjkerntz -i # if CMOS is wall time 753 Also, when doing a major release upgrade, it is required that 754 you boot into single user mode to do the installworld. 755 756 [4] Note: This step is non-optional. Failure to do this step 757 can result in a significant reduction in the functionality of the 758 system. Attempting to do it by hand is not recommended and those 759 that pursue this avenue should read this file carefully, as well 760 as the archives of freebsd-current and freebsd-hackers mailing lists 761 for potential gotchas. 762 763 [5] Usually this step is a noop. However, from time to time 764 you may need to do this if you get unknown user in the following 765 step. It never hurts to do it all the time. You may need to 766 install a new mergemaster (cd src/usr.sbin/mergemaster && make 767 install) after the buildworld before this step if you last updated 768 from current before 20020224 or from -stable before 20020408. 769 770 [8] In order to have a kernel that can run the 4.x binaries 771 needed to do an installworld, you must include the COMPAT_FREEBSD4 772 option in your kernel. Failure to do so may leave you with a system 773 that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 774 is required to run the 5.x binaries on more recent kernels. 775 776 Make sure that you merge any new devices from GENERIC since the 777 last time you updated your kernel config file. 778 779 [9] When checking out sources, you must include the -P flag to have 780 cvs prune empty directories. 781 782 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 783 "?=" instead of the "=" assignment operator, so that buildworld can 784 override the CPUTYPE if it needs to. 785 786 MAKEOBJDIRPREFIX must be defined in an environment variable, and 787 not on the command line, or in /etc/make.conf. buildworld will 788 warn if it is improperly defined. 789FORMAT: 790 791This file contains a list, in reverse chronological order, of major 792breakages in tracking -current. Not all things will be listed here, 793and it only starts on October 16, 2004. Updating files can found in 794previous releases if your system is older than this. 795 796Copyright information: 797 798Copyright 1998-2005 M. Warner Losh. All Rights Reserved. 799 800Redistribution, publication, translation and use, with or without 801modification, in full or in part, in any form or format of this 802document are permitted without further permission from the author. 803 804THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 805IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 806WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 807DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 808INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 809(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 810SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 811HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 812STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 813IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 814POSSIBILITY OF SUCH DAMAGE. 815 816If you find this document useful, and you want to, you may buy the 817author a beer. 818 819Contact Warner Losh if you have any questions about your use of 820this document. 821 822$FreeBSD: head/UPDATING 170510 2007-06-10 18:57:20Z yar $ 823