]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - UPDATING
Merge conflicts.
[FreeBSD/FreeBSD.git] / UPDATING
1 Updating Information for FreeBSD current users
2
3 This file is maintained and copyrighted by M. Warner Losh
4 <imp@village.org>.  See end of file for further details.  For commonly
5 done items, please see the COMMON ITEMS: section later in the file.
6
7 Items affecting the ports and packages system can be found in
8 /usr/ports/UPDATING.  Please read that file before running
9 portupgrade.
10
11 NOTE 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
24 20060929:
25         mrouted and its utilities have been removed from the base system.
26
27 20060924:
28         tcpslice has been removed from the base system.
29
30 20060913:
31         The sizes of struct tcpcb (and struct xtcpcb) have changed due to
32         the rewrite of TCP syncookies.  Tools like netstat, sockstat, and
33         systat needs to be rebuilt.
34
35 20060903:
36         libpcap updated to v0.9.4 and tcpdump to v3.9.4
37
38 20060816:
39         The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour
40         for IPFIREWALL_FORWARD is now as it was before when it was first
41         committed and for years after. The behaviour is now ON.
42
43 20060725:
44         enigma(1)/crypt(1) utility has been changed on 64 bit architectures.
45         Now it can decrypt files created from different architectures.
46         Unfortunately, it is no longer able to decrypt a cipher text
47         generated with an older version on 64 bit architectures.
48         If you have such a file, you need old utility to decrypt it.
49
50 20060709:
51         The interface version of the i4b kernel part has changed. So
52         after updating the kernel sources and compiling a new kernel,
53         the i4b user space tools in "/usr/src/usr.sbin/i4b" must also
54         be rebuilt, and vice versa.
55  
56 20060627:
57         The XBOX kernel now defaults to the nfe(4) driver instead of
58         the nve(4) driver. Please update your configuration
59         accordingly.
60
61 20060514:
62         The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx
63         PCnet family of NICs has been removed. The new le(4) driver serves
64         as an equivalent but cross-platform replacement with the pcn(4)
65         driver still providing performance-optimized support for the subset
66         of AMD Am79C971 PCnet-FAST and greater chips as before.
67
68 20060511:
69         The machdep.* sysctls and the adjkerntz utility have been
70         modified a bit.  The new adjkerntz utility uses the new
71         sysctl names and sysctlbyname() calls, so it may be impossible
72         to run an old /sbin/adjkerntz utility in single-user mode
73         with a new kernel.  Replace the `adjkerntz -i' step before
74         `make installworld' with:
75
76             /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i
77
78         and proceed as usual with the rest of the installworld-stage
79         steps.  Otherwise, you risk installing binaries with their
80         timestamp set several hours in the future, especially if
81         you are running with local time set to GMT+X hours.
82
83 20060412:
84         The ip6fw utility has been removed.  The behavior provided by
85         ip6fw has been in ipfw2 for a good while and the rc.d scripts
86         have been updated to deal with it.  There are some rules that
87         might not migrate cleanly.  Use rc.firewall6 as a template to
88         rewrite rules.
89
90 20060428:
91         The puc(4) driver has been overhauled. The ebus(4) and sbus(4)
92         attachments have been removed. Make sure to configure scc(4)
93         on sparc64. Note also that by default puc(4) will use uart(4)
94         and not sio(4) for serial ports because interrupt handling has
95         been optimized for multi-port serial cards and only uart(4)
96         implements the interface to support it.
97
98 20060330:
99         The scc(4) driver replaces puc(4) for Serial Communications
100         Controllers (SCCs) like the Siemens SAB82532 and the Zilog
101         Z8530. On sparc64, it is advised to add scc(4) to the kernel
102         configuration to make sure that the serial ports remain
103         functional.
104
105 20060317:
106         Most world/kernel related NO_* build options changed names.
107         New knobs have common prefixes WITHOUT_*/WITH_* (modelled
108         after FreeBSD ports) and should be set in /etc/src.conf
109         (the src.conf(5) manpage is provided).  Full backwards
110         compatibility is maintained for the time being though it's
111         highly recommended to start moving old options out of the
112         system-wide /etc/make.conf file into the new /etc/src.conf
113         while also properly renaming them.  More conversions will
114         likely follow.  Posting to current@:
115
116         http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
117
118 20060305:
119         The NETSMBCRYPTO kernel option has been retired because its
120         functionality is always included in NETSMB and smbfs.ko now.
121
122 20060303:
123         The TDFX_LINUX kernel option was retired and replaced by the
124         tdfx_linux device.  The latter can be loaded as the 3dfx_linux.ko
125         kernel module.  Loading it alone should suffice to get 3dfx support
126         for Linux apps because it will pull in 3dfx.ko and linux.ko through
127         its dependencies.
128
129 20060204:
130         The 'audit' group was added to support the new auditing functionality
131         in the base system.  Be sure to follow the directions for updating,
132         including the requirement to run mergemaster -p.
133
134 20060201:
135         The kernel ABI to file system modules was changed on i386.
136         Please make sure that your kernel and modules are in sync.
137         
138 20060118:
139         This actually occured some time ago, but installing the kernel
140         now also installs a bunch of symbol files for the kernel modules.
141         This increases the size of /boot/kernel to about 67Mbytes. You
142         will need twice this if you will eventually back this up to kernel.old
143         on your next install.
144         If you have a shortage of room in your root partition, you should add
145         -DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
146         to your /etc/make.conf.
147
148 20060113:
149         libc's malloc implementation has been replaced.  This change has the
150         potential to uncover application bugs that previously went unnoticed.
151         See the malloc(3) manual page for more details.
152
153 20060112:
154         The generic netgraph(4) cookie has been changed. If you upgrade
155         kernel passing this point, you also need to upgrade userland
156         and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4.
157
158 20060106:
159         si(4)'s device files now contain the unit number.
160         Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f].
161
162 20060106:
163         The kernel ABI was mostly destroyed due to a change in the size
164         of struct lock_object which is nested in other structures such
165         as mutexes which are nested in all sorts of other structures.
166         Make sure your kernel and modules are in sync.
167
168 20051231:
169         The page coloring algorithm in the VM subsystem was converted
170         from tuning with kernel options to autotuning. Please remove
171         any PQ_* option except PQ_NOOPT from your kernel config.
172
173 20051211:
174         The net80211-related tools in the tools/tools/ath directory
175         have been moved to tools/tools/net80211 and renamed with a
176         "wlan" prefix.  Scripts that use them should be adjusted
177         accordingly.
178
179 20051202:
180         Scripts in the local_startup directories (as defined in
181         /etc/defaults/rc.conf) that have the new rc.d semantics will
182         now be run as part of the base system rcorder. If there are
183         errors or problems with one of these local scripts, it could
184         cause boot problems. If you encounter such problems, boot in
185         single user mode, remove that script from the */rc.d directory.
186         Please report the problem to the port's maintainer, and the
187         freebsd-ports@freebsd.org mailing list.
188
189 20051129:
190         The nodev mount option was deprecated in RELENG_6 (where it
191         was a no-op), and is now unsupported.  If you have nodev or dev listed
192         in /etc/fstab, remove it, otherwise it will result in a mount error.
193
194 20051129:
195         ABI between ipfw(4) and ipfw(8) has been changed. You need
196         to rebuild ipfw(8) when rebuilding kernel.
197
198 20051108:
199         rp(4)'s device files now contain the unit number.
200         Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f].
201
202 20051029:
203         /etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp.
204         Its /etc/rc.conf.d configuration file has been `ppp' from
205         the beginning, and hence there is no need to touch it.
206
207 20051014:
208         Now most modules get their build-time options from the kernel
209         configuration file.  A few modules still have fixed options
210         due to their non-conformant implementation, but they will be
211         corrected eventually.  You may need to review the options of
212         the modules in use, explicitly specify the non-default options
213         in the kernel configuration file, and rebuild the kernel and
214         modules afterwards.
215
216 20051001:
217         kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
218         to turn polling(4) on your interfaces.
219
220 20050927:
221         The old bridge(4) implementation was retired.  The new
222         if_bridge(4) serves as a full functional replacement.
223
224 20050722:
225         The ai_addrlen of a struct addrinfo was changed to a socklen_t
226         to conform to POSIX-2001.  This change broke an ABI
227         compatibility on 64 bit architecture.  You have to recompile
228         userland programs that use getaddrinfo(3) on 64 bit
229         architecture.
230
231 20050711:
232         RELENG_6 branched here.
233
234 20050629:
235         The pccard_ifconfig rc.conf variable has been removed and a new
236         variable, ifconfig_DEFAULT has been introduced.  Unlike
237         pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that
238         do not have ifconfig_ifn entries rather than just those in
239         removable_interfaces.
240
241 20050616:
242         Some previous versions of PAM have permitted the use of
243         non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring
244         to third party PAM modules in /usr/local/lib.  A change has been
245         made to require the use of absolute paths in order to avoid
246         ambiguity and dependence on library path configuration, which may
247         affect existing configurations.
248
249 20050610:
250         Major changes to network interface API.  All drivers must be
251         recompiled.  Drivers not in the base system will need to be
252         updated to the new APIs.
253
254 20050609:
255         Changes were made to kinfo_proc in sys/user.h.  Please recompile
256         userland, or commands like `fstat', `pkill', `ps', `top' and `w'
257         will not behave correctly.
258
259         The API and ABI for hwpmc(4) have changed with the addition
260         of sampling support.  Please recompile lib/libpmc(3) and
261         usr.sbin/{pmcstat,pmccontrol}.
262
263 20050606:
264         The OpenBSD dhclient was imported in place of the ISC dhclient
265         and the network interface configuration scripts were updated
266         accordingly.  If you use DHCP to configure your interfaces, you
267         must now run devd.  Also, DNS updating was lost so you will need
268         to find a workaround if you use this feature.
269
270         The '_dhcp' user was added to support the OpenBSD dhclient.  Be
271         sure to run mergemaster -p (like you are supposed to do every time
272         anyway).
273
274 20050605:
275         if_bridge was added to the tree. This has changed struct ifnet.
276         Please recompile userland and all network related modules.
277
278 20050603:
279         The n_net of a struct netent was changed to an uint32_t, and
280         1st argument of getnetbyaddr() was changed to an uint32_t, to
281         conform to POSIX-2001.  These changes broke an ABI
282         compatibility on 64 bit architecture.  With these changes,
283         shlib major of libpcap was bumped.  You have to recompile
284         userland programs that use getnetbyaddr(3), getnetbyname(3),
285         getnetent(3) and/or libpcap on 64 bit architecture.
286
287 20050528:
288         Kernel parsing of extra options on '#!' first lines of shell
289         scripts has changed.  Lines with multiple options likely will
290         fail after this date.  For full details, please see
291                 http://people.freebsd.org/~gad/Updating-20050528.txt
292
293 20050503:
294         The packet filter (pf) code has been updated to OpenBSD 3.7
295         Please note the changed anchor syntax and the fact that
296         authpf(8) now needs a mounted fdescfs(5) to function.
297
298 20050415:
299         The NO_MIXED_MODE kernel option has been removed from the i386
300         amd64 platforms as its use has been superceded by the new local
301         APIC timer code.  Any kernel config files containing this option
302         should be updated.
303
304 20050227:
305         The on-disk format of LC_CTYPE files was changed to be machine
306         independent.  Please make sure NOT to use NO_CLEAN buildworld
307         when crossing this point. Crossing this point also requires
308         recompile or reinstall of all locale depended packages.
309
310 20050225:
311         The ifi_epoch member of struct if_data has been changed to
312         contain the uptime at which the interface was created or the
313         statistics zeroed rather then the wall clock time because
314         wallclock time may go backwards.  This should have no impact
315         unless an snmp implementation is using this value (I know of
316         none at this point.)
317
318 20050224:
319         The acpi_perf and acpi_throttle drivers are now part of the
320         acpi(4) main module.  They are no longer built separately.
321
322 20050223:
323         The layout of struct image_params has changed. You have to
324         recompile all compatibility modules (linux, svr4, etc) for use
325         with the new kernel.
326
327 20050223:
328         The p4tcc driver has been merged into cpufreq(4).  This makes
329         "options CPU_ENABLE_TCC" obsolete.  Please load cpufreq.ko or
330         compile in "device cpufreq" to restore this functionality.
331
332 20050220:
333         The responsibility of recomputing the file system summary of
334         a SoftUpdates-enabled dirty volume has been transferred to the
335         background fsck.  A rebuild of fsck(8) utility is recommended
336         if you have updated the kernel.
337
338         To get the old behavior (recompute file system summary at mount
339         time), you can set vfs.ffs.compute_summary_at_mount=1 before
340         mounting the new volume.
341
342 20050206:
343         The cpufreq import is complete.  As part of this, the sysctls for
344         acpi(4) throttling have been removed.  The power_profile script
345         has been updated, so you can use performance/economy_cpu_freq in
346         rc.conf(5) to set AC on/offline cpu frequencies.
347
348 20050206:
349         NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko)
350         requires recompiling libnetgraph and userland netgraph utilities.
351
352 20050114:
353         Support for abbreviated forms of a number of ipfw options is
354         now deprecated.  Warnings are printed to stderr indicating the
355         correct full form when a match occurs.  Some abbreviations may
356         be supported at a later date based on user feedback.  To be
357         considered for support, abbreviations must be in use prior to
358         this commit and unlikely to be confused with current key words.
359
360 20041221:
361         By a popular demand, a lot of NOFOO options were renamed
362         to NO_FOO (see bsd.compat.mk for a full list).  The old
363         spellings are still supported, but will cause annoying
364         warnings on stderr.  Make sure you upgrade properly (see
365         the COMMON ITEMS: section later in this file).
366
367 20041219:
368         Auto-loading of ancillary wlan modules such as wlan_wep has
369         been temporarily disabled; you need to statically configure
370         the modules you need into your kernel or explicitly load them
371         prior to use.  Specifically, if you intend to use WEP encryption
372         with an 802.11 device load/configure wlan_wep; if you want to
373         use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp,
374         and wlan_xauth as required.
375
376 20041213:
377         The behaviour of ppp(8) has changed slightly.  If lqr is enabled
378         (``enable lqr''), older versions would revert to LCP ECHO mode on
379         negotiation failure.  Now, ``enable echo'' is required for this
380         behaviour.  The ppp version number has been bumped to 3.4.2 to
381         reflect the change.
382
383 20041201:
384         The wlan support has been updated to split the crypto support
385         into separate modules.  For static WEP you must configure the
386         wlan_wep module in your system or build and install the module
387         in place where it can be loaded (the kernel will auto-load
388         the module when a wep key is configured).
389
390 20041201:
391         The ath driver has been updated to split the tx rate control
392         algorithm into a separate module.  You need to include either
393         ath_rate_onoe or ath_rate_amrr when configuring the kernel.
394
395 20041116:
396         Support for systems with an 80386 CPU has been removed.  Please
397         use FreeBSD 5.x or earlier on systems with an 80386.
398
399 20041110:
400         We have had a hack which would mount the root filesystem
401         R/W if the device were named 'md*'.  As part of the vnode
402         work I'm doing I have had to remove this hack.  People
403         building systems which use preloaded MD root filesystems
404         may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in
405         their /etc/rc scripts.
406
407 20041104:
408         FreeBSD 5.3 shipped here.
409
410 20041102:
411         The size of struct tcpcb has changed again due to the removal
412         of RFC1644 T/TCP.  You have to recompile userland programs that
413         read kmem for tcp sockets directly (netstat, sockstat, etc.)
414
415 20041022:
416         The size of struct tcpcb has changed.  You have to recompile
417         userland programs that read kmem for tcp sockets directly
418         (netstat, sockstat, etc.)
419
420 20041016:
421         RELENG_5 branched here.  For older entries, please see updating
422         in the RELENG_5 branch.
423
424 COMMON ITEMS:
425
426         General Notes
427         -------------
428         Avoid using make -j when upgrading.  From time to time in the
429         past there have been problems using -j with buildworld and/or
430         installworld.  This is especially true when upgrading between
431         "distant" versions (eg one that cross a major release boundary
432         or several minor releases, or when several months have passed
433         on the -current branch).
434
435         Sometimes, obscure build problems are the result of environment
436         poisoning.  This can happen because the make utility reads its
437         environment when searching for values for global variables.
438         To run your build attempts in an "environmental clean room",
439         prefix all make commands with 'env -i '.  See the env(1) manual
440         page for more details.
441
442         When upgrading from one major version to another it is generally
443         best to upgrade to the latest code in the currently installed branch
444         first, then do an upgrade to the new branch. This is the best-tested
445         upgrade path, and has the highest probability of being successful.
446         Please try this approach before reporting problems with a major
447         version upgrade.
448
449         To build a kernel
450         -----------------
451         If you are updating from a prior version of FreeBSD (even one just
452         a few days old), you should follow this procedure.  It is the most
453         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
454
455         make kernel-toolchain
456         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
457         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
458
459         To test a kernel once
460         ---------------------
461         If you just want to boot a kernel once (because you are not sure
462         if it works, or if you want to boot a known bad kernel to provide
463         debugging information) run
464         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
465         nextboot -k testkernel
466
467         To just build a kernel when you know that it won't mess you up
468         --------------------------------------------------------------
469         This assumes you are already running a 5.X system.  Replace
470         ${arch} with the architecture of your machine (e.g. "i386",
471         "alpha", "amd64", "ia64", "pc98", "sparc64", etc).
472
473         cd src/sys/${arch}/conf
474         config KERNEL_NAME_HERE
475         cd ../compile/KERNEL_NAME_HERE
476         make depend
477         make
478         make install
479
480         If this fails, go to the "To build a kernel" section.
481
482         To rebuild everything and install it on the current system.
483         -----------------------------------------------------------
484         # Note: sometimes if you are running current you gotta do more than
485         # is listed here if you are upgrading from a really old current.
486
487         <make sure you have good level 0 dumps>
488         make buildworld
489         make kernel KERNCONF=YOUR_KERNEL_HERE
490                                                         [1]
491         <reboot in single user>                         [3]
492         mergemaster -p                                  [5]
493         make installworld
494         make delete-old
495         mergemaster                                     [4]
496         <reboot>
497
498
499         To cross-install current onto a separate partition
500         --------------------------------------------------
501         # In this approach we use a separate partition to hold
502         # current's root, 'usr', and 'var' directories.   A partition
503         # holding "/", "/usr" and "/var" should be about 2GB in
504         # size.
505
506         <make sure you have good level 0 dumps>
507         <boot into -stable>
508         make buildworld
509         make buildkernel KERNCONF=YOUR_KERNEL_HERE
510         <maybe newfs current's root partition>
511         <mount current's root partition on directory ${CURRENT_ROOT}>
512         make installworld DESTDIR=${CURRENT_ROOT}
513         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
514         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
515         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
516         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
517         <reboot into current>
518         <do a "native" rebuild/install as described in the previous section>
519         <maybe install compatibility libraries from src/lib/compat>
520         <reboot>
521
522
523         To upgrade in-place from 5.x-stable to current
524         ----------------------------------------------
525         <make sure you have good level 0 dumps>
526         make buildworld                                 [9]
527         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
528                                                         [1]
529         <reboot in single user>                         [3]
530         mergemaster -p                                  [5]
531         make installworld
532         make delete-old
533         mergemaster -i                                  [4]
534         <reboot>
535
536         Make sure that you've read the UPDATING file to understand the
537         tweaks to various things you need.  At this point in the life
538         cycle of current, things change often and you are on your own
539         to cope.  The defaults can also change, so please read ALL of
540         the UPDATING entries.
541
542         Also, if you are tracking -current, you must be subscribed to
543         freebsd-current@freebsd.org.  Make sure that before you update
544         your sources that you have read and understood all the recent
545         messages there.  If in doubt, please track -stable which has
546         much fewer pitfalls.
547
548         [1] If you have third party modules, such as vmware, you
549         should disable them at this point so they don't crash your
550         system on reboot.
551
552         [3] From the bootblocks, boot -s, and then do
553                 fsck -p
554                 mount -u /
555                 mount -a
556                 cd src
557                 adjkerntz -i            # if CMOS is wall time
558         Also, when doing a major release upgrade, it is required that
559         you boot into single user mode to do the installworld.
560
561         [4] Note: This step is non-optional.  Failure to do this step
562         can result in a significant reduction in the functionality of the
563         system.  Attempting to do it by hand is not recommended and those
564         that pursue this avenue should read this file carefully, as well
565         as the archives of freebsd-current and freebsd-hackers mailing lists
566         for potential gotchas.
567
568         [5] Usually this step is a noop.  However, from time to time
569         you may need to do this if you get unknown user in the following
570         step.  It never hurts to do it all the time.  You may need to
571         install a new mergemaster (cd src/usr.sbin/mergemaster && make
572         install) after the buildworld before this step if you last updated
573         from current before 20020224 or from -stable before 20020408.
574
575         [8] In order to have a kernel that can run the 4.x binaries
576         needed to do an installworld, you must include the COMPAT_FREEBSD4
577         option in your kernel.  Failure to do so may leave you with a system
578         that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5
579         is required to run the 5.x binaries on more recent kernels.
580
581         Make sure that you merge any new devices from GENERIC since the
582         last time you updated your kernel config file.
583
584         [9] When checking out sources, you must include the -P flag to have
585         cvs prune empty directories.
586
587         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
588         "?=" instead of the "=" assignment operator, so that buildworld can
589         override the CPUTYPE if it needs to.
590
591         MAKEOBJDIRPREFIX must be defined in an environment variable, and
592         not on the command line, or in /etc/make.conf.  buildworld will
593         warn if it is improperly defined.
594 FORMAT:
595
596 This file contains a list, in reverse chronological order, of major
597 breakages in tracking -current.  Not all things will be listed here,
598 and it only starts on October 16, 2004.  Updating files can found in
599 previous releases if your system is older than this.
600
601 Copyright information:
602
603 Copyright 1998-2005 M. Warner Losh.  All Rights Reserved.
604
605 Redistribution, publication, translation and use, with or without
606 modification, in full or in part, in any form or format of this
607 document are permitted without further permission from the author.
608
609 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
610 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
611 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
612 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
613 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
614 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
615 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
616 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
617 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
618 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
619 POSSIBILITY OF SUCH DAMAGE.
620
621 If you find this document useful, and you want to, you may buy the
622 author a beer.
623
624 Contact Warner Losh if you have any questions about your use of
625 this document.
626
627 $FreeBSD$