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