UPDATING revision 225227
1Updating Information for FreeBSD current users
2
3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4See end of file for further details.  For commonly done items, please see the
5COMMON ITEMS: section later in the file.  These instructions assume that you
6basically know what you are doing.  If not, then please consult the FreeBSD
7handbook.
8
9Items affecting the ports and packages system can be found in
10/usr/ports/UPDATING.  Please read that file before running portupgrade.
11
12NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.x IS SLOW:
13	FreeBSD 9.x has many debugging features turned on, in both the kernel
14	and userland.  These features attempt to detect incorrect use of
15	system primitives, and encourage loud failure through extra sanity
16	checking and fail stop semantics.  They also substantially impact
17	system performance.  If you want to do performance measurement,
18	benchmarking, and optimization, you'll want to turn them off.  This
19	includes various WITNESS- related kernel options, INVARIANTS, malloc
20	debugging flags in userland, and various verbose features in the
21	kernel.  Many developers choose to disable these features on build
22	machines to maximize performance.  (To disable malloc debugging, run
23	ln -s aj /etc/malloc.conf.)
24
2520110828:
26	Bump the shared library version numbers for libraries that
27	do not use symbol versioning, have changed the ABI compared
28	to stable/8 and which shared library version was not bumped.
29	Done as part of 9.0-RELEASE cycle.
30
3120110815:
32	During the merge of Capsicum features, the fget(9) KPI was modified.
33	This may require the rebuilding of out-of-tree device drivers --
34	issues have been reported specifically with the nVidia device driver.
35	__FreeBSD_version is bumped to 900041.
36
37	Also, there is a period between 20110811 and 20110814 where the
38	special devices /dev/{stdin,stdout,stderr} did not work correctly.
39	Building world from a kernel during that window may not work.
40
4120110628:
42	The packet filter (pf) code has been updated to OpenBSD 4.5.
43	You need to update userland tools to be in sync with kernel.
44	This update breaks backward compatibility with earlier pfsync(4)
45	versions.  Care must be taken when updating redundant firewall setups.
46
4720110608:
48	The following sysctls and tunables are retired on x86 platforms:
49		machdep.hlt_cpus
50		machdep.hlt_logical_cpus
51	The following sysctl is retired:
52		machdep.hyperthreading_allowed
53	The sysctls were supposed to provide a way to dynamically offline and
54	online selected CPUs on x86 platforms, but the implementation has not
55	been reliable especially with SCHED_ULE scheduler.
56	machdep.hyperthreading_allowed tunable is still available to ignore
57	hyperthreading CPUs at OS level.
58	Individual CPUs can be disabled using hint.lapic.X.disabled tunable,
59	where X is an APIC ID of a CPU.  Be advised, though, that disabling
60	CPUs in non-uniform fashion will result in non-uniform topology and
61	may lead to sub-optimal system performance with SCHED_ULE, which is
62	a default scheduler.
63
6420110607:
65	cpumask_t type is retired and cpuset_t is used in order to describe
66	a mask of CPUs.
67
6820110531:
69	Changes to ifconfig(8) for dynamic address family detection mandate
70	that you are running a kernel of 20110525 or later.  Make sure to
71	follow the update procedure to boot a new kernel before installing
72	world.
73
7420110513:
75	Support for sun4v architecture is officially dropped
76
7720110503:
78	Several KPI breaking changes have been committed to the mii(4) layer,
79	the PHY drivers and consequently some Ethernet drivers using mii(4).
80	This means that miibus.ko and the modules of the affected Ethernet
81	drivers need to be recompiled.
82
83	Note to kernel developers: Given that the OUI bit reversion problem
84	was fixed as part of these changes all mii(4) commits related to OUIs,
85	i.e. to sys/dev/mii/miidevs, PHY driver probing and vendor specific
86	handling, no longer can be merged verbatim to stable/8 and previous
87	branches.
88
8920110430:
90	Users of the Atheros AR71xx SoC code now need to add 'device ar71xx_pci'
91	into their kernel configurations along with 'device pci'.
92
9320110427:
94	The default NFS client is now the new NFS client, so fstype "newnfs"
95	is now "nfs" and the regular/old NFS client is now fstype "oldnfs".
96	Although mounts via fstype "nfs" will usually work without userland
97	changes, it is recommended that the mount(8) and mount_nfs(8)
98	commands be rebuilt from sources and that a link to mount_nfs called
99	mount_oldnfs be created. The new client is compiled into the
100	kernel with "options NFSCL" and this is needed for diskless root
101	file systems. The GENERIC kernel configs have been changed to use
102	NFSCL and NFSD (the new server) instead of NFSCLIENT and NFSSERVER.
103	To use the regular/old client, you can "mount -t oldnfs ...". For
104	a diskless root file system, you must also include a line like:
105	
106	vfs.root.mountfrom="oldnfs:"
107
108	in the boot/loader.conf on the root fs on the NFS server to make
109	a diskless root fs use the old client.
110
11120110424:
112	The GENERIC kernels for all architectures now default to the new
113	CAM-based ATA stack. It means that all legacy ATA drivers were
114	removed and replaced by respective CAM drivers. If you are using
115	ATA device names in /etc/fstab or other places, make sure to update
116	them respectively (adX -> adaY, acdX -> cdY, afdX -> daY, astX -> saY,
117	where 'Y's are the sequential numbers starting from zero for each type
118	in order of detection, unless configured otherwise with tunables,
119	see cam(4)). There will be symbolic links created in /dev/ to map
120	old adX devices to the respective adaY. They should provide basic
121	compatibility for file systems mounting in most cases, but they do
122	not support old user-level APIs and do not have respective providers
123	in GEOM. Consider using updated management tools with new device names.
124
125	It is possible to load devices ahci, ata, siis and mvs as modules,
126	but option ATA_CAM should remain in kernel configuration to make ata
127	module work as CAM driver supporting legacy ATA controllers. Device ata
128	still can be used in modular fashion (atacore + ...). Modules atadisk
129	and atapi* are not used and won't affect operation in ATA_CAM mode.
130	Note that to use CAM-based ATA kernel should include CAM devices
131	scbus, pass, da (or explicitly ada), cd and optionally others. All of
132	them are parts of the cam module.
133
134	ataraid(4) functionality is now supported by the RAID GEOM class.
135	To use it you can load geom_raid kernel module and use graid(8) tool
136	for management. Instead of /dev/arX device names, use /dev/raid/rX.
137
138	No kernel config options or code have been removed, so if a problem
139	arises, please report it and optionally revert to the old ATA stack.
140	In order to do it you can remove from the kernel config:
141	    options        ATA_CAM
142	    device         ahci
143	    device         mvs
144	    device         siis
145	, and instead add back:
146	    device         atadisk         # ATA disk drives
147	    device         ataraid         # ATA RAID drives
148	    device         atapicd         # ATAPI CDROM drives
149	    device         atapifd         # ATAPI floppy drives
150	    device         atapist         # ATAPI tape drives
151
15220110423:
153	The default NFS server has been changed to the new server, which
154	was referred to as the experimental server. If you need to switch
155	back to the old NFS server, you must now put the "-o" option on
156	both the mountd and nfsd commands. This can be done using the
157	mountd_flags and nfs_server_flags rc.conf variables until an
158	update to the rc scripts is committed, which is coming soon.
159
16020110418:
161	The GNU Objective-C runtime library (libobjc), and other Objective-C
162	related components have been removed from the base system.  If you
163	require an Objective-C library, please use one of the available ports.
164
16520110331:
166	ath(4) has been split into bus- and device- modules. if_ath contains
167	the HAL, the TX rate control and the network device code. if_ath_pci
168	contains the PCI bus glue. For Atheros MIPS embedded systems, if_ath_ahb
169	contains the AHB glue. Users need to load both if_ath_pci and if_ath
170	in order to use ath on everything else.
171
172	TO REPEAT: if_ath_ahb is not needed for normal users. Normal users only
173	need to load if_ath and if_ath_pci for ath(4) operation.
174
17520110314:
176	As part of the replacement of sysinstall, the process of building
177	release media has changed significantly. For details, please re-read
178	release(7), which has been updated to reflect the new build process.
179
18020110218:
181	GNU binutils 2.17.50 (as of 2007-07-03) has been merged to -HEAD.  This
182	is the last available version under GPLv2.  It brings a number of new
183	features, such as support for newer x86 CPU's (with SSE-3, SSSE-3, SSE
184	4.1 and SSE 4.2), better support for powerpc64, a number of new
185	directives, and lots of other small improvements.  See the ChangeLog
186	file in contrib/binutils for the full details.
187
18820110218:
189	IPsec's HMAC_SHA256-512 support has been fixed to be RFC4868
190	compliant, and will now use half of hash for authentication.
191	This will break interoperability with all stacks (including all
192	actual FreeBSD versions) who implement
193	draft-ietf-ipsec-ciph-sha-256-00 (they use 96 bits of hash for
194	authentication).
195	The only workaround with such peers is to use another HMAC
196	algorithm for IPsec ("phase 2") authentication.
197
19820110207:
199	Remove the uio_yield prototype and symbol.  This function has
200	been misnamed since it was introduced and should not be
201	globally exposed with this name.  The equivalent functionality
202	is now available using kern_yield(curthread->td_user_pri).
203	The function remains undocumented.
204
20520110112:
206	A SYSCTL_[ADD_]UQUAD was added for unsigned uint64_t pointers,
207	symmetric with the existing SYSCTL_[ADD_]QUAD.  Type checking
208	for scalar sysctls is defined but disabled.  Code that needs
209	UQUAD to pass the type checking that must compile on older
210	systems where the define is not present can check against
211	__FreeBSD_version >= 900030.
212
213	The system dialog(1) has been replaced with a new version previously
214	in ports as devel/cdialog. dialog(1) is mostly command-line compatible
215	with the previous version, but the libdialog associated with it has
216	a largely incompatible API. As such, the original version of libdialog
217	will be kept temporarily as libodialog, until its base system consumers
218	are replaced or updated. Bump __FreeBSD_version to 900030.
219
22020110103:
221	If you are trying to run make universe on a -stable system, and you get
222	the following warning:
223	"Makefile", line 356: "Target architecture for i386/conf/GENERIC 
224	unknown.  config(8) likely too old."
225	or something similar to it, then you must upgrade your -stable system
226	to 8.2-Release or newer (really, any time after r210146 7/15/2010 in
227	stable/8) or build the config from the latest stable/8 branch and
228	install it on your system.
229
230	Prior to this date, building a current universe on 8-stable system from
231	between 7/15/2010 and 1/2/2011 would result in a weird shell parsing
232	error in the first kernel build phase.  A new config on those old 
233	systems will fix that problem for older versions of -current.
234
23520101228:
236	The TCP stack has been modified to allow Khelp modules to interact with
237	it via helper hook points and store per-connection data in the TCP
238	control block. Bump __FreeBSD_version to 900029. User space tools that
239	rely on the size of struct tcpcb in tcp_var.h (e.g. sockstat) need to
240	be recompiled.
241
24220101114:
243	Generic IEEE 802.3 annex 31B full duplex flow control support has been
244	added to mii(4) and bge(4), bce(4), msk(4), nfe(4) and stge(4) along
245	with brgphy(4), e1000phy(4) as well as ip1000phy() have been converted
246	to take advantage of it instead of using custom implementations.  This
247	means that these drivers now no longer unconditionally advertise
248	support for flow control but only do so if flow control is a selected
249	media option.  This was implemented in the generic support that way in
250	order to allow flow control to be switched on and off via ifconfig(8)
251	with the PHY specific default to typically off in order to protect
252	from unwanted effects.  Consequently, if you used flow control with
253	one of the above mentioned drivers you now need to explicitly enable
254	it, for example via:
255		ifconfig bge0 media auto mediaopt flowcontrol
256
257	Along with the above mentioned changes generic support for setting
258	1000baseT master mode also has been added and brgphy(4), ciphy(4),
259	e1000phy(4) as well as ip1000phy(4) have been converted to take
260	advantage of it.  This means that these drivers now no longer take the
261	link0 parameter for selecting master mode but the master media option
262	has to be used instead, for example like in the following:
263		ifconfig bge0 media 1000baseT mediaopt full-duplex,master
264
265	Selection of master mode now is also available with all other PHY
266	drivers supporting 1000baseT.
267
26820101111:
269	The TCP stack has received a significant update to add support for
270	modularised congestion control and generally improve the clarity of
271	congestion control decisions. Bump __FreeBSD_version to 900025. User
272	space tools that rely on the size of struct tcpcb in tcp_var.h (e.g.
273	sockstat) need to be recompiled.
274
27520101002:
276	The man(1) utility has been replaced by a new version that no longer
277	uses /etc/manpath.config. Please consult man.conf(5) for how to
278	migrate local entries to the new format.
279
28020100928:
281	The copyright strings printed by login(1) and sshd(8) at the time of a
282	new connection have been removed to follow other operating systems and
283	upstream sshd.
284
28520100915:
286	A workaround for a fixed ld bug has been removed in kernel code,
287	so make sure that your system ld is built from sources after
288	revision 210245 from 2010-07-19 (r211583 if building head kernel
289	on stable/8, r211584 for stable/7; both from 2010-08-21).
290	A symptom of incorrect ld version is different addresses for
291	set_pcpu section and __start_set_pcpu symbol in kernel and/or modules.
292
29320100913:
294	The $ipv6_prefer variable in rc.conf(5) has been split into
295	$ip6addrctl_policy and $ipv6_activate_all_interfaces.
296
297	The $ip6addrctl_policy is a variable to choose a pre-defined
298	address selection policy set by ip6addrctl(8).  A value
299	"ipv4_prefer", "ipv6_prefer" or "AUTO" can be specified.  The
300	default is "AUTO".
301
302	The $ipv6_activate_all_interfaces specifies whether IFDISABLED
303	flag (see an entry of 20090926) is set on an interface with no
304	corresponding $ifconfig_IF_ipv6 line.  The default is "NO" for
305	security reason.  If you want IPv6 link-local address on all
306	interfaces by default, set this to "YES".
307
308	The old ipv6_prefer="YES" is equivalent to
309	ipv6_activate_all_interfaces="YES" and
310	ip6addrctl_policy="ipv6_prefer".
311
31220100913:
313	DTrace has grown support for userland tracing. Due to this, DTrace is
314	now i386 and amd64 only.
315	dtruss(1) is now installed by default on those systems and a new
316	kernel module is needed for userland tracing: fasttrap.
317	No changes to your kernel config file are necessary to enable
318	userland tracing, but you might consider adding 'STRIP=' and
319	'CFLAGS+=-fno-omit-frame-pointer' to your make.conf if you want
320	to have informative userland stack traces in DTrace (ustack).
321
32220100725:
323	The acpi_aiboost(4) driver has been removed in favor of the new
324	aibs(4) driver. You should update your kernel configuration file.
325
32620100722:
327	BSD grep has been imported to the base system and it is built by
328	default.  It is completely BSD licensed, highly GNU-compatible, uses
329	less memory than its GNU counterpart and has a small codebase.
330	However, it is slower than its GNU counterpart, which is mostly
331	noticeable for larger searches, for smaller ones it is measurable
332	but not significant.  The reason is complex, the most important factor
333	is that we lack a modern and efficient regex library and GNU
334	overcomes this by optimizing the searches internally.  Future work
335	on improving the regex performance is planned, for the meantime,
336	users that need better performance, can build GNU grep instead by
337	setting the WITH_GNU_GREP knob.
338
33920100713:
340	Due to the import of powerpc64 support, all existing powerpc kernel
341	configuration files must be updated with a machine directive like this:
342	    machine powerpc powerpc
343
344	In addition, an updated config(8) is required to build powerpc kernels
345	after this change.
346
34720100713:
348	A new version of ZFS (version 15) has been merged to -HEAD.
349	This version uses a python library for the following subcommands:
350	zfs allow, zfs unallow, zfs groupspace, zfs userspace.
351	For full functionality of these commands the following port must
352	be installed: sysutils/py-zfs
353
35420100429:
355	'vm_page's are now hashed by physical address to an array of mutexes.
356	Currently this is only used to serialize access to hold_count. Over 
357	time the page queue mutex will be peeled away. This changes the size
358	of pmap on every architecture. And requires all callers of vm_page_hold
359	and vm_page_unhold to be updated. 
360 
36120100402:
362	WITH_CTF can now be specified in src.conf (not recommended, there
363	are some problems with static executables), make.conf (would also
364	affect ports which do not use GNU make and do not override the
365	compile targets) or in the kernel config (via "makeoptions
366	WITH_CTF=yes").
367	When WITH_CTF was specified there before this was silently ignored,
368	so make sure that WITH_CTF is not used in places which could lead
369	to unwanted behavior.
370
37120100311:
372	The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32
373	to allow 32-bit compatibility on non-x86 platforms. All kernel
374	configurations on amd64 and ia64 platforms using these options must
375	be modified accordingly.
376
37720100113:
378	The utmp user accounting database has been replaced with utmpx,
379	the user accounting interface standardized by POSIX.
380	Unfortunately the semantics of utmp and utmpx don't match,
381	making it practically impossible to support both interfaces.
382	The user accounting database is used by tools like finger(1),
383	last(1), talk(1), w(1) and ac(8).
384
385	All applications in the base system use utmpx.  This means only
386	local binaries (e.g. from the ports tree) may still use these
387	utmp database files.  These applications must be rebuilt to make
388	use of utmpx.
389
390	After the system has been upgraded, it is safe to remove the old
391	log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*),
392	assuming their contents is of no importance anymore.  Old wtmp
393	databases can only be used by last(1) and ac(8) after they have
394	been converted to the new format using wtmpcvt(1).
395
39620100108:
397	Introduce the kernel thread "deadlock resolver" (which can be enabled
398	via the DEADLKRES option, see NOTES for more details) and the
399	sleepq_type() function for sleepqueues.
400
40120091202:
402	The rc.firewall and rc.firewall6 were unified, and
403	rc.firewall6 and rc.d/ip6fw were removed.
404	According to the removal of rc.d/ip6fw, ipv6_firewall_* rc
405	variables are obsoleted.  Instead, the following new rc
406	variables are added to rc.d/ipfw:
407
408		firewall_client_net_ipv6, firewall_simple_iif_ipv6,
409		firewall_simple_inet_ipv6, firewall_simple_oif_ipv6,
410		firewall_simple_onet_ipv6, firewall_trusted_ipv6
411
412	The meanings correspond to the relevant IPv4 variables.
413
41420091125:
415	8.0-RELEASE.
416
41720091113:
418	The default terminal emulation for syscons(4) has been changed
419	from cons25 to xterm on all platforms except pc98.  This means
420	that the /etc/ttys file needs to be updated to ensure correct
421	operation of applications on the console.
422
423	The terminal emulation style can be toggled per window by using
424	vidcontrol(1)'s -T flag.  The TEKEN_CONS25 kernel configuration
425	options can be used to change the compile-time default back to
426	cons25.
427
428	To prevent graphical artifacts, make sure the TERM environment
429	variable is set to match the terminal emulation that is being
430	performed by syscons(4).
431
43220091109:
433	The layout of the structure ieee80211req_scan_result has changed.
434	Applications that require wireless scan results (e.g. ifconfig(8))
435	from net80211 need to be recompiled.
436
437	Applications such as wpa_supplicant(8) may require a full world
438	build without using NO_CLEAN in order to get synchronized with the
439	new structure.
440
44120091025:
442	The iwn(4) driver has been updated to support the 5000 and 5150 series.
443	There's one kernel module for each firmware. Adding "device iwnfw"
444	to the kernel configuration file means including all three firmware
445	images inside the kernel. If you want to include just the one for
446	your wireless card, use the the devices iwn4965fw, iwn5000fw or
447	iwn5150fw.
448
44920090926:
450	The rc.d/network_ipv6, IPv6 configuration script has been integrated
451	into rc.d/netif.  The changes are the following:
452
453	1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF
454	   for IPv4.  For aliases, $ifconfig_IF_aliasN should be used.
455	   Note that both variables need the "inet6" keyword at the head.
456
457	   Do not set $ipv6_network_interfaces manually if you do not
458	   understand what you are doing.  It is not needed in most cases. 
459
460	   $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but
461	   they are obsolete.
462
463	2. $ipv6_enable is obsolete.  Use $ipv6_prefer and
464	   "inet6 accept_rtadv" keyword in ifconfig(8) instead.
465
466	   If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and
467	   all configured interfaces have "inet6 accept_rtadv" in the
468	   $ifconfig_IF_ipv6.  These are for backward compatibility.
469
470	3. A new variable $ipv6_prefer has been added.  If NO, IPv6
471	   functionality of interfaces with no corresponding
472	   $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag,
473	   and the default address selection policy of ip6addrctl(8) 
474	   is the IPv4-preferred one (see rc.d/ip6addrctl for more details).
475	   Note that if you want to configure IPv6 functionality on the
476	   disabled interfaces after boot, first you need to clear the flag by
477	   using ifconfig(8) like:
478
479		ifconfig em0 inet6 -ifdisabled
480
481	   If YES, the default address selection policy is set as
482	   IPv6-preferred.
483
484	   The default value of $ipv6_prefer is NO.
485
486	4. If your system need to receive Router Advertisement messages,
487	   define "inet6 accept_rtadv" in $ifconfig_IF_ipv6.  The rc(8)
488	   scripts automatically invoke rtsol(8) when the interface becomes
489	   UP.  The Router Advertisement messages are used for SLAAC
490	   (State-Less Address AutoConfiguration).
491
49220090922:
493	802.11s D3.03 support was committed. This is incompatible with the
494	previous code, which was based on D3.0.
495
49620090912:
497	A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value
498	of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to
499	control whether accepting Router Advertisement messages or not.
500	Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and
501	a sysctl variable net.inet6.ip6.auto_linklocal is its default value.
502	The ifconfig(8) utility now supports these flags.
503
50420090910:
505	ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for
506	mount(8) and -a option for df(1) to see them.
507
50820090825:
509	The old tunable hw.bus.devctl_disable has been superseded by
510	hw.bus.devctl_queue.  hw.bus.devctl_disable=1 in loader.conf should be
511	replaced by hw.bus.devctl_queue=0.  The default for this new tunable
512	is 1000.
513
51420090813:
515	Remove the option STOP_NMI.  The default action is now to use NMI only
516	for KDB via the newly introduced function stop_cpus_hard() and
517	maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64.
518
51920090803:
520	The stable/8 branch created in subversion.  This corresponds to the
521	RELENG_8 branch in CVS.
522
52320090719:
524	Bump the shared library version numbers for all libraries that do not
525	use symbol versioning as part of the 8.0-RELEASE cycle.  Bump
526	__FreeBSD_version to 800105.
527
52820090714:
529	Due to changes in the implementation of virtual network stack support,
530	all network-related kernel modules must be recompiled.  As this change
531	breaks the ABI, bump __FreeBSD_version to 800104.
532
53320090713:
534	The TOE interface to the TCP syncache has been modified to remove
535	struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack.
536	The cxgb driver is the only TOE consumer affected by this change, and
537	needs to be recompiled along with the kernel. As this change breaks
538	the ABI, bump __FreeBSD_version to 800103.
539
54020090712: 
541	Padding has been added to struct tcpcb, sackhint and tcpstat in
542	<netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst
543	maintaining the ABI. However, this change breaks the ABI, so bump
544	__FreeBSD_version to 800102. User space tools that rely on the size of
545	any of these structs (e.g. sockstat) need to be recompiled.
546
54720090630:
548	The NFS_LEGACYRPC option has been removed along with the old kernel
549	RPC implementation that this option selected. Kernel configurations
550	may need to be adjusted.
551
55220090629:
553	The network interface device nodes at /dev/net/<interface> have been
554	removed.  All ioctl operations can be performed the normal way using
555	routing sockets.  The kqueue functionality can generally be replaced
556	with routing sockets.
557
55820090628:
559	The documentation from the FreeBSD Documentation Project (Handbook,
560	FAQ, etc.) is now installed via packages by sysinstall(8) and under
561	the /usr/local/share/doc/freebsd directory instead of /usr/share/doc.
562
56320090624:
564	The ABI of various structures related to the SYSV IPC API have been
565	changed.  As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel
566	options now all require COMPAT_FREEBSD7.  Bump __FreeBSD_version to
567	800100.
568
56920090622:
570	Layout of struct vnet has changed as routing related variables were
571	moved to their own Vimage module. Modules need to be recompiled.  Bump
572	__FreeBSD_version to 800099.
573
57420090619:
575	NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024
576	respectively.  As long as no more than 16 groups per process are used,
577	no changes should be visible.  When more than 16 groups are used, old
578	binaries may fail if they call getgroups() or getgrouplist() with
579	statically sized storage.  Recompiling will work around this, but
580	applications should be modified to use dynamically allocated storage
581	for group arrays as POSIX.1-2008 does not cap an implementation's
582	number of supported groups at NGROUPS_MAX+1 as previous versions did.
583
584	NFS and portalfs mounts may also be affected as the list of groups is
585	truncated to 16.  Users of NFS who use more than 16 groups, should
586	take care that negative group permissions are not used on the exported
587	file systems as they will not be reliable unless a GSSAPI based
588	authentication method is used.
589
59020090616: 
591	The compiling option ADAPTIVE_LOCKMGRS has been introduced.  This
592	option compiles in the support for adaptive spinning for lockmgrs
593	which want to enable it.  The lockinit() function now accepts the flag
594	LK_ADAPTIVE in order to make the lock object subject to adaptive
595	spinning when both held in write and read mode.
596
59720090613:
598	The layout of the structure returned by IEEE80211_IOC_STA_INFO has
599	changed.  User applications that use this ioctl need to be rebuilt.
600
60120090611:
602	The layout of struct thread has changed.  Kernel and modules need to
603	be rebuilt.
604
60520090608:
606	The layout of structs ifnet, domain, protosw and vnet_net has changed.
607	Kernel modules need to be rebuilt.  Bump __FreeBSD_version to 800097.
608
60920090602:
610	window(1) has been removed from the base system. It can now be
611	installed from ports. The port is called misc/window.
612
61320090601:
614	The way we are storing and accessing `routing table' entries has
615	changed. Programs reading the FIB, like netstat, need to be
616	re-compiled.
617
61820090601:
619	A new netisr implementation has been added for FreeBSD 8.  Network
620	file system modules, such as igmp, ipdivert, and others, should be
621	rebuilt.
622	Bump __FreeBSD_version to 800096.
623
62420090530:
625	Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no
626	more valid.
627
62820090530:
629	Add VOP_ACCESSX(9).  File system modules need to be rebuilt.
630	Bump __FreeBSD_version to 800094.
631
63220090529:
633	Add mnt_xflag field to 'struct mount'.  File system modules need to be
634	rebuilt.
635	Bump __FreeBSD_version to 800093.
636
63720090528:
638	The compiling option ADAPTIVE_SX has been retired while it has been
639	introduced the option NO_ADAPTIVE_SX which handles the reversed logic.
640	The KPI for sx_init_flags() changes as accepting flags:
641	SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has
642	been introduced in order to handle the reversed logic.
643	Bump __FreeBSD_version to 800092.
644
64520090527:
646	Add support for hierarchical jails.  Remove global securelevel.
647	Bump __FreeBSD_version to 800091.
648
64920090523:
650	The layout of struct vnet_net has changed, therefore modules
651	need to be rebuilt.
652	Bump __FreeBSD_version to 800090.
653
65420090523:
655	The newly imported zic(8) produces a new format in the output. Please
656	run tzsetup(8) to install the newly created data to /etc/localtime.
657
65820090520:
659	The sysctl tree for the usb stack has renamed from hw.usb2.* to
660	hw.usb.* and is now consistent again with previous releases.
661
66220090520:
663	802.11 monitor mode support was revised and driver api's were changed.
664	Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead
665	of DLT_IEEE802_11.  No user-visible data structures were changed but
666	applications that use DLT_IEEE802_11 may require changes.
667	Bump __FreeBSD_version to 800088.
668
66920090430:
670	The layout of the following structs has changed: sysctl_oid,
671	socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet,
672	vnet_inet6 and vnet_ipfw.  Most modules need to be rebuild or
673	panics may be experienced.  World rebuild is required for
674	correctly checking networking state from userland.
675	Bump __FreeBSD_version to 800085.
676
67720090429:
678	MLDv2 and Source-Specific Multicast (SSM) have been merged
679	to the IPv6 stack. VIMAGE hooks are in but not yet used.
680	The implementation of SSM within FreeBSD's IPv6 stack closely
681	follows the IPv4 implementation.
682
683	For kernel developers:
684
685	* The most important changes are that the ip6_output() and
686	  ip6_input() paths no longer take the IN6_MULTI_LOCK,
687	  and this lock has been downgraded to a non-recursive mutex.
688
689	* As with the changes to the IPv4 stack to support SSM, filtering
690	  of inbound multicast traffic must now be performed by transport
691	  protocols within the IPv6 stack. This does not apply to TCP and
692	  SCTP, however, it does apply to UDP in IPv6 and raw IPv6.
693
694	* The KPIs used by IPv6 multicast are similar to those used by
695	  the IPv4 stack, with the following differences:
696	   * im6o_mc_filter() is analogous to imo_multicast_filter().
697	   * The legacy KAME entry points in6_joingroup and in6_leavegroup()
698	     are shimmed to in6_mc_join() and in6_mc_leave() respectively.
699	   * IN6_LOOKUP_MULTI() has been deprecated and removed.
700	   * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs
701	     for MLDv1 have an additional 'timer' argument which is used to
702	     jitter the initial membership report for the solicited-node
703	     multicast membership on-link.
704	   * This is not strictly needed for MLDv2, which already jitters
705	     its report transmissions.  However, the 'timer' argument is
706	     preserved in case MLDv1 is active on the interface.
707
708	* The KAME linked-list based IPv6 membership implementation has
709	  been refactored to use a vector similar to that used by the IPv4
710	  stack.
711	  Code which maintains a list of its own multicast memberships
712	  internally, e.g. carp, has been updated to reflect the new
713	  semantics.
714
715	* There is a known Lock Order Reversal (LOR) due to in6_setscope()
716	  acquiring the IF_AFDATA_LOCK and being called within ip6_output().
717	  Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an
718	  implementation constraint which needs to be addressed in HEAD.
719
720	For application developers:
721
722	* The changes are broadly similar to those made for the IPv4
723	  stack.
724
725	* The use of IPv4 and IPv6 multicast socket options on the same
726	  socket, using mapped addresses, HAS NOT been tested or supported.
727
728	* There are a number of issues with the implementation of various
729	  IPv6 multicast APIs which need to be resolved in the API surface
730	  before the implementation is fully compatible with KAME userland
731	  use, and these are mostly to do with interface index treatment.
732
733	* The literature available discusses the use of either the delta / ASM
734	  API with setsockopt(2)/getsockopt(2), or the full-state / ASM API
735	  using setsourcefilter(3)/getsourcefilter(3). For more information
736	  please refer to RFC 3768, 'Socket Interface Extensions for
737	  Multicast Source Filters'.
738
739	* Applications which use the published RFC 3678 APIs should be fine.
740
741	For systems administrators:
742
743	* The mtest(8) utility has been refactored to support IPv6, in
744	  addition to IPv4. Interface addresses are no longer accepted
745	  as arguments, their names must be used instead. The utility
746	  will map the interface name to its first IPv4 address as
747	  returned by getifaddrs(3).
748
749	* The ifmcstat(8) utility has also been updated to print the MLDv2
750	  endpoint state and source filter lists via sysctl(3).
751
752	* The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable
753	  loopback of IPv6 multicast datagrams by default; it defaults to 1
754	  to preserve the existing behaviour. Disabling multicast loopback is
755	  recommended for optimal system performance.
756
757	* The IPv6 MROUTING code has been changed to examine this sysctl
758	  instead of attempting to perform a group lookup before looping
759	  back forwarded datagrams.
760
761	Bump __FreeBSD_version to 800084.
762
76320090422:
764	Implement low-level Bluetooth HCI API.
765	Bump __FreeBSD_version to 800083.
766
76720090419:
768	The layout of struct malloc_type, used by modules to register new
769	memory allocation types, has changed.  Most modules will need to
770	be rebuilt or panics may be experienced.
771	Bump __FreeBSD_version to 800081.
772
77320090415:
774	Anticipate overflowing inp_flags - add inp_flags2.
775	This changes most offsets in inpcb, so checking v4 connection
776	state will require a world rebuild.
777	Bump __FreeBSD_version to 800080.
778
77920090415:
780	Add an llentry to struct route and struct route_in6. Modules
781	embedding a struct route will need to be recompiled.
782	Bump __FreeBSD_version to 800079.
783
78420090414:
785	The size of rt_metrics_lite and by extension rtentry has changed.
786	Networking administration apps will need to be recompiled.
787	The route command now supports show as an alias for get, weighting
788	of routes, sticky and nostick flags to alter the behavior of stateful
789	load balancing.
790	Bump __FreeBSD_version to 800078.
791
79220090408:
793	Do not use Giant for kbdmux(4) locking. This is wrong and
794	apparently causing more problems than it solves. This will
795	re-open the issue where interrupt handlers may race with
796	kbdmux(4) in polling mode. Typical symptoms include (but
797	not limited to) duplicated and/or missing characters when
798	low level console functions (such as gets) are used while
799	interrupts are enabled (for example geli password prompt,
800	mountroot prompt etc.). Disabling kbdmux(4) may help.
801
80220090407:
803	The size of structs vnet_net, vnet_inet and vnet_ipfw has changed;
804	kernel modules referencing any of the above need to be recompiled.
805	Bump __FreeBSD_version to 800075.
806
80720090320:
808	GEOM_PART has become the default partition slicer for storage devices,
809	replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
810	introduces some changes:
811
812	MSDOS/EBR: the devices created from MSDOS extended partition entries
813	(EBR) can be named differently than with GEOM_MBR and are now symlinks
814	to devices with offset-based names. fstabs may need to be modified.
815
816	BSD: the "geometry does not match label" warning is harmless in most
817	cases but it points to problems in file system misalignment with
818	disk geometry. The "c" partition is now implicit, covers the whole
819	top-level drive and cannot be (mis)used by users.
820
821	General: Kernel dumps are now not allowed to be written to devices
822	whose partition types indicate they are meant to be used for file
823	systems (or, in case of MSDOS partitions, as something else than
824	the "386BSD" type).
825
826	Most of these changes date approximately from 200812.
827
82820090319:
829	The uscanner(4) driver has been removed from the kernel. This follows
830	Linux removing theirs in 2.6 and making libusb the default interface
831	(supported by sane).
832
83320090319:
834	The multicast forwarding code has been cleaned up. netstat(1)
835	only relies on KVM now for printing bandwidth upcall meters.
836	The IPv4 and IPv6 modules are split into ip_mroute_mod and
837	ip6_mroute_mod respectively. The config(5) options for statically
838	compiling this code remain the same, i.e. 'options MROUTING'.
839
84020090315:
841	Support for the IFF_NEEDSGIANT network interface flag has been
842	removed, which means that non-MPSAFE network device drivers are no
843	longer supported.  In particular, if_ar, if_sr, and network device
844	drivers from the old (legacy) USB stack can no longer be built or
845	used.
846
84720090313:
848	POSIX.1 Native Language Support (NLS) has been enabled in libc and
849	a bunch of new language catalog files have also been added.
850	This means that some common libc messages are now localized and
851	they depend on the LC_MESSAGES environmental variable.
852
85320090313:
854	The k8temp(4) driver has been renamed to amdtemp(4) since
855	support for Family 10 and Family 11 CPU families was added.
856
85720090309:
858	IGMPv3 and Source-Specific Multicast (SSM) have been merged
859	to the IPv4 stack. VIMAGE hooks are in but not yet used.
860
861	For kernel developers, the most important changes are that the
862	ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
863	and this lock has been downgraded to a non-recursive mutex.
864
865	Transport protocols (UDP, Raw IP) are now responsible for filtering
866	inbound multicast traffic according to group membership and source
867	filters. The imo_multicast_filter() KPI exists for this purpose.
868	Transports which do not use multicast (SCTP, TCP) already reject
869	multicast by default. Forwarding and receive performance may improve
870	as a mutex acquisition is no longer needed in the ip_input()
871	low-level input path.  in_addmulti() and in_delmulti() are shimmed
872	to new KPIs which exist to support SSM in-kernel.
873
874	For application developers, it is recommended that loopback of
875	multicast datagrams be disabled for best performance, as this
876	will still cause the lock to be taken for each looped-back
877	datagram transmission. The net.inet.ip.mcast.loop sysctl may
878	be tuned to 0 to disable loopback by default; it defaults to 1
879	to preserve the existing behaviour.
880
881	For systems administrators, to obtain best performance with
882	multicast reception and multiple groups, it is always recommended
883	that a card with a suitably precise hash filter is used. Hash
884	collisions will still result in the lock being taken within the
885	transport protocol input path to check group membership.
886
887	If deploying FreeBSD in an environment with IGMP snooping switches,
888	it is recommended that the net.inet.igmp.sendlocal sysctl remain
889	enabled; this forces 224.0.0.0/24 group membership to be announced
890	via IGMP.
891
892	The size of 'struct igmpstat' has changed; netstat needs to be
893	recompiled to reflect this.
894	Bump __FreeBSD_version to 800070.
895
89620090309:
897	libusb20.so.1 is now installed as libusb.so.1 and the ports system
898	updated to use it. This requires a buildworld/installworld in order to
899	update the library and dependencies (usbconfig, etc). Its advisable to
900	rebuild all ports which uses libusb. More specific directions are given
901	in the ports collection UPDATING file. Any /etc/libmap.conf entries for
902	libusb are no longer required and can be removed.
903
90420090302:
905	A workaround is committed to allow the creation of System V shared
906	memory segment of size > 2 GB on the 64-bit architectures.
907	Due to a limitation of the existing ABI, the shm_segsz member
908	of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
909	wrong for large segments. Note that limits must be explicitly
910	raised to allow such segments to be created.
911
91220090301:
913	The layout of struct ifnet has changed, requiring a rebuild of all
914	network device driver modules.
915
91620090227:
917	The /dev handling for the new USB stack has changed, a
918	buildworld/installworld is required for libusb20.
919
92020090223:
921	The new USB2 stack has now been permanently moved in and all kernel and
922	module names reverted to their previous values (eg, usb, ehci, ohci,
923	ums, ...).  The old usb stack can be compiled in by prefixing the name
924	with the letter 'o', the old usb modules have been removed.
925	Updating entry 20090216 for xorg and 20090215 for libmap may still
926	apply.
927
92820090217:
929	The rc.conf(5) option if_up_delay has been renamed to
930	defaultroute_delay to better reflect its purpose. If you have
931	customized this setting in /etc/rc.conf you need to update it to
932	use the new name.
933
93420090216:
935	xorg 7.4 wants to configure its input devices via hald which does not
936	yet work with USB2. If the keyboard/mouse does not work in xorg then
937	add
938		Option "AllowEmptyInput" "off"
939	to your ServerLayout section.  This will cause X to use the configured
940	kbd and mouse sections from your xorg.conf.
941
94220090215:
943	The GENERIC kernels for all architectures now default to the new USB2
944	stack. No kernel config options or code have been removed so if a
945	problem arises please report it and optionally revert to the old USB
946	stack. If you are loading USB kernel modules or have a custom kernel
947	that includes GENERIC then ensure that usb names are also changed over,
948	eg uftdi -> usb2_serial_ftdi.
949
950	Older programs linked against the ports libusb 0.1 need to be
951	redirected to the new stack's libusb20.  /etc/libmap.conf can
952	be used for this:
953		# Map old usb library to new one for usb2 stack
954		libusb-0.1.so.8	libusb20.so.1
955
95620090209:
957	All USB ethernet devices now attach as interfaces under the name ueN
958	(eg. ue0). This is to provide a predictable name as vendors often
959	change usb chipsets in a product without notice.
960
96120090203:
962	The ichsmb(4) driver has been changed to require SMBus slave
963	addresses be left-justified (xxxxxxx0b) rather than right-justified.
964	All of the other SMBus controller drivers require left-justified
965	slave addresses, so this change makes all the drivers provide the
966	same interface.
967
96820090201:
969	INET6 statistics (struct ip6stat) was updated.
970	netstat(1) needs to be recompiled.
971
97220090119:
973	NTFS has been removed from GENERIC kernel on amd64 to match
974	GENERIC on i386. Should not cause any issues since mount_ntfs(8)
975	will load ntfs.ko module automatically when NTFS support is
976	actually needed, unless ntfs.ko is not installed or security
977	level prohibits loading kernel modules. If either is the case,
978	"options NTFS" has to be added into kernel config.
979
98020090115:
981	TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
982	New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
983	800061. User space tools that rely on the size of struct tcpcb in
984	tcp_var.h (e.g. sockstat) need to be recompiled.
985
98620081225:
987	ng_tty(4) module updated to match the new TTY subsystem.
988	Due to API change, user-level applications must be updated.
989	New API support added to mpd5 CVS and expected to be present
990	in next mpd5.3 release.
991
99220081219:
993	With __FreeBSD_version 800060 the makefs tool is part of
994	the base system (it was a port).
995
99620081216:
997	The afdata and ifnet locks have been changed from mutexes to
998	rwlocks, network modules will need to be re-compiled.
999
100020081214:
1001	__FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
1002	RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
1003	The new code reduced struct rtentry{} by 16 bytes on 32-bit
1004	architecture and 40 bytes on 64-bit architecture. The userland
1005	applications "arp" and "ndp" have been updated accordingly.
1006	The output from "netstat -r" shows only routing entries and
1007	none of the L2 information.
1008
100920081130:
1010	__FreeBSD_version 800057 marks the switchover from the
1011	binary ath hal to source code. Users must add the line:
1012
1013	options	AH_SUPPORT_AR5416
1014
1015	to their kernel config files when specifying:
1016
1017	device	ath_hal
1018
1019	The ath_hal module no longer exists; the code is now compiled
1020	together with the driver in the ath module.  It is now
1021	possible to tailor chip support (i.e. reduce the set of chips
1022	and thereby the code size); consult ath_hal(4) for details.
1023
102420081121:
1025	__FreeBSD_version 800054 adds memory barriers to
1026	<machine/atomic.h>, new interfaces to ifnet to facilitate
1027	multiple hardware transmit queues for cards that support
1028	them, and a lock-less ring-buffer implementation to
1029	enable drivers to more efficiently manage queueing of
1030	packets.
1031
103220081117:
1033	A new version of ZFS (version 13) has been merged to -HEAD.
1034	This version has zpool attribute "listsnapshots" off by
1035	default, which means "zfs list" does not show snapshots,
1036	and is the same as Solaris behavior.
1037
103820081028:
1039	dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
1040
104120081009:
1042	The uhci, ohci, ehci and slhci USB Host controller drivers have
1043	been put into separate modules. If you load the usb module
1044	separately through loader.conf you will need to load the
1045	appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
1046	controller add the following to loader.conf:
1047
1048		uhci_load="YES"
1049		ehci_load="YES"
1050
105120081009:
1052	The ABI used by the PMC toolset has changed.  Please keep
1053	userland (libpmc(3)) and the kernel module (hwpmc(4)) in
1054	sync.
1055
105620081009:
1057	atapci kernel module now includes only generic PCI ATA
1058	driver. AHCI driver moved to ataahci kernel module.
1059	All vendor-specific code moved into separate kernel modules:
1060	ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
1061	atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
1062	atamarvell, atamicron, atanational, atanetcell, atanvidia,
1063	atapromise, ataserverworks, atasiliconimage, atasis, atavia
1064
106520080820:
1066	The TTY subsystem of the kernel has been replaced by a new
1067	implementation, which provides better scalability and an
1068	improved driver model. Most common drivers have been migrated to
1069	the new TTY subsystem, while others have not. The following
1070	drivers have not yet been ported to the new TTY layer:
1071
1072	PCI/ISA:
1073		cy, digi, rc, rp, sio
1074
1075	USB:
1076		ubser, ucycom
1077
1078	Line disciplines:
1079		ng_h4, ng_tty, ppp, sl, snp
1080
1081	Adding these drivers to your kernel configuration file shall
1082	cause compilation to fail.
1083
108420080818:
1085	ntpd has been upgraded to 4.2.4p5.
1086
108720080801:
1088	OpenSSH has been upgraded to 5.1p1.
1089
1090	For many years, FreeBSD's version of OpenSSH preferred DSA
1091	over RSA for host and user authentication keys.  With this
1092	upgrade, we've switched to the vendor's default of RSA over
1093	DSA.  This may cause upgraded clients to warn about unknown
1094	host keys even for previously known hosts.  Users should
1095	follow the usual procedure for verifying host keys before
1096	accepting the RSA key.
1097
1098	This can be circumvented by setting the "HostKeyAlgorithms"
1099	option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
1100	command line.
1101
1102	Please note that the sequence of keys offered for
1103	authentication has been changed as well.  You may want to
1104	specify IdentityFile in a different order to revert this
1105	behavior.
1106
110720080713:
1108	The sio(4) driver has been removed from the i386 and amd64
1109	kernel configuration files. This means uart(4) is now the
1110	default serial port driver on those platforms as well.
1111
1112	To prevent collisions with the sio(4) driver, the uart(4) driver
1113	uses different names for its device nodes. This means the
1114	onboard serial port will now most likely be called "ttyu0"
1115	instead of "ttyd0". You may need to reconfigure applications to
1116	use the new device names.
1117
1118	When using the serial port as a boot console, be sure to update
1119	/boot/device.hints and /etc/ttys before booting the new kernel.
1120	If you forget to do so, you can still manually specify the hints
1121	at the loader prompt:
1122
1123		set hint.uart.0.at="isa"
1124		set hint.uart.0.port="0x3F8"
1125		set hint.uart.0.flags="0x10"
1126		set hint.uart.0.irq="4"
1127		boot -s
1128
112920080609:
1130	The gpt(8) utility has been removed. Use gpart(8) to partition
1131	disks instead.
1132
113320080603:
1134	The version that Linuxulator emulates was changed from 2.4.2
1135	to 2.6.16. If you experience any problems with Linux binaries
1136	please try to set sysctl compat.linux.osrelease to 2.4.2 and
1137	if it fixes the problem contact emulation mailing list.
1138
113920080525:
1140	ISDN4BSD (I4B) was removed from the src tree. You may need to
1141	update a your kernel configuration and remove relevant entries.
1142
114320080509:
1144	I have checked in code to support multiple routing tables.
1145	See the man pages setfib(1) and setfib(2).
1146	This is a hopefully backwards compatible version,
1147	but to make use of it you need to compile your kernel
1148	with options ROUTETABLES=2 (or more up to 16).
1149
115020080420:
1151	The 802.11 wireless support was redone to enable multi-bss
1152	operation on devices that are capable.  The underlying device
1153	is no longer used directly but instead wlanX devices are
1154	cloned with ifconfig.  This requires changes to rc.conf files.
1155	For example, change:
1156		ifconfig_ath0="WPA DHCP"
1157	to
1158		wlans_ath0=wlan0
1159		ifconfig_wlan0="WPA DHCP"
1160	see rc.conf(5) for more details.  In addition, mergemaster of
1161	/etc/rc.d is highly recommended.  Simultaneous update of userland
1162	and kernel wouldn't hurt either.
1163
1164	As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
1165	modules were merged into the base wlan module.  All references
1166	to these modules (e.g. in kernel config files) must be removed.
1167
116820080408:
1169	psm(4) has gained write(2) support in native operation level.
1170	Arbitrary commands can be written to /dev/psm%d and status can
1171	be read back from it.  Therefore, an application is responsible
1172	for status validation and error recovery.  It is a no-op in
1173	other operation levels.
1174
117520080312:
1176	Support for KSE threading has been removed from the kernel.  To
1177	run legacy applications linked against KSE libmap.conf may
1178	be used.  The following libmap.conf may be used to ensure
1179	compatibility with any prior release:
1180
1181	libpthread.so.1 libthr.so.1
1182	libpthread.so.2 libthr.so.2
1183	libkse.so.3 libthr.so.3
1184
118520080301:
1186	The layout of struct vmspace has changed. This affects libkvm
1187	and any executables that link against libkvm and use the
1188	kvm_getprocs() function. In particular, but not exclusively,
1189	it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
1190	The effects are minimal, but it's advisable to upgrade world
1191	nonetheless.
1192
119320080229:
1194	The latest em driver no longer has support in it for the
1195	82575 adapter, this is now moved to the igb driver. The
1196	split was done to make new features that are incompatible
1197	with older hardware easier to do.
1198
119920080220:
1200	The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
1201	likewise the kernel option is now GEOM_LINUX_LVM.
1202
120320080211:
1204	The default NFS mount mode has changed from UDP to TCP for
1205	increased reliability.  If you rely on (insecurely) NFS
1206	mounting across a firewall you may need to update your
1207	firewall rules.
1208
120920080208:
1210	Belatedly note the addition of m_collapse for compacting
1211	mbuf chains.
1212
121320080126:
1214	The fts(3) structures have been changed to use adequate
1215	integer types for their members and so to be able to cope
1216	with huge file trees.  The old fts(3) ABI is preserved
1217	through symbol versioning in libc, so third-party binaries
1218	using fts(3) should still work, although they will not take
1219	advantage of the extended types.  At the same time, some
1220	third-party software might fail to build after this change
1221	due to unportable assumptions made in its source code about
1222	fts(3) structure members.  Such software should be fixed
1223	by its vendor or, in the worst case, in the ports tree.
1224	FreeBSD_version 800015 marks this change for the unlikely
1225	case that a portable fix is impossible.
1226
122720080123:
1228	To upgrade to -current after this date, you must be running
1229	FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
1230	from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
1231
123220071128:
1233	The ADAPTIVE_GIANT kernel option has been retired because its
1234	functionality is the default now.
1235
123620071118:
1237	The AT keyboard emulation of sunkbd(4) has been turned on
1238	by default. In order to make the special symbols of the Sun
1239	keyboards driven by sunkbd(4) work under X these now have
1240	to be configured the same way as Sun USB keyboards driven
1241	by ukbd(4) (which also does AT keyboard emulation), f.e.:
1242
1243	Option	"XkbLayout" "us"
1244	Option	"XkbRules" "xorg"
1245	Option	"XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
1246
124720071024:
1248	It has been decided that it is desirable to provide ABI
1249	backwards compatibility to the FreeBSD 4/5/6 versions of the
1250	PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
1251	broken with the introduction of PCI domain support (see the
1252	20070930 entry). Unfortunately, this required the ABI of
1253	PCIOCGETCONF to be broken again in order to be able to
1254	provide backwards compatibility to the old version of that
1255	IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
1256	again. As for prominent ports this affects neither pciutils
1257	nor xorg-server this time, the hal port needs to be rebuilt
1258	however.
1259
126020071020:
1261	The misnamed kthread_create() and friends have been renamed
1262	to kproc_create() etc. Many of the callers already
1263	used kproc_start()..
1264	I will return kthread_create() and friends in a while
1265	with implementations that actually create threads, not procs.
1266	Renaming corresponds with version 800002.
1267
126820071010:
1269	RELENG_7 branched.
1270
1271COMMON ITEMS:
1272
1273	General Notes
1274	-------------
1275	Avoid using make -j when upgrading.  While generally safe, there are
1276	sometimes problems using -j to upgrade.  If your upgrade fails with
1277	-j, please try again without -j.  From time to time in the past there
1278	have been problems using -j with buildworld and/or installworld.  This
1279	is especially true when upgrading between "distant" versions (eg one
1280	that cross a major release boundary or several minor releases, or when
1281	several months have passed on the -current branch).
1282
1283	Sometimes, obscure build problems are the result of environment
1284	poisoning.  This can happen because the make utility reads its
1285	environment when searching for values for global variables.  To run
1286	your build attempts in an "environmental clean room", prefix all make
1287	commands with 'env -i '.  See the env(1) manual page for more details.
1288
1289	When upgrading from one major version to another it is generally best
1290	to upgrade to the latest code in the currently installed branch first,
1291	then do an upgrade to the new branch. This is the best-tested upgrade
1292	path, and has the highest probability of being successful.  Please try
1293	this approach before reporting problems with a major version upgrade.
1294
1295	ZFS notes
1296	---------
1297	When upgrading the boot ZFS pool to a new version, always follow
1298	these two steps:
1299
1300	1.) recompile and reinstall the ZFS boot loader and boot block
1301	(this is part of "make buildworld" and "make installworld")
1302
1303	2.) update the ZFS boot block on your boot drive
1304
1305	The following example updates the ZFS boot block on the first
1306	partition (freebsd-boot) of a GPT partitioned drive ad0:
1307	"gpart bootcode -p /boot/gptzfsboot -i 1 ad0"
1308
1309	Non-boot pools do not need these updates.
1310
1311	To build a kernel
1312	-----------------
1313	If you are updating from a prior version of FreeBSD (even one just
1314	a few days old), you should follow this procedure.  It is the most
1315	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1316
1317	make kernel-toolchain
1318	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1319	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1320
1321	To test a kernel once
1322	---------------------
1323	If you just want to boot a kernel once (because you are not sure
1324	if it works, or if you want to boot a known bad kernel to provide
1325	debugging information) run
1326	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1327	nextboot -k testkernel
1328
1329	To just build a kernel when you know that it won't mess you up
1330	--------------------------------------------------------------
1331	This assumes you are already running a CURRENT system.  Replace
1332	${arch} with the architecture of your machine (e.g. "i386",
1333	"arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
1334
1335	cd src/sys/${arch}/conf
1336	config KERNEL_NAME_HERE
1337	cd ../compile/KERNEL_NAME_HERE
1338	make depend
1339	make
1340	make install
1341
1342	If this fails, go to the "To build a kernel" section.
1343
1344	To rebuild everything and install it on the current system.
1345	-----------------------------------------------------------
1346	# Note: sometimes if you are running current you gotta do more than
1347	# is listed here if you are upgrading from a really old current.
1348
1349	<make sure you have good level 0 dumps>
1350	make buildworld
1351	make kernel KERNCONF=YOUR_KERNEL_HERE
1352							[1]
1353	<reboot in single user>				[3]
1354	mergemaster -p					[5]
1355	make installworld
1356	mergemaster -i					[4]
1357	make delete-old					[6]
1358	<reboot>
1359
1360
1361	To cross-install current onto a separate partition
1362	--------------------------------------------------
1363	# In this approach we use a separate partition to hold
1364	# current's root, 'usr', and 'var' directories.   A partition
1365	# holding "/", "/usr" and "/var" should be about 2GB in
1366	# size.
1367
1368	<make sure you have good level 0 dumps>
1369	<boot into -stable>
1370	make buildworld
1371	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1372	<maybe newfs current's root partition>
1373	<mount current's root partition on directory ${CURRENT_ROOT}>
1374	make installworld DESTDIR=${CURRENT_ROOT}
1375	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1376	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1377	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
1378	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1379	<reboot into current>
1380	<do a "native" rebuild/install as described in the previous section>
1381	<maybe install compatibility libraries from ports/misc/compat*>
1382	<reboot>
1383
1384
1385	To upgrade in-place from 8.x-stable to current
1386	----------------------------------------------
1387	<make sure you have good level 0 dumps>
1388	make buildworld					[9]
1389	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
1390							[1]
1391	<reboot in single user>				[3]
1392	mergemaster -p					[5]
1393	make installworld
1394	mergemaster -i					[4]
1395	make delete-old					[6]
1396	<reboot>
1397
1398	Make sure that you've read the UPDATING file to understand the
1399	tweaks to various things you need.  At this point in the life
1400	cycle of current, things change often and you are on your own
1401	to cope.  The defaults can also change, so please read ALL of
1402	the UPDATING entries.
1403
1404	Also, if you are tracking -current, you must be subscribed to
1405	freebsd-current@freebsd.org.  Make sure that before you update
1406	your sources that you have read and understood all the recent
1407	messages there.  If in doubt, please track -stable which has
1408	much fewer pitfalls.
1409
1410	[1] If you have third party modules, such as vmware, you
1411	should disable them at this point so they don't crash your
1412	system on reboot.
1413
1414	[3] From the bootblocks, boot -s, and then do
1415		fsck -p
1416		mount -u /
1417		mount -a
1418		cd src
1419		adjkerntz -i		# if CMOS is wall time
1420	Also, when doing a major release upgrade, it is required that
1421	you boot into single user mode to do the installworld.
1422
1423	[4] Note: This step is non-optional.  Failure to do this step
1424	can result in a significant reduction in the functionality of the
1425	system.  Attempting to do it by hand is not recommended and those
1426	that pursue this avenue should read this file carefully, as well
1427	as the archives of freebsd-current and freebsd-hackers mailing lists
1428	for potential gotchas.  The -U option is also useful to consider.
1429	See mergemaster(8) for more information.
1430
1431	[5] Usually this step is a noop.  However, from time to time
1432	you may need to do this if you get unknown user in the following
1433	step.  It never hurts to do it all the time.  You may need to
1434	install a new mergemaster (cd src/usr.sbin/mergemaster && make
1435	install) after the buildworld before this step if you last updated
1436	from current before 20020224 or from -stable before 20020408.
1437
1438	[6] This only deletes old files and directories. Old libraries
1439	can be deleted by "make delete-old-libs", but you have to make
1440	sure that no program is using those libraries anymore.
1441
1442	[8] In order to have a kernel that can run the 4.x binaries needed to
1443	do an installworld, you must include the COMPAT_FREEBSD4 option in
1444	your kernel.  Failure to do so may leave you with a system that is
1445	hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1446	required to run the 5.x binaries on more recent kernels.  And so on
1447	for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1448
1449	Make sure that you merge any new devices from GENERIC since the
1450	last time you updated your kernel config file.
1451
1452	[9] When checking out sources, you must include the -P flag to have
1453	cvs prune empty directories.
1454
1455	If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1456	"?=" instead of the "=" assignment operator, so that buildworld can
1457	override the CPUTYPE if it needs to.
1458
1459	MAKEOBJDIRPREFIX must be defined in an environment variable, and
1460	not on the command line, or in /etc/make.conf.  buildworld will
1461	warn if it is improperly defined.
1462FORMAT:
1463
1464This file contains a list, in reverse chronological order, of major
1465breakages in tracking -current.  It is not guaranteed to be a complete
1466list of such breakages, and only contains entries since October 10, 2007.
1467If you need to see UPDATING entries from before that date, you will need
1468to fetch an UPDATING file from an older FreeBSD release.
1469
1470Copyright information:
1471
1472Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
1473
1474Redistribution, publication, translation and use, with or without
1475modification, in full or in part, in any form or format of this
1476document are permitted without further permission from the author.
1477
1478THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1479IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1480WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1481DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1482INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1483(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1484SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1485HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1486STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1487IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1488POSSIBILITY OF SUCH DAMAGE.
1489
1490Contact Warner Losh if you have any questions about your use of
1491this document.
1492
1493$FreeBSD: head/UPDATING 225227 2011-08-28 09:26:48Z kib $
1494