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