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