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