UPDATING revision 195229
1Updating Information for FreeBSD current users
2
3This file is maintained and copyrighted by M. Warner Losh
4<imp@village.org>.  See end of file for further details.  For commonly
5done items, please see the COMMON ITEMS: section later in the file.
6
7Items affecting the ports and packages system can be found in
8/usr/ports/UPDATING.  Please read that file before running
9portupgrade.
10
11NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW:
12	FreeBSD 8.x has many debugging features turned on, in
13	both the kernel and userland.  These features attempt to detect
14	incorrect use of system primitives, and encourage loud failure
15	through extra sanity checking and fail stop semantics.  They
16	also substantially impact system performance.  If you want to
17	do performance measurement, benchmarking, and optimization,
18	you'll want to turn them off.  This includes various WITNESS-
19	related kernel options, INVARIANTS, malloc debugging flags
20	in userland, and various verbose features in the kernel.  Many
21	developers choose to disable these features on build machines
22	to maximize performance.  (To disable malloc debugging, run
23	ln -s aj /etc/malloc.conf.)
24
2520090630:
26	Remove the old kernel RPC implementation and the NFS_LEGACYRPC
27	option.  Kernel configurations may need to be adjusted.
28
2920090629:
30	The network interface device nodes at /dev/net/<interface> have
31	been removed.  All ioctl operations can be performed the normal
32	way using routing sockets.  The kqueue functionality can
33	generally be replaced with routing sockets.
34
3520090628:
36	The documentation from the FreeBSD Documentation Project
37	(Handbook, FAQ, etc.) is now installed via packages by
38	sysinstall(8) and under the /usr/local/share/doc/freebsd
39	directory instead of /usr/share/doc.
40
4120090624:
42	The ABI of various structures related to the SYSV IPC API have
43	been changed.  As a result, the COMPAT_FREEBSD[456] kernel
44	options now all require COMPAT_FREEBSD7.  Bump __FreeBSD_version
45	to 800100.
46
4720090622:
48	Layout of struct vnet has changed as routing related variables
49	were moved to their own Vimage module. Modules need to be
50	recompiled.  Bump __FreeBSD_version to 800099.
51
5220090619:
53	NGROUPS_MAX and NGROUPS have been increased from 16 to 1023
54	and 1024 respectively.  As long as no more than 16 groups per
55	process are used, no changes should be visible.  When more
56	than 16 groups are used, old binaries may fail if they call
57	getgroups() or getgrouplist() with statically sized storage.
58	Recompiling will work around this, but applications should be
59	modified to use dynamically allocated storage for group arrays
60	as POSIX.1-2008 does not cap an implementation's number of
61	supported groups at NGROUPS_MAX+1 as previous versions did.
62
63	NFS and portalfs mounts may also be affected as the list of
64	groups is truncated to 16.  Users of NFS who use more than 16
65	groups, should take care that negative group permissions are not
66	used on the exported file systems as they will not be reliable
67	unless a GSSAPI based authentication method is used.
68
6920090616:
70	The compiling option ADAPTIVE_LOCKMGRS has been introduced.
71	This option compiles in the support for adaptive spinning for lockmgrs
72	which want to enable it.  The lockinit() function now accepts the
73	flag LK_ADAPTIVE in order to make the lock object subject to
74	adaptive spinning when both held in write and read mode.
75
7620090613:
77	The layout of the structure returned by IEEE80211_IOC_STA_INFO
78	has changed.  User applications that use this ioctl need to be
79	rebuilt.
80
8120090611:
82	The layout of struct thread has changed.  Kernel and modules
83	need to be rebuilt.
84
8520090608:
86	The layout of structs ifnet, domain, protosw and vnet_net has
87	changed.  Kernel modules need to be rebuilt.
88	Bump __FreeBSD_version to 800097.
89
9020090602:
91	window(1) has been removed from the base system. It can now be
92	installed from ports. The port is called misc/window.
93
9420090601:
95	The way we are storing and accessing `routing table' entries
96	has changed. Programs reading the FIB, like netstat, need to
97	be re-compiled.
98
9920090601:
100	A new netisr implementation has been added for FreeBSD 8.  Network
101	file system modules, such as igmp, ipdivert, and others, should be
102	rebuilt.
103	Bump __FreeBSD_version to 800096.
104
10520090530:
106	Remove the tunable/sysctl debug.mpsafevfs as its initial purpose
107	is no more valid.
108
10920090530:
110	Add VOP_ACCESSX(9).  File system modules need to be rebuilt.
111	Bump __FreeBSD_version to 800094.
112
11320090529:
114	Add mnt_xflag field to 'struct mount'.  File system modules
115	need to be rebuilt.
116	Bump __FreeBSD_version to 800093.
117
11820090528:
119	The compiling option ADAPTIVE_SX has been retired while it has been
120	introduced the option NO_ADAPTIVE_SX which handles the reversed logic.
121	The KPI for sx_init_flags() changes as accepting flags:
122	SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag
123	has been introduced in order to handle the reversed logic.
124	Bump __FreeBSD_version to 800092.
125
12620090527:
127	Add support for hierarchical jails.  Remove global securelevel.
128	Bump __FreeBSD_version to 800091.
129
13020090523:
131	The layout of struct vnet_net has changed, therefore modules
132	need to be rebuilt.
133	Bump __FreeBSD_version to 800090.
134
13520090523:
136	The newly imported zic(8) produces a new format in the
137	output. Please run tzsetup(8) to install the newly created
138	data to /etc/localtime.
139
14020090520:
141	The sysctl tree for the usb stack has renamed from hw.usb2.* to
142	hw.usb.* and is now consistent again with previous releases.
143
14420090520:
145	802.11 monitor mode support was revised and driver api's
146	were changed.  Drivers dependent on net80211 now support
147	DLT_IEEE802_11_RADIO instead of DLT_IEEE802_11.  No
148	user-visible data structures were changed but applications
149	that use DLT_IEEE802_11 may require changes.
150	Bump __FreeBSD_version to 800088.
151
15220090430:
153	The layout of the following structs has changed: sysctl_oid,
154	socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet,
155	vnet_inet6 and vnet_ipfw.  Most modules need to be rebuild or
156	panics may be experienced.  World rebuild is required for
157	correctly checking networking state from userland.
158	Bump __FreeBSD_version to 800085.
159
16020090429:
161	MLDv2 and Source-Specific Multicast (SSM) have been merged
162	to the IPv6 stack. VIMAGE hooks are in but not yet used.
163	The implementation of SSM within FreeBSD's IPv6 stack closely
164	follows the IPv4 implementation.
165
166	For kernel developers:
167
168	* The most important changes are that the ip6_output() and
169	  ip6_input() paths no longer take the IN6_MULTI_LOCK,
170	  and this lock has been downgraded to a non-recursive mutex.
171
172	* As with the changes to the IPv4 stack to support SSM, filtering
173	  of inbound multicast traffic must now be performed by transport
174	  protocols within the IPv6 stack. This does not apply to TCP and
175	  SCTP, however, it does apply to UDP in IPv6 and raw IPv6.
176
177	* The KPIs used by IPv6 multicast are similar to those used by
178	  the IPv4 stack, with the following differences:
179	   * im6o_mc_filter() is analogous to imo_multicast_filter().
180	   * The legacy KAME entry points in6_joingroup and in6_leavegroup()
181	     are shimmed to in6_mc_join() and in6_mc_leave() respectively.
182	   * IN6_LOOKUP_MULTI() has been deprecated and removed.
183	   * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs
184	     for MLDv1 have an additional 'timer' argument which is used to
185	     jitter the initial membership report for the solicited-node
186	     multicast membership on-link.
187	   * This is not strictly needed for MLDv2, which already jitters
188	     its report transmissions.  However, the 'timer' argument is
189	     preserved in case MLDv1 is active on the interface.
190
191	* The KAME linked-list based IPv6 membership implementation has
192	  been refactored to use a vector similar to that used by the IPv4
193	  stack.
194	  Code which maintains a list of its own multicast memberships
195	  internally, e.g. carp, has been updated to reflect the new
196	  semantics.
197
198	* There is a known Lock Order Reversal (LOR) due to in6_setscope()
199	  acquiring the IF_AFDATA_LOCK and being called within ip6_output().
200	  Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an
201	  implementation constraint which needs to be addressed in HEAD.
202
203	For application developers:
204
205	* The changes are broadly similar to those made for the IPv4
206	  stack.
207
208	* The use of IPv4 and IPv6 multicast socket options on the same
209	  socket, using mapped addresses, HAS NOT been tested or supported.
210
211	* There are a number of issues with the implementation of various
212	  IPv6 multicast APIs which need to be resolved in the API surface
213	  before the implementation is fully compatible with KAME userland
214	  use, and these are mostly to do with interface index treatment.
215
216	* The literature available discusses the use of either the delta / ASM
217	  API with setsockopt(2)/getsockopt(2), or the full-state / ASM API
218	  using setsourcefilter(3)/getsourcefilter(3). For more information
219	  please refer to RFC 3768, 'Socket Interface Extensions for
220	  Multicast Source Filters'.
221
222	* Applications which use the published RFC 3678 APIs should be fine.
223
224	For systems administrators:
225
226	* The mtest(8) utility has been refactored to support IPv6, in
227	  addition to IPv4. Interface addresses are no longer accepted
228	  as arguments, their names must be used instead. The utility
229	  will map the interface name to its first IPv4 address as
230	  returned by getifaddrs(3).
231
232	* The ifmcstat(8) utility has also been updated to print the MLDv2
233	  endpoint state and source filter lists via sysctl(3).
234
235	* The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable
236	  loopback of IPv6 multicast datagrams by default; it defaults to 1
237	  to preserve the existing behaviour. Disabling multicast loopback is
238	  recommended for optimal system performance.
239
240	* The IPv6 MROUTING code has been changed to examine this sysctl
241	  instead of attempting to perform a group lookup before looping
242	  back forwarded datagrams.
243
244	Bump __FreeBSD_version to 800084.
245
24620090422:
247	Implement low-level Bluetooth HCI API.
248	Bump __FreeBSD_version to 800083.
249
25020090419:
251	The layout of struct malloc_type, used by modules to register new
252	memory allocation types, has changed.  Most modules will need to
253	be rebuilt or panics may be experienced.
254	Bump __FreeBSD_version to 800081.
255
25620090415:
257	Anticipate overflowing inp_flags - add inp_flags2.
258	This changes most offsets in inpcb, so checking v4 connection
259	state will require a world rebuild.
260	Bump __FreeBSD_version to 800080.
261
26220090415:
263	Add an llentry to struct route and struct route_in6. Modules
264	embedding a struct route will need to be recompiled.
265	Bump __FreeBSD_version to 800079.
266
26720090414:
268	The size of rt_metrics_lite and by extension rtentry has changed.
269	Networking administration apps will need to be recompiled.
270	The route command now supports show as an alias for get, weighting
271	of routes, sticky and nostick flags to alter the behavior of stateful
272	load balancing.
273	Bump __FreeBSD_version to 800078.
274
27520090408:
276	Do not use Giant for kbdmux(4) locking. This is wrong and
277	apparently causing more problems than it solves. This will
278	re-open the issue where interrupt handlers may race with
279	kbdmux(4) in polling mode. Typical symptoms include (but
280	not limited to) duplicated and/or missing characters when
281	low level console functions (such as gets) are used while
282	interrupts are enabled (for example geli password prompt,
283	mountroot prompt etc.). Disabling kbdmux(4) may help.
284
28520090407:
286	The size of structs vnet_net, vnet_inet and vnet_ipfw has changed;
287	kernel modules referencing any of the above need to be recompiled.
288	Bump __FreeBSD_version to 800075.
289
29020090320:
291	GEOM_PART has become the default partition slicer for storage devices,
292	replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
293	introduces some changes:
294
295	MSDOS/EBR: the devices created from MSDOS extended partition entries
296	(EBR) can be named differently than with GEOM_MBR and are now symlinks
297	to devices with offset-based names. fstabs may need to be modified.
298
299	BSD: the "geometry does not match label" warning is harmless in most
300	cases but it points to problems in file system misalignment with
301	disk geometry. The "c" partition is now implicit, covers the whole
302	top-level drive and cannot be (mis)used by users.
303
304	General: Kernel dumps are now not allowed to be written to devices
305	whose partition types indicate they are meant to be used for file
306	systems (or, in case of MSDOS partitions, as something else than
307	the "386BSD" type).
308
309	Most of these changes date approximately from 200812.
310
31120090319:
312	The uscanner(4) driver has been removed from the kernel. This follows
313	Linux removing theirs in 2.6 and making libusb the default interface
314	(supported by sane).
315
31620090319:
317	The multicast forwarding code has been cleaned up. netstat(1)
318	only relies on KVM now for printing bandwidth upcall meters.
319	The IPv4 and IPv6 modules are split into ip_mroute_mod and
320	ip6_mroute_mod respectively. The config(5) options for statically
321	compiling this code remain the same, i.e. 'options MROUTING'.
322
32320090315:
324	Support for the IFF_NEEDSGIANT network interface flag has been
325	removed, which means that non-MPSAFE network device drivers are no
326	longer supported.  In particular, if_ar, if_sr, and network device
327	drivers from the old (legacy) USB stack can no longer be built or
328	used.
329
33020090313:
331	POSIX.1 Native Language Support (NLS) has been enabled in libc and
332	a bunch of new language catalog files have also been added.
333	This means that some common libc messages are now localized and
334	they depend on the LC_MESSAGES environmental variable.
335
33620090313:
337	The k8temp(4) driver has been renamed to amdtemp(4) since
338	support for K10 and K11 CPU families was added.
339
34020090309:
341	IGMPv3 and Source-Specific Multicast (SSM) have been merged
342	to the IPv4 stack. VIMAGE hooks are in but not yet used.
343
344	For kernel developers, the most important changes are that the
345	ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
346	and this lock has been downgraded to a non-recursive mutex.
347
348	Transport protocols (UDP, Raw IP) are now responsible for filtering
349	inbound multicast traffic according to group membership and source
350	filters. The imo_multicast_filter() KPI exists for this purpose.
351	Transports which do not use multicast (SCTP, TCP) already reject
352	multicast by default. Forwarding and receive performance may improve
353	as a mutex acquisition is no longer needed in the ip_input()
354	low-level input path.  in_addmulti() and in_delmulti() are shimmed
355	to new KPIs which exist to support SSM in-kernel.
356
357	For application developers, it is recommended that loopback of
358	multicast datagrams be disabled for best performance, as this
359	will still cause the lock to be taken for each looped-back
360	datagram transmission. The net.inet.ip.mcast.loop sysctl may
361	be tuned to 0 to disable loopback by default; it defaults to 1
362	to preserve the existing behaviour.
363
364	For systems administrators, to obtain best performance with
365	multicast reception and multiple groups, it is always recommended
366	that a card with a suitably precise hash filter is used. Hash
367	collisions will still result in the lock being taken within the
368	transport protocol input path to check group membership.
369
370	If deploying FreeBSD in an environment with IGMP snooping switches,
371	it is recommended that the net.inet.igmp.sendlocal sysctl remain
372	enabled; this forces 224.0.0.0/24 group membership to be announced
373	via IGMP.
374
375	The size of 'struct igmpstat' has changed; netstat needs to be
376	recompiled to reflect this.
377	Bump __FreeBSD_version to 800070.
378
37920090309:
380	libusb20.so.1 is now installed as libusb.so.1 and the ports system
381	updated to use it. This requires a buildworld/installworld in order to
382	update the library and dependencies (usbconfig, etc). Its advisable to
383	rebuild all ports which uses libusb. More specific directions are given
384	in the ports collection UPDATING file. Any /etc/libmap.conf entries for
385	libusb are no longer required and can be removed.
386
38720090302:
388	A workaround is committed to allow the creation of System V shared
389	memory segment of size > 2 GB on the 64-bit architectures.
390	Due to a limitation of the existing ABI, the shm_segsz member
391	of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
392	wrong for large segments. Note that limits must be explicitly
393	raised to allow such segments to be created.
394
39520090301:
396	The layout of struct ifnet has changed, requiring a rebuild of all
397	network device driver modules.
398
39920090227:
400	The /dev handling for the new USB stack has changed, a
401	buildworld/installworld is required for libusb20.
402
40320090223:
404	The new USB2 stack has now been permanently moved in and all kernel and
405	module names reverted to their previous values (eg, usb, ehci, ohci,
406	ums, ...).  The old usb stack can be compiled in by prefixing the name
407	with the letter 'o', the old usb modules have been removed.
408	Updating entry 20090216 for xorg and 20090215 for libmap may still
409	apply.
410
41120090217:
412	The rc.conf(5) option if_up_delay has been renamed to
413	defaultroute_delay to better reflect its purpose. If you have
414	customized this setting in /etc/rc.conf you need to update it to
415	use the new name.
416
41720090216:
418	xorg 7.4 wants to configure its input devices via hald which does not
419	yet work with USB2. If the keyboard/mouse does not work in xorg then
420	add
421		Option "AllowEmptyInput" "off"
422	to your ServerLayout section.  This will cause X to use the configured
423	kbd and mouse sections from your xorg.conf.
424
42520090215:
426	The GENERIC kernels for all architectures now default to the new USB2
427	stack. No kernel config options or code have been removed so if a
428	problem arises please report it and optionally revert to the old USB
429	stack. If you are loading USB kernel modules or have a custom kernel
430	that includes GENERIC then ensure that usb names are also changed over,
431	eg uftdi -> usb2_serial_ftdi.
432
433	Older programs linked against the ports libusb 0.1 need to be
434	redirected to the new stack's libusb20.  /etc/libmap.conf can
435	be used for this:
436		# Map old usb library to new one for usb2 stack
437		libusb-0.1.so.8	libusb20.so.1
438
43920090203:
440	The ichsmb(4) driver has been changed to require SMBus slave
441	addresses be left-justified (xxxxxxx0b) rather than right-justified.
442	All of the other SMBus controller drivers require left-justified
443	slave addresses, so this change makes all the drivers provide the
444	same interface.
445
44620090201:
447	INET6 statistics (struct ip6stat) was updated.
448	netstat(1) needs to be recompiled.
449
45020090119:
451	NTFS has been removed from GENERIC kernel on amd64 to match
452	GENERIC on i386. Should not cause any issues since mount_ntfs(8)
453	will load ntfs.ko module automatically when NTFS support is
454	actually needed, unless ntfs.ko is not installed or security
455	level prohibits loading kernel modules. If either is the case,
456	"options NTFS" has to be added into kernel config.
457
45820090115:
459	TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
460	New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
461	800061. User space tools that rely on the size of struct tcpcb in
462	tcp_var.h (e.g. sockstat) need to be recompiled.
463
46420081225:
465	ng_tty(4) module updated to match the new TTY subsystem.
466	Due to API change, user-level applications must be updated.
467	New API support added to mpd5 CVS and expected to be present
468	in next mpd5.3 release.
469
47020081219:
471	With __FreeBSD_version 800060 the makefs tool is part of
472	the base system (it was a port).
473
47420081216:
475	The afdata and ifnet locks have been changed from mutexes to
476	rwlocks, network modules will need to be re-compiled.
477
47820081214:
479	__FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
480	RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
481	The new code reduced struct rtentry{} by 16 bytes on 32-bit
482	architecture and 40 bytes on 64-bit architecture. The userland
483	applications "arp" and "ndp" have been updated accordingly.
484	The output from "netstat -r" shows only routing entries and
485	none of the L2 information.
486
48720081130:
488	__FreeBSD_version 800057 marks the switchover from the
489	binary ath hal to source code. Users must add the line:
490
491	options	AH_SUPPORT_AR5416
492
493	to their kernel config files when specifying:
494
495	device	ath_hal
496
497	The ath_hal module no longer exists; the code is now compiled
498	together with the driver in the ath module.  It is now
499	possible to tailor chip support (i.e. reduce the set of chips
500	and thereby the code size); consult ath_hal(4) for details.
501
50220081121:
503	__FreeBSD_version 800054 adds memory barriers to
504	<machine/atomic.h>, new interfaces to ifnet to facilitate
505	multiple hardware transmit queues for cards that support
506	them, and a lock-less ring-buffer implementation to
507	enable drivers to more efficiently manage queueing of
508	packets.
509
51020081117:
511	A new version of ZFS (version 13) has been merged to -HEAD.
512	This version has zpool attribute "listsnapshots" off by
513	default, which means "zfs list" does not show snapshots,
514	and is the same as Solaris behavior.
515
51620081028:
517	dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
518
51920081009:
520	The uhci, ohci, ehci and slhci USB Host controller drivers have
521	been put into separate modules. If you load the usb module
522	separately through loader.conf you will need to load the
523	appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
524	controller add the following to loader.conf:
525
526		uhci_load="YES"
527		ehci_load="YES"
528
52920081009:
530	The ABI used by the PMC toolset has changed.  Please keep
531	userland (libpmc(3)) and the kernel module (hwpmc(4)) in
532	sync.
533
53420080820:
535	The TTY subsystem of the kernel has been replaced by a new
536	implementation, which provides better scalability and an
537	improved driver model. Most common drivers have been migrated to
538	the new TTY subsystem, while others have not. The following
539	drivers have not yet been ported to the new TTY layer:
540
541	PCI/ISA:
542		cy, digi, rc, rp, sio
543
544	USB:
545		ubser, ucycom
546
547	Line disciplines:
548		ng_h4, ng_tty, ppp, sl, snp
549
550	Adding these drivers to your kernel configuration file shall
551	cause compilation to fail.
552
55320080818:
554	ntpd has been upgraded to 4.2.4p5.
555
55620080801:
557	OpenSSH has been upgraded to 5.1p1.
558
559	For many years, FreeBSD's version of OpenSSH preferred DSA
560	over RSA for host and user authentication keys.  With this
561	upgrade, we've switched to the vendor's default of RSA over
562	DSA.  This may cause upgraded clients to warn about unknown
563	host keys even for previously known hosts.  Users should
564	follow the usual procedure for verifying host keys before
565	accepting the RSA key.
566
567	This can be circumvented by setting the "HostKeyAlgorithms"
568	option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
569	command line.
570
571	Please note that the sequence of keys offered for
572	authentication has been changed as well.  You may want to
573	specify IdentityFile in a different order to revert this
574	behavior.
575
57620080713:
577	The sio(4) driver has been removed from the i386 and amd64
578	kernel configuration files. This means uart(4) is now the
579	default serial port driver on those platforms as well.
580
581	To prevent collisions with the sio(4) driver, the uart(4) driver
582	uses different names for its device nodes. This means the
583	onboard serial port will now most likely be called "ttyu0"
584	instead of "ttyd0". You may need to reconfigure applications to
585	use the new device names.
586
587	When using the serial port as a boot console, be sure to update
588	/boot/device.hints and /etc/ttys before booting the new kernel.
589	If you forget to do so, you can still manually specify the hints
590	at the loader prompt:
591
592		set hint.uart.0.at="isa"
593		set hint.uart.0.port="0x3F8"
594		set hint.uart.0.flags="0x10"
595		set hint.uart.0.irq="4"
596		boot -s
597
59820080609:
599	The gpt(8) utility has been removed. Use gpart(8) to partition
600	disks instead.
601
60220080603:
603	The version that Linuxulator emulates was changed from 2.4.2
604	to 2.6.16. If you experience any problems with Linux binaries
605	please try to set sysctl compat.linux.osrelease to 2.4.2 and
606	if it fixes the problem contact emulation mailing list.
607
60820080525:
609	ISDN4BSD (I4B) was removed from the src tree. You may need to
610	update a your kernel configuration and remove relevant entries.
611
61220080509:
613	I have checked in code to support multiple routing tables.
614	See the man pages setfib(1) and setfib(2).
615	This is a hopefully backwards compatible version,
616	but to make use of it you need to compile your kernel
617	with options ROUTETABLES=2 (or more up to 16).
618
61920080420:
620	The 802.11 wireless support was redone to enable multi-bss
621	operation on devices that are capable.  The underlying device
622	is no longer used directly but instead wlanX devices are
623	cloned with ifconfig.  This requires changes to rc.conf files.
624	For example, change:
625		ifconfig_ath0="WPA DHCP"
626	to
627		wlans_ath0=wlan0
628		ifconfig_wlan0="WPA DHCP"
629	see rc.conf(5) for more details.  In addition, mergemaster of
630	/etc/rc.d is highly recommended.  Simultaneous update of userland
631	and kernel wouldn't hurt either.
632
633	As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
634	modules were merged into the base wlan module.  All references
635	to these modules (e.g. in kernel config files) must be removed.
636
63720080408:
638	psm(4) has gained write(2) support in native operation level.
639	Arbitrary commands can be written to /dev/psm%d and status can
640	be read back from it.  Therefore, an application is responsible
641	for status validation and error recovery.  It is a no-op in
642	other operation levels.
643
64420080312:
645	Support for KSE threading has been removed from the kernel.  To
646	run legacy applications linked against KSE libmap.conf may
647	be used.  The following libmap.conf may be used to ensure
648	compatibility with any prior release:
649
650	libpthread.so.1 libthr.so.1
651	libpthread.so.2 libthr.so.2
652	libkse.so.3 libthr.so.3
653
65420080301:
655	The layout of struct vmspace has changed. This affects libkvm
656	and any executables that link against libkvm and use the
657	kvm_getprocs() function. In particular, but not exclusively,
658	it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
659	The effects are minimal, but it's advisable to upgrade world
660	nonetheless.
661
66220080229:
663	The latest em driver no longer has support in it for the
664	82575 adapter, this is now moved to the igb driver. The
665	split was done to make new features that are incompatible
666	with older hardware easier to do.
667
66820080220:
669	The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
670	likewise the kernel option is now GEOM_LINUX_LVM.
671
67220080211:
673	The default NFS mount mode has changed from UDP to TCP for
674	increased reliability.  If you rely on (insecurely) NFS
675	mounting across a firewall you may need to update your
676	firewall rules.
677
67820080208:
679	Belatedly note the addition of m_collapse for compacting
680	mbuf chains.
681
68220080126:
683	The fts(3) structures have been changed to use adequate
684	integer types for their members and so to be able to cope
685	with huge file trees.  The old fts(3) ABI is preserved
686	through symbol versioning in libc, so third-party binaries
687	using fts(3) should still work, although they will not take
688	advantage of the extended types.  At the same time, some
689	third-party software might fail to build after this change
690	due to unportable assumptions made in its source code about
691	fts(3) structure members.  Such software should be fixed
692	by its vendor or, in the worst case, in the ports tree.
693	FreeBSD_version 800015 marks this change for the unlikely
694	case that a portable fix is impossible.
695
69620080123:
697	To upgrade to -current after this date, you must be running
698	FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
699	from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
700
70120071128:
702	The ADAPTIVE_GIANT kernel option has been retired because its
703	functionality is the default now.
704
70520071118:
706	The AT keyboard emulation of sunkbd(4) has been turned on
707	by default. In order to make the special symbols of the Sun
708	keyboards driven by sunkbd(4) work under X these now have
709	to be configured the same way as Sun USB keyboards driven
710	by ukbd(4) (which also does AT keyboard emulation), f.e.:
711
712	Option	"XkbLayout" "us"
713	Option	"XkbRules" "xorg"
714	Option	"XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
715
71620071024:
717	It has been decided that it is desirable to provide ABI
718	backwards compatibility to the FreeBSD 4/5/6 versions of the
719	PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
720	broken with the introduction of PCI domain support (see the
721	20070930 entry). Unfortunately, this required the ABI of
722	PCIOCGETCONF to be broken again in order to be able to
723	provide backwards compatibility to the old version of that
724	IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
725	again. As for prominent ports this affects neither pciutils
726	nor xorg-server this time, the hal port needs to be rebuilt
727	however.
728
72920071020:
730	The misnamed kthread_create() and friends have been renamed
731	to kproc_create() etc. Many of the callers already
732	used kproc_start()..
733	I will return kthread_create() and friends in a while
734	with implementations that actually create threads, not procs.
735	Renaming corresponds with version 800002.
736
73720071010:
738	RELENG_7 branched.
739
74020071009:
741	Setting WITHOUT_LIBPTHREAD now means WITHOUT_LIBKSE and
742	WITHOUT_LIBTHR are set.
743
74420070930:
745	The PCI code has been made aware of PCI domains. This means that
746	the location strings as used by pciconf(8) etc are now in the
747	following format: pci<domain>:<bus>:<device>[:<function>]. It
748	also means that consumers of <sys/pciio.h> potentially need to
749	be recompiled; this includes the hal and xorg-server ports.
750
75120070928:
752	The caching daemon (cached) was renamed to nscd. nscd.conf
753	configuration file should be used instead of cached.conf and
754	nscd_enable, nscd_pidfile and nscd_flags options should be used
755	instead of cached_enable, cached_pidfile and cached_flags in
756	rc.conf.
757
75820070921:
759	The getfacl(1) utility now prints owning user and group name
760	instead of owning uid and gid in the three line comment header.
761	This is the same behavior as getfacl(1) on Solaris and Linux.
762
76320070704:
764	The new IPsec code is now compiled in using the IPSEC option.  The
765	IPSEC option now requires "device crypto" be defined in your kernel
766	configuration.  The FAST_IPSEC kernel option is now deprecated.
767
76820070702:
769	The packet filter (pf) code has been updated to OpenBSD 4.1 Please
770	note the changed syntax - keep state is now on by default.  Also
771	note the fact that ftp-proxy(8) has been changed from bottom up and
772	has been moved from libexec to usr/sbin.  Changes in the ALTQ
773	handling also affect users of IPFW's ALTQ capabilities.
774
77520070701:
776	Remove KAME IPsec in favor of FAST_IPSEC, which is now the
777	only IPsec supported by FreeBSD.  The new IPsec stack
778	supports both IPv4 and IPv6. The kernel option will change
779	after the code changes have settled in.  For now the kernel
780	option IPSEC is deprecated and FAST_IPSEC is the only option, that
781	will change after some settling time.
782
78320070701:
784	The wicontrol(8) utility has been removed from the base system. wi(4)
785	cards should be configured using ifconfig(8), see the man page for more
786	information.
787
78820070612:
789	The i386/amd64 GENERIC kernel now defaults to the nfe(4) driver
790	instead of the nve(4) driver. Please update your configuration
791	accordingly.
792
79320070612:
794	By default, /etc/rc.d/sendmail no longer rebuilds the aliases
795	database if it is missing or older than the aliases file.  If
796	desired, set the new rc.conf option sendmail_rebuild_aliases
797	to "YES" to restore that functionality.
798
79920070612:
800	The IPv4 multicast socket code has been considerably modified, and
801	moved to the file sys/netinet/in_mcast.c. Initial support for the
802	RFC 3678 Source-Specific Multicast Socket API has been added to
803	the IPv4 network stack.
804
805	Strict multicast and broadcast reception is now the default for
806	UDP/IPv4 sockets; the net.inet.udp.strict_mcast_mship sysctl variable
807	has now been removed.
808
809	The RFC 1724 hack for interface selection has been removed; the use
810	of the Linux-derived ip_mreqn structure with IP_MULTICAST_IF has
811	been added to replace it. Consumers such as routed will soon be
812	updated to reflect this.
813
814	These changes affect users who are running routed(8) or rdisc(8)
815	from the FreeBSD base system on point-to-point or unnumbered
816	interfaces.
817
81820070610:
819	The net80211 layer has changed significantly and all wireless
820	drivers that depend on it need to be recompiled.  Further these
821	changes require that any program that interacts with the wireless
822	support in the kernel be recompiled; this includes: ifconfig,
823	wpa_supplicant, hostapd, and wlanstats.  Users must also, for
824	the moment, kldload the wlan_scan_sta and/or wlan_scan_ap modules
825	if they use modules for wireless support.  These modules implement
826	scanning support for station and ap modes, respectively.  Failure
827	to load the appropriate module before marking a wireless interface
828	up will result in a message to the console and the device not
829	operating properly.
830
83120070610:
832	The pam_nologin(8) module ceases to provide an authentication
833	function and starts providing an account management function.
834	Consequent changes to /etc/pam.d should be brought in using
835	mergemaster(8).  Third-party files in /usr/local/etc/pam.d may
836	need manual editing as follows.  Locate this line (or similar):
837
838		auth	required	pam_nologin.so	no_warn
839
840	and change it according to this example:
841
842		account	required	pam_nologin.so	no_warn
843
844	That is, the first word needs to be changed from "auth" to
845	"account".  The new line can be moved to the account section
846	within the file for clarity.  Not updating pam.conf(5) files
847	will result in nologin(5) ignored by the respective services.
848
84920070529:
850	The ether_ioctl() function has been synchronized with ioctl(2)
851	and ifnet.if_ioctl.  Due to that, the size of one of its arguments
852	has changed on 64-bit architectures.  All kernel modules using
853	ether_ioctl() need to be rebuilt on such architectures.
854
85520070516:
856	Improved INCLUDE_CONFIG_FILE support has been introduced to the
857	config(8) utility. In order to take advantage of this new
858	functionality, you are expected to recompile and install
859	src/usr.sbin/config. If you don't rebuild config(8), and your
860	kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel
861	build will be broken because of a missing "kernconfstring"
862	symbol.
863
86420070513:
865	Symbol versioning is enabled by default.  To disable it, use
866	option WITHOUT_SYMVER.  It is not advisable to attempt to
867	disable symbol versioning once it is enabled; your installworld
868	will break because a symbol version-less libc will get installed
869	before the install tools.  As a result, the old install tools,
870	which previously had symbol dependencies to FBSD_1.0, will fail
871	because the freshly installed libc will not have them.
872
873	The default threading library (providing "libpthread") has been
874	changed to libthr.  If you wish to have libkse as your default,
875	use option DEFAULT_THREAD_LIB=libkse for the buildworld.
876
87720070423:
878	The ABI breakage in sendmail(8)'s libmilter has been repaired
879	so it is no longer necessary to recompile mail filters (aka,
880	milters).  If you recompiled mail filters after the 20070408
881	note, it is not necessary to recompile them again.
882
88320070417:
884	The new trunk(4) driver has been renamed to lagg(4) as it better
885	reflects its purpose. ifconfig will need to be recompiled.
886
88720070408:
888	sendmail(8) has been updated to version 8.14.1.  Mail filters
889	(aka, milters) compiled against the libmilter included in the
890	base operating system should be recompiled.
891
89220070302:
893	Firmwares for ipw(4) and iwi(4) are now included in the base tree.
894	In order to use them one must agree to the respective LICENSE in
895	share/doc/legal and define legal.intel_<name>.license_ack=1 via
896	loader.conf(5) or kenv(1).  Make sure to deinstall the now
897	deprecated modules from the respective firmware ports.
898
89920070228:
900	The name resolution/mapping functions addr2ascii(3) and ascii2addr(3)
901	were removed from FreeBSD's libc. These originally came from INRIA
902	IPv6. Nothing in FreeBSD ever used them. They may be regarded as
903	deprecated in previous releases.
904	The AF_LINK support for getnameinfo(3) was merged from NetBSD to
905	replace it as a more portable (and re-entrant) API.
906
90720070224:
908	To support interrupt filtering a modification to the newbus API
909	has occurred, ABI was broken and __FreeBSD_version was bumped
910	to 700031. Please make sure that your kernel and modules are in
911	sync. For more info:
912	http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941
913
91420070224:
915	The IPv6 multicast forwarding code may now be loaded into GENERIC
916	kernels by loading the ip_mroute.ko module. This is built into the
917	module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are
918	set; see src.conf(5) for more information.
919
92020070214:
921	The output of netstat -r has changed. Without -n, we now only
922	print a "network name" without the prefix length if the network
923	address and mask exactly match a Class A/B/C network, and an entry
924	exists in the nsswitch "networks" map.
925	With -n, we print the full unabbreviated CIDR network prefix in
926	the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default".
927	This change is in preparation for changes such as equal-cost
928	multipath, and to more generally assist operational deployment
929	of FreeBSD as a modern IPv4 router.
930
93120070210:
932	PIM has been turned on by default in the IPv4 multicast
933	routing code. The kernel option 'PIM' has now been removed.
934	PIM is now built by default if option 'MROUTING' is specified.
935	It may now be loaded into GENERIC kernels by loading the
936	ip_mroute.ko module.
937
93820070207:
939	Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing
940	has been removed. Its functionality may be achieved by explicitly
941	configuring gif(4) interfaces and using the 'phyint' keyword in
942	mrouted.conf.
943	XORP does not support source-routed IPv4 multicast tunnels nor the
944	integrated IPIP tunneling, therefore it is not affected by this
945	change. The __FreeBSD_version macro has been bumped to 700030.
946
94720061221:
948	Support for PCI Message Signalled Interrupts has been
949	re-enabled in the bge driver, only for those chips which are
950	believed to support it properly.  If there are any problems,
951	MSI can be disabled completely by setting the
952	'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0
953	in the loader.
954
95520061214:
956	Support for PCI Message Signalled Interrupts has been
957	disabled again in the bge driver.  Many revisions of the
958	hardware fail to support it properly.  Support can be
959	re-enabled by removing the #define of BGE_DISABLE_MSI in
960	"src/sys/dev/bge/if_bge.c".
961
96220061214:
963	Support for PCI Message Signalled Interrupts has been added
964	to the bge driver.  If there are any problems, MSI can be
965	disabled completely by setting the 'hw.pci.enable_msi' and
966	'hw.pci.enable_msix' tunables to 0 in the loader.
967
96820061205:
969	The removal of several facets of the experimental Threading
970	system from the kernel means that the proc and thread structures
971	have changed quite a bit. I suggest all kernel modules that might
972	reference these structures be recompiled.. Especially the
973	linux module.
974
97520061126:
976	Sound infrastructure has been updated with various fixes and
977	improvements. Most of the changes are pretty much transparent,
978	with exceptions of followings:
979	1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been
980	   moved to their own dev sysctl nodes, for example:
981		hw.snd.pcm0.vchans -> dev.pcm.0.vchans
982	2) /dev/dspr%d.%d has been deprecated. Each channel now has its
983	   own chardev in the form of "dsp%d.<function>%d", where <function>
984	   is p = playback, r = record and v = virtual, respectively. Users
985	   are encouraged to use these devs instead of (old) "/dev/dsp%d.%d".
986	   This does not affect those who are using "/dev/dsp".
987
98820061122:
989	geom(4)'s gmirror(8) class metadata structure has been
990	rev'd from v3 to v4. If you update across this point and
991	your metadata is converted for you, you will not be easily
992	able to downgrade since the /boot/kernel.old/geom_mirror.ko
993	kernel module will be unable to read the v4 metadata.  You
994	can resolve this by doing from the loader(8) prompt:
995
996		set vfs.root.mountfrom="ufs:/dev/XXX"
997
998	where XXX is the root slice of one of the disks that composed
999	the mirror (i.e.: /dev/ad0s1a). You can then rebuild
1000	the array the same way you built it originally.
1001
100220061122:
1003	The following binaries have been disconnected from the build:
1004	mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs,
1005	and mount_std.  The functionality of these programs has been
1006	moved into the mount program.  For example, to mount a devfs
1007	filesystem, instead of using mount_devfs, use: "mount -t devfs".
1008	This does not affect entries in /etc/fstab, since entries in
1009	/etc/fstab are always processed with "mount -t fstype".
1010
101120061113:
1012	Support for PCI Message Signalled Interrupts on i386 and amd64
1013	has been added to the kernel and various drivers will soon be
1014	updated to use MSI when it is available.  If there are any problems,
1015	MSI can be disabled completely by setting the 'hw.pci.enable_msi'
1016	and 'hw.pci.enable_msix' tunables to 0 in the loader.
1017
101820061110:
1019	The MUTEX_PROFILING option has been renamed to LOCK_PROFILING.
1020	The lockmgr object layout has been changed as a result of having
1021	a lock_object embedded in it. As a consequence all file system
1022	kernel modules must be re-compiled. The mutex profiling man page
1023	has not yet been updated to reflect this change.
1024
102520061026:
1026	KSE in the kernel has now been made optional and turned on by
1027	default. Use 'nooption KSE' in your kernel config to turn it
1028	off. All kernel modules *must* be recompiled after this change.
1029	There-after, modules from a KSE kernel should be compatible with
1030	modules from a NOKSE kernel due to the temporary padding fields
1031	added to 'struct proc'.
1032
103320060929:
1034	mrouted and its utilities have been removed from the base system.
1035
103620060927:
1037	Some ioctl(2) command codes have changed.  Full backward ABI
1038	compatibility is provided if the "options COMPAT_FREEBSD6" is
1039	present in the kernel configuration file.  Make sure to add
1040	this option to your kernel config file, or recompile X.Org
1041	and the rest of ports; otherwise they may refuse to work.
1042
104320060924:
1044	tcpslice has been removed from the base system.
1045
104620060913:
1047	The sizes of struct tcpcb (and struct xtcpcb) have changed due to
1048	the rewrite of TCP syncookies.  Tools like netstat, sockstat, and
1049	systat needs to be rebuilt.
1050
105120060903:
1052	libpcap updated to v0.9.4 and tcpdump to v3.9.4
1053
105420060816:
1055	The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour
1056	for IPFIREWALL_FORWARD is now as it was before when it was first
1057	committed and for years after. The behaviour is now ON.
1058
105920060725:
1060	enigma(1)/crypt(1) utility has been changed on 64 bit architectures.
1061	Now it can decrypt files created from different architectures.
1062	Unfortunately, it is no longer able to decrypt a cipher text
1063	generated with an older version on 64 bit architectures.
1064	If you have such a file, you need old utility to decrypt it.
1065
106620060709:
1067	The interface version of the i4b kernel part has changed. So
1068	after updating the kernel sources and compiling a new kernel,
1069	the i4b user space tools in "/usr/src/usr.sbin/i4b" must also
1070	be rebuilt, and vice versa.
1071
107220060627:
1073	The XBOX kernel now defaults to the nfe(4) driver instead of
1074	the nve(4) driver. Please update your configuration
1075	accordingly.
1076
107720060514:
1078	The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx
1079	PCnet family of NICs has been removed. The new le(4) driver serves
1080	as an equivalent but cross-platform replacement with the pcn(4)
1081	driver still providing performance-optimized support for the subset
1082	of AMD Am79C971 PCnet-FAST and greater chips as before.
1083
108420060511:
1085	The machdep.* sysctls and the adjkerntz utility have been
1086	modified a bit.  The new adjkerntz utility uses the new
1087	sysctl names and sysctlbyname() calls, so it may be impossible
1088	to run an old /sbin/adjkerntz utility in single-user mode
1089	with a new kernel.  Replace the `adjkerntz -i' step before
1090	`make installworld' with:
1091
1092	    /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i
1093
1094	and proceed as usual with the rest of the installworld-stage
1095	steps.  Otherwise, you risk installing binaries with their
1096	timestamp set several hours in the future, especially if
1097	you are running with local time set to GMT+X hours.
1098
109920060412:
1100	The ip6fw utility has been removed.  The behavior provided by
1101	ip6fw has been in ipfw2 for a good while and the rc.d scripts
1102	have been updated to deal with it.  There are some rules that
1103	might not migrate cleanly.  Use rc.firewall6 as a template to
1104	rewrite rules.
1105
110620060428:
1107	The puc(4) driver has been overhauled. The ebus(4) and sbus(4)
1108	attachments have been removed. Make sure to configure scc(4)
1109	on sparc64. Note also that by default puc(4) will use uart(4)
1110	and not sio(4) for serial ports because interrupt handling has
1111	been optimized for multi-port serial cards and only uart(4)
1112	implements the interface to support it.
1113
111420060330:
1115	The scc(4) driver replaces puc(4) for Serial Communications
1116	Controllers (SCCs) like the Siemens SAB82532 and the Zilog
1117	Z8530. On sparc64, it is advised to add scc(4) to the kernel
1118	configuration to make sure that the serial ports remain
1119	functional.
1120
112120060317:
1122	Most world/kernel related NO_* build options changed names.
1123	New knobs have common prefixes WITHOUT_*/WITH_* (modelled
1124	after FreeBSD ports) and should be set in /etc/src.conf
1125	(the src.conf(5) manpage is provided).  Full backwards
1126	compatibility is maintained for the time being though it's
1127	highly recommended to start moving old options out of the
1128	system-wide /etc/make.conf file into the new /etc/src.conf
1129	while also properly renaming them.  More conversions will
1130	likely follow.  Posting to current@:
1131
1132	http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
1133
113420060305:
1135	The NETSMBCRYPTO kernel option has been retired because its
1136	functionality is always included in NETSMB and smbfs.ko now.
1137
113820060303:
1139	The TDFX_LINUX kernel option was retired and replaced by the
1140	tdfx_linux device.  The latter can be loaded as the 3dfx_linux.ko
1141	kernel module.  Loading it alone should suffice to get 3dfx support
1142	for Linux apps because it will pull in 3dfx.ko and linux.ko through
1143	its dependencies.
1144
114520060204:
1146	The 'audit' group was added to support the new auditing functionality
1147	in the base system.  Be sure to follow the directions for updating,
1148	including the requirement to run mergemaster -p.
1149
115020060201:
1151	The kernel ABI to file system modules was changed on i386.
1152	Please make sure that your kernel and modules are in sync.
1153
115420060118:
1155	This actually occured some time ago, but installing the kernel
1156	now also installs a bunch of symbol files for the kernel modules.
1157	This increases the size of /boot/kernel to about 67Mbytes. You
1158	will need twice this if you will eventually back this up to kernel.old
1159	on your next install.
1160	If you have a shortage of room in your root partition, you should add
1161	-DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
1162	to your /etc/make.conf.
1163
116420060113:
1165	libc's malloc implementation has been replaced.  This change has the
1166	potential to uncover application bugs that previously went unnoticed.
1167	See the malloc(3) manual page for more details.
1168
116920060112:
1170	The generic netgraph(4) cookie has been changed. If you upgrade
1171	kernel passing this point, you also need to upgrade userland
1172	and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4.
1173
117420060106:
1175	si(4)'s device files now contain the unit number.
1176	Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f].
1177
117820060106:
1179	The kernel ABI was mostly destroyed due to a change in the size
1180	of struct lock_object which is nested in other structures such
1181	as mutexes which are nested in all sorts of other structures.
1182	Make sure your kernel and modules are in sync.
1183
118420051231:
1185	The page coloring algorithm in the VM subsystem was converted
1186	from tuning with kernel options to autotuning. Please remove
1187	any PQ_* option except PQ_NOOPT from your kernel config.
1188
118920051211:
1190	The net80211-related tools in the tools/tools/ath directory
1191	have been moved to tools/tools/net80211 and renamed with a
1192	"wlan" prefix.  Scripts that use them should be adjusted
1193	accordingly.
1194
119520051202:
1196	Scripts in the local_startup directories (as defined in
1197	/etc/defaults/rc.conf) that have the new rc.d semantics will
1198	now be run as part of the base system rcorder. If there are
1199	errors or problems with one of these local scripts, it could
1200	cause boot problems. If you encounter such problems, boot in
1201	single user mode, remove that script from the */rc.d directory.
1202	Please report the problem to the port's maintainer, and the
1203	freebsd-ports@freebsd.org mailing list.
1204
120520051129:
1206	The nodev mount option was deprecated in RELENG_6 (where it
1207	was a no-op), and is now unsupported.  If you have nodev or dev listed
1208	in /etc/fstab, remove it, otherwise it will result in a mount error.
1209
121020051129:
1211	ABI between ipfw(4) and ipfw(8) has been changed. You need
1212	to rebuild ipfw(8) when rebuilding kernel.
1213
121420051108:
1215	rp(4)'s device files now contain the unit number.
1216	Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f].
1217
121820051029:
1219	/etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp.
1220	Its /etc/rc.conf.d configuration file has been `ppp' from
1221	the beginning, and hence there is no need to touch it.
1222
122320051014:
1224	Now most modules get their build-time options from the kernel
1225	configuration file.  A few modules still have fixed options
1226	due to their non-conformant implementation, but they will be
1227	corrected eventually.  You may need to review the options of
1228	the modules in use, explicitly specify the non-default options
1229	in the kernel configuration file, and rebuild the kernel and
1230	modules afterwards.
1231
123220051001:
1233	kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
1234	to turn polling(4) on your interfaces.
1235
123620050927:
1237	The old bridge(4) implementation was retired.  The new
1238	if_bridge(4) serves as a full functional replacement.
1239
124020050722:
1241	The ai_addrlen of a struct addrinfo was changed to a socklen_t
1242	to conform to POSIX-2001.  This change broke an ABI
1243	compatibility on 64 bit architecture.  You have to recompile
1244	userland programs that use getaddrinfo(3) on 64 bit
1245	architecture.
1246
124720050711:
1248	RELENG_6 branched here.
1249
125020050629:
1251	The pccard_ifconfig rc.conf variable has been removed and a new
1252	variable, ifconfig_DEFAULT has been introduced.  Unlike
1253	pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that
1254	do not have ifconfig_ifn entries rather than just those in
1255	removable_interfaces.
1256
125720050616:
1258	Some previous versions of PAM have permitted the use of
1259	non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring
1260	to third party PAM modules in /usr/local/lib.  A change has been
1261	made to require the use of absolute paths in order to avoid
1262	ambiguity and dependence on library path configuration, which may
1263	affect existing configurations.
1264
126520050610:
1266	Major changes to network interface API.  All drivers must be
1267	recompiled.  Drivers not in the base system will need to be
1268	updated to the new APIs.
1269
127020050609:
1271	Changes were made to kinfo_proc in sys/user.h.  Please recompile
1272	userland, or commands like `fstat', `pkill', `ps', `top' and `w'
1273	will not behave correctly.
1274
1275	The API and ABI for hwpmc(4) have changed with the addition
1276	of sampling support.  Please recompile lib/libpmc(3) and
1277	usr.sbin/{pmcstat,pmccontrol}.
1278
127920050606:
1280	The OpenBSD dhclient was imported in place of the ISC dhclient
1281	and the network interface configuration scripts were updated
1282	accordingly.  If you use DHCP to configure your interfaces, you
1283	must now run devd.  Also, DNS updating was lost so you will need
1284	to find a workaround if you use this feature.
1285
1286	The '_dhcp' user was added to support the OpenBSD dhclient.  Be
1287	sure to run mergemaster -p (like you are supposed to do every time
1288	anyway).
1289
129020050605:
1291	if_bridge was added to the tree. This has changed struct ifnet.
1292	Please recompile userland and all network related modules.
1293
129420050603:
1295	The n_net of a struct netent was changed to an uint32_t, and
1296	1st argument of getnetbyaddr() was changed to an uint32_t, to
1297	conform to POSIX-2001.  These changes broke an ABI
1298	compatibility on 64 bit architecture.  With these changes,
1299	shlib major of libpcap was bumped.  You have to recompile
1300	userland programs that use getnetbyaddr(3), getnetbyname(3),
1301	getnetent(3) and/or libpcap on 64 bit architecture.
1302
130320050528:
1304	Kernel parsing of extra options on '#!' first lines of shell
1305	scripts has changed.  Lines with multiple options likely will
1306	fail after this date.  For full details, please see
1307		http://people.freebsd.org/~gad/Updating-20050528.txt
1308
130920050503:
1310	The packet filter (pf) code has been updated to OpenBSD 3.7
1311	Please note the changed anchor syntax and the fact that
1312	authpf(8) now needs a mounted fdescfs(5) to function.
1313
131420050415:
1315	The NO_MIXED_MODE kernel option has been removed from the i386
1316	amd64 platforms as its use has been superceded by the new local
1317	APIC timer code.  Any kernel config files containing this option
1318	should be updated.
1319
132020050227:
1321	The on-disk format of LC_CTYPE files was changed to be machine
1322	independent.  Please make sure NOT to use NO_CLEAN buildworld
1323	when crossing this point. Crossing this point also requires
1324	recompile or reinstall of all locale depended packages.
1325
132620050225:
1327	The ifi_epoch member of struct if_data has been changed to
1328	contain the uptime at which the interface was created or the
1329	statistics zeroed rather then the wall clock time because
1330	wallclock time may go backwards.  This should have no impact
1331	unless an snmp implementation is using this value (I know of
1332	none at this point.)
1333
133420050224:
1335	The acpi_perf and acpi_throttle drivers are now part of the
1336	acpi(4) main module.  They are no longer built separately.
1337
133820050223:
1339	The layout of struct image_params has changed. You have to
1340	recompile all compatibility modules (linux, svr4, etc) for use
1341	with the new kernel.
1342
134320050223:
1344	The p4tcc driver has been merged into cpufreq(4).  This makes
1345	"options CPU_ENABLE_TCC" obsolete.  Please load cpufreq.ko or
1346	compile in "device cpufreq" to restore this functionality.
1347
134820050220:
1349	The responsibility of recomputing the file system summary of
1350	a SoftUpdates-enabled dirty volume has been transferred to the
1351	background fsck.  A rebuild of fsck(8) utility is recommended
1352	if you have updated the kernel.
1353
1354	To get the old behavior (recompute file system summary at mount
1355	time), you can set vfs.ffs.compute_summary_at_mount=1 before
1356	mounting the new volume.
1357
135820050206:
1359	The cpufreq import is complete.  As part of this, the sysctls for
1360	acpi(4) throttling have been removed.  The power_profile script
1361	has been updated, so you can use performance/economy_cpu_freq in
1362	rc.conf(5) to set AC on/offline cpu frequencies.
1363
136420050206:
1365	NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko)
1366	requires recompiling libnetgraph and userland netgraph utilities.
1367
136820050114:
1369	Support for abbreviated forms of a number of ipfw options is
1370	now deprecated.  Warnings are printed to stderr indicating the
1371	correct full form when a match occurs.  Some abbreviations may
1372	be supported at a later date based on user feedback.  To be
1373	considered for support, abbreviations must be in use prior to
1374	this commit and unlikely to be confused with current key words.
1375
137620041221:
1377	By a popular demand, a lot of NOFOO options were renamed
1378	to NO_FOO (see bsd.compat.mk for a full list).  The old
1379	spellings are still supported, but will cause annoying
1380	warnings on stderr.  Make sure you upgrade properly (see
1381	the COMMON ITEMS: section later in this file).
1382
138320041219:
1384	Auto-loading of ancillary wlan modules such as wlan_wep has
1385	been temporarily disabled; you need to statically configure
1386	the modules you need into your kernel or explicitly load them
1387	prior to use.  Specifically, if you intend to use WEP encryption
1388	with an 802.11 device load/configure wlan_wep; if you want to
1389	use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp,
1390	and wlan_xauth as required.
1391
139220041213:
1393	The behaviour of ppp(8) has changed slightly.  If lqr is enabled
1394	(``enable lqr''), older versions would revert to LCP ECHO mode on
1395	negotiation failure.  Now, ``enable echo'' is required for this
1396	behaviour.  The ppp version number has been bumped to 3.4.2 to
1397	reflect the change.
1398
139920041201:
1400	The wlan support has been updated to split the crypto support
1401	into separate modules.  For static WEP you must configure the
1402	wlan_wep module in your system or build and install the module
1403	in place where it can be loaded (the kernel will auto-load
1404	the module when a wep key is configured).
1405
140620041201:
1407	The ath driver has been updated to split the tx rate control
1408	algorithm into a separate module.  You need to include either
1409	ath_rate_onoe or ath_rate_amrr when configuring the kernel.
1410
141120041116:
1412	Support for systems with an 80386 CPU has been removed.  Please
1413	use FreeBSD 5.x or earlier on systems with an 80386.
1414
141520041110:
1416	We have had a hack which would mount the root filesystem
1417	R/W if the device were named 'md*'.  As part of the vnode
1418	work I'm doing I have had to remove this hack.  People
1419	building systems which use preloaded MD root filesystems
1420	may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in
1421	their /etc/rc scripts.
1422
142320041104:
1424	FreeBSD 5.3 shipped here.
1425
142620041102:
1427	The size of struct tcpcb has changed again due to the removal
1428	of RFC1644 T/TCP.  You have to recompile userland programs that
1429	read kmem for tcp sockets directly (netstat, sockstat, etc.)
1430
143120041022:
1432	The size of struct tcpcb has changed.  You have to recompile
1433	userland programs that read kmem for tcp sockets directly
1434	(netstat, sockstat, etc.)
1435
143620041016:
1437	RELENG_5 branched here.  For older entries, please see updating
1438	in the RELENG_5 branch.
1439
1440COMMON ITEMS:
1441
1442	General Notes
1443	-------------
1444	Avoid using make -j when upgrading.  From time to time in the
1445	past there have been problems using -j with buildworld and/or
1446	installworld.  This is especially true when upgrading between
1447	"distant" versions (eg one that cross a major release boundary
1448	or several minor releases, or when several months have passed
1449	on the -current branch).
1450
1451	Sometimes, obscure build problems are the result of environment
1452	poisoning.  This can happen because the make utility reads its
1453	environment when searching for values for global variables.
1454	To run your build attempts in an "environmental clean room",
1455	prefix all make commands with 'env -i '.  See the env(1) manual
1456	page for more details.
1457
1458	When upgrading from one major version to another it is generally
1459	best to upgrade to the latest code in the currently installed branch
1460	first, then do an upgrade to the new branch. This is the best-tested
1461	upgrade path, and has the highest probability of being successful.
1462	Please try this approach before reporting problems with a major
1463	version upgrade.
1464
1465	To build a kernel
1466	-----------------
1467	If you are updating from a prior version of FreeBSD (even one just
1468	a few days old), you should follow this procedure.  It is the most
1469	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1470
1471	make kernel-toolchain
1472	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1473	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1474
1475	To test a kernel once
1476	---------------------
1477	If you just want to boot a kernel once (because you are not sure
1478	if it works, or if you want to boot a known bad kernel to provide
1479	debugging information) run
1480	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1481	nextboot -k testkernel
1482
1483	To just build a kernel when you know that it won't mess you up
1484	--------------------------------------------------------------
1485	This assumes you are already running a 5.X system.  Replace
1486	${arch} with the architecture of your machine (e.g. "i386",
1487	"alpha", "amd64", "ia64", "pc98", "sparc64", etc).
1488
1489	cd src/sys/${arch}/conf
1490	config KERNEL_NAME_HERE
1491	cd ../compile/KERNEL_NAME_HERE
1492	make depend
1493	make
1494	make install
1495
1496	If this fails, go to the "To build a kernel" section.
1497
1498	To rebuild everything and install it on the current system.
1499	-----------------------------------------------------------
1500	# Note: sometimes if you are running current you gotta do more than
1501	# is listed here if you are upgrading from a really old current.
1502
1503	<make sure you have good level 0 dumps>
1504	make buildworld
1505	make kernel KERNCONF=YOUR_KERNEL_HERE
1506							[1]
1507	<reboot in single user>				[3]
1508	mergemaster -p					[5]
1509	make installworld
1510	make delete-old
1511	mergemaster					[4]
1512	<reboot>
1513
1514
1515	To cross-install current onto a separate partition
1516	--------------------------------------------------
1517	# In this approach we use a separate partition to hold
1518	# current's root, 'usr', and 'var' directories.   A partition
1519	# holding "/", "/usr" and "/var" should be about 2GB in
1520	# size.
1521
1522	<make sure you have good level 0 dumps>
1523	<boot into -stable>
1524	make buildworld
1525	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1526	<maybe newfs current's root partition>
1527	<mount current's root partition on directory ${CURRENT_ROOT}>
1528	make installworld DESTDIR=${CURRENT_ROOT}
1529	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1530	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1531	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
1532	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1533	<reboot into current>
1534	<do a "native" rebuild/install as described in the previous section>
1535	<maybe install compatibility libraries from ports/misc/compat*>
1536	<reboot>
1537
1538
1539	To upgrade in-place from 5.x-stable to current
1540	----------------------------------------------
1541	<make sure you have good level 0 dumps>
1542	make buildworld					[9]
1543	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
1544							[1]
1545	<reboot in single user>				[3]
1546	mergemaster -p					[5]
1547	make installworld
1548	make delete-old
1549	mergemaster -i					[4]
1550	<reboot>
1551
1552	Make sure that you've read the UPDATING file to understand the
1553	tweaks to various things you need.  At this point in the life
1554	cycle of current, things change often and you are on your own
1555	to cope.  The defaults can also change, so please read ALL of
1556	the UPDATING entries.
1557
1558	Also, if you are tracking -current, you must be subscribed to
1559	freebsd-current@freebsd.org.  Make sure that before you update
1560	your sources that you have read and understood all the recent
1561	messages there.  If in doubt, please track -stable which has
1562	much fewer pitfalls.
1563
1564	[1] If you have third party modules, such as vmware, you
1565	should disable them at this point so they don't crash your
1566	system on reboot.
1567
1568	[3] From the bootblocks, boot -s, and then do
1569		fsck -p
1570		mount -u /
1571		mount -a
1572		cd src
1573		adjkerntz -i		# if CMOS is wall time
1574	Also, when doing a major release upgrade, it is required that
1575	you boot into single user mode to do the installworld.
1576
1577	[4] Note: This step is non-optional.  Failure to do this step
1578	can result in a significant reduction in the functionality of the
1579	system.  Attempting to do it by hand is not recommended and those
1580	that pursue this avenue should read this file carefully, as well
1581	as the archives of freebsd-current and freebsd-hackers mailing lists
1582	for potential gotchas.
1583
1584	[5] Usually this step is a noop.  However, from time to time
1585	you may need to do this if you get unknown user in the following
1586	step.  It never hurts to do it all the time.  You may need to
1587	install a new mergemaster (cd src/usr.sbin/mergemaster && make
1588	install) after the buildworld before this step if you last updated
1589	from current before 20020224 or from -stable before 20020408.
1590
1591	[8] In order to have a kernel that can run the 4.x binaries
1592	needed to do an installworld, you must include the COMPAT_FREEBSD4
1593	option in your kernel.  Failure to do so may leave you with a system
1594	that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5
1595	is required to run the 5.x binaries on more recent kernels.
1596
1597	Make sure that you merge any new devices from GENERIC since the
1598	last time you updated your kernel config file.
1599
1600	[9] When checking out sources, you must include the -P flag to have
1601	cvs prune empty directories.
1602
1603	If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1604	"?=" instead of the "=" assignment operator, so that buildworld can
1605	override the CPUTYPE if it needs to.
1606
1607	MAKEOBJDIRPREFIX must be defined in an environment variable, and
1608	not on the command line, or in /etc/make.conf.  buildworld will
1609	warn if it is improperly defined.
1610FORMAT:
1611
1612This file contains a list, in reverse chronological order, of major
1613breakages in tracking -current.  Not all things will be listed here,
1614and it only starts on October 16, 2004.  Updating files can found in
1615previous releases if your system is older than this.
1616
1617Copyright information:
1618
1619Copyright 1998-2005 M. Warner Losh.  All Rights Reserved.
1620
1621Redistribution, publication, translation and use, with or without
1622modification, in full or in part, in any form or format of this
1623document are permitted without further permission from the author.
1624
1625THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1626IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1627WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1628DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1629INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1630(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1631SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1632HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1633STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1634IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1635POSSIBILITY OF SUCH DAMAGE.
1636
1637If you find this document useful, and you want to, you may buy the
1638author a beer.
1639
1640Contact Warner Losh if you have any questions about your use of
1641this document.
1642
1643$FreeBSD: head/UPDATING 195229 2009-07-01 07:35:57Z dfr $
1644