]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/blob - UPDATING
Added ZFS TRIM support which is enabled by default. To disable
[FreeBSD/stable/8.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 ON IA64 OR SUN4V:
12         For ia64 the INVARIANTS and INVARIANT_SUPPORT kernel options
13         were left in the GENERIC kernel because the kernel does not
14         work properly without them.  For sun4v all of the normal kernel
15         debugging tools present in HEAD were left in place because
16         sun4v support still needs work to become production ready.
17
18 20130624:
19         Added ZFS TRIM support which is enabled by default. To disable
20         ZFS TRIM support set vfs.zfs.trim.enabled=0 in loader.conf.
21
22         Creating new ZFS pools and adding new devices to existing pools
23         first performs a full device level TRIM, which can take a significant
24         amount of time. Set the sysctl vfs.zfs.vdev.trim_on_init to 0 to
25         disable this behaviour.
26
27         ZFS TRIM requires the underlying device support BIO_DELETE which
28         is currently provided by methods such as ATA TRIM and SCSI UNMAP
29         via CAM, which are typically supported by SSD's.
30
31         Stats for ZFS TRIM can be monitored by looking at the sysctl's
32         under kstat.zfs.misc.zio_trim.
33
34 20130607:
35         8.4-RELEASE.
36
37 20130524:
38         `list' command has been added to hastctl(8).  For now, it is full
39         equivalent of `status' command.
40         WARNING: in the near future the output of hastctl's status command
41         will change to more terse format.  If you use `hastctl status'
42         for parsing in your scripts, switch to `hastctl list'.
43
44 20130429:
45         Fix a bug that allows NFS clients to issue READDIR on files.
46
47 20130225:
48         A new compression method (lz4) has been merged.  Please refer to
49         zpool-features(7) for more information.
50
51         Please refer to the "ZFS notes" section of this file for information
52         on upgrading boot ZFS pools.
53
54 20121130:
55         A new version of ZFS (pool version 5000) has been merged to 8-STABLE.
56         Starting with this version the old system of ZFS pool versioning
57         is superseded by "feature flags". This concept enables forward
58         compatibility against certain future changes in functionality of ZFS
59         pools. The first two read-only compatible "feature flags" for ZFS
60         pools are "com.delphix:async_destroy" and "com.delphix:empty_bpobj".
61         For more information read the new zpool-features(7) manual page.
62         Please refer to the "ZFS notes" section of this file for information
63         on upgrading boot ZFS pools.
64
65 20121018:
66         WITH_CTF can now be specified in src.conf (not recommended, there
67         are some problems with static executables), make.conf (would also
68         affect ports which do not use GNU make and do not override the
69         compile targets) or in the kernel config (via "makeoptions
70         WITH_CTF=yes").
71         When WITH_CTF was specified there before this was silently ignored,
72         so make sure that WITH_CTF is not used in places which could lead
73         to unwanted behavior.
74
75 20120913:
76         The random(4) support for the VIA hardware random number
77         generator (`PADLOCK') is no longer enabled unconditionally.
78         Add the PADLOCK_RNG option in the custom kernel config if
79         needed.  The GENERIC kernels on i386 and amd64 do include the
80         option, so the change only affects the custom kernel
81         configurations.
82
83 20120727:
84         The sparc64 ZFS loader has been changed to no longer try to auto-
85         detect ZFS providers based on diskN aliases but now requires these
86         to be explicitly listed in the OFW boot-device environment variable.
87
88 20120411:
89         8.3-RELEASE.
90
91 20120106:
92         A new VOP_ADVISE() was added to support posix_fadvise(2).  All
93         filesystem modules must be recompiled.
94
95 20111116:
96         A new VOP_ALLOCATE() was added to support posix_fallocate(2).  All
97         filesystem modules must be recompiled.
98
99 20111101:
100         The broken amd(4) driver has been replaced with esp(4) in the amd64,
101         i386 and pc98 GENERIC kernel configuration files.
102
103 20110606:
104         A new version of ZFS (version 28) has been merged.
105         This version does not depend on a python library and the
106         sysutils/py-zfs port is not used anymore.
107         For upgrading your boot pool, please read "ZFS notes"
108         in the COMMON ITEMS: section later in this file.
109
110 20110428:
111         IPsec's HMAC_SHA256-512 support has been fixed to be RFC4868
112         compliant, and will now use half of hash for authentication.
113         This will break interoperability with all stacks (including all
114         older FreeBSD versions) who implement
115         draft-ietf-ipsec-ciph-sha-256-00 (they use 96 bits of hash for
116         authentication).
117         The only workaround with such peers is to use another HMAC
118         algorithm for IPsec ("phase 2") authentication.
119
120 20110221:
121         8.2-RELEASE.
122
123 20101126:
124         New version of minidump format for amd64 architecture was
125         introduced in r215872.  To analyze vmcore files produced by
126         kernels at or after this version you will need updated userland,
127         libkvm actually, that is able to handle the new version.
128
129 20101022:
130         A workaround for a fixed ld bug has been removed in kernel code,
131         so make sure that your system ld is built from sources after
132         revision 211583 from 2010-08-21 (r210245 from 2010-07-19 if
133         building stable/8 kernel on head, r211584 from 2010-08-21 for
134         stable/7).  A symptom of incorrect ld version is
135         different addresses for set_pcpu section and __start_set_pcpu
136         symbol in kernel and/or modules.
137
138 20100915:
139         A new version of ZFS (version 15) has been merged.
140         This version uses a python library for the following subcommands:
141         zfs allow, zfs unallow, zfs groupspace, zfs userspace.
142         For full functionality of these commands the following port must
143         be installed: sysutils/py-zfs
144
145 20100720:
146         8.1-RELEASE.
147
148 20100502:
149         The config(8) command has been updated to maintain compatibility
150         with config files from 8.0-RELEASE.  You will need a new version
151         of config to build kernels (this version can be used from 8.0-RELEASE
152         forward).  The buildworld target will generate it, so following
153         the instructions in this file for updating will work glitch-free.
154         Merely doing a make buildkernel without first doing a make buildworld
155         (or kernel-toolchain), or attempting to build a kernel using
156         traidtional methods will generate a config version warning, indicating
157         you should update.
158
159 20100408:
160         The rc.firewall and rc.firewall6 were unified, and
161         rc.firewall6 and rc.d/ip6fw were removed.
162         According to the removal of rc.d/ip6fw, ipv6_firewall_* rc
163         variables are obsoleted.  Instead, the following new rc
164         variables are added to rc.d/ipfw:
165
166                 firewall_client_net_ipv6, firewall_simple_iif_ipv6,
167                 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6,
168                 firewall_simple_onet_ipv6
169
170         The meanings correspond to the relevant IPv4 variables.
171
172 20100417:
173         COMPAT_IA32 has been added as an alias for COMPAT_FREEBSD32.  A new
174         version of config(8) is required.  The error message when you hit this
175         condition is confusing (COMPAT_FREEBSD32 duplicate option), when it
176         should really say "your config is too old to compile this new kernel."
177
178 20100406:
179         The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32
180         to allow 32-bit compatibility on non-x86 platforms. All kernel
181         configurations on amd64 and ia64 platforms using these options must
182         be modified accordingly.
183
184 20100125:
185         Introduce the kernel thread "deadlock resolver" (which can be enabled
186         via the DEADLKRES option, see NOTES for more details) and the
187         sleepq_type() function for sleepqueues.
188
189 20091125:
190         8.0-RELEASE.
191
192 20090929:
193         802.11s D3.03 support was committed. This is incompatible with
194         the previous code, which was based on D3.0.
195
196 20090915:
197         ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for
198         mount(8) and -a option for df(1) to see them.
199
200 20090813:
201         Remove the option STOP_NMI.  The default action is now to use NMI
202         only for KDB via the newly introduced function stop_cpus_hard()
203         and maintain stop_cpus() to just use a normal IPI_STOP on ia32
204         and amd64.
205
206 20090803:
207         RELENG_8 branched.
208
209 20090719:
210         Bump the shared library version numbers for all libraries that
211         do not use symbol versioning as part of the 8.0-RELEASE cycle.
212         Bump __FreeBSD_version to 800105.
213
214 20090714:
215         Due to changes in the implementation of virtual network stack
216         support, all network-related kernel modules must be recompiled.
217         As this change breaks the ABI, bump __FreeBSD_version to 800104.
218
219 20090713:
220         The TOE interface to the TCP syncache has been modified to remove struct
221         tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack.  The
222         cxgb driver is the only TOE consumer affected by this change, and needs
223         to be recompiled along with the kernel. As this change breaks the ABI,
224         bump __FreeBSD_version to 800103.
225
226 20090712:
227         Padding has been added to struct tcpcb, sackhint and tcpstat in
228         <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst
229         maintainig the ABI. However, this change breaks the ABI, so bump
230         __FreeBSD_version to 800102. User space tools that rely on the size of
231         any of these structs (e.g. sockstat) need to be recompiled.
232
233 20090630:
234         The NFS_LEGACYRPC option has been removed along with the old
235         kernel RPC implementation that this option selected. Kernel
236         configurations may need to be adjusted.
237
238 20090629:
239         The network interface device nodes at /dev/net/<interface> have
240         been removed.  All ioctl operations can be performed the normal
241         way using routing sockets.  The kqueue functionality can
242         generally be replaced with routing sockets.
243
244 20090628:
245         The documentation from the FreeBSD Documentation Project
246         (Handbook, FAQ, etc.) is now installed via packages by
247         sysinstall(8) and under the /usr/local/share/doc/freebsd
248         directory instead of /usr/share/doc.
249
250 20090624:
251         The ABI of various structures related to the SYSV IPC API have
252         been changed.  As a result, the COMPAT_FREEBSD[456] and COMPAT_43
253         kernel options now all require COMPAT_FREEBSD7.
254         Bump __FreeBSD_version to 800100.
255
256 20090622:
257         Layout of struct vnet has changed as routing related variables
258         were moved to their own Vimage module. Modules need to be
259         recompiled.  Bump __FreeBSD_version to 800099.
260
261 20090619:
262         NGROUPS_MAX and NGROUPS have been increased from 16 to 1023
263         and 1024 respectively.  As long as no more than 16 groups per
264         process are used, no changes should be visible.  When more
265         than 16 groups are used, old binaries may fail if they call
266         getgroups() or getgrouplist() with statically sized storage.
267         Recompiling will work around this, but applications should be
268         modified to use dynamically allocated storage for group arrays
269         as POSIX.1-2008 does not cap an implementation's number of
270         supported groups at NGROUPS_MAX+1 as previous versions did.
271
272         NFS and portalfs mounts may also be affected as the list of
273         groups is truncated to 16.  Users of NFS who use more than 16
274         groups, should take care that negative group permissions are not
275         used on the exported file systems as they will not be reliable
276         unless a GSSAPI based authentication method is used.
277
278 20090616:
279         The compiling option ADAPTIVE_LOCKMGRS has been introduced.
280         This option compiles in the support for adaptive spinning for lockmgrs
281         which want to enable it.  The lockinit() function now accepts the
282         flag LK_ADAPTIVE in order to make the lock object subject to
283         adaptive spinning when both held in write and read mode.
284
285 20090613:
286         The layout of the structure returned by IEEE80211_IOC_STA_INFO
287         has changed.  User applications that use this ioctl need to be
288         rebuilt.
289
290 20090611:
291         The layout of struct thread has changed.  Kernel and modules
292         need to be rebuilt.
293
294 20090608:
295         The layout of structs ifnet, domain, protosw and vnet_net has
296         changed.  Kernel modules need to be rebuilt.
297         Bump __FreeBSD_version to 800097.
298
299 20090602:
300         window(1) has been removed from the base system. It can now be
301         installed from ports. The port is called misc/window.
302
303 20090601:
304         The way we are storing and accessing `routing table' entries
305         has changed. Programs reading the FIB, like netstat, need to
306         be re-compiled.
307
308 20090601:
309         A new netisr implementation has been added for FreeBSD 8.  Network
310         file system modules, such as igmp, ipdivert, and others, should be
311         rebuilt.
312         Bump __FreeBSD_version to 800096.
313
314 20090530:
315         Remove the tunable/sysctl debug.mpsafevfs as its initial purpose
316         is no more valid.
317
318 20090530:
319         Add VOP_ACCESSX(9).  File system modules need to be rebuilt.
320         Bump __FreeBSD_version to 800094.
321
322 20090529:
323         Add mnt_xflag field to 'struct mount'.  File system modules
324         need to be rebuilt.
325         Bump __FreeBSD_version to 800093.
326
327 20090528:
328         The compiling option ADAPTIVE_SX has been retired while it has been
329         introduced the option NO_ADAPTIVE_SX which handles the reversed logic.
330         The KPI for sx_init_flags() changes as accepting flags:
331         SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag
332         has been introduced in order to handle the reversed logic.
333         Bump __FreeBSD_version to 800092.
334
335 20090527:
336         Add support for hierarchical jails.  Remove global securelevel.
337         Bump __FreeBSD_version to 800091.
338
339 20090523:
340         The layout of struct vnet_net has changed, therefore modules
341         need to be rebuilt.
342         Bump __FreeBSD_version to 800090.
343
344 20090523:
345         The newly imported zic(8) produces a new format in the
346         output. Please run tzsetup(8) to install the newly created
347         data to /etc/localtime.
348
349 20090520:
350         The sysctl tree for the usb stack has renamed from hw.usb2.* to
351         hw.usb.* and is now consistent again with previous releases.
352
353 20090520:
354         802.11 monitor mode support was revised and driver api's
355         were changed.  Drivers dependent on net80211 now support
356         DLT_IEEE802_11_RADIO instead of DLT_IEEE802_11.  No
357         user-visible data structures were changed but applications
358         that use DLT_IEEE802_11 may require changes.
359         Bump __FreeBSD_version to 800088.
360
361 20090430:
362         The layout of the following structs has changed: sysctl_oid,
363         socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet,
364         vnet_inet6 and vnet_ipfw.  Most modules need to be rebuild or
365         panics may be experienced.  World rebuild is required for
366         correctly checking networking state from userland.
367         Bump __FreeBSD_version to 800085.
368
369 20090429:
370         MLDv2 and Source-Specific Multicast (SSM) have been merged
371         to the IPv6 stack. VIMAGE hooks are in but not yet used.
372         The implementation of SSM within FreeBSD's IPv6 stack closely
373         follows the IPv4 implementation.
374
375         For kernel developers:
376
377         * The most important changes are that the ip6_output() and
378           ip6_input() paths no longer take the IN6_MULTI_LOCK,
379           and this lock has been downgraded to a non-recursive mutex.
380
381         * As with the changes to the IPv4 stack to support SSM, filtering
382           of inbound multicast traffic must now be performed by transport
383           protocols within the IPv6 stack. This does not apply to TCP and
384           SCTP, however, it does apply to UDP in IPv6 and raw IPv6.
385
386         * The KPIs used by IPv6 multicast are similar to those used by
387           the IPv4 stack, with the following differences:
388            * im6o_mc_filter() is analogous to imo_multicast_filter().
389            * The legacy KAME entry points in6_joingroup and in6_leavegroup()
390              are shimmed to in6_mc_join() and in6_mc_leave() respectively.
391            * IN6_LOOKUP_MULTI() has been deprecated and removed.
392            * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs
393              for MLDv1 have an additional 'timer' argument which is used to
394              jitter the initial membership report for the solicited-node
395              multicast membership on-link.
396            * This is not strictly needed for MLDv2, which already jitters
397              its report transmissions.  However, the 'timer' argument is
398              preserved in case MLDv1 is active on the interface.
399
400         * The KAME linked-list based IPv6 membership implementation has
401           been refactored to use a vector similar to that used by the IPv4
402           stack.
403           Code which maintains a list of its own multicast memberships
404           internally, e.g. carp, has been updated to reflect the new
405           semantics.
406
407         * There is a known Lock Order Reversal (LOR) due to in6_setscope()
408           acquiring the IF_AFDATA_LOCK and being called within ip6_output().
409           Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an
410           implementation constraint which needs to be addressed in HEAD.
411
412         For application developers:
413
414         * The changes are broadly similar to those made for the IPv4
415           stack.
416
417         * The use of IPv4 and IPv6 multicast socket options on the same
418           socket, using mapped addresses, HAS NOT been tested or supported.
419
420         * There are a number of issues with the implementation of various
421           IPv6 multicast APIs which need to be resolved in the API surface
422           before the implementation is fully compatible with KAME userland
423           use, and these are mostly to do with interface index treatment.
424
425         * The literature available discusses the use of either the delta / ASM
426           API with setsockopt(2)/getsockopt(2), or the full-state / ASM API
427           using setsourcefilter(3)/getsourcefilter(3). For more information
428           please refer to RFC 3768, 'Socket Interface Extensions for
429           Multicast Source Filters'.
430
431         * Applications which use the published RFC 3678 APIs should be fine.
432
433         For systems administrators:
434
435         * The mtest(8) utility has been refactored to support IPv6, in
436           addition to IPv4. Interface addresses are no longer accepted
437           as arguments, their names must be used instead. The utility
438           will map the interface name to its first IPv4 address as
439           returned by getifaddrs(3).
440
441         * The ifmcstat(8) utility has also been updated to print the MLDv2
442           endpoint state and source filter lists via sysctl(3).
443
444         * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable
445           loopback of IPv6 multicast datagrams by default; it defaults to 1
446           to preserve the existing behaviour. Disabling multicast loopback is
447           recommended for optimal system performance.
448
449         * The IPv6 MROUTING code has been changed to examine this sysctl
450           instead of attempting to perform a group lookup before looping
451           back forwarded datagrams.
452
453         Bump __FreeBSD_version to 800084.
454
455 20090422:
456         Implement low-level Bluetooth HCI API.
457         Bump __FreeBSD_version to 800083.
458
459 20090419:
460         The layout of struct malloc_type, used by modules to register new
461         memory allocation types, has changed.  Most modules will need to
462         be rebuilt or panics may be experienced.
463         Bump __FreeBSD_version to 800081.
464
465 20090415:
466         Anticipate overflowing inp_flags - add inp_flags2.
467         This changes most offsets in inpcb, so checking v4 connection
468         state will require a world rebuild.
469         Bump __FreeBSD_version to 800080.
470
471 20090415:
472         Add an llentry to struct route and struct route_in6. Modules
473         embedding a struct route will need to be recompiled.
474         Bump __FreeBSD_version to 800079.
475
476 20090414:
477         The size of rt_metrics_lite and by extension rtentry has changed.
478         Networking administration apps will need to be recompiled.
479         The route command now supports show as an alias for get, weighting
480         of routes, sticky and nostick flags to alter the behavior of stateful
481         load balancing.
482         Bump __FreeBSD_version to 800078.
483
484 20090408:
485         Do not use Giant for kbdmux(4) locking. This is wrong and
486         apparently causing more problems than it solves. This will
487         re-open the issue where interrupt handlers may race with
488         kbdmux(4) in polling mode. Typical symptoms include (but
489         not limited to) duplicated and/or missing characters when
490         low level console functions (such as gets) are used while
491         interrupts are enabled (for example geli password prompt,
492         mountroot prompt etc.). Disabling kbdmux(4) may help.
493
494 20090407:
495         The size of structs vnet_net, vnet_inet and vnet_ipfw has changed;
496         kernel modules referencing any of the above need to be recompiled.
497         Bump __FreeBSD_version to 800075.
498
499 20090320:
500         GEOM_PART has become the default partition slicer for storage devices,
501         replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
502         introduces some changes:
503
504         MSDOS/EBR: the devices created from MSDOS extended partition entries
505         (EBR) can be named differently than with GEOM_MBR and are now symlinks
506         to devices with offset-based names. fstabs may need to be modified.
507
508         BSD: the "geometry does not match label" warning is harmless in most
509         cases but it points to problems in file system misalignment with
510         disk geometry. The "c" partition is now implicit, covers the whole
511         top-level drive and cannot be (mis)used by users.
512
513         General: Kernel dumps are now not allowed to be written to devices
514         whose partition types indicate they are meant to be used for file
515         systems (or, in case of MSDOS partitions, as something else than
516         the "386BSD" type).
517
518         Most of these changes date approximately from 200812.
519
520 20090319:
521         The uscanner(4) driver has been removed from the kernel. This follows
522         Linux removing theirs in 2.6 and making libusb the default interface
523         (supported by sane).
524
525 20090319:
526         The multicast forwarding code has been cleaned up. netstat(1)
527         only relies on KVM now for printing bandwidth upcall meters.
528         The IPv4 and IPv6 modules are split into ip_mroute_mod and
529         ip6_mroute_mod respectively. The config(5) options for statically
530         compiling this code remain the same, i.e. 'options MROUTING'.
531
532 20090315:
533         Support for the IFF_NEEDSGIANT network interface flag has been
534         removed, which means that non-MPSAFE network device drivers are no
535         longer supported.  In particular, if_ar, if_sr, and network device
536         drivers from the old (legacy) USB stack can no longer be built or
537         used.
538
539 20090313:
540         POSIX.1 Native Language Support (NLS) has been enabled in libc and
541         a bunch of new language catalog files have also been added.
542         This means that some common libc messages are now localized and
543         they depend on the LC_MESSAGES environmental variable.
544
545 20090313:
546         The k8temp(4) driver has been renamed to amdtemp(4) since
547         support for K10 and K11 CPU families was added.
548
549 20090309:
550         IGMPv3 and Source-Specific Multicast (SSM) have been merged
551         to the IPv4 stack. VIMAGE hooks are in but not yet used.
552
553         For kernel developers, the most important changes are that the
554         ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
555         and this lock has been downgraded to a non-recursive mutex.
556
557         Transport protocols (UDP, Raw IP) are now responsible for filtering
558         inbound multicast traffic according to group membership and source
559         filters. The imo_multicast_filter() KPI exists for this purpose.
560         Transports which do not use multicast (SCTP, TCP) already reject
561         multicast by default. Forwarding and receive performance may improve
562         as a mutex acquisition is no longer needed in the ip_input()
563         low-level input path.  in_addmulti() and in_delmulti() are shimmed
564         to new KPIs which exist to support SSM in-kernel.
565
566         For application developers, it is recommended that loopback of
567         multicast datagrams be disabled for best performance, as this
568         will still cause the lock to be taken for each looped-back
569         datagram transmission. The net.inet.ip.mcast.loop sysctl may
570         be tuned to 0 to disable loopback by default; it defaults to 1
571         to preserve the existing behaviour.
572
573         For systems administrators, to obtain best performance with
574         multicast reception and multiple groups, it is always recommended
575         that a card with a suitably precise hash filter is used. Hash
576         collisions will still result in the lock being taken within the
577         transport protocol input path to check group membership.
578
579         If deploying FreeBSD in an environment with IGMP snooping switches,
580         it is recommended that the net.inet.igmp.sendlocal sysctl remain
581         enabled; this forces 224.0.0.0/24 group membership to be announced
582         via IGMP.
583
584         The size of 'struct igmpstat' has changed; netstat needs to be
585         recompiled to reflect this.
586         Bump __FreeBSD_version to 800070.
587
588 20090309:
589         libusb20.so.1 is now installed as libusb.so.1 and the ports system
590         updated to use it. This requires a buildworld/installworld in order to
591         update the library and dependencies (usbconfig, etc). Its advisable to
592         rebuild all ports which uses libusb. More specific directions are given
593         in the ports collection UPDATING file. Any /etc/libmap.conf entries for
594         libusb are no longer required and can be removed.
595
596 20090302:
597         A workaround is committed to allow the creation of System V shared
598         memory segment of size > 2 GB on the 64-bit architectures.
599         Due to a limitation of the existing ABI, the shm_segsz member
600         of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
601         wrong for large segments. Note that limits must be explicitly
602         raised to allow such segments to be created.
603
604 20090301:
605         The layout of struct ifnet has changed, requiring a rebuild of all
606         network device driver modules.
607
608 20090227:
609         The /dev handling for the new USB stack has changed, a
610         buildworld/installworld is required for libusb20.
611
612 20090223:
613         The new USB2 stack has now been permanently moved in and all kernel and
614         module names reverted to their previous values (eg, usb, ehci, ohci,
615         ums, ...).  The old usb stack can be compiled in by prefixing the name
616         with the letter 'o', the old usb modules have been removed.
617         Updating entry 20090216 for xorg and 20090215 for libmap may still
618         apply.
619
620 20090217:
621         The rc.conf(5) option if_up_delay has been renamed to
622         defaultroute_delay to better reflect its purpose. If you have
623         customized this setting in /etc/rc.conf you need to update it to
624         use the new name.
625
626 20090216:
627         xorg 7.4 wants to configure its input devices via hald which does not
628         yet work with USB2. If the keyboard/mouse does not work in xorg then
629         add
630                 Option "AllowEmptyInput" "off"
631         to your ServerLayout section.  This will cause X to use the configured
632         kbd and mouse sections from your xorg.conf.
633
634 20090215:
635         The GENERIC kernels for all architectures now default to the new USB2
636         stack. No kernel config options or code have been removed so if a
637         problem arises please report it and optionally revert to the old USB
638         stack. If you are loading USB kernel modules or have a custom kernel
639         that includes GENERIC then ensure that usb names are also changed over,
640         eg uftdi -> usb2_serial_ftdi.
641
642         Older programs linked against the ports libusb 0.1 need to be
643         redirected to the new stack's libusb20.  /etc/libmap.conf can
644         be used for this:
645                 # Map old usb library to new one for usb2 stack
646                 libusb-0.1.so.8 libusb20.so.1
647
648 20090209:
649         All USB ethernet devices now attach as interfaces under the name ueN
650         (eg. ue0). This is to provide a predictable name as vendors often
651         change usb chipsets in a product without notice.
652
653 20090203:
654         The ichsmb(4) driver has been changed to require SMBus slave
655         addresses be left-justified (xxxxxxx0b) rather than right-justified.
656         All of the other SMBus controller drivers require left-justified
657         slave addresses, so this change makes all the drivers provide the
658         same interface.
659
660 20090201:
661         INET6 statistics (struct ip6stat) was updated.
662         netstat(1) needs to be recompiled.
663
664 20090119:
665         NTFS has been removed from GENERIC kernel on amd64 to match
666         GENERIC on i386. Should not cause any issues since mount_ntfs(8)
667         will load ntfs.ko module automatically when NTFS support is
668         actually needed, unless ntfs.ko is not installed or security
669         level prohibits loading kernel modules. If either is the case,
670         "options NTFS" has to be added into kernel config.
671
672 20090115:
673         TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
674         New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
675         800061. User space tools that rely on the size of struct tcpcb in
676         tcp_var.h (e.g. sockstat) need to be recompiled.
677
678 20081225:
679         ng_tty(4) module updated to match the new TTY subsystem.
680         Due to API change, user-level applications must be updated.
681         New API support added to mpd5 CVS and expected to be present
682         in next mpd5.3 release.
683
684 20081219:
685         With __FreeBSD_version 800060 the makefs tool is part of
686         the base system (it was a port).
687
688 20081216:
689         The afdata and ifnet locks have been changed from mutexes to
690         rwlocks, network modules will need to be re-compiled.
691
692 20081214:
693         __FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
694         RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
695         The new code reduced struct rtentry{} by 16 bytes on 32-bit
696         architecture and 40 bytes on 64-bit architecture. The userland
697         applications "arp" and "ndp" have been updated accordingly.
698         The output from "netstat -r" shows only routing entries and
699         none of the L2 information.
700
701 20081130:
702         __FreeBSD_version 800057 marks the switchover from the
703         binary ath hal to source code. Users must add the line:
704
705         options AH_SUPPORT_AR5416
706
707         to their kernel config files when specifying:
708
709         device  ath_hal
710
711         The ath_hal module no longer exists; the code is now compiled
712         together with the driver in the ath module.  It is now
713         possible to tailor chip support (i.e. reduce the set of chips
714         and thereby the code size); consult ath_hal(4) for details.
715
716 20081121:
717         __FreeBSD_version 800054 adds memory barriers to
718         <machine/atomic.h>, new interfaces to ifnet to facilitate
719         multiple hardware transmit queues for cards that support
720         them, and a lock-less ring-buffer implementation to
721         enable drivers to more efficiently manage queueing of
722         packets.
723
724 20081117:
725         A new version of ZFS (version 13) has been merged to -HEAD.
726         This version has zpool attribute "listsnapshots" off by
727         default, which means "zfs list" does not show snapshots,
728         and is the same as Solaris behavior.
729
730 20081028:
731         dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
732
733 20081009:
734         The uhci, ohci, ehci and slhci USB Host controller drivers have
735         been put into separate modules. If you load the usb module
736         separately through loader.conf you will need to load the
737         appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
738         controller add the following to loader.conf:
739
740                 uhci_load="YES"
741                 ehci_load="YES"
742
743 20081009:
744         The ABI used by the PMC toolset has changed.  Please keep
745         userland (libpmc(3)) and the kernel module (hwpmc(4)) in
746         sync.
747
748 20081009:
749         atapci kernel module now includes only generic PCI ATA
750         driver. AHCI driver moved to ataahci kernel module.
751         All vendor-specific code moved into separate kernel modules:
752         ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
753         atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
754         atamarvell, atamicron, atanational, atanetcell, atanvidia,
755         atapromise, ataserverworks, atasiliconimage, atasis, atavia
756
757 20080820:
758         The TTY subsystem of the kernel has been replaced by a new
759         implementation, which provides better scalability and an
760         improved driver model. Most common drivers have been migrated to
761         the new TTY subsystem, while others have not. The following
762         drivers have not yet been ported to the new TTY layer:
763
764         PCI/ISA:
765                 cy, digi, rc, rp, sio
766
767         USB:
768                 ubser, ucycom
769
770         Line disciplines:
771                 ng_h4, ng_tty, ppp, sl, snp
772
773         Adding these drivers to your kernel configuration file shall
774         cause compilation to fail.
775
776 20080818:
777         ntpd has been upgraded to 4.2.4p5.
778
779 20080801:
780         OpenSSH has been upgraded to 5.1p1.
781
782         For many years, FreeBSD's version of OpenSSH preferred DSA
783         over RSA for host and user authentication keys.  With this
784         upgrade, we've switched to the vendor's default of RSA over
785         DSA.  This may cause upgraded clients to warn about unknown
786         host keys even for previously known hosts.  Users should
787         follow the usual procedure for verifying host keys before
788         accepting the RSA key.
789
790         This can be circumvented by setting the "HostKeyAlgorithms"
791         option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
792         command line.
793
794         Please note that the sequence of keys offered for
795         authentication has been changed as well.  You may want to
796         specify IdentityFile in a different order to revert this
797         behavior.
798
799 20080713:
800         The sio(4) driver has been removed from the i386 and amd64
801         kernel configuration files. This means uart(4) is now the
802         default serial port driver on those platforms as well.
803
804         To prevent collisions with the sio(4) driver, the uart(4) driver
805         uses different names for its device nodes. This means the
806         onboard serial port will now most likely be called "ttyu0"
807         instead of "ttyd0". You may need to reconfigure applications to
808         use the new device names.
809
810         When using the serial port as a boot console, be sure to update
811         /boot/device.hints and /etc/ttys before booting the new kernel.
812         If you forget to do so, you can still manually specify the hints
813         at the loader prompt:
814
815                 set hint.uart.0.at="isa"
816                 set hint.uart.0.port="0x3F8"
817                 set hint.uart.0.flags="0x10"
818                 set hint.uart.0.irq="4"
819                 boot -s
820
821 20080609:
822         The gpt(8) utility has been removed. Use gpart(8) to partition
823         disks instead.
824
825 20080603:
826         The version that Linuxulator emulates was changed from 2.4.2
827         to 2.6.16. If you experience any problems with Linux binaries
828         please try to set sysctl compat.linux.osrelease to 2.4.2 and
829         if it fixes the problem contact emulation mailing list.
830
831 20080525:
832         ISDN4BSD (I4B) was removed from the src tree. You may need to
833         update a your kernel configuration and remove relevant entries.
834
835 20080509:
836         I have checked in code to support multiple routing tables.
837         See the man pages setfib(1) and setfib(2).
838         This is a hopefully backwards compatible version,
839         but to make use of it you need to compile your kernel
840         with options ROUTETABLES=2 (or more up to 16).
841
842 20080420:
843         The 802.11 wireless support was redone to enable multi-bss
844         operation on devices that are capable.  The underlying device
845         is no longer used directly but instead wlanX devices are
846         cloned with ifconfig.  This requires changes to rc.conf files.
847         For example, change:
848                 ifconfig_ath0="WPA DHCP"
849         to
850                 wlans_ath0=wlan0
851                 ifconfig_wlan0="WPA DHCP"
852         see rc.conf(5) for more details.  In addition, mergemaster of
853         /etc/rc.d is highly recommended.  Simultaneous update of userland
854         and kernel wouldn't hurt either.
855
856         As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
857         modules were merged into the base wlan module.  All references
858         to these modules (e.g. in kernel config files) must be removed.
859
860 20080408:
861         psm(4) has gained write(2) support in native operation level.
862         Arbitrary commands can be written to /dev/psm%d and status can
863         be read back from it.  Therefore, an application is responsible
864         for status validation and error recovery.  It is a no-op in
865         other operation levels.
866
867 20080312:
868         Support for KSE threading has been removed from the kernel.  To
869         run legacy applications linked against KSE libmap.conf may
870         be used.  The following libmap.conf may be used to ensure
871         compatibility with any prior release:
872
873         libpthread.so.1 libthr.so.1
874         libpthread.so.2 libthr.so.2
875         libkse.so.3 libthr.so.3
876
877 20080301:
878         The layout of struct vmspace has changed. This affects libkvm
879         and any executables that link against libkvm and use the
880         kvm_getprocs() function. In particular, but not exclusively,
881         it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
882         The effects are minimal, but it's advisable to upgrade world
883         nonetheless.
884
885 20080229:
886         The latest em driver no longer has support in it for the
887         82575 adapter, this is now moved to the igb driver. The
888         split was done to make new features that are incompatible
889         with older hardware easier to do.
890
891 20080220:
892         The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
893         likewise the kernel option is now GEOM_LINUX_LVM.
894
895 20080211:
896         The default NFS mount mode has changed from UDP to TCP for
897         increased reliability.  If you rely on (insecurely) NFS
898         mounting across a firewall you may need to update your
899         firewall rules.
900
901 20080208:
902         Belatedly note the addition of m_collapse for compacting
903         mbuf chains.
904
905 20080126:
906         The fts(3) structures have been changed to use adequate
907         integer types for their members and so to be able to cope
908         with huge file trees.  The old fts(3) ABI is preserved
909         through symbol versioning in libc, so third-party binaries
910         using fts(3) should still work, although they will not take
911         advantage of the extended types.  At the same time, some
912         third-party software might fail to build after this change
913         due to unportable assumptions made in its source code about
914         fts(3) structure members.  Such software should be fixed
915         by its vendor or, in the worst case, in the ports tree.
916         FreeBSD_version 800015 marks this change for the unlikely
917         case that a portable fix is impossible.
918
919 20080123:
920         To upgrade to -current after this date, you must be running
921         FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
922         from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
923
924 20071128:
925         The ADAPTIVE_GIANT kernel option has been retired because its
926         functionality is the default now.
927
928 20071118:
929         The AT keyboard emulation of sunkbd(4) has been turned on
930         by default. In order to make the special symbols of the Sun
931         keyboards driven by sunkbd(4) work under X these now have
932         to be configured the same way as Sun USB keyboards driven
933         by ukbd(4) (which also does AT keyboard emulation), f.e.:
934
935         Option  "XkbLayout" "us"
936         Option  "XkbRules" "xorg"
937         Option  "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
938
939 20071024:
940         It has been decided that it is desirable to provide ABI
941         backwards compatibility to the FreeBSD 4/5/6 versions of the
942         PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
943         broken with the introduction of PCI domain support (see the
944         20070930 entry). Unfortunately, this required the ABI of
945         PCIOCGETCONF to be broken again in order to be able to
946         provide backwards compatibility to the old version of that
947         IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
948         again. As for prominent ports this affects neither pciutils
949         nor xorg-server this time, the hal port needs to be rebuilt
950         however.
951
952 20071020:
953         The misnamed kthread_create() and friends have been renamed
954         to kproc_create() etc. Many of the callers already
955         used kproc_start()..
956         I will return kthread_create() and friends in a while
957         with implementations that actually create threads, not procs.
958         Renaming corresponds with version 800002.
959
960 20071010:
961         RELENG_7 branched.
962
963 20071009:
964         Setting WITHOUT_LIBPTHREAD now means WITHOUT_LIBKSE and
965         WITHOUT_LIBTHR are set.
966
967 20070930:
968         The PCI code has been made aware of PCI domains. This means that
969         the location strings as used by pciconf(8) etc are now in the
970         following format: pci<domain>:<bus>:<device>[:<function>]. It
971         also means that consumers of <sys/pciio.h> potentially need to
972         be recompiled; this includes the hal and xorg-server ports.
973
974 20070928:
975         The caching daemon (cached) was renamed to nscd. nscd.conf
976         configuration file should be used instead of cached.conf and
977         nscd_enable, nscd_pidfile and nscd_flags options should be used
978         instead of cached_enable, cached_pidfile and cached_flags in
979         rc.conf.
980
981 20070921:
982         The getfacl(1) utility now prints owning user and group name
983         instead of owning uid and gid in the three line comment header.
984         This is the same behavior as getfacl(1) on Solaris and Linux.
985
986 20070704:
987         The new IPsec code is now compiled in using the IPSEC option.  The
988         IPSEC option now requires "device crypto" be defined in your kernel
989         configuration.  The FAST_IPSEC kernel option is now deprecated.
990
991 20070702:
992         The packet filter (pf) code has been updated to OpenBSD 4.1 Please
993         note the changed syntax - keep state is now on by default.  Also
994         note the fact that ftp-proxy(8) has been changed from bottom up and
995         has been moved from libexec to usr/sbin.  Changes in the ALTQ
996         handling also affect users of IPFW's ALTQ capabilities.
997
998 20070701:
999         Remove KAME IPsec in favor of FAST_IPSEC, which is now the
1000         only IPsec supported by FreeBSD.  The new IPsec stack
1001         supports both IPv4 and IPv6. The kernel option will change
1002         after the code changes have settled in.  For now the kernel
1003         option IPSEC is deprecated and FAST_IPSEC is the only option, that
1004         will change after some settling time.
1005
1006 20070701:
1007         The wicontrol(8) utility has been removed from the base system. wi(4)
1008         cards should be configured using ifconfig(8), see the man page for more
1009         information.
1010
1011 20070612:
1012         The i386/amd64 GENERIC kernel now defaults to the nfe(4) driver
1013         instead of the nve(4) driver. Please update your configuration
1014         accordingly.
1015
1016 20070612:
1017         By default, /etc/rc.d/sendmail no longer rebuilds the aliases
1018         database if it is missing or older than the aliases file.  If
1019         desired, set the new rc.conf option sendmail_rebuild_aliases
1020         to "YES" to restore that functionality.
1021
1022 20070612:
1023         The IPv4 multicast socket code has been considerably modified, and
1024         moved to the file sys/netinet/in_mcast.c. Initial support for the
1025         RFC 3678 Source-Specific Multicast Socket API has been added to
1026         the IPv4 network stack.
1027
1028         Strict multicast and broadcast reception is now the default for
1029         UDP/IPv4 sockets; the net.inet.udp.strict_mcast_mship sysctl variable
1030         has now been removed.
1031
1032         The RFC 1724 hack for interface selection has been removed; the use
1033         of the Linux-derived ip_mreqn structure with IP_MULTICAST_IF has
1034         been added to replace it. Consumers such as routed will soon be
1035         updated to reflect this.
1036
1037         These changes affect users who are running routed(8) or rdisc(8)
1038         from the FreeBSD base system on point-to-point or unnumbered
1039         interfaces.
1040
1041 20070610:
1042         The net80211 layer has changed significantly and all wireless
1043         drivers that depend on it need to be recompiled.  Further these
1044         changes require that any program that interacts with the wireless
1045         support in the kernel be recompiled; this includes: ifconfig,
1046         wpa_supplicant, hostapd, and wlanstats.  Users must also, for
1047         the moment, kldload the wlan_scan_sta and/or wlan_scan_ap modules
1048         if they use modules for wireless support.  These modules implement
1049         scanning support for station and ap modes, respectively.  Failure
1050         to load the appropriate module before marking a wireless interface
1051         up will result in a message to the console and the device not
1052         operating properly.
1053
1054 20070610:
1055         The pam_nologin(8) module ceases to provide an authentication
1056         function and starts providing an account management function.
1057         Consequent changes to /etc/pam.d should be brought in using
1058         mergemaster(8).  Third-party files in /usr/local/etc/pam.d may
1059         need manual editing as follows.  Locate this line (or similar):
1060
1061                 auth    required        pam_nologin.so  no_warn
1062
1063         and change it according to this example:
1064
1065                 account required        pam_nologin.so  no_warn
1066
1067         That is, the first word needs to be changed from "auth" to
1068         "account".  The new line can be moved to the account section
1069         within the file for clarity.  Not updating pam.conf(5) files
1070         will result in nologin(5) ignored by the respective services.
1071
1072 20070529:
1073         The ether_ioctl() function has been synchronized with ioctl(2)
1074         and ifnet.if_ioctl.  Due to that, the size of one of its arguments
1075         has changed on 64-bit architectures.  All kernel modules using
1076         ether_ioctl() need to be rebuilt on such architectures.
1077
1078 20070516:
1079         Improved INCLUDE_CONFIG_FILE support has been introduced to the
1080         config(8) utility. In order to take advantage of this new
1081         functionality, you are expected to recompile and install
1082         src/usr.sbin/config. If you don't rebuild config(8), and your
1083         kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel
1084         build will be broken because of a missing "kernconfstring"
1085         symbol.
1086
1087 20070513:
1088         Symbol versioning is enabled by default.  To disable it, use
1089         option WITHOUT_SYMVER.  It is not advisable to attempt to
1090         disable symbol versioning once it is enabled; your installworld
1091         will break because a symbol version-less libc will get installed
1092         before the install tools.  As a result, the old install tools,
1093         which previously had symbol dependencies to FBSD_1.0, will fail
1094         because the freshly installed libc will not have them.
1095
1096         The default threading library (providing "libpthread") has been
1097         changed to libthr.  If you wish to have libkse as your default,
1098         use option DEFAULT_THREAD_LIB=libkse for the buildworld.
1099
1100 20070423:
1101         The ABI breakage in sendmail(8)'s libmilter has been repaired
1102         so it is no longer necessary to recompile mail filters (aka,
1103         milters).  If you recompiled mail filters after the 20070408
1104         note, it is not necessary to recompile them again.
1105
1106 20070417:
1107         The new trunk(4) driver has been renamed to lagg(4) as it better
1108         reflects its purpose. ifconfig will need to be recompiled.
1109
1110 20070408:
1111         sendmail(8) has been updated to version 8.14.1.  Mail filters
1112         (aka, milters) compiled against the libmilter included in the
1113         base operating system should be recompiled.
1114
1115 20070302:
1116         Firmwares for ipw(4) and iwi(4) are now included in the base tree.
1117         In order to use them one must agree to the respective LICENSE in
1118         share/doc/legal and define legal.intel_<name>.license_ack=1 via
1119         loader.conf(5) or kenv(1).  Make sure to deinstall the now
1120         deprecated modules from the respective firmware ports.
1121
1122 20070228:
1123         The name resolution/mapping functions addr2ascii(3) and ascii2addr(3)
1124         were removed from FreeBSD's libc. These originally came from INRIA
1125         IPv6. Nothing in FreeBSD ever used them. They may be regarded as
1126         deprecated in previous releases.
1127         The AF_LINK support for getnameinfo(3) was merged from NetBSD to
1128         replace it as a more portable (and re-entrant) API.
1129
1130 20070224:
1131         To support interrupt filtering a modification to the newbus API
1132         has occurred, ABI was broken and __FreeBSD_version was bumped
1133         to 700031. Please make sure that your kernel and modules are in
1134         sync. For more info:
1135         http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941
1136
1137 20070224:
1138         The IPv6 multicast forwarding code may now be loaded into GENERIC
1139         kernels by loading the ip_mroute.ko module. This is built into the
1140         module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are
1141         set; see src.conf(5) for more information.
1142
1143 20070214:
1144         The output of netstat -r has changed. Without -n, we now only
1145         print a "network name" without the prefix length if the network
1146         address and mask exactly match a Class A/B/C network, and an entry
1147         exists in the nsswitch "networks" map.
1148         With -n, we print the full unabbreviated CIDR network prefix in
1149         the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default".
1150         This change is in preparation for changes such as equal-cost
1151         multipath, and to more generally assist operational deployment
1152         of FreeBSD as a modern IPv4 router.
1153
1154 20070210:
1155         PIM has been turned on by default in the IPv4 multicast
1156         routing code. The kernel option 'PIM' has now been removed.
1157         PIM is now built by default if option 'MROUTING' is specified.
1158         It may now be loaded into GENERIC kernels by loading the
1159         ip_mroute.ko module.
1160
1161 20070207:
1162         Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing
1163         has been removed. Its functionality may be achieved by explicitly
1164         configuring gif(4) interfaces and using the 'phyint' keyword in
1165         mrouted.conf.
1166         XORP does not support source-routed IPv4 multicast tunnels nor the
1167         integrated IPIP tunneling, therefore it is not affected by this
1168         change. The __FreeBSD_version macro has been bumped to 700030.
1169
1170 20061221:
1171         Support for PCI Message Signalled Interrupts has been
1172         re-enabled in the bge driver, only for those chips which are
1173         believed to support it properly.  If there are any problems,
1174         MSI can be disabled completely by setting the
1175         'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0
1176         in the loader.
1177
1178 20061214:
1179         Support for PCI Message Signalled Interrupts has been
1180         disabled again in the bge driver.  Many revisions of the
1181         hardware fail to support it properly.  Support can be
1182         re-enabled by removing the #define of BGE_DISABLE_MSI in
1183         "src/sys/dev/bge/if_bge.c".
1184
1185 20061214:
1186         Support for PCI Message Signalled Interrupts has been added
1187         to the bge driver.  If there are any problems, MSI can be
1188         disabled completely by setting the 'hw.pci.enable_msi' and
1189         'hw.pci.enable_msix' tunables to 0 in the loader.
1190
1191 20061205:
1192         The removal of several facets of the experimental Threading
1193         system from the kernel means that the proc and thread structures
1194         have changed quite a bit. I suggest all kernel modules that might
1195         reference these structures be recompiled.. Especially the
1196         linux module.
1197
1198 20061126:
1199         Sound infrastructure has been updated with various fixes and
1200         improvements. Most of the changes are pretty much transparent,
1201         with exceptions of followings:
1202         1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been
1203            moved to their own dev sysctl nodes, for example:
1204                 hw.snd.pcm0.vchans -> dev.pcm.0.vchans
1205         2) /dev/dspr%d.%d has been deprecated. Each channel now has its
1206            own chardev in the form of "dsp%d.<function>%d", where <function>
1207            is p = playback, r = record and v = virtual, respectively. Users
1208            are encouraged to use these devs instead of (old) "/dev/dsp%d.%d".
1209            This does not affect those who are using "/dev/dsp".
1210
1211 20061122:
1212         geom(4)'s gmirror(8) class metadata structure has been
1213         rev'd from v3 to v4. If you update across this point and
1214         your metadata is converted for you, you will not be easily
1215         able to downgrade since the /boot/kernel.old/geom_mirror.ko
1216         kernel module will be unable to read the v4 metadata.  You
1217         can resolve this by doing from the loader(8) prompt:
1218
1219                 set vfs.root.mountfrom="ufs:/dev/XXX"
1220
1221         where XXX is the root slice of one of the disks that composed
1222         the mirror (i.e.: /dev/ad0s1a). You can then rebuild
1223         the array the same way you built it originally.
1224
1225 20061122:
1226         The following binaries have been disconnected from the build:
1227         mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs,
1228         and mount_std.  The functionality of these programs has been
1229         moved into the mount program.  For example, to mount a devfs
1230         filesystem, instead of using mount_devfs, use: "mount -t devfs".
1231         This does not affect entries in /etc/fstab, since entries in
1232         /etc/fstab are always processed with "mount -t fstype".
1233
1234 20061113:
1235         Support for PCI Message Signalled Interrupts on i386 and amd64
1236         has been added to the kernel and various drivers will soon be
1237         updated to use MSI when it is available.  If there are any problems,
1238         MSI can be disabled completely by setting the 'hw.pci.enable_msi'
1239         and 'hw.pci.enable_msix' tunables to 0 in the loader.
1240
1241 20061110:
1242         The MUTEX_PROFILING option has been renamed to LOCK_PROFILING.
1243         The lockmgr object layout has been changed as a result of having
1244         a lock_object embedded in it. As a consequence all file system
1245         kernel modules must be re-compiled. The mutex profiling man page
1246         has not yet been updated to reflect this change.
1247
1248 20061026:
1249         KSE in the kernel has now been made optional and turned on by
1250         default. Use 'nooption KSE' in your kernel config to turn it
1251         off. All kernel modules *must* be recompiled after this change.
1252         There-after, modules from a KSE kernel should be compatible with
1253         modules from a NOKSE kernel due to the temporary padding fields
1254         added to 'struct proc'.
1255
1256 20060929:
1257         mrouted and its utilities have been removed from the base system.
1258
1259 20060927:
1260         Some ioctl(2) command codes have changed.  Full backward ABI
1261         compatibility is provided if the "options COMPAT_FREEBSD6" is
1262         present in the kernel configuration file.  Make sure to add
1263         this option to your kernel config file, or recompile X.Org
1264         and the rest of ports; otherwise they may refuse to work.
1265
1266 20060924:
1267         tcpslice has been removed from the base system.
1268
1269 20060913:
1270         The sizes of struct tcpcb (and struct xtcpcb) have changed due to
1271         the rewrite of TCP syncookies.  Tools like netstat, sockstat, and
1272         systat needs to be rebuilt.
1273
1274 20060903:
1275         libpcap updated to v0.9.4 and tcpdump to v3.9.4
1276
1277 20060816:
1278         The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour
1279         for IPFIREWALL_FORWARD is now as it was before when it was first
1280         committed and for years after. The behaviour is now ON.
1281
1282 20060725:
1283         enigma(1)/crypt(1) utility has been changed on 64 bit architectures.
1284         Now it can decrypt files created from different architectures.
1285         Unfortunately, it is no longer able to decrypt a cipher text
1286         generated with an older version on 64 bit architectures.
1287         If you have such a file, you need old utility to decrypt it.
1288
1289 20060709:
1290         The interface version of the i4b kernel part has changed. So
1291         after updating the kernel sources and compiling a new kernel,
1292         the i4b user space tools in "/usr/src/usr.sbin/i4b" must also
1293         be rebuilt, and vice versa.
1294
1295 20060627:
1296         The XBOX kernel now defaults to the nfe(4) driver instead of
1297         the nve(4) driver. Please update your configuration
1298         accordingly.
1299
1300 20060514:
1301         The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx
1302         PCnet family of NICs has been removed. The new le(4) driver serves
1303         as an equivalent but cross-platform replacement with the pcn(4)
1304         driver still providing performance-optimized support for the subset
1305         of AMD Am79C971 PCnet-FAST and greater chips as before.
1306
1307 20060511:
1308         The machdep.* sysctls and the adjkerntz utility have been
1309         modified a bit.  The new adjkerntz utility uses the new
1310         sysctl names and sysctlbyname() calls, so it may be impossible
1311         to run an old /sbin/adjkerntz utility in single-user mode
1312         with a new kernel.  Replace the `adjkerntz -i' step before
1313         `make installworld' with:
1314
1315             /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i
1316
1317         and proceed as usual with the rest of the installworld-stage
1318         steps.  Otherwise, you risk installing binaries with their
1319         timestamp set several hours in the future, especially if
1320         you are running with local time set to GMT+X hours.
1321
1322 20060412:
1323         The ip6fw utility has been removed.  The behavior provided by
1324         ip6fw has been in ipfw2 for a good while and the rc.d scripts
1325         have been updated to deal with it.  There are some rules that
1326         might not migrate cleanly.  Use rc.firewall6 as a template to
1327         rewrite rules.
1328
1329 20060428:
1330         The puc(4) driver has been overhauled. The ebus(4) and sbus(4)
1331         attachments have been removed. Make sure to configure scc(4)
1332         on sparc64. Note also that by default puc(4) will use uart(4)
1333         and not sio(4) for serial ports because interrupt handling has
1334         been optimized for multi-port serial cards and only uart(4)
1335         implements the interface to support it.
1336
1337 20060330:
1338         The scc(4) driver replaces puc(4) for Serial Communications
1339         Controllers (SCCs) like the Siemens SAB82532 and the Zilog
1340         Z8530. On sparc64, it is advised to add scc(4) to the kernel
1341         configuration to make sure that the serial ports remain
1342         functional.
1343
1344 20060317:
1345         Most world/kernel related NO_* build options changed names.
1346         New knobs have common prefixes WITHOUT_*/WITH_* (modelled
1347         after FreeBSD ports) and should be set in /etc/src.conf
1348         (the src.conf(5) manpage is provided).  Full backwards
1349         compatibility is maintained for the time being though it's
1350         highly recommended to start moving old options out of the
1351         system-wide /etc/make.conf file into the new /etc/src.conf
1352         while also properly renaming them.  More conversions will
1353         likely follow.  Posting to current@:
1354
1355         http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
1356
1357 20060305:
1358         The NETSMBCRYPTO kernel option has been retired because its
1359         functionality is always included in NETSMB and smbfs.ko now.
1360
1361 20060303:
1362         The TDFX_LINUX kernel option was retired and replaced by the
1363         tdfx_linux device.  The latter can be loaded as the 3dfx_linux.ko
1364         kernel module.  Loading it alone should suffice to get 3dfx support
1365         for Linux apps because it will pull in 3dfx.ko and linux.ko through
1366         its dependencies.
1367
1368 20060204:
1369         The 'audit' group was added to support the new auditing functionality
1370         in the base system.  Be sure to follow the directions for updating,
1371         including the requirement to run mergemaster -p.
1372
1373 20060201:
1374         The kernel ABI to file system modules was changed on i386.
1375         Please make sure that your kernel and modules are in sync.
1376
1377 20060118:
1378         This actually occured some time ago, but installing the kernel
1379         now also installs a bunch of symbol files for the kernel modules.
1380         This increases the size of /boot/kernel to about 67Mbytes. You
1381         will need twice this if you will eventually back this up to kernel.old
1382         on your next install.
1383         If you have a shortage of room in your root partition, you should add
1384         -DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
1385         to your /etc/make.conf.
1386
1387 20060113:
1388         libc's malloc implementation has been replaced.  This change has the
1389         potential to uncover application bugs that previously went unnoticed.
1390         See the malloc(3) manual page for more details.
1391
1392 20060112:
1393         The generic netgraph(4) cookie has been changed. If you upgrade
1394         kernel passing this point, you also need to upgrade userland
1395         and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4.
1396
1397 20060106:
1398         si(4)'s device files now contain the unit number.
1399         Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f].
1400
1401 20060106:
1402         The kernel ABI was mostly destroyed due to a change in the size
1403         of struct lock_object which is nested in other structures such
1404         as mutexes which are nested in all sorts of other structures.
1405         Make sure your kernel and modules are in sync.
1406
1407 20051231:
1408         The page coloring algorithm in the VM subsystem was converted
1409         from tuning with kernel options to autotuning. Please remove
1410         any PQ_* option except PQ_NOOPT from your kernel config.
1411
1412 20051211:
1413         The net80211-related tools in the tools/tools/ath directory
1414         have been moved to tools/tools/net80211 and renamed with a
1415         "wlan" prefix.  Scripts that use them should be adjusted
1416         accordingly.
1417
1418 20051202:
1419         Scripts in the local_startup directories (as defined in
1420         /etc/defaults/rc.conf) that have the new rc.d semantics will
1421         now be run as part of the base system rcorder. If there are
1422         errors or problems with one of these local scripts, it could
1423         cause boot problems. If you encounter such problems, boot in
1424         single user mode, remove that script from the */rc.d directory.
1425         Please report the problem to the port's maintainer, and the
1426         freebsd-ports@freebsd.org mailing list.
1427
1428 20051129:
1429         The nodev mount option was deprecated in RELENG_6 (where it
1430         was a no-op), and is now unsupported.  If you have nodev or dev listed
1431         in /etc/fstab, remove it, otherwise it will result in a mount error.
1432
1433 20051129:
1434         ABI between ipfw(4) and ipfw(8) has been changed. You need
1435         to rebuild ipfw(8) when rebuilding kernel.
1436
1437 20051108:
1438         rp(4)'s device files now contain the unit number.
1439         Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f].
1440
1441 20051029:
1442         /etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp.
1443         Its /etc/rc.conf.d configuration file has been `ppp' from
1444         the beginning, and hence there is no need to touch it.
1445
1446 20051014:
1447         Now most modules get their build-time options from the kernel
1448         configuration file.  A few modules still have fixed options
1449         due to their non-conformant implementation, but they will be
1450         corrected eventually.  You may need to review the options of
1451         the modules in use, explicitly specify the non-default options
1452         in the kernel configuration file, and rebuild the kernel and
1453         modules afterwards.
1454
1455 20051001:
1456         kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
1457         to turn polling(4) on your interfaces.
1458
1459 20050927:
1460         The old bridge(4) implementation was retired.  The new
1461         if_bridge(4) serves as a full functional replacement.
1462
1463 20050722:
1464         The ai_addrlen of a struct addrinfo was changed to a socklen_t
1465         to conform to POSIX-2001.  This change broke an ABI
1466         compatibility on 64 bit architecture.  You have to recompile
1467         userland programs that use getaddrinfo(3) on 64 bit
1468         architecture.
1469
1470 20050711:
1471         RELENG_6 branched here.
1472
1473 20050629:
1474         The pccard_ifconfig rc.conf variable has been removed and a new
1475         variable, ifconfig_DEFAULT has been introduced.  Unlike
1476         pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that
1477         do not have ifconfig_ifn entries rather than just those in
1478         removable_interfaces.
1479
1480 20050616:
1481         Some previous versions of PAM have permitted the use of
1482         non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring
1483         to third party PAM modules in /usr/local/lib.  A change has been
1484         made to require the use of absolute paths in order to avoid
1485         ambiguity and dependence on library path configuration, which may
1486         affect existing configurations.
1487
1488 20050610:
1489         Major changes to network interface API.  All drivers must be
1490         recompiled.  Drivers not in the base system will need to be
1491         updated to the new APIs.
1492
1493 20050609:
1494         Changes were made to kinfo_proc in sys/user.h.  Please recompile
1495         userland, or commands like `fstat', `pkill', `ps', `top' and `w'
1496         will not behave correctly.
1497
1498         The API and ABI for hwpmc(4) have changed with the addition
1499         of sampling support.  Please recompile lib/libpmc(3) and
1500         usr.sbin/{pmcstat,pmccontrol}.
1501
1502 20050606:
1503         The OpenBSD dhclient was imported in place of the ISC dhclient
1504         and the network interface configuration scripts were updated
1505         accordingly.  If you use DHCP to configure your interfaces, you
1506         must now run devd.  Also, DNS updating was lost so you will need
1507         to find a workaround if you use this feature.
1508
1509         The '_dhcp' user was added to support the OpenBSD dhclient.  Be
1510         sure to run mergemaster -p (like you are supposed to do every time
1511         anyway).
1512
1513 20050605:
1514         if_bridge was added to the tree. This has changed struct ifnet.
1515         Please recompile userland and all network related modules.
1516
1517 20050603:
1518         The n_net of a struct netent was changed to an uint32_t, and
1519         1st argument of getnetbyaddr() was changed to an uint32_t, to
1520         conform to POSIX-2001.  These changes broke an ABI
1521         compatibility on 64 bit architecture.  With these changes,
1522         shlib major of libpcap was bumped.  You have to recompile
1523         userland programs that use getnetbyaddr(3), getnetbyname(3),
1524         getnetent(3) and/or libpcap on 64 bit architecture.
1525
1526 20050528:
1527         Kernel parsing of extra options on '#!' first lines of shell
1528         scripts has changed.  Lines with multiple options likely will
1529         fail after this date.  For full details, please see
1530                 http://people.freebsd.org/~gad/Updating-20050528.txt
1531
1532 20050503:
1533         The packet filter (pf) code has been updated to OpenBSD 3.7
1534         Please note the changed anchor syntax and the fact that
1535         authpf(8) now needs a mounted fdescfs(5) to function.
1536
1537 20050415:
1538         The NO_MIXED_MODE kernel option has been removed from the i386
1539         amd64 platforms as its use has been superceded by the new local
1540         APIC timer code.  Any kernel config files containing this option
1541         should be updated.
1542
1543 20050227:
1544         The on-disk format of LC_CTYPE files was changed to be machine
1545         independent.  Please make sure NOT to use NO_CLEAN buildworld
1546         when crossing this point. Crossing this point also requires
1547         recompile or reinstall of all locale depended packages.
1548
1549 20050225:
1550         The ifi_epoch member of struct if_data has been changed to
1551         contain the uptime at which the interface was created or the
1552         statistics zeroed rather then the wall clock time because
1553         wallclock time may go backwards.  This should have no impact
1554         unless an snmp implementation is using this value (I know of
1555         none at this point.)
1556
1557 20050224:
1558         The acpi_perf and acpi_throttle drivers are now part of the
1559         acpi(4) main module.  They are no longer built separately.
1560
1561 20050223:
1562         The layout of struct image_params has changed. You have to
1563         recompile all compatibility modules (linux, svr4, etc) for use
1564         with the new kernel.
1565
1566 20050223:
1567         The p4tcc driver has been merged into cpufreq(4).  This makes
1568         "options CPU_ENABLE_TCC" obsolete.  Please load cpufreq.ko or
1569         compile in "device cpufreq" to restore this functionality.
1570
1571 20050220:
1572         The responsibility of recomputing the file system summary of
1573         a SoftUpdates-enabled dirty volume has been transferred to the
1574         background fsck.  A rebuild of fsck(8) utility is recommended
1575         if you have updated the kernel.
1576
1577         To get the old behavior (recompute file system summary at mount
1578         time), you can set vfs.ffs.compute_summary_at_mount=1 before
1579         mounting the new volume.
1580
1581 20050206:
1582         The cpufreq import is complete.  As part of this, the sysctls for
1583         acpi(4) throttling have been removed.  The power_profile script
1584         has been updated, so you can use performance/economy_cpu_freq in
1585         rc.conf(5) to set AC on/offline cpu frequencies.
1586
1587 20050206:
1588         NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko)
1589         requires recompiling libnetgraph and userland netgraph utilities.
1590
1591 20050114:
1592         Support for abbreviated forms of a number of ipfw options is
1593         now deprecated.  Warnings are printed to stderr indicating the
1594         correct full form when a match occurs.  Some abbreviations may
1595         be supported at a later date based on user feedback.  To be
1596         considered for support, abbreviations must be in use prior to
1597         this commit and unlikely to be confused with current key words.
1598
1599 20041221:
1600         By a popular demand, a lot of NOFOO options were renamed
1601         to NO_FOO (see bsd.compat.mk for a full list).  The old
1602         spellings are still supported, but will cause annoying
1603         warnings on stderr.  Make sure you upgrade properly (see
1604         the COMMON ITEMS: section later in this file).
1605
1606 20041219:
1607         Auto-loading of ancillary wlan modules such as wlan_wep has
1608         been temporarily disabled; you need to statically configure
1609         the modules you need into your kernel or explicitly load them
1610         prior to use.  Specifically, if you intend to use WEP encryption
1611         with an 802.11 device load/configure wlan_wep; if you want to
1612         use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp,
1613         and wlan_xauth as required.
1614
1615 20041213:
1616         The behaviour of ppp(8) has changed slightly.  If lqr is enabled
1617         (``enable lqr''), older versions would revert to LCP ECHO mode on
1618         negotiation failure.  Now, ``enable echo'' is required for this
1619         behaviour.  The ppp version number has been bumped to 3.4.2 to
1620         reflect the change.
1621
1622 20041201:
1623         The wlan support has been updated to split the crypto support
1624         into separate modules.  For static WEP you must configure the
1625         wlan_wep module in your system or build and install the module
1626         in place where it can be loaded (the kernel will auto-load
1627         the module when a wep key is configured).
1628
1629 20041201:
1630         The ath driver has been updated to split the tx rate control
1631         algorithm into a separate module.  You need to include either
1632         ath_rate_onoe or ath_rate_amrr when configuring the kernel.
1633
1634 20041116:
1635         Support for systems with an 80386 CPU has been removed.  Please
1636         use FreeBSD 5.x or earlier on systems with an 80386.
1637
1638 20041110:
1639         We have had a hack which would mount the root filesystem
1640         R/W if the device were named 'md*'.  As part of the vnode
1641         work I'm doing I have had to remove this hack.  People
1642         building systems which use preloaded MD root filesystems
1643         may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in
1644         their /etc/rc scripts.
1645
1646 20041104:
1647         FreeBSD 5.3 shipped here.
1648
1649 20041102:
1650         The size of struct tcpcb has changed again due to the removal
1651         of RFC1644 T/TCP.  You have to recompile userland programs that
1652         read kmem for tcp sockets directly (netstat, sockstat, etc.)
1653
1654 20041022:
1655         The size of struct tcpcb has changed.  You have to recompile
1656         userland programs that read kmem for tcp sockets directly
1657         (netstat, sockstat, etc.)
1658
1659 20041016:
1660         RELENG_5 branched here.  For older entries, please see updating
1661         in the RELENG_5 branch.
1662
1663 COMMON ITEMS:
1664
1665         General Notes
1666         -------------
1667         Avoid using make -j when upgrading.  From time to time in the
1668         past there have been problems using -j with buildworld and/or
1669         installworld.  This is especially true when upgrading between
1670         "distant" versions (eg one that cross a major release boundary
1671         or several minor releases, or when several months have passed
1672         on the -current branch).
1673
1674         Sometimes, obscure build problems are the result of environment
1675         poisoning.  This can happen because the make utility reads its
1676         environment when searching for values for global variables.
1677         To run your build attempts in an "environmental clean room",
1678         prefix all make commands with 'env -i '.  See the env(1) manual
1679         page for more details.
1680
1681         When upgrading from one major version to another it is generally
1682         best to upgrade to the latest code in the currently installed branch
1683         first, then do an upgrade to the new branch. This is the best-tested
1684         upgrade path, and has the highest probability of being successful.
1685         Please try this approach before reporting problems with a major
1686         version upgrade.
1687
1688         ZFS notes
1689         ---------
1690         When upgrading the boot ZFS pool to a new version, always follow
1691         these two steps:
1692
1693         1.) recompile and reinstall the ZFS boot loader and boot block
1694         (this is part of "make buildworld" and "make installworld")
1695
1696         2.) update the ZFS boot block on your boot drive
1697
1698         The following example updates the ZFS boot block on the first
1699         partition (freebsd-boot) of a GPT partitioned drive ad0:
1700         "gpart bootcode -p /boot/gptzfsboot -i 1 ad0"
1701
1702         Non-boot pools do not need these updates.
1703
1704         To build a kernel
1705         -----------------
1706         If you are updating from a prior version of FreeBSD (even one just
1707         a few days old), you should follow this procedure.  It is the most
1708         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1709
1710         make kernel-toolchain
1711         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1712         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1713
1714         To test a kernel once
1715         ---------------------
1716         If you just want to boot a kernel once (because you are not sure
1717         if it works, or if you want to boot a known bad kernel to provide
1718         debugging information) run
1719         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1720         nextboot -k testkernel
1721
1722         To just build a kernel when you know that it won't mess you up
1723         --------------------------------------------------------------
1724         This assumes you are already running a 5.X system.  Replace
1725         ${arch} with the architecture of your machine (e.g. "i386",
1726         "alpha", "amd64", "ia64", "pc98", "sparc64", etc).
1727
1728         cd src/sys/${arch}/conf
1729         config KERNEL_NAME_HERE
1730         cd ../compile/KERNEL_NAME_HERE
1731         make depend
1732         make
1733         make install
1734
1735         If this fails, go to the "To build a kernel" section.
1736
1737         To rebuild everything and install it on the current system.
1738         -----------------------------------------------------------
1739         # Note: sometimes if you are running current you gotta do more than
1740         # is listed here if you are upgrading from a really old current.
1741
1742         <make sure you have good level 0 dumps>
1743         make buildworld
1744         make kernel KERNCONF=YOUR_KERNEL_HERE
1745                                                         [1]
1746         <reboot in single user>                         [3]
1747         mergemaster -p                                  [5]
1748         make installworld
1749         mergemaster                                     [4]
1750         make delete-old                                 [6]
1751         <reboot>
1752
1753
1754         To cross-install current onto a separate partition
1755         --------------------------------------------------
1756         # In this approach we use a separate partition to hold
1757         # current's root, 'usr', and 'var' directories.   A partition
1758         # holding "/", "/usr" and "/var" should be about 2GB in
1759         # size.
1760
1761         <make sure you have good level 0 dumps>
1762         <boot into -stable>
1763         make buildworld
1764         make buildkernel KERNCONF=YOUR_KERNEL_HERE
1765         <maybe newfs current's root partition>
1766         <mount current's root partition on directory ${CURRENT_ROOT}>
1767         make installworld DESTDIR=${CURRENT_ROOT}
1768         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1769         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1770         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
1771         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1772         <reboot into current>
1773         <do a "native" rebuild/install as described in the previous section>
1774         <maybe install compatibility libraries from ports/misc/compat*>
1775         <reboot>
1776
1777
1778         To upgrade in-place from 5.x-stable to current
1779         ----------------------------------------------
1780         <make sure you have good level 0 dumps>
1781         make buildworld                                 [9]
1782         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
1783                                                         [1]
1784         <reboot in single user>                         [3]
1785         mergemaster -p                                  [5]
1786         make installworld
1787         mergemaster -i                                  [4]
1788         make delete-old                                 [6]
1789         <reboot>
1790
1791         Make sure that you've read the UPDATING file to understand the
1792         tweaks to various things you need.  At this point in the life
1793         cycle of current, things change often and you are on your own
1794         to cope.  The defaults can also change, so please read ALL of
1795         the UPDATING entries.
1796
1797         Also, if you are tracking -current, you must be subscribed to
1798         freebsd-current@freebsd.org.  Make sure that before you update
1799         your sources that you have read and understood all the recent
1800         messages there.  If in doubt, please track -stable which has
1801         much fewer pitfalls.
1802
1803         [1] If you have third party modules, such as vmware, you
1804         should disable them at this point so they don't crash your
1805         system on reboot.
1806
1807         [3] From the bootblocks, boot -s, and then do
1808                 fsck -p
1809                 mount -u /
1810                 mount -a
1811                 cd src
1812                 adjkerntz -i            # if CMOS is wall time
1813         Also, when doing a major release upgrade, it is required that
1814         you boot into single user mode to do the installworld.
1815
1816         [4] Note: This step is non-optional.  Failure to do this step
1817         can result in a significant reduction in the functionality of the
1818         system.  Attempting to do it by hand is not recommended and those
1819         that pursue this avenue should read this file carefully, as well
1820         as the archives of freebsd-current and freebsd-hackers mailing lists
1821         for potential gotchas.
1822
1823         [5] Usually this step is a noop.  However, from time to time
1824         you may need to do this if you get unknown user in the following
1825         step.  It never hurts to do it all the time.  You may need to
1826         install a new mergemaster (cd src/usr.sbin/mergemaster && make
1827         install) after the buildworld before this step if you last updated
1828         from current before 20020224 or from -stable before 20020408.
1829
1830         [6] This only deletes old files and directories. Old libraries
1831         can be deleted by "make delete-old-libs", but you have to make
1832         sure that no program is using those libraries anymore.
1833
1834         [8] In order to have a kernel that can run the 4.x binaries
1835         needed to do an installworld, you must include the COMPAT_FREEBSD4
1836         option in your kernel.  Failure to do so may leave you with a system
1837         that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5
1838         is required to run the 5.x binaries on more recent kernels.
1839
1840         Make sure that you merge any new devices from GENERIC since the
1841         last time you updated your kernel config file.
1842
1843         [9] When checking out sources, you must include the -P flag to have
1844         cvs prune empty directories.
1845
1846         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1847         "?=" instead of the "=" assignment operator, so that buildworld can
1848         override the CPUTYPE if it needs to.
1849
1850         MAKEOBJDIRPREFIX must be defined in an environment variable, and
1851         not on the command line, or in /etc/make.conf.  buildworld will
1852         warn if it is improperly defined.
1853 FORMAT:
1854
1855 This file contains a list, in reverse chronological order, of major
1856 breakages in tracking -current.  It is not guaranteed to be a complete
1857 list of such breakages, and only contains entries since October 16, 2004.
1858 If you need to see UPDATING entries from before that date, you will need
1859 to fetch an UPDATING file from an older FreeBSD release.
1860
1861 Copyright information:
1862
1863 Copyright 1998-2005 M. Warner Losh.  All Rights Reserved.
1864
1865 Redistribution, publication, translation and use, with or without
1866 modification, in full or in part, in any form or format of this
1867 document are permitted without further permission from the author.
1868
1869 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1870 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1871 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1872 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1873 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1874 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1875 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1876 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1877 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1878 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1879 POSSIBILITY OF SUCH DAMAGE.
1880
1881 If you find this document useful, and you want to, you may buy the
1882 author a beer.
1883
1884 Contact Warner Losh if you have any questions about your use of
1885 this document.
1886
1887 $FreeBSD$