]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - UPDATING
Autogenerate hardware notes for the uath(4) driver.
[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 8.x IS SLOW:
12         FreeBSD 8.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.  (To disable malloc debugging, run
23         ln -s aj /etc/malloc.conf.)
24
25 20090320:
26         GEOM_PART has become the default partition slicer for storage devices,
27         replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
28         introduces some changes:
29         
30         MSDOS/EBR: the devices created from MSDOS extended partition entries
31         (EBR) can be named differently than with GEOM_MBR and are now symlinks
32         to devices with offset-based names. fstabs may need to be modified.
33
34         BSD: the "geometry does not match label" warning is harmless in most
35         cases but it points to problems in file system misalignment with
36         disk geometry. The "c" partition is now implicit, covers the whole
37         top-level drive and cannot be (mis)used by users.
38         
39         General: Kernel dumps are now not allowed to be written to devices
40         whose partition types indicate they are meant to be used for file
41         systems (or, in case of MSDOS partitions, as something else than
42         the "386BSD" type).
43
44         Most of these changes date approximately from 200812.
45
46 20090319:
47         The uscanner(4) driver has been removed from the kernel. This follows
48         Linux removing theirs in 2.6 and making libusb the default interface
49         (supported by sane).
50
51 20090319:
52         The multicast forwarding code has been cleaned up. netstat(1)
53         only relies on KVM now for printing bandwidth upcall meters.
54         The IPv4 and IPv6 modules are split into ip_mroute_mod and
55         ip6_mroute_mod respectively. The config(5) options for statically
56         compiling this code remain the same, i.e. 'options MROUTING'.
57
58 20090315:
59         Support for the IFF_NEEDSGIANT network interface flag has been
60         removed, which means that non-MPSAFE network device drivers are no
61         longer supported.  In particular, if_ar, if_sr, and network device
62         drivers from the old (legacy) USB stack can no longer be built or
63         used.
64
65 20090313:
66         POSIX.1 Native Language Support (NLS) has been enabled in libc and
67         a bunch of new language catalog files have also been added.
68         This means that some common libc messages are now localized and
69         they depend on the LC_MESSAGES environmental variable.
70
71 20090313:
72         The k8temp(4) driver has been renamed to amdtemp(4) since
73         support for K10 and K11 CPU families was added.
74
75 20090309:
76         IGMPv3 and Source-Specific Multicast (SSM) have been merged
77         to the IPv4 stack. VIMAGE hooks are in but not yet used.
78
79         For kernel developers, the most important changes are that the
80         ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
81         and this lock has been downgraded to a non-recursive mutex.
82
83         Transport protocols (UDP, Raw IP) are now responsible for filtering
84         inbound multicast traffic according to group membership and source
85         filters. The imo_multicast_filter() KPI exists for this purpose.
86         Transports which do not use multicast (SCTP, TCP) already reject
87         multicast by default. Forwarding and receive performance may improve
88         as a mutex acquisition is no longer needed in the ip_input()
89         low-level input path.  in_addmulti() and in_delmulti() are shimmed
90         to new KPIs which exist to support SSM in-kernel.
91
92         For application developers, it is recommended that loopback of
93         multicast datagrams be disabled for best performance, as this
94         will still cause the lock to be taken for each looped-back
95         datagram transmission. The net.inet.ip.mcast.loop sysctl may
96         be tuned to 0 to disable loopback by default; it defaults to 1
97         to preserve the existing behaviour.
98
99         For systems administrators, to obtain best performance with
100         multicast reception and multiple groups, it is always recommended
101         that a card with a suitably precise hash filter is used. Hash
102         collisions will still result in the lock being taken within the
103         transport protocol input path to check group membership.
104
105         If deploying FreeBSD in an environment with IGMP snooping switches,
106         it is recommended that the net.inet.igmp.sendlocal sysctl remain
107         enabled; this forces 224.0.0.0/24 group membership to be announced
108         via IGMP.
109
110         The size of 'struct igmpstat' has changed; netstat needs to be
111         recompiled to reflect this.
112         Bump __FreeBSD_version to 800070.
113
114 20090309:
115         libusb20.so.1 is now installed as libusb.so.1 and the ports system
116         updated to use it. This requires a buildworld/installworld in order to
117         update the library and dependencies (usbconfig, etc). Its advisable to
118         rebuild all ports which uses libusb. More specific directions are given
119         in the ports collection UPDATING file. Any /etc/libmap.conf entries for
120         libusb are no longer required and can be removed.
121
122 20090302:
123         A workaround is committed to allow the creation of System V shared
124         memory segment of size > 2 GB on the 64-bit architectures.
125         Due to a limitation of the existing ABI, the shm_segsz member
126         of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
127         wrong for large segments. Note that limits must be explicitely
128         raised to allow such segments to be created.
129
130 20090301:
131         The layout of struct ifnet has changed, requiring a rebuild of all
132         network device driver modules.
133
134 20090227:
135         The /dev handling for the new USB stack has changed, a
136         buildworld/installworld is required for libusb20.
137
138 20090223:
139         The new USB2 stack has now been permanently moved in and all kernel and
140         module names reverted to their previous values (eg, usb, ehci, ohci,
141         ums, ...).  The old usb stack can be compiled in by prefixing the name
142         with the letter 'o', the old usb modules have been removed.
143         Updating entry 20090216 for xorg and 20090215 for libmap may still
144         apply.
145
146 20090217:
147         The rc.conf(5) option if_up_delay has been renamed to
148         defaultroute_delay to better reflect its purpose. If you have
149         customized this setting in /etc/rc.conf you need to update it to
150         use the new name.
151
152 20090216:
153         xorg 7.4 wants to configure its input devices via hald which does not
154         yet work with USB2. If the keyboard/mouse does not work in xorg then
155         add
156                 Option "AllowEmptyInput" "off"
157         to your ServerLayout section.  This will cause X to use the configured
158         kbd and mouse sections from your xorg.conf.
159
160 20090215:
161         The GENERIC kernels for all architectures now default to the new USB2
162         stack. No kernel config options or code have been removed so if a
163         problem arises please report it and optionally revert to the old USB
164         stack. If you are loading USB kernel modules or have a custom kernel
165         that includes GENERIC then ensure that usb names are also changed over,
166         eg uftdi -> usb2_serial_ftdi.
167
168         Older programs linked against the ports libusb 0.1 need to be
169         redirected to the new stack's libusb20.  /etc/libmap.conf can
170         be used for this:
171                 # Map old usb library to new one for usb2 stack
172                 libusb-0.1.so.8 libusb20.so.1
173
174 20090203:
175         The ichsmb(4) driver has been changed to require SMBus slave
176         addresses be left-justified (xxxxxxx0b) rather than right-justified.
177         All of the other SMBus controller drivers require left-justified
178         slave addresses, so this change makes all the drivers provide the
179         same interface.
180
181 20090201:
182         INET6 statistics (struct ip6stat) was updated.
183         netstat(1) needs to be recompiled.
184
185 20090119:
186         NTFS has been removed from GENERIC kernel on amd64 to match
187         GENERIC on i386. Should not cause any issues since mount_ntfs(8)
188         will load ntfs.ko module automatically when NTFS support is
189         actually needed, unless ntfs.ko is not installed or security
190         level prohibits loading kernel modules. If either is the case,
191         "options NTFS" has to be added into kernel config.
192
193 20090115:
194         TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
195         New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
196         800061. User space tools that rely on the size of struct tcpcb in
197         tcp_var.h (e.g. sockstat) need to be recompiled.
198
199 20081225:
200         ng_tty(4) module updated to match the new TTY subsystem.
201         Due to API change, user-level applications must be updated.
202         New API support added to mpd5 CVS and expected to be present
203         in next mpd5.3 release.
204
205 20081219:
206         With __FreeBSD_version 800060 the makefs tool is part of
207         the base system (it was a port).
208
209 20081216:
210         The afdata and ifnet locks have been changed from mutexes to
211         rwlocks, network modules will need to be re-compiled.
212
213 20081214:
214         __FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
215         RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
216         The new code reduced struct rtentry{} by 16 bytes on 32-bit
217         architecture and 40 bytes on 64-bit architecture. The userland
218         applications "arp" and "ndp" have been updated accordingly.
219         The output from "netstat -r" shows only routing entries and
220         none of the L2 information.
221
222 20081130:
223         __FreeBSD_version 800057 marks the switchover from the
224         binary ath hal to source code. Users must add the line:
225
226         options AH_SUPPORT_AR5416
227
228         to their kernel config files when specifying:
229
230         device  ath_hal
231
232         The ath_hal module no longer exists; the code is now compiled
233         together with the driver in the ath module.  It is now
234         possible to tailor chip support (i.e. reduce the set of chips
235         and thereby the code size); consult ath_hal(4) for details.
236
237 20081121:
238         __FreeBSD_version 800054 adds memory barriers to
239         <machine/atomic.h>, new interfaces to ifnet to facilitate
240         multiple hardware transmit queues for cards that support
241         them, and a lock-less ring-buffer implementation to
242         enable drivers to more efficiently manage queueing of
243         packets.
244
245 20081117:
246         A new version of ZFS (version 13) has been merged to -HEAD.
247         This version has zpool attribute "listsnapshots" off by
248         default, which means "zfs list" does not show snapshots,
249         and is the same as Solaris behavior.
250
251 20081028:
252         dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
253
254 20081009:
255         The uhci, ohci, ehci and slhci USB Host controller drivers have
256         been put into separate modules. If you load the usb module
257         separately through loader.conf you will need to load the
258         appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
259         controller add the following to loader.conf:
260
261                 uhci_load="YES"
262                 ehci_load="YES"
263
264 20081009:
265         The ABI used by the PMC toolset has changed.  Please keep
266         userland (libpmc(3)) and the kernel module (hwpmc(4)) in
267         sync.
268
269 20080820:
270         The TTY subsystem of the kernel has been replaced by a new
271         implementation, which provides better scalability and an
272         improved driver model. Most common drivers have been migrated to
273         the new TTY subsystem, while others have not. The following
274         drivers have not yet been ported to the new TTY layer:
275
276         PCI/ISA:
277                 cy, digi, rc, rp, sio
278
279         USB:
280                 ubser, ucycom
281
282         Line disciplines:
283                 ng_h4, ng_tty, ppp, sl, snp
284
285         Adding these drivers to your kernel configuration file shall
286         cause compilation to fail.
287
288 20080818:
289         ntpd has been upgraded to 4.2.4p5.
290
291 20080801:
292         OpenSSH has been upgraded to 5.1p1.
293
294         For many years, FreeBSD's version of OpenSSH preferred DSA
295         over RSA for host and user authentication keys.  With this
296         upgrade, we've switched to the vendor's default of RSA over
297         DSA.  This may cause upgraded clients to warn about unknown
298         host keys even for previously known hosts.  Users should
299         follow the usual procedure for verifying host keys before
300         accepting the RSA key.
301
302         This can be circumvented by setting the "HostKeyAlgorithms"
303         option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
304         command line.
305
306         Please note that the sequence of keys offered for
307         authentication has been changed as well.  You may want to
308         specify IdentityFile in a different order to revert this
309         behavior.
310
311 20080713:
312         The sio(4) driver has been removed from the i386 and amd64
313         kernel configuration files. This means uart(4) is now the
314         default serial port driver on those platforms as well.
315
316         To prevent collisions with the sio(4) driver, the uart(4) driver
317         uses different names for its device nodes. This means the
318         onboard serial port will now most likely be called "ttyu0"
319         instead of "ttyd0". You may need to reconfigure applications to
320         use the new device names.
321
322         When using the serial port as a boot console, be sure to update
323         /boot/device.hints and /etc/ttys before booting the new kernel.
324         If you forget to do so, you can still manually specify the hints
325         at the loader prompt:
326
327                 set hint.uart.0.at="isa"
328                 set hint.uart.0.port="0x3F8"
329                 set hint.uart.0.flags="0x10"
330                 set hint.uart.0.irq="4"
331                 boot -s
332
333 20080609:
334         The gpt(8) utility has been removed. Use gpart(8) to partition
335         disks instead.
336
337 20080603:
338         The version that Linuxulator emulates was changed from 2.4.2
339         to 2.6.16. If you experience any problems with Linux binaries
340         please try to set sysctl compat.linux.osrelease to 2.4.2 and
341         if it fixes the problem contact emulation mailing list.
342
343 20080525:
344         ISDN4BSD (I4B) was removed from the src tree. You may need to
345         update a your kernel configuration and remove relevant entries.
346
347 20080509:
348         I have checked in code to support multiple routing tables.
349         See the man pages setfib(1) and setfib(2).
350         This is a hopefully backwards compatible version,
351         but to make use of it you need to compile your kernel
352         with options ROUTETABLES=2 (or more up to 16).
353
354 20080420:
355         The 802.11 wireless support was redone to enable multi-bss
356         operation on devices that are capable.  The underlying device
357         is no longer used directly but instead wlanX devices are
358         cloned with ifconfig.  This requires changes to rc.conf files.
359         For example, change:
360                 ifconfig_ath0="WPA DHCP"
361         to
362                 wlans_ath0=wlan0
363                 ifconfig_wlan0="WPA DHCP"
364         see rc.conf(5) for more details.  In addition, mergemaster of
365         /etc/rc.d is highly recommended.  Simultaneous update of userland
366         and kernel wouldn't hurt either.
367
368         As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
369         modules were merged into the base wlan module.  All references
370         to these modules (e.g. in kernel config files) must be removed.
371
372 20080408:
373         psm(4) has gained write(2) support in native operation level.
374         Arbitrary commands can be written to /dev/psm%d and status can
375         be read back from it.  Therefore, an application is responsible
376         for status validation and error recovery.  It is a no-op in
377         other operation levels.
378
379 20080312:
380         Support for KSE threading has been removed from the kernel.  To
381         run legacy applications linked against KSE libmap.conf may
382         be used.  The following libmap.conf may be used to ensure
383         compatibility with any prior release:
384
385         libpthread.so.1 libthr.so.1
386         libpthread.so.2 libthr.so.2
387         libkse.so.3 libthr.so.3
388
389 20080301:
390         The layout of struct vmspace has changed. This affects libkvm
391         and any executables that link against libkvm and use the
392         kvm_getprocs() function. In particular, but not exclusively,
393         it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
394         The effects are minimal, but it's advisable to upgrade world
395         nonetheless.
396
397 20080229:
398         The latest em driver no longer has support in it for the
399         82575 adapter, this is now moved to the igb driver. The
400         split was done to make new features that are incompatible
401         with older hardware easier to do.
402
403 20080220:
404         The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
405         likewise the kernel option is now GEOM_LINUX_LVM.
406
407 20080211:
408         The default NFS mount mode has changed from UDP to TCP for
409         increased reliability.  If you rely on (insecurely) NFS
410         mounting across a firewall you may need to update your
411         firewall rules.
412
413 20080208:
414         Belatedly note the addition of m_collapse for compacting
415         mbuf chains.
416
417 20080126:
418         The fts(3) structures have been changed to use adequate
419         integer types for their members and so to be able to cope
420         with huge file trees.  The old fts(3) ABI is preserved
421         through symbol versioning in libc, so third-party binaries
422         using fts(3) should still work, although they will not take
423         advantage of the extended types.  At the same time, some
424         third-party software might fail to build after this change
425         due to unportable assumptions made in its source code about
426         fts(3) structure members.  Such software should be fixed
427         by its vendor or, in the worst case, in the ports tree.
428         FreeBSD_version 800015 marks this change for the unlikely
429         case that a portable fix is impossible.
430
431 20080123:
432         To upgrade to -current after this date, you must be running
433         FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
434         from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
435
436 20071128:
437         The ADAPTIVE_GIANT kernel option has been retired because its
438         functionality is the default now.
439
440 20071118:
441         The AT keyboard emulation of sunkbd(4) has been turned on
442         by default. In order to make the special symbols of the Sun
443         keyboards driven by sunkbd(4) work under X these now have
444         to be configured the same way as Sun USB keyboards driven
445         by ukbd(4) (which also does AT keyboard emulation), f.e.:
446
447         Option  "XkbLayout" "us"
448         Option  "XkbRules" "xorg"
449         Option  "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
450
451 20071024:
452         It has been decided that it is desirable to provide ABI
453         backwards compatibility to the FreeBSD 4/5/6 versions of the
454         PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
455         broken with the introduction of PCI domain support (see the
456         20070930 entry). Unfortunately, this required the ABI of
457         PCIOCGETCONF to be broken again in order to be able to
458         provide backwards compatibility to the old version of that
459         IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
460         again. As for prominent ports this affects neither pciutils
461         nor xorg-server this time, the hal port needs to be rebuilt
462         however.
463
464 20071020:
465         The misnamed kthread_create() and friends have been renamed
466         to kproc_create() etc. Many of the callers already
467         used kproc_start()..
468         I will return kthread_create() and friends in a while
469         with implementations that actually create threads, not procs.
470         Renaming corresponds with version 800002.
471
472 20071010:
473         RELENG_7 branched.
474
475 20071009:
476         Setting WITHOUT_LIBPTHREAD now means WITHOUT_LIBKSE and
477         WITHOUT_LIBTHR are set.
478
479 20070930:
480         The PCI code has been made aware of PCI domains. This means that
481         the location strings as used by pciconf(8) etc are now in the
482         following format: pci<domain>:<bus>:<device>[:<function>]. It
483         also means that consumers of <sys/pciio.h> potentially need to
484         be recompiled; this includes the hal and xorg-server ports.
485
486 20070928:
487         The caching daemon (cached) was renamed to nscd. nscd.conf
488         configuration file should be used instead of cached.conf and
489         nscd_enable, nscd_pidfile and nscd_flags options should be used
490         instead of cached_enable, cached_pidfile and cached_flags in
491         rc.conf.
492
493 20070921:
494         The getfacl(1) utility now prints owning user and group name
495         instead of owning uid and gid in the three line comment header.
496         This is the same behavior as getfacl(1) on Solaris and Linux.
497
498 20070704:
499         The new IPsec code is now compiled in using the IPSEC option.  The
500         IPSEC option now requires "device crypto" be defined in your kernel
501         configuration.  The FAST_IPSEC kernel option is now deprecated.
502
503 20070702:
504         The packet filter (pf) code has been updated to OpenBSD 4.1 Please
505         note the changed syntax - keep state is now on by default.  Also
506         note the fact that ftp-proxy(8) has been changed from bottom up and
507         has been moved from libexec to usr/sbin.  Changes in the ALTQ
508         handling also affect users of IPFW's ALTQ capabilities.
509
510 20070701:
511         Remove KAME IPsec in favor of FAST_IPSEC, which is now the
512         only IPsec supported by FreeBSD.  The new IPsec stack
513         supports both IPv4 and IPv6. The kernel option will change
514         after the code changes have settled in.  For now the kernel
515         option IPSEC is deprecated and FAST_IPSEC is the only option, that
516         will change after some settling time.
517
518 20070701:
519         The wicontrol(8) utility has been removed from the base system. wi(4)
520         cards should be configured using ifconfig(8), see the man page for more
521         information.
522
523 20070612:
524         The i386/amd64 GENERIC kernel now defaults to the nfe(4) driver
525         instead of the nve(4) driver. Please update your configuration
526         accordingly.
527
528 20070612:
529         By default, /etc/rc.d/sendmail no longer rebuilds the aliases
530         database if it is missing or older than the aliases file.  If
531         desired, set the new rc.conf option sendmail_rebuild_aliases
532         to "YES" to restore that functionality.
533
534 20070612:
535         The IPv4 multicast socket code has been considerably modified, and
536         moved to the file sys/netinet/in_mcast.c. Initial support for the
537         RFC 3678 Source-Specific Multicast Socket API has been added to
538         the IPv4 network stack.
539
540         Strict multicast and broadcast reception is now the default for
541         UDP/IPv4 sockets; the net.inet.udp.strict_mcast_mship sysctl variable
542         has now been removed.
543
544         The RFC 1724 hack for interface selection has been removed; the use
545         of the Linux-derived ip_mreqn structure with IP_MULTICAST_IF has
546         been added to replace it. Consumers such as routed will soon be
547         updated to reflect this.
548
549         These changes affect users who are running routed(8) or rdisc(8)
550         from the FreeBSD base system on point-to-point or unnumbered
551         interfaces.
552
553 20070610:
554         The net80211 layer has changed significantly and all wireless
555         drivers that depend on it need to be recompiled.  Further these
556         changes require that any program that interacts with the wireless
557         support in the kernel be recompiled; this includes: ifconfig,
558         wpa_supplicant, hostapd, and wlanstats.  Users must also, for
559         the moment, kldload the wlan_scan_sta and/or wlan_scan_ap modules
560         if they use modules for wireless support.  These modules implement
561         scanning support for station and ap modes, respectively.  Failure
562         to load the appropriate module before marking a wireless interface
563         up will result in a message to the console and the device not
564         operating properly.
565
566 20070610:
567         The pam_nologin(8) module ceases to provide an authentication
568         function and starts providing an account management function.
569         Consequent changes to /etc/pam.d should be brought in using
570         mergemaster(8).  Third-party files in /usr/local/etc/pam.d may
571         need manual editing as follows.  Locate this line (or similar):
572
573                 auth    required        pam_nologin.so  no_warn
574
575         and change it according to this example:
576
577                 account required        pam_nologin.so  no_warn
578
579         That is, the first word needs to be changed from "auth" to
580         "account".  The new line can be moved to the account section
581         within the file for clarity.  Not updating pam.conf(5) files
582         will result in nologin(5) ignored by the respective services.
583
584 20070529:
585         The ether_ioctl() function has been synchronized with ioctl(2)
586         and ifnet.if_ioctl.  Due to that, the size of one of its arguments
587         has changed on 64-bit architectures.  All kernel modules using
588         ether_ioctl() need to be rebuilt on such architectures.
589
590 20070516:
591         Improved INCLUDE_CONFIG_FILE support has been introduced to the
592         config(8) utility. In order to take advantage of this new
593         functionality, you are expected to recompile and install
594         src/usr.sbin/config. If you don't rebuild config(8), and your
595         kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel
596         build will be broken because of a missing "kernconfstring"
597         symbol.
598
599 20070513:
600         Symbol versioning is enabled by default.  To disable it, use
601         option WITHOUT_SYMVER.  It is not advisable to attempt to
602         disable symbol versioning once it is enabled; your installworld
603         will break because a symbol version-less libc will get installed
604         before the install tools.  As a result, the old install tools,
605         which previously had symbol dependencies to FBSD_1.0, will fail
606         because the freshly installed libc will not have them.
607
608         The default threading library (providing "libpthread") has been
609         changed to libthr.  If you wish to have libkse as your default,
610         use option DEFAULT_THREAD_LIB=libkse for the buildworld.
611
612 20070423:
613         The ABI breakage in sendmail(8)'s libmilter has been repaired
614         so it is no longer necessary to recompile mail filters (aka,
615         milters).  If you recompiled mail filters after the 20070408
616         note, it is not necessary to recompile them again.
617
618 20070417:
619         The new trunk(4) driver has been renamed to lagg(4) as it better
620         reflects its purpose. ifconfig will need to be recompiled.
621
622 20070408:
623         sendmail(8) has been updated to version 8.14.1.  Mail filters
624         (aka, milters) compiled against the libmilter included in the
625         base operating system should be recompiled.
626
627 20070302:
628         Firmwares for ipw(4) and iwi(4) are now included in the base tree.
629         In order to use them one must agree to the respective LICENSE in
630         share/doc/legal and define legal.intel_<name>.license_ack=1 via
631         loader.conf(5) or kenv(1).  Make sure to deinstall the now
632         deprecated modules from the respective firmware ports.
633
634 20070228:
635         The name resolution/mapping functions addr2ascii(3) and ascii2addr(3)
636         were removed from FreeBSD's libc. These originally came from INRIA
637         IPv6. Nothing in FreeBSD ever used them. They may be regarded as
638         deprecated in previous releases.
639         The AF_LINK support for getnameinfo(3) was merged from NetBSD to
640         replace it as a more portable (and re-entrant) API.
641
642 20070224:
643         To support interrupt filtering a modification to the newbus API
644         has occurred, ABI was broken and __FreeBSD_version was bumped
645         to 700031. Please make sure that your kernel and modules are in
646         sync. For more info:
647         http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941
648
649 20070224:
650         The IPv6 multicast forwarding code may now be loaded into GENERIC
651         kernels by loading the ip_mroute.ko module. This is built into the
652         module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are
653         set; see src.conf(5) for more information.
654
655 20070214:
656         The output of netstat -r has changed. Without -n, we now only
657         print a "network name" without the prefix length if the network
658         address and mask exactly match a Class A/B/C network, and an entry
659         exists in the nsswitch "networks" map.
660         With -n, we print the full unabbreviated CIDR network prefix in
661         the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default".
662         This change is in preparation for changes such as equal-cost
663         multipath, and to more generally assist operational deployment
664         of FreeBSD as a modern IPv4 router.
665
666 20070210:
667         PIM has been turned on by default in the IPv4 multicast
668         routing code. The kernel option 'PIM' has now been removed.
669         PIM is now built by default if option 'MROUTING' is specified.
670         It may now be loaded into GENERIC kernels by loading the
671         ip_mroute.ko module.
672
673 20070207:
674         Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing
675         has been removed. Its functionality may be achieved by explicitly
676         configuring gif(4) interfaces and using the 'phyint' keyword in
677         mrouted.conf.
678         XORP does not support source-routed IPv4 multicast tunnels nor the
679         integrated IPIP tunneling, therefore it is not affected by this
680         change. The __FreeBSD_version macro has been bumped to 700030.
681
682 20061221:
683         Support for PCI Message Signalled Interrupts has been
684         re-enabled in the bge driver, only for those chips which are
685         believed to support it properly.  If there are any problems,
686         MSI can be disabled completely by setting the
687         'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0
688         in the loader.
689
690 20061214:
691         Support for PCI Message Signalled Interrupts has been
692         disabled again in the bge driver.  Many revisions of the
693         hardware fail to support it properly.  Support can be
694         re-enabled by removing the #define of BGE_DISABLE_MSI in
695         "src/sys/dev/bge/if_bge.c".
696
697 20061214:
698         Support for PCI Message Signalled Interrupts has been added
699         to the bge driver.  If there are any problems, MSI can be
700         disabled completely by setting the 'hw.pci.enable_msi' and
701         'hw.pci.enable_msix' tunables to 0 in the loader.
702
703 20061205:
704         The removal of several facets of the experimental Threading
705         system from the kernel means that the proc and thread structures
706         have changed quite a bit. I suggest all kernel modules that might
707         reference these structures be recompiled.. Especially the
708         linux module.
709
710 20061126:
711         Sound infrastructure has been updated with various fixes and
712         improvements. Most of the changes are pretty much transparent,
713         with exceptions of followings:
714         1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been
715            moved to their own dev sysctl nodes, for example:
716                 hw.snd.pcm0.vchans -> dev.pcm.0.vchans
717         2) /dev/dspr%d.%d has been deprecated. Each channel now has its
718            own chardev in the form of "dsp%d.<function>%d", where <function>
719            is p = playback, r = record and v = virtual, respectively. Users
720            are encouraged to use these devs instead of (old) "/dev/dsp%d.%d".
721            This does not affect those who are using "/dev/dsp".
722
723 20061122:
724         geom(4)'s gmirror(8) class metadata structure has been
725         rev'd from v3 to v4. If you update across this point and
726         your metadata is converted for you, you will not be easily
727         able to downgrade since the /boot/kernel.old/geom_mirror.ko
728         kernel module will be unable to read the v4 metadata.  You
729         can resolve this by doing from the loader(8) prompt:
730
731                 set vfs.root.mountfrom="ufs:/dev/XXX"
732
733         where XXX is the root slice of one of the disks that composed
734         the mirror (i.e.: /dev/ad0s1a). You can then rebuild
735         the array the same way you built it originally.
736
737 20061122:
738         The following binaries have been disconnected from the build:
739         mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs,
740         and mount_std.  The functionality of these programs has been
741         moved into the mount program.  For example, to mount a devfs
742         filesystem, instead of using mount_devfs, use: "mount -t devfs".
743         This does not affect entries in /etc/fstab, since entries in
744         /etc/fstab are always processed with "mount -t fstype".
745
746 20061113:
747         Support for PCI Message Signalled Interrupts on i386 and amd64
748         has been added to the kernel and various drivers will soon be
749         updated to use MSI when it is available.  If there are any problems,
750         MSI can be disabled completely by setting the 'hw.pci.enable_msi'
751         and 'hw.pci.enable_msix' tunables to 0 in the loader.
752
753 20061110:
754         The MUTEX_PROFILING option has been renamed to LOCK_PROFILING.
755         The lockmgr object layout has been changed as a result of having
756         a lock_object embedded in it. As a consequence all file system
757         kernel modules must be re-compiled. The mutex profiling man page
758         has not yet been updated to reflect this change.
759
760 20061026:
761         KSE in the kernel has now been made optional and turned on by
762         default. Use 'nooption KSE' in your kernel config to turn it
763         off. All kernel modules *must* be recompiled after this change.
764         There-after, modules from a KSE kernel should be compatible with
765         modules from a NOKSE kernel due to the temporary padding fields
766         added to 'struct proc'.
767
768 20060929:
769         mrouted and its utilities have been removed from the base system.
770
771 20060927:
772         Some ioctl(2) command codes have changed.  Full backward ABI
773         compatibility is provided if the "options COMPAT_FREEBSD6" is
774         present in the kernel configuration file.  Make sure to add
775         this option to your kernel config file, or recompile X.Org
776         and the rest of ports; otherwise they may refuse to work.
777
778 20060924:
779         tcpslice has been removed from the base system.
780
781 20060913:
782         The sizes of struct tcpcb (and struct xtcpcb) have changed due to
783         the rewrite of TCP syncookies.  Tools like netstat, sockstat, and
784         systat needs to be rebuilt.
785
786 20060903:
787         libpcap updated to v0.9.4 and tcpdump to v3.9.4
788
789 20060816:
790         The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour
791         for IPFIREWALL_FORWARD is now as it was before when it was first
792         committed and for years after. The behaviour is now ON.
793
794 20060725:
795         enigma(1)/crypt(1) utility has been changed on 64 bit architectures.
796         Now it can decrypt files created from different architectures.
797         Unfortunately, it is no longer able to decrypt a cipher text
798         generated with an older version on 64 bit architectures.
799         If you have such a file, you need old utility to decrypt it.
800
801 20060709:
802         The interface version of the i4b kernel part has changed. So
803         after updating the kernel sources and compiling a new kernel,
804         the i4b user space tools in "/usr/src/usr.sbin/i4b" must also
805         be rebuilt, and vice versa.
806
807 20060627:
808         The XBOX kernel now defaults to the nfe(4) driver instead of
809         the nve(4) driver. Please update your configuration
810         accordingly.
811
812 20060514:
813         The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx
814         PCnet family of NICs has been removed. The new le(4) driver serves
815         as an equivalent but cross-platform replacement with the pcn(4)
816         driver still providing performance-optimized support for the subset
817         of AMD Am79C971 PCnet-FAST and greater chips as before.
818
819 20060511:
820         The machdep.* sysctls and the adjkerntz utility have been
821         modified a bit.  The new adjkerntz utility uses the new
822         sysctl names and sysctlbyname() calls, so it may be impossible
823         to run an old /sbin/adjkerntz utility in single-user mode
824         with a new kernel.  Replace the `adjkerntz -i' step before
825         `make installworld' with:
826
827             /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i
828
829         and proceed as usual with the rest of the installworld-stage
830         steps.  Otherwise, you risk installing binaries with their
831         timestamp set several hours in the future, especially if
832         you are running with local time set to GMT+X hours.
833
834 20060412:
835         The ip6fw utility has been removed.  The behavior provided by
836         ip6fw has been in ipfw2 for a good while and the rc.d scripts
837         have been updated to deal with it.  There are some rules that
838         might not migrate cleanly.  Use rc.firewall6 as a template to
839         rewrite rules.
840
841 20060428:
842         The puc(4) driver has been overhauled. The ebus(4) and sbus(4)
843         attachments have been removed. Make sure to configure scc(4)
844         on sparc64. Note also that by default puc(4) will use uart(4)
845         and not sio(4) for serial ports because interrupt handling has
846         been optimized for multi-port serial cards and only uart(4)
847         implements the interface to support it.
848
849 20060330:
850         The scc(4) driver replaces puc(4) for Serial Communications
851         Controllers (SCCs) like the Siemens SAB82532 and the Zilog
852         Z8530. On sparc64, it is advised to add scc(4) to the kernel
853         configuration to make sure that the serial ports remain
854         functional.
855
856 20060317:
857         Most world/kernel related NO_* build options changed names.
858         New knobs have common prefixes WITHOUT_*/WITH_* (modelled
859         after FreeBSD ports) and should be set in /etc/src.conf
860         (the src.conf(5) manpage is provided).  Full backwards
861         compatibility is maintained for the time being though it's
862         highly recommended to start moving old options out of the
863         system-wide /etc/make.conf file into the new /etc/src.conf
864         while also properly renaming them.  More conversions will
865         likely follow.  Posting to current@:
866
867         http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
868
869 20060305:
870         The NETSMBCRYPTO kernel option has been retired because its
871         functionality is always included in NETSMB and smbfs.ko now.
872
873 20060303:
874         The TDFX_LINUX kernel option was retired and replaced by the
875         tdfx_linux device.  The latter can be loaded as the 3dfx_linux.ko
876         kernel module.  Loading it alone should suffice to get 3dfx support
877         for Linux apps because it will pull in 3dfx.ko and linux.ko through
878         its dependencies.
879
880 20060204:
881         The 'audit' group was added to support the new auditing functionality
882         in the base system.  Be sure to follow the directions for updating,
883         including the requirement to run mergemaster -p.
884
885 20060201:
886         The kernel ABI to file system modules was changed on i386.
887         Please make sure that your kernel and modules are in sync.
888
889 20060118:
890         This actually occured some time ago, but installing the kernel
891         now also installs a bunch of symbol files for the kernel modules.
892         This increases the size of /boot/kernel to about 67Mbytes. You
893         will need twice this if you will eventually back this up to kernel.old
894         on your next install.
895         If you have a shortage of room in your root partition, you should add
896         -DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
897         to your /etc/make.conf.
898
899 20060113:
900         libc's malloc implementation has been replaced.  This change has the
901         potential to uncover application bugs that previously went unnoticed.
902         See the malloc(3) manual page for more details.
903
904 20060112:
905         The generic netgraph(4) cookie has been changed. If you upgrade
906         kernel passing this point, you also need to upgrade userland
907         and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4.
908
909 20060106:
910         si(4)'s device files now contain the unit number.
911         Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f].
912
913 20060106:
914         The kernel ABI was mostly destroyed due to a change in the size
915         of struct lock_object which is nested in other structures such
916         as mutexes which are nested in all sorts of other structures.
917         Make sure your kernel and modules are in sync.
918
919 20051231:
920         The page coloring algorithm in the VM subsystem was converted
921         from tuning with kernel options to autotuning. Please remove
922         any PQ_* option except PQ_NOOPT from your kernel config.
923
924 20051211:
925         The net80211-related tools in the tools/tools/ath directory
926         have been moved to tools/tools/net80211 and renamed with a
927         "wlan" prefix.  Scripts that use them should be adjusted
928         accordingly.
929
930 20051202:
931         Scripts in the local_startup directories (as defined in
932         /etc/defaults/rc.conf) that have the new rc.d semantics will
933         now be run as part of the base system rcorder. If there are
934         errors or problems with one of these local scripts, it could
935         cause boot problems. If you encounter such problems, boot in
936         single user mode, remove that script from the */rc.d directory.
937         Please report the problem to the port's maintainer, and the
938         freebsd-ports@freebsd.org mailing list.
939
940 20051129:
941         The nodev mount option was deprecated in RELENG_6 (where it
942         was a no-op), and is now unsupported.  If you have nodev or dev listed
943         in /etc/fstab, remove it, otherwise it will result in a mount error.
944
945 20051129:
946         ABI between ipfw(4) and ipfw(8) has been changed. You need
947         to rebuild ipfw(8) when rebuilding kernel.
948
949 20051108:
950         rp(4)'s device files now contain the unit number.
951         Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f].
952
953 20051029:
954         /etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp.
955         Its /etc/rc.conf.d configuration file has been `ppp' from
956         the beginning, and hence there is no need to touch it.
957
958 20051014:
959         Now most modules get their build-time options from the kernel
960         configuration file.  A few modules still have fixed options
961         due to their non-conformant implementation, but they will be
962         corrected eventually.  You may need to review the options of
963         the modules in use, explicitly specify the non-default options
964         in the kernel configuration file, and rebuild the kernel and
965         modules afterwards.
966
967 20051001:
968         kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
969         to turn polling(4) on your interfaces.
970
971 20050927:
972         The old bridge(4) implementation was retired.  The new
973         if_bridge(4) serves as a full functional replacement.
974
975 20050722:
976         The ai_addrlen of a struct addrinfo was changed to a socklen_t
977         to conform to POSIX-2001.  This change broke an ABI
978         compatibility on 64 bit architecture.  You have to recompile
979         userland programs that use getaddrinfo(3) on 64 bit
980         architecture.
981
982 20050711:
983         RELENG_6 branched here.
984
985 20050629:
986         The pccard_ifconfig rc.conf variable has been removed and a new
987         variable, ifconfig_DEFAULT has been introduced.  Unlike
988         pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that
989         do not have ifconfig_ifn entries rather than just those in
990         removable_interfaces.
991
992 20050616:
993         Some previous versions of PAM have permitted the use of
994         non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring
995         to third party PAM modules in /usr/local/lib.  A change has been
996         made to require the use of absolute paths in order to avoid
997         ambiguity and dependence on library path configuration, which may
998         affect existing configurations.
999
1000 20050610:
1001         Major changes to network interface API.  All drivers must be
1002         recompiled.  Drivers not in the base system will need to be
1003         updated to the new APIs.
1004
1005 20050609:
1006         Changes were made to kinfo_proc in sys/user.h.  Please recompile
1007         userland, or commands like `fstat', `pkill', `ps', `top' and `w'
1008         will not behave correctly.
1009
1010         The API and ABI for hwpmc(4) have changed with the addition
1011         of sampling support.  Please recompile lib/libpmc(3) and
1012         usr.sbin/{pmcstat,pmccontrol}.
1013
1014 20050606:
1015         The OpenBSD dhclient was imported in place of the ISC dhclient
1016         and the network interface configuration scripts were updated
1017         accordingly.  If you use DHCP to configure your interfaces, you
1018         must now run devd.  Also, DNS updating was lost so you will need
1019         to find a workaround if you use this feature.
1020
1021         The '_dhcp' user was added to support the OpenBSD dhclient.  Be
1022         sure to run mergemaster -p (like you are supposed to do every time
1023         anyway).
1024
1025 20050605:
1026         if_bridge was added to the tree. This has changed struct ifnet.
1027         Please recompile userland and all network related modules.
1028
1029 20050603:
1030         The n_net of a struct netent was changed to an uint32_t, and
1031         1st argument of getnetbyaddr() was changed to an uint32_t, to
1032         conform to POSIX-2001.  These changes broke an ABI
1033         compatibility on 64 bit architecture.  With these changes,
1034         shlib major of libpcap was bumped.  You have to recompile
1035         userland programs that use getnetbyaddr(3), getnetbyname(3),
1036         getnetent(3) and/or libpcap on 64 bit architecture.
1037
1038 20050528:
1039         Kernel parsing of extra options on '#!' first lines of shell
1040         scripts has changed.  Lines with multiple options likely will
1041         fail after this date.  For full details, please see
1042                 http://people.freebsd.org/~gad/Updating-20050528.txt
1043
1044 20050503:
1045         The packet filter (pf) code has been updated to OpenBSD 3.7
1046         Please note the changed anchor syntax and the fact that
1047         authpf(8) now needs a mounted fdescfs(5) to function.
1048
1049 20050415:
1050         The NO_MIXED_MODE kernel option has been removed from the i386
1051         amd64 platforms as its use has been superceded by the new local
1052         APIC timer code.  Any kernel config files containing this option
1053         should be updated.
1054
1055 20050227:
1056         The on-disk format of LC_CTYPE files was changed to be machine
1057         independent.  Please make sure NOT to use NO_CLEAN buildworld
1058         when crossing this point. Crossing this point also requires
1059         recompile or reinstall of all locale depended packages.
1060
1061 20050225:
1062         The ifi_epoch member of struct if_data has been changed to
1063         contain the uptime at which the interface was created or the
1064         statistics zeroed rather then the wall clock time because
1065         wallclock time may go backwards.  This should have no impact
1066         unless an snmp implementation is using this value (I know of
1067         none at this point.)
1068
1069 20050224:
1070         The acpi_perf and acpi_throttle drivers are now part of the
1071         acpi(4) main module.  They are no longer built separately.
1072
1073 20050223:
1074         The layout of struct image_params has changed. You have to
1075         recompile all compatibility modules (linux, svr4, etc) for use
1076         with the new kernel.
1077
1078 20050223:
1079         The p4tcc driver has been merged into cpufreq(4).  This makes
1080         "options CPU_ENABLE_TCC" obsolete.  Please load cpufreq.ko or
1081         compile in "device cpufreq" to restore this functionality.
1082
1083 20050220:
1084         The responsibility of recomputing the file system summary of
1085         a SoftUpdates-enabled dirty volume has been transferred to the
1086         background fsck.  A rebuild of fsck(8) utility is recommended
1087         if you have updated the kernel.
1088
1089         To get the old behavior (recompute file system summary at mount
1090         time), you can set vfs.ffs.compute_summary_at_mount=1 before
1091         mounting the new volume.
1092
1093 20050206:
1094         The cpufreq import is complete.  As part of this, the sysctls for
1095         acpi(4) throttling have been removed.  The power_profile script
1096         has been updated, so you can use performance/economy_cpu_freq in
1097         rc.conf(5) to set AC on/offline cpu frequencies.
1098
1099 20050206:
1100         NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko)
1101         requires recompiling libnetgraph and userland netgraph utilities.
1102
1103 20050114:
1104         Support for abbreviated forms of a number of ipfw options is
1105         now deprecated.  Warnings are printed to stderr indicating the
1106         correct full form when a match occurs.  Some abbreviations may
1107         be supported at a later date based on user feedback.  To be
1108         considered for support, abbreviations must be in use prior to
1109         this commit and unlikely to be confused with current key words.
1110
1111 20041221:
1112         By a popular demand, a lot of NOFOO options were renamed
1113         to NO_FOO (see bsd.compat.mk for a full list).  The old
1114         spellings are still supported, but will cause annoying
1115         warnings on stderr.  Make sure you upgrade properly (see
1116         the COMMON ITEMS: section later in this file).
1117
1118 20041219:
1119         Auto-loading of ancillary wlan modules such as wlan_wep has
1120         been temporarily disabled; you need to statically configure
1121         the modules you need into your kernel or explicitly load them
1122         prior to use.  Specifically, if you intend to use WEP encryption
1123         with an 802.11 device load/configure wlan_wep; if you want to
1124         use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp,
1125         and wlan_xauth as required.
1126
1127 20041213:
1128         The behaviour of ppp(8) has changed slightly.  If lqr is enabled
1129         (``enable lqr''), older versions would revert to LCP ECHO mode on
1130         negotiation failure.  Now, ``enable echo'' is required for this
1131         behaviour.  The ppp version number has been bumped to 3.4.2 to
1132         reflect the change.
1133
1134 20041201:
1135         The wlan support has been updated to split the crypto support
1136         into separate modules.  For static WEP you must configure the
1137         wlan_wep module in your system or build and install the module
1138         in place where it can be loaded (the kernel will auto-load
1139         the module when a wep key is configured).
1140
1141 20041201:
1142         The ath driver has been updated to split the tx rate control
1143         algorithm into a separate module.  You need to include either
1144         ath_rate_onoe or ath_rate_amrr when configuring the kernel.
1145
1146 20041116:
1147         Support for systems with an 80386 CPU has been removed.  Please
1148         use FreeBSD 5.x or earlier on systems with an 80386.
1149
1150 20041110:
1151         We have had a hack which would mount the root filesystem
1152         R/W if the device were named 'md*'.  As part of the vnode
1153         work I'm doing I have had to remove this hack.  People
1154         building systems which use preloaded MD root filesystems
1155         may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in
1156         their /etc/rc scripts.
1157
1158 20041104:
1159         FreeBSD 5.3 shipped here.
1160
1161 20041102:
1162         The size of struct tcpcb has changed again due to the removal
1163         of RFC1644 T/TCP.  You have to recompile userland programs that
1164         read kmem for tcp sockets directly (netstat, sockstat, etc.)
1165
1166 20041022:
1167         The size of struct tcpcb has changed.  You have to recompile
1168         userland programs that read kmem for tcp sockets directly
1169         (netstat, sockstat, etc.)
1170
1171 20041016:
1172         RELENG_5 branched here.  For older entries, please see updating
1173         in the RELENG_5 branch.
1174
1175 COMMON ITEMS:
1176
1177         General Notes
1178         -------------
1179         Avoid using make -j when upgrading.  From time to time in the
1180         past there have been problems using -j with buildworld and/or
1181         installworld.  This is especially true when upgrading between
1182         "distant" versions (eg one that cross a major release boundary
1183         or several minor releases, or when several months have passed
1184         on the -current branch).
1185
1186         Sometimes, obscure build problems are the result of environment
1187         poisoning.  This can happen because the make utility reads its
1188         environment when searching for values for global variables.
1189         To run your build attempts in an "environmental clean room",
1190         prefix all make commands with 'env -i '.  See the env(1) manual
1191         page for more details.
1192
1193         When upgrading from one major version to another it is generally
1194         best to upgrade to the latest code in the currently installed branch
1195         first, then do an upgrade to the new branch. This is the best-tested
1196         upgrade path, and has the highest probability of being successful.
1197         Please try this approach before reporting problems with a major
1198         version upgrade.
1199
1200         To build a kernel
1201         -----------------
1202         If you are updating from a prior version of FreeBSD (even one just
1203         a few days old), you should follow this procedure.  It is the most
1204         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1205
1206         make kernel-toolchain
1207         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1208         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1209
1210         To test a kernel once
1211         ---------------------
1212         If you just want to boot a kernel once (because you are not sure
1213         if it works, or if you want to boot a known bad kernel to provide
1214         debugging information) run
1215         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1216         nextboot -k testkernel
1217
1218         To just build a kernel when you know that it won't mess you up
1219         --------------------------------------------------------------
1220         This assumes you are already running a 5.X system.  Replace
1221         ${arch} with the architecture of your machine (e.g. "i386",
1222         "alpha", "amd64", "ia64", "pc98", "sparc64", etc).
1223
1224         cd src/sys/${arch}/conf
1225         config KERNEL_NAME_HERE
1226         cd ../compile/KERNEL_NAME_HERE
1227         make depend
1228         make
1229         make install
1230
1231         If this fails, go to the "To build a kernel" section.
1232
1233         To rebuild everything and install it on the current system.
1234         -----------------------------------------------------------
1235         # Note: sometimes if you are running current you gotta do more than
1236         # is listed here if you are upgrading from a really old current.
1237
1238         <make sure you have good level 0 dumps>
1239         make buildworld
1240         make kernel KERNCONF=YOUR_KERNEL_HERE
1241                                                         [1]
1242         <reboot in single user>                         [3]
1243         mergemaster -p                                  [5]
1244         make installworld
1245         make delete-old
1246         mergemaster                                     [4]
1247         <reboot>
1248
1249
1250         To cross-install current onto a separate partition
1251         --------------------------------------------------
1252         # In this approach we use a separate partition to hold
1253         # current's root, 'usr', and 'var' directories.   A partition
1254         # holding "/", "/usr" and "/var" should be about 2GB in
1255         # size.
1256
1257         <make sure you have good level 0 dumps>
1258         <boot into -stable>
1259         make buildworld
1260         make buildkernel KERNCONF=YOUR_KERNEL_HERE
1261         <maybe newfs current's root partition>
1262         <mount current's root partition on directory ${CURRENT_ROOT}>
1263         make installworld DESTDIR=${CURRENT_ROOT}
1264         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1265         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1266         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
1267         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1268         <reboot into current>
1269         <do a "native" rebuild/install as described in the previous section>
1270         <maybe install compatibility libraries from ports/misc/compat*>
1271         <reboot>
1272
1273
1274         To upgrade in-place from 5.x-stable to current
1275         ----------------------------------------------
1276         <make sure you have good level 0 dumps>
1277         make buildworld                                 [9]
1278         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
1279                                                         [1]
1280         <reboot in single user>                         [3]
1281         mergemaster -p                                  [5]
1282         make installworld
1283         make delete-old
1284         mergemaster -i                                  [4]
1285         <reboot>
1286
1287         Make sure that you've read the UPDATING file to understand the
1288         tweaks to various things you need.  At this point in the life
1289         cycle of current, things change often and you are on your own
1290         to cope.  The defaults can also change, so please read ALL of
1291         the UPDATING entries.
1292
1293         Also, if you are tracking -current, you must be subscribed to
1294         freebsd-current@freebsd.org.  Make sure that before you update
1295         your sources that you have read and understood all the recent
1296         messages there.  If in doubt, please track -stable which has
1297         much fewer pitfalls.
1298
1299         [1] If you have third party modules, such as vmware, you
1300         should disable them at this point so they don't crash your
1301         system on reboot.
1302
1303         [3] From the bootblocks, boot -s, and then do
1304                 fsck -p
1305                 mount -u /
1306                 mount -a
1307                 cd src
1308                 adjkerntz -i            # if CMOS is wall time
1309         Also, when doing a major release upgrade, it is required that
1310         you boot into single user mode to do the installworld.
1311
1312         [4] Note: This step is non-optional.  Failure to do this step
1313         can result in a significant reduction in the functionality of the
1314         system.  Attempting to do it by hand is not recommended and those
1315         that pursue this avenue should read this file carefully, as well
1316         as the archives of freebsd-current and freebsd-hackers mailing lists
1317         for potential gotchas.
1318
1319         [5] Usually this step is a noop.  However, from time to time
1320         you may need to do this if you get unknown user in the following
1321         step.  It never hurts to do it all the time.  You may need to
1322         install a new mergemaster (cd src/usr.sbin/mergemaster && make
1323         install) after the buildworld before this step if you last updated
1324         from current before 20020224 or from -stable before 20020408.
1325
1326         [8] In order to have a kernel that can run the 4.x binaries
1327         needed to do an installworld, you must include the COMPAT_FREEBSD4
1328         option in your kernel.  Failure to do so may leave you with a system
1329         that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5
1330         is required to run the 5.x binaries on more recent kernels.
1331
1332         Make sure that you merge any new devices from GENERIC since the
1333         last time you updated your kernel config file.
1334
1335         [9] When checking out sources, you must include the -P flag to have
1336         cvs prune empty directories.
1337
1338         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1339         "?=" instead of the "=" assignment operator, so that buildworld can
1340         override the CPUTYPE if it needs to.
1341
1342         MAKEOBJDIRPREFIX must be defined in an environment variable, and
1343         not on the command line, or in /etc/make.conf.  buildworld will
1344         warn if it is improperly defined.
1345 FORMAT:
1346
1347 This file contains a list, in reverse chronological order, of major
1348 breakages in tracking -current.  Not all things will be listed here,
1349 and it only starts on October 16, 2004.  Updating files can found in
1350 previous releases if your system is older than this.
1351
1352 Copyright information:
1353
1354 Copyright 1998-2005 M. Warner Losh.  All Rights Reserved.
1355
1356 Redistribution, publication, translation and use, with or without
1357 modification, in full or in part, in any form or format of this
1358 document are permitted without further permission from the author.
1359
1360 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1361 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1362 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1363 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1364 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1365 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1366 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1367 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1368 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1369 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1370 POSSIBILITY OF SUCH DAMAGE.
1371
1372 If you find this document useful, and you want to, you may buy the
1373 author a beer.
1374
1375 Contact Warner Losh if you have any questions about your use of
1376 this document.
1377
1378 $FreeBSD$