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