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