UPDATING revision 190182
1Updating Information for FreeBSD current users
2
3This file is maintained and copyrighted by M. Warner Losh
4<imp@village.org>.  See end of file for further details.  For commonly
5done items, please see the COMMON ITEMS: section later in the file.
6
7Items affecting the ports and packages system can be found in
8/usr/ports/UPDATING.  Please read that file before running
9portupgrade.
10
11NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW:
12	FreeBSD 8.x has many debugging features turned on, in
13	both the kernel and userland.  These features attempt to detect
14	incorrect use of system primitives, and encourage loud failure
15	through extra sanity checking and fail stop semantics.  They
16	also substantially impact system performance.  If you want to
17	do performance measurement, benchmarking, and optimization,
18	you'll want to turn them off.  This includes various WITNESS-
19	related kernel options, INVARIANTS, malloc debugging flags
20	in userland, and various verbose features in the kernel.  Many
21	developers choose to disable these features on build machines
22	to maximize performance.  (To disable malloc debugging, run
23	ln -s aj /etc/malloc.conf.)
24
2520090320:
26	GEOM_PART has become the default partition slicer for storage devices,
27	replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
28	introduces some changes: the devices created from MSDOS extended
29	partition entries (EBR) can be named differently than with GEOM_MBR
30	and are now symlinks to	devices with offset-based names, and kernel
31	dumps are now not allowed to be written to devices whose partition
32	types indicate they are meant to be used for file systems.
33
3420090319:
35	The uscanner(4) driver has been removed from the kernel. This follows
36	Linux removing theirs in 2.6 and making libusb the default interface
37	(supported by sane).
38
3920090319:
40	The multicast forwarding code has been cleaned up. netstat(1)
41	only relies on KVM now for printing bandwidth upcall meters.
42	The IPv4 and IPv6 modules are split into ip_mroute_mod and
43	ip6_mroute_mod respectively. The config(5) options for statically
44	compiling this code remain the same, i.e. 'options MROUTING'.
45
4620090315:
47	Support for the IFF_NEEDSGIANT network interface flag has been
48	removed, which means that non-MPSAFE network device drivers are no
49	longer supported.  In particular, if_ar, if_sr, and network device
50	drivers from the old (legacy) USB stack can no longer be built or
51	used.
52
5320090313:
54	POSIX.1 Native Language Support (NLS) has been enabled in libc and
55	a bunch of new language catalog files have also been added.
56	This means that some common libc messages are now localized and
57	they depend on the LC_MESSAGES environmental variable.
58
5920090313:
60	The k8temp(4) driver has been renamed to amdtemp(4) since
61	support for K10 and K11 CPU families was added.
62
6320090309:
64	IGMPv3 and Source-Specific Multicast (SSM) have been merged
65	to the IPv4 stack. VIMAGE hooks are in but not yet used.
66
67	For kernel developers, the most important changes are that the
68	ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
69	and this lock has been downgraded to a non-recursive mutex.
70
71	Transport protocols (UDP, Raw IP) are now responsible for filtering
72	inbound multicast traffic according to group membership and source
73	filters. The imo_multicast_filter() KPI exists for this purpose.
74	Transports which do not use multicast (SCTP, TCP) already reject
75	multicast by default. Forwarding and receive performance may improve
76	as a mutex acquisition is no longer needed in the ip_input()
77	low-level input path.  in_addmulti() and in_delmulti() are shimmed
78	to new KPIs which exist to support SSM in-kernel.
79
80	For application developers, it is recommended that loopback of
81	multicast datagrams be disabled for best performance, as this
82	will still cause the lock to be taken for each looped-back
83	datagram transmission. The net.inet.ip.mcast.loop sysctl may
84	be tuned to 0 to disable loopback by default; it defaults to 1
85	to preserve the existing behaviour.
86
87	For systems administrators, to obtain best performance with
88	multicast reception and multiple groups, it is always recommended
89	that a card with a suitably precise hash filter is used. Hash
90	collisions will still result in the lock being taken within the
91	transport protocol input path to check group membership.
92
93	If deploying FreeBSD in an environment with IGMP snooping switches,
94	it is recommended that the net.inet.igmp.sendlocal sysctl remain
95	enabled; this forces 224.0.0.0/24 group membership to be announced
96	via IGMP.
97
98	The size of 'struct igmpstat' has changed; netstat needs to be
99	recompiled to reflect this.
100	Bump __FreeBSD_version to 800070.
101
10220090309:
103	libusb20.so.1 is now installed as libusb.so.1 and the ports system
104	updated to use it. This requires a buildworld/installworld in order to
105	update the library and dependencies (usbconfig, etc). Its advisable to
106	rebuild all ports which uses libusb. More specific directions are given
107	in the ports collection UPDATING file. Any /etc/libmap.conf entries for
108	libusb are no longer required and can be removed.
109
11020090302:
111	A workaround is committed to allow the creation of System V shared
112	memory segment of size > 2 GB on the 64-bit architectures.
113	Due to a limitation of the existing ABI, the shm_segsz member
114	of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
115	wrong for large segments. Note that limits must be explicitely
116	raised to allow such segments to be created.
117
11820090301:
119	The layout of struct ifnet has changed, requiring a rebuild of all
120	network device driver modules.
121
12220090227:
123	The /dev handling for the new USB stack has changed, a
124	buildworld/installworld is required for libusb20.
125
12620090223:
127	The new USB2 stack has now been permanently moved in and all kernel and
128	module names reverted to their previous values (eg, usb, ehci, ohci,
129	ums, ...).  The old usb stack can be compiled in by prefixing the name
130	with the letter 'o', the old usb modules have been removed.
131	Updating entry 20090216 for xorg and 20090215 for libmap may still
132	apply.
133
13420090217:
135	The rc.conf(5) option if_up_delay has been renamed to
136	defaultroute_delay to better reflect its purpose. If you have
137	customized this setting in /etc/rc.conf you need to update it to
138	use the new name.
139
14020090216:
141	xorg 7.4 wants to configure its input devices via hald which does not
142	yet work with USB2. If the keyboard/mouse does not work in xorg then
143	add
144		Option "AllowEmptyInput" "off"
145	to your ServerLayout section.  This will cause X to use the configured
146	kbd and mouse sections from your xorg.conf.
147
14820090215:
149	The GENERIC kernels for all architectures now default to the new USB2
150	stack. No kernel config options or code have been removed so if a
151	problem arises please report it and optionally revert to the old USB
152	stack. If you are loading USB kernel modules or have a custom kernel
153	that includes GENERIC then ensure that usb names are also changed over,
154	eg uftdi -> usb2_serial_ftdi.
155
156	Older programs linked against the ports libusb 0.1 need to be
157	redirected to the new stack's libusb20.  /etc/libmap.conf can
158	be used for this:
159		# Map old usb library to new one for usb2 stack
160		libusb-0.1.so.8	libusb20.so.1
161
16220090203:
163	The ichsmb(4) driver has been changed to require SMBus slave
164	addresses be left-justified (xxxxxxx0b) rather than right-justified.
165	All of the other SMBus controller drivers require left-justified
166	slave addresses, so this change makes all the drivers provide the
167	same interface.
168
16920090201:
170	INET6 statistics (struct ip6stat) was updated.
171	netstat(1) needs to be recompiled.
172
17320090119:
174	NTFS has been removed from GENERIC kernel on amd64 to match
175	GENERIC on i386. Should not cause any issues since mount_ntfs(8)
176	will load ntfs.ko module automatically when NTFS support is
177	actually needed, unless ntfs.ko is not installed or security
178	level prohibits loading kernel modules. If either is the case,
179	"options NTFS" has to be added into kernel config.
180
18120090115:
182	TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
183	New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
184	800061. User space tools that rely on the size of struct tcpcb in
185	tcp_var.h (e.g. sockstat) need to be recompiled.
186
18720081225:
188	ng_tty(4) module updated to match the new TTY subsystem.
189	Due to API change, user-level applications must be updated.
190	New API support added to mpd5 CVS and expected to be present
191	in next mpd5.3 release.
192
19320081219:
194	With __FreeBSD_version 800060 the makefs tool is part of
195	the base system (it was a port).
196
19720081216:
198	The afdata and ifnet locks have been changed from mutexes to
199	rwlocks, network modules will need to be re-compiled.
200
20120081214:
202	__FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
203	RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
204	The new code reduced struct rtentry{} by 16 bytes on 32-bit
205	architecture and 40 bytes on 64-bit architecture. The userland
206	applications "arp" and "ndp" have been updated accordingly.
207	The output from "netstat -r" shows only routing entries and
208	none of the L2 information.
209
21020081130:
211	__FreeBSD_version 800057 marks the switchover from the
212	binary ath hal to source code. Users must add the line:
213
214	options	AH_SUPPORT_AR5416
215
216	to their kernel config files when specifying:
217
218	device	ath_hal
219
220	The ath_hal module no longer exists; the code is now compiled
221	together with the driver in the ath module.  It is now
222	possible to tailor chip support (i.e. reduce the set of chips
223	and thereby the code size); consult ath_hal(4) for details.
224
22520081121:
226	__FreeBSD_version 800054 adds memory barriers to
227	<machine/atomic.h>, new interfaces to ifnet to facilitate
228	multiple hardware transmit queues for cards that support
229	them, and a lock-less ring-buffer implementation to
230	enable drivers to more efficiently manage queueing of
231	packets.
232
23320081117:
234	A new version of ZFS (version 13) has been merged to -HEAD.
235	This version has zpool attribute "listsnapshots" off by
236	default, which means "zfs list" does not show snapshots,
237	and is the same as Solaris behavior.
238
23920081028:
240	dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
241
24220081009:
243	The uhci, ohci, ehci and slhci USB Host controller drivers have
244	been put into separate modules. If you load the usb module
245	separately through loader.conf you will need to load the
246	appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
247	controller add the following to loader.conf:
248
249		uhci_load="YES"
250		ehci_load="YES"
251
25220081009:
253	The ABI used by the PMC toolset has changed.  Please keep
254	userland (libpmc(3)) and the kernel module (hwpmc(4)) in
255	sync.
256
25720080820:
258	The TTY subsystem of the kernel has been replaced by a new
259	implementation, which provides better scalability and an
260	improved driver model. Most common drivers have been migrated to
261	the new TTY subsystem, while others have not. The following
262	drivers have not yet been ported to the new TTY layer:
263
264	PCI/ISA:
265		cy, digi, rc, rp, sio
266
267	USB:
268		ubser, ucycom
269
270	Line disciplines:
271		ng_h4, ng_tty, ppp, sl, snp
272
273	Adding these drivers to your kernel configuration file shall
274	cause compilation to fail.
275
27620080818:
277	ntpd has been upgraded to 4.2.4p5.
278
27920080801:
280	OpenSSH has been upgraded to 5.1p1.
281
282	For many years, FreeBSD's version of OpenSSH preferred DSA
283	over RSA for host and user authentication keys.  With this
284	upgrade, we've switched to the vendor's default of RSA over
285	DSA.  This may cause upgraded clients to warn about unknown
286	host keys even for previously known hosts.  Users should
287	follow the usual procedure for verifying host keys before
288	accepting the RSA key.
289
290	This can be circumvented by setting the "HostKeyAlgorithms"
291	option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
292	command line.
293
294	Please note that the sequence of keys offered for
295	authentication has been changed as well.  You may want to
296	specify IdentityFile in a different order to revert this
297	behavior.
298
29920080713:
300	The sio(4) driver has been removed from the i386 and amd64
301	kernel configuration files. This means uart(4) is now the
302	default serial port driver on those platforms as well.
303
304	To prevent collisions with the sio(4) driver, the uart(4) driver
305	uses different names for its device nodes. This means the
306	onboard serial port will now most likely be called "ttyu0"
307	instead of "ttyd0". You may need to reconfigure applications to
308	use the new device names.
309
310	When using the serial port as a boot console, be sure to update
311	/boot/device.hints and /etc/ttys before booting the new kernel.
312	If you forget to do so, you can still manually specify the hints
313	at the loader prompt:
314
315		set hint.uart.0.at="isa"
316		set hint.uart.0.port="0x3F8"
317		set hint.uart.0.flags="0x10"
318		set hint.uart.0.irq="4"
319		boot -s
320
32120080609:
322	The gpt(8) utility has been removed. Use gpart(8) to partition
323	disks instead.
324
32520080603:
326	The version that Linuxulator emulates was changed from 2.4.2
327	to 2.6.16. If you experience any problems with Linux binaries
328	please try to set sysctl compat.linux.osrelease to 2.4.2 and
329	if it fixes the problem contact emulation mailing list.
330
33120080525:
332	ISDN4BSD (I4B) was removed from the src tree. You may need to
333	update a your kernel configuration and remove relevant entries.
334
33520080509:
336	I have checked in code to support multiple routing tables.
337	See the man pages setfib(1) and setfib(2).
338	This is a hopefully backwards compatible version,
339	but to make use of it you need to compile your kernel
340	with options ROUTETABLES=2 (or more up to 16).
341
34220080420:
343	The 802.11 wireless support was redone to enable multi-bss
344	operation on devices that are capable.  The underlying device
345	is no longer used directly but instead wlanX devices are
346	cloned with ifconfig.  This requires changes to rc.conf files.
347	For example, change:
348		ifconfig_ath0="WPA DHCP"
349	to
350		wlans_ath0=wlan0
351		ifconfig_wlan0="WPA DHCP"
352	see rc.conf(5) for more details.  In addition, mergemaster of
353	/etc/rc.d is highly recommended.  Simultaneous update of userland
354	and kernel wouldn't hurt either.
355
356	As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
357	modules were merged into the base wlan module.  All references
358	to these modules (e.g. in kernel config files) must be removed.
359
36020080408:
361	psm(4) has gained write(2) support in native operation level.
362	Arbitrary commands can be written to /dev/psm%d and status can
363	be read back from it.  Therefore, an application is responsible
364	for status validation and error recovery.  It is a no-op in
365	other operation levels.
366
36720080312:
368	Support for KSE threading has been removed from the kernel.  To
369	run legacy applications linked against KSE libmap.conf may
370	be used.  The following libmap.conf may be used to ensure
371	compatibility with any prior release:
372
373	libpthread.so.1 libthr.so.1
374	libpthread.so.2 libthr.so.2
375	libkse.so.3 libthr.so.3
376
37720080301:
378	The layout of struct vmspace has changed. This affects libkvm
379	and any executables that link against libkvm and use the
380	kvm_getprocs() function. In particular, but not exclusively,
381	it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
382	The effects are minimal, but it's advisable to upgrade world
383	nonetheless.
384
38520080229:
386	The latest em driver no longer has support in it for the
387	82575 adapter, this is now moved to the igb driver. The
388	split was done to make new features that are incompatible
389	with older hardware easier to do.
390
39120080220:
392	The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
393	likewise the kernel option is now GEOM_LINUX_LVM.
394
39520080211:
396	The default NFS mount mode has changed from UDP to TCP for
397	increased reliability.  If you rely on (insecurely) NFS
398	mounting across a firewall you may need to update your
399	firewall rules.
400
40120080208:
402	Belatedly note the addition of m_collapse for compacting
403	mbuf chains.
404
40520080126:
406	The fts(3) structures have been changed to use adequate
407	integer types for their members and so to be able to cope
408	with huge file trees.  The old fts(3) ABI is preserved
409	through symbol versioning in libc, so third-party binaries
410	using fts(3) should still work, although they will not take
411	advantage of the extended types.  At the same time, some
412	third-party software might fail to build after this change
413	due to unportable assumptions made in its source code about
414	fts(3) structure members.  Such software should be fixed
415	by its vendor or, in the worst case, in the ports tree.
416	FreeBSD_version 800015 marks this change for the unlikely
417	case that a portable fix is impossible.
418
41920080123:
420	To upgrade to -current after this date, you must be running
421	FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
422	from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
423
42420071128:
425	The ADAPTIVE_GIANT kernel option has been retired because its
426	functionality is the default now.
427
42820071118:
429	The AT keyboard emulation of sunkbd(4) has been turned on
430	by default. In order to make the special symbols of the Sun
431	keyboards driven by sunkbd(4) work under X these now have
432	to be configured the same way as Sun USB keyboards driven
433	by ukbd(4) (which also does AT keyboard emulation), f.e.:
434
435	Option	"XkbLayout" "us"
436	Option	"XkbRules" "xorg"
437	Option	"XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
438
43920071024:
440	It has been decided that it is desirable to provide ABI
441	backwards compatibility to the FreeBSD 4/5/6 versions of the
442	PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
443	broken with the introduction of PCI domain support (see the
444	20070930 entry). Unfortunately, this required the ABI of
445	PCIOCGETCONF to be broken again in order to be able to
446	provide backwards compatibility to the old version of that
447	IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
448	again. As for prominent ports this affects neither pciutils
449	nor xorg-server this time, the hal port needs to be rebuilt
450	however.
451
45220071020:
453	The misnamed kthread_create() and friends have been renamed
454	to kproc_create() etc. Many of the callers already
455	used kproc_start()..
456	I will return kthread_create() and friends in a while
457	with implementations that actually create threads, not procs.
458	Renaming corresponds with version 800002.
459
46020071010:
461	RELENG_7 branched.
462
46320071009:
464	Setting WITHOUT_LIBPTHREAD now means WITHOUT_LIBKSE and
465	WITHOUT_LIBTHR are set.
466
46720070930:
468	The PCI code has been made aware of PCI domains. This means that
469	the location strings as used by pciconf(8) etc are now in the
470	following format: pci<domain>:<bus>:<device>[:<function>]. It
471	also means that consumers of <sys/pciio.h> potentially need to
472	be recompiled; this includes the hal and xorg-server ports.
473
47420070928:
475	The caching daemon (cached) was renamed to nscd. nscd.conf
476	configuration file should be used instead of cached.conf and
477	nscd_enable, nscd_pidfile and nscd_flags options should be used
478	instead of cached_enable, cached_pidfile and cached_flags in
479	rc.conf.
480
48120070921:
482	The getfacl(1) utility now prints owning user and group name
483	instead of owning uid and gid in the three line comment header.
484	This is the same behavior as getfacl(1) on Solaris and Linux.
485
48620070704:
487	The new IPsec code is now compiled in using the IPSEC option.  The
488	IPSEC option now requires "device crypto" be defined in your kernel
489	configuration.  The FAST_IPSEC kernel option is now deprecated.
490
49120070702:
492	The packet filter (pf) code has been updated to OpenBSD 4.1 Please
493	note the changed syntax - keep state is now on by default.  Also
494	note the fact that ftp-proxy(8) has been changed from bottom up and
495	has been moved from libexec to usr/sbin.  Changes in the ALTQ
496	handling also affect users of IPFW's ALTQ capabilities.
497
49820070701:
499	Remove KAME IPsec in favor of FAST_IPSEC, which is now the
500	only IPsec supported by FreeBSD.  The new IPsec stack
501	supports both IPv4 and IPv6. The kernel option will change
502	after the code changes have settled in.  For now the kernel
503	option IPSEC is deprecated and FAST_IPSEC is the only option, that
504	will change after some settling time.
505
50620070701:
507	The wicontrol(8) utility has been removed from the base system. wi(4)
508	cards should be configured using ifconfig(8), see the man page for more
509	information.
510
51120070612:
512	The i386/amd64 GENERIC kernel now defaults to the nfe(4) driver
513	instead of the nve(4) driver. Please update your configuration
514	accordingly.
515
51620070612:
517	By default, /etc/rc.d/sendmail no longer rebuilds the aliases
518	database if it is missing or older than the aliases file.  If
519	desired, set the new rc.conf option sendmail_rebuild_aliases
520	to "YES" to restore that functionality.
521
52220070612:
523	The IPv4 multicast socket code has been considerably modified, and
524	moved to the file sys/netinet/in_mcast.c. Initial support for the
525	RFC 3678 Source-Specific Multicast Socket API has been added to
526	the IPv4 network stack.
527
528	Strict multicast and broadcast reception is now the default for
529	UDP/IPv4 sockets; the net.inet.udp.strict_mcast_mship sysctl variable
530	has now been removed.
531
532	The RFC 1724 hack for interface selection has been removed; the use
533	of the Linux-derived ip_mreqn structure with IP_MULTICAST_IF has
534	been added to replace it. Consumers such as routed will soon be
535	updated to reflect this.
536
537	These changes affect users who are running routed(8) or rdisc(8)
538	from the FreeBSD base system on point-to-point or unnumbered
539	interfaces.
540
54120070610:
542	The net80211 layer has changed significantly and all wireless
543	drivers that depend on it need to be recompiled.  Further these
544	changes require that any program that interacts with the wireless
545	support in the kernel be recompiled; this includes: ifconfig,
546	wpa_supplicant, hostapd, and wlanstats.  Users must also, for
547	the moment, kldload the wlan_scan_sta and/or wlan_scan_ap modules
548	if they use modules for wireless support.  These modules implement
549	scanning support for station and ap modes, respectively.  Failure
550	to load the appropriate module before marking a wireless interface
551	up will result in a message to the console and the device not
552	operating properly.
553
55420070610:
555	The pam_nologin(8) module ceases to provide an authentication
556	function and starts providing an account management function.
557	Consequent changes to /etc/pam.d should be brought in using
558	mergemaster(8).  Third-party files in /usr/local/etc/pam.d may
559	need manual editing as follows.  Locate this line (or similar):
560
561		auth	required	pam_nologin.so	no_warn
562
563	and change it according to this example:
564
565		account	required	pam_nologin.so	no_warn
566
567	That is, the first word needs to be changed from "auth" to
568	"account".  The new line can be moved to the account section
569	within the file for clarity.  Not updating pam.conf(5) files
570	will result in nologin(5) ignored by the respective services.
571
57220070529:
573	The ether_ioctl() function has been synchronized with ioctl(2)
574	and ifnet.if_ioctl.  Due to that, the size of one of its arguments
575	has changed on 64-bit architectures.  All kernel modules using
576	ether_ioctl() need to be rebuilt on such architectures.
577
57820070516:
579	Improved INCLUDE_CONFIG_FILE support has been introduced to the
580	config(8) utility. In order to take advantage of this new
581	functionality, you are expected to recompile and install
582	src/usr.sbin/config. If you don't rebuild config(8), and your
583	kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel
584	build will be broken because of a missing "kernconfstring"
585	symbol.
586
58720070513:
588	Symbol versioning is enabled by default.  To disable it, use
589	option WITHOUT_SYMVER.  It is not advisable to attempt to
590	disable symbol versioning once it is enabled; your installworld
591	will break because a symbol version-less libc will get installed
592	before the install tools.  As a result, the old install tools,
593	which previously had symbol dependencies to FBSD_1.0, will fail
594	because the freshly installed libc will not have them.
595
596	The default threading library (providing "libpthread") has been
597	changed to libthr.  If you wish to have libkse as your default,
598	use option DEFAULT_THREAD_LIB=libkse for the buildworld.
599
60020070423:
601	The ABI breakage in sendmail(8)'s libmilter has been repaired
602	so it is no longer necessary to recompile mail filters (aka,
603	milters).  If you recompiled mail filters after the 20070408
604	note, it is not necessary to recompile them again.
605
60620070417:
607	The new trunk(4) driver has been renamed to lagg(4) as it better
608	reflects its purpose. ifconfig will need to be recompiled.
609
61020070408:
611	sendmail(8) has been updated to version 8.14.1.  Mail filters
612	(aka, milters) compiled against the libmilter included in the
613	base operating system should be recompiled.
614
61520070302:
616	Firmwares for ipw(4) and iwi(4) are now included in the base tree.
617	In order to use them one must agree to the respective LICENSE in
618	share/doc/legal and define legal.intel_<name>.license_ack=1 via
619	loader.conf(5) or kenv(1).  Make sure to deinstall the now
620	deprecated modules from the respective firmware ports.
621
62220070228:
623	The name resolution/mapping functions addr2ascii(3) and ascii2addr(3)
624	were removed from FreeBSD's libc. These originally came from INRIA
625	IPv6. Nothing in FreeBSD ever used them. They may be regarded as
626	deprecated in previous releases.
627	The AF_LINK support for getnameinfo(3) was merged from NetBSD to
628	replace it as a more portable (and re-entrant) API.
629
63020070224:
631	To support interrupt filtering a modification to the newbus API
632	has occurred, ABI was broken and __FreeBSD_version was bumped
633	to 700031. Please make sure that your kernel and modules are in
634	sync. For more info:
635	http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941
636
63720070224:
638	The IPv6 multicast forwarding code may now be loaded into GENERIC
639	kernels by loading the ip_mroute.ko module. This is built into the
640	module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are
641	set; see src.conf(5) for more information.
642
64320070214:
644	The output of netstat -r has changed. Without -n, we now only
645	print a "network name" without the prefix length if the network
646	address and mask exactly match a Class A/B/C network, and an entry
647	exists in the nsswitch "networks" map.
648	With -n, we print the full unabbreviated CIDR network prefix in
649	the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default".
650	This change is in preparation for changes such as equal-cost
651	multipath, and to more generally assist operational deployment
652	of FreeBSD as a modern IPv4 router.
653
65420070210:
655	PIM has been turned on by default in the IPv4 multicast
656	routing code. The kernel option 'PIM' has now been removed.
657	PIM is now built by default if option 'MROUTING' is specified.
658	It may now be loaded into GENERIC kernels by loading the
659	ip_mroute.ko module.
660
66120070207:
662	Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing
663	has been removed. Its functionality may be achieved by explicitly
664	configuring gif(4) interfaces and using the 'phyint' keyword in
665	mrouted.conf.
666	XORP does not support source-routed IPv4 multicast tunnels nor the
667	integrated IPIP tunneling, therefore it is not affected by this
668	change. The __FreeBSD_version macro has been bumped to 700030.
669
67020061221:
671	Support for PCI Message Signalled Interrupts has been
672	re-enabled in the bge driver, only for those chips which are
673	believed to support it properly.  If there are any problems,
674	MSI can be disabled completely by setting the
675	'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0
676	in the loader.
677
67820061214:
679	Support for PCI Message Signalled Interrupts has been
680	disabled again in the bge driver.  Many revisions of the
681	hardware fail to support it properly.  Support can be
682	re-enabled by removing the #define of BGE_DISABLE_MSI in
683	"src/sys/dev/bge/if_bge.c".
684
68520061214:
686	Support for PCI Message Signalled Interrupts has been added
687	to the bge driver.  If there are any problems, MSI can be
688	disabled completely by setting the 'hw.pci.enable_msi' and
689	'hw.pci.enable_msix' tunables to 0 in the loader.
690
69120061205:
692	The removal of several facets of the experimental Threading
693	system from the kernel means that the proc and thread structures
694	have changed quite a bit. I suggest all kernel modules that might
695	reference these structures be recompiled.. Especially the
696	linux module.
697
69820061126:
699	Sound infrastructure has been updated with various fixes and
700	improvements. Most of the changes are pretty much transparent,
701	with exceptions of followings:
702	1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been
703	   moved to their own dev sysctl nodes, for example:
704		hw.snd.pcm0.vchans -> dev.pcm.0.vchans
705	2) /dev/dspr%d.%d has been deprecated. Each channel now has its
706	   own chardev in the form of "dsp%d.<function>%d", where <function>
707	   is p = playback, r = record and v = virtual, respectively. Users
708	   are encouraged to use these devs instead of (old) "/dev/dsp%d.%d".
709	   This does not affect those who are using "/dev/dsp".
710
71120061122:
712	geom(4)'s gmirror(8) class metadata structure has been
713	rev'd from v3 to v4. If you update across this point and
714	your metadata is converted for you, you will not be easily
715	able to downgrade since the /boot/kernel.old/geom_mirror.ko
716	kernel module will be unable to read the v4 metadata.  You
717	can resolve this by doing from the loader(8) prompt:
718
719		set vfs.root.mountfrom="ufs:/dev/XXX"
720
721	where XXX is the root slice of one of the disks that composed
722	the mirror (i.e.: /dev/ad0s1a). You can then rebuild
723	the array the same way you built it originally.
724
72520061122:
726	The following binaries have been disconnected from the build:
727	mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs,
728	and mount_std.  The functionality of these programs has been
729	moved into the mount program.  For example, to mount a devfs
730	filesystem, instead of using mount_devfs, use: "mount -t devfs".
731	This does not affect entries in /etc/fstab, since entries in
732	/etc/fstab are always processed with "mount -t fstype".
733
73420061113:
735	Support for PCI Message Signalled Interrupts on i386 and amd64
736	has been added to the kernel and various drivers will soon be
737	updated to use MSI when it is available.  If there are any problems,
738	MSI can be disabled completely by setting the 'hw.pci.enable_msi'
739	and 'hw.pci.enable_msix' tunables to 0 in the loader.
740
74120061110:
742	The MUTEX_PROFILING option has been renamed to LOCK_PROFILING.
743	The lockmgr object layout has been changed as a result of having
744	a lock_object embedded in it. As a consequence all file system
745	kernel modules must be re-compiled. The mutex profiling man page
746	has not yet been updated to reflect this change.
747
74820061026:
749	KSE in the kernel has now been made optional and turned on by
750	default. Use 'nooption KSE' in your kernel config to turn it
751	off. All kernel modules *must* be recompiled after this change.
752	There-after, modules from a KSE kernel should be compatible with
753	modules from a NOKSE kernel due to the temporary padding fields
754	added to 'struct proc'.
755
75620060929:
757	mrouted and its utilities have been removed from the base system.
758
75920060927:
760	Some ioctl(2) command codes have changed.  Full backward ABI
761	compatibility is provided if the "options COMPAT_FREEBSD6" is
762	present in the kernel configuration file.  Make sure to add
763	this option to your kernel config file, or recompile X.Org
764	and the rest of ports; otherwise they may refuse to work.
765
76620060924:
767	tcpslice has been removed from the base system.
768
76920060913:
770	The sizes of struct tcpcb (and struct xtcpcb) have changed due to
771	the rewrite of TCP syncookies.  Tools like netstat, sockstat, and
772	systat needs to be rebuilt.
773
77420060903:
775	libpcap updated to v0.9.4 and tcpdump to v3.9.4
776
77720060816:
778	The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour
779	for IPFIREWALL_FORWARD is now as it was before when it was first
780	committed and for years after. The behaviour is now ON.
781
78220060725:
783	enigma(1)/crypt(1) utility has been changed on 64 bit architectures.
784	Now it can decrypt files created from different architectures.
785	Unfortunately, it is no longer able to decrypt a cipher text
786	generated with an older version on 64 bit architectures.
787	If you have such a file, you need old utility to decrypt it.
788
78920060709:
790	The interface version of the i4b kernel part has changed. So
791	after updating the kernel sources and compiling a new kernel,
792	the i4b user space tools in "/usr/src/usr.sbin/i4b" must also
793	be rebuilt, and vice versa.
794
79520060627:
796	The XBOX kernel now defaults to the nfe(4) driver instead of
797	the nve(4) driver. Please update your configuration
798	accordingly.
799
80020060514:
801	The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx
802	PCnet family of NICs has been removed. The new le(4) driver serves
803	as an equivalent but cross-platform replacement with the pcn(4)
804	driver still providing performance-optimized support for the subset
805	of AMD Am79C971 PCnet-FAST and greater chips as before.
806
80720060511:
808	The machdep.* sysctls and the adjkerntz utility have been
809	modified a bit.  The new adjkerntz utility uses the new
810	sysctl names and sysctlbyname() calls, so it may be impossible
811	to run an old /sbin/adjkerntz utility in single-user mode
812	with a new kernel.  Replace the `adjkerntz -i' step before
813	`make installworld' with:
814
815	    /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i
816
817	and proceed as usual with the rest of the installworld-stage
818	steps.  Otherwise, you risk installing binaries with their
819	timestamp set several hours in the future, especially if
820	you are running with local time set to GMT+X hours.
821
82220060412:
823	The ip6fw utility has been removed.  The behavior provided by
824	ip6fw has been in ipfw2 for a good while and the rc.d scripts
825	have been updated to deal with it.  There are some rules that
826	might not migrate cleanly.  Use rc.firewall6 as a template to
827	rewrite rules.
828
82920060428:
830	The puc(4) driver has been overhauled. The ebus(4) and sbus(4)
831	attachments have been removed. Make sure to configure scc(4)
832	on sparc64. Note also that by default puc(4) will use uart(4)
833	and not sio(4) for serial ports because interrupt handling has
834	been optimized for multi-port serial cards and only uart(4)
835	implements the interface to support it.
836
83720060330:
838	The scc(4) driver replaces puc(4) for Serial Communications
839	Controllers (SCCs) like the Siemens SAB82532 and the Zilog
840	Z8530. On sparc64, it is advised to add scc(4) to the kernel
841	configuration to make sure that the serial ports remain
842	functional.
843
84420060317:
845	Most world/kernel related NO_* build options changed names.
846	New knobs have common prefixes WITHOUT_*/WITH_* (modelled
847	after FreeBSD ports) and should be set in /etc/src.conf
848	(the src.conf(5) manpage is provided).  Full backwards
849	compatibility is maintained for the time being though it's
850	highly recommended to start moving old options out of the
851	system-wide /etc/make.conf file into the new /etc/src.conf
852	while also properly renaming them.  More conversions will
853	likely follow.  Posting to current@:
854
855	http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
856
85720060305:
858	The NETSMBCRYPTO kernel option has been retired because its
859	functionality is always included in NETSMB and smbfs.ko now.
860
86120060303:
862	The TDFX_LINUX kernel option was retired and replaced by the
863	tdfx_linux device.  The latter can be loaded as the 3dfx_linux.ko
864	kernel module.  Loading it alone should suffice to get 3dfx support
865	for Linux apps because it will pull in 3dfx.ko and linux.ko through
866	its dependencies.
867
86820060204:
869	The 'audit' group was added to support the new auditing functionality
870	in the base system.  Be sure to follow the directions for updating,
871	including the requirement to run mergemaster -p.
872
87320060201:
874	The kernel ABI to file system modules was changed on i386.
875	Please make sure that your kernel and modules are in sync.
876
87720060118:
878	This actually occured some time ago, but installing the kernel
879	now also installs a bunch of symbol files for the kernel modules.
880	This increases the size of /boot/kernel to about 67Mbytes. You
881	will need twice this if you will eventually back this up to kernel.old
882	on your next install.
883	If you have a shortage of room in your root partition, you should add
884	-DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
885	to your /etc/make.conf.
886
88720060113:
888	libc's malloc implementation has been replaced.  This change has the
889	potential to uncover application bugs that previously went unnoticed.
890	See the malloc(3) manual page for more details.
891
89220060112:
893	The generic netgraph(4) cookie has been changed. If you upgrade
894	kernel passing this point, you also need to upgrade userland
895	and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4.
896
89720060106:
898	si(4)'s device files now contain the unit number.
899	Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f].
900
90120060106:
902	The kernel ABI was mostly destroyed due to a change in the size
903	of struct lock_object which is nested in other structures such
904	as mutexes which are nested in all sorts of other structures.
905	Make sure your kernel and modules are in sync.
906
90720051231:
908	The page coloring algorithm in the VM subsystem was converted
909	from tuning with kernel options to autotuning. Please remove
910	any PQ_* option except PQ_NOOPT from your kernel config.
911
91220051211:
913	The net80211-related tools in the tools/tools/ath directory
914	have been moved to tools/tools/net80211 and renamed with a
915	"wlan" prefix.  Scripts that use them should be adjusted
916	accordingly.
917
91820051202:
919	Scripts in the local_startup directories (as defined in
920	/etc/defaults/rc.conf) that have the new rc.d semantics will
921	now be run as part of the base system rcorder. If there are
922	errors or problems with one of these local scripts, it could
923	cause boot problems. If you encounter such problems, boot in
924	single user mode, remove that script from the */rc.d directory.
925	Please report the problem to the port's maintainer, and the
926	freebsd-ports@freebsd.org mailing list.
927
92820051129:
929	The nodev mount option was deprecated in RELENG_6 (where it
930	was a no-op), and is now unsupported.  If you have nodev or dev listed
931	in /etc/fstab, remove it, otherwise it will result in a mount error.
932
93320051129:
934	ABI between ipfw(4) and ipfw(8) has been changed. You need
935	to rebuild ipfw(8) when rebuilding kernel.
936
93720051108:
938	rp(4)'s device files now contain the unit number.
939	Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f].
940
94120051029:
942	/etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp.
943	Its /etc/rc.conf.d configuration file has been `ppp' from
944	the beginning, and hence there is no need to touch it.
945
94620051014:
947	Now most modules get their build-time options from the kernel
948	configuration file.  A few modules still have fixed options
949	due to their non-conformant implementation, but they will be
950	corrected eventually.  You may need to review the options of
951	the modules in use, explicitly specify the non-default options
952	in the kernel configuration file, and rebuild the kernel and
953	modules afterwards.
954
95520051001:
956	kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
957	to turn polling(4) on your interfaces.
958
95920050927:
960	The old bridge(4) implementation was retired.  The new
961	if_bridge(4) serves as a full functional replacement.
962
96320050722:
964	The ai_addrlen of a struct addrinfo was changed to a socklen_t
965	to conform to POSIX-2001.  This change broke an ABI
966	compatibility on 64 bit architecture.  You have to recompile
967	userland programs that use getaddrinfo(3) on 64 bit
968	architecture.
969
97020050711:
971	RELENG_6 branched here.
972
97320050629:
974	The pccard_ifconfig rc.conf variable has been removed and a new
975	variable, ifconfig_DEFAULT has been introduced.  Unlike
976	pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that
977	do not have ifconfig_ifn entries rather than just those in
978	removable_interfaces.
979
98020050616:
981	Some previous versions of PAM have permitted the use of
982	non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring
983	to third party PAM modules in /usr/local/lib.  A change has been
984	made to require the use of absolute paths in order to avoid
985	ambiguity and dependence on library path configuration, which may
986	affect existing configurations.
987
98820050610:
989	Major changes to network interface API.  All drivers must be
990	recompiled.  Drivers not in the base system will need to be
991	updated to the new APIs.
992
99320050609:
994	Changes were made to kinfo_proc in sys/user.h.  Please recompile
995	userland, or commands like `fstat', `pkill', `ps', `top' and `w'
996	will not behave correctly.
997
998	The API and ABI for hwpmc(4) have changed with the addition
999	of sampling support.  Please recompile lib/libpmc(3) and
1000	usr.sbin/{pmcstat,pmccontrol}.
1001
100220050606:
1003	The OpenBSD dhclient was imported in place of the ISC dhclient
1004	and the network interface configuration scripts were updated
1005	accordingly.  If you use DHCP to configure your interfaces, you
1006	must now run devd.  Also, DNS updating was lost so you will need
1007	to find a workaround if you use this feature.
1008
1009	The '_dhcp' user was added to support the OpenBSD dhclient.  Be
1010	sure to run mergemaster -p (like you are supposed to do every time
1011	anyway).
1012
101320050605:
1014	if_bridge was added to the tree. This has changed struct ifnet.
1015	Please recompile userland and all network related modules.
1016
101720050603:
1018	The n_net of a struct netent was changed to an uint32_t, and
1019	1st argument of getnetbyaddr() was changed to an uint32_t, to
1020	conform to POSIX-2001.  These changes broke an ABI
1021	compatibility on 64 bit architecture.  With these changes,
1022	shlib major of libpcap was bumped.  You have to recompile
1023	userland programs that use getnetbyaddr(3), getnetbyname(3),
1024	getnetent(3) and/or libpcap on 64 bit architecture.
1025
102620050528:
1027	Kernel parsing of extra options on '#!' first lines of shell
1028	scripts has changed.  Lines with multiple options likely will
1029	fail after this date.  For full details, please see
1030		http://people.freebsd.org/~gad/Updating-20050528.txt
1031
103220050503:
1033	The packet filter (pf) code has been updated to OpenBSD 3.7
1034	Please note the changed anchor syntax and the fact that
1035	authpf(8) now needs a mounted fdescfs(5) to function.
1036
103720050415:
1038	The NO_MIXED_MODE kernel option has been removed from the i386
1039	amd64 platforms as its use has been superceded by the new local
1040	APIC timer code.  Any kernel config files containing this option
1041	should be updated.
1042
104320050227:
1044	The on-disk format of LC_CTYPE files was changed to be machine
1045	independent.  Please make sure NOT to use NO_CLEAN buildworld
1046	when crossing this point. Crossing this point also requires
1047	recompile or reinstall of all locale depended packages.
1048
104920050225:
1050	The ifi_epoch member of struct if_data has been changed to
1051	contain the uptime at which the interface was created or the
1052	statistics zeroed rather then the wall clock time because
1053	wallclock time may go backwards.  This should have no impact
1054	unless an snmp implementation is using this value (I know of
1055	none at this point.)
1056
105720050224:
1058	The acpi_perf and acpi_throttle drivers are now part of the
1059	acpi(4) main module.  They are no longer built separately.
1060
106120050223:
1062	The layout of struct image_params has changed. You have to
1063	recompile all compatibility modules (linux, svr4, etc) for use
1064	with the new kernel.
1065
106620050223:
1067	The p4tcc driver has been merged into cpufreq(4).  This makes
1068	"options CPU_ENABLE_TCC" obsolete.  Please load cpufreq.ko or
1069	compile in "device cpufreq" to restore this functionality.
1070
107120050220:
1072	The responsibility of recomputing the file system summary of
1073	a SoftUpdates-enabled dirty volume has been transferred to the
1074	background fsck.  A rebuild of fsck(8) utility is recommended
1075	if you have updated the kernel.
1076
1077	To get the old behavior (recompute file system summary at mount
1078	time), you can set vfs.ffs.compute_summary_at_mount=1 before
1079	mounting the new volume.
1080
108120050206:
1082	The cpufreq import is complete.  As part of this, the sysctls for
1083	acpi(4) throttling have been removed.  The power_profile script
1084	has been updated, so you can use performance/economy_cpu_freq in
1085	rc.conf(5) to set AC on/offline cpu frequencies.
1086
108720050206:
1088	NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko)
1089	requires recompiling libnetgraph and userland netgraph utilities.
1090
109120050114:
1092	Support for abbreviated forms of a number of ipfw options is
1093	now deprecated.  Warnings are printed to stderr indicating the
1094	correct full form when a match occurs.  Some abbreviations may
1095	be supported at a later date based on user feedback.  To be
1096	considered for support, abbreviations must be in use prior to
1097	this commit and unlikely to be confused with current key words.
1098
109920041221:
1100	By a popular demand, a lot of NOFOO options were renamed
1101	to NO_FOO (see bsd.compat.mk for a full list).  The old
1102	spellings are still supported, but will cause annoying
1103	warnings on stderr.  Make sure you upgrade properly (see
1104	the COMMON ITEMS: section later in this file).
1105
110620041219:
1107	Auto-loading of ancillary wlan modules such as wlan_wep has
1108	been temporarily disabled; you need to statically configure
1109	the modules you need into your kernel or explicitly load them
1110	prior to use.  Specifically, if you intend to use WEP encryption
1111	with an 802.11 device load/configure wlan_wep; if you want to
1112	use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp,
1113	and wlan_xauth as required.
1114
111520041213:
1116	The behaviour of ppp(8) has changed slightly.  If lqr is enabled
1117	(``enable lqr''), older versions would revert to LCP ECHO mode on
1118	negotiation failure.  Now, ``enable echo'' is required for this
1119	behaviour.  The ppp version number has been bumped to 3.4.2 to
1120	reflect the change.
1121
112220041201:
1123	The wlan support has been updated to split the crypto support
1124	into separate modules.  For static WEP you must configure the
1125	wlan_wep module in your system or build and install the module
1126	in place where it can be loaded (the kernel will auto-load
1127	the module when a wep key is configured).
1128
112920041201:
1130	The ath driver has been updated to split the tx rate control
1131	algorithm into a separate module.  You need to include either
1132	ath_rate_onoe or ath_rate_amrr when configuring the kernel.
1133
113420041116:
1135	Support for systems with an 80386 CPU has been removed.  Please
1136	use FreeBSD 5.x or earlier on systems with an 80386.
1137
113820041110:
1139	We have had a hack which would mount the root filesystem
1140	R/W if the device were named 'md*'.  As part of the vnode
1141	work I'm doing I have had to remove this hack.  People
1142	building systems which use preloaded MD root filesystems
1143	may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in
1144	their /etc/rc scripts.
1145
114620041104:
1147	FreeBSD 5.3 shipped here.
1148
114920041102:
1150	The size of struct tcpcb has changed again due to the removal
1151	of RFC1644 T/TCP.  You have to recompile userland programs that
1152	read kmem for tcp sockets directly (netstat, sockstat, etc.)
1153
115420041022:
1155	The size of struct tcpcb has changed.  You have to recompile
1156	userland programs that read kmem for tcp sockets directly
1157	(netstat, sockstat, etc.)
1158
115920041016:
1160	RELENG_5 branched here.  For older entries, please see updating
1161	in the RELENG_5 branch.
1162
1163COMMON ITEMS:
1164
1165	General Notes
1166	-------------
1167	Avoid using make -j when upgrading.  From time to time in the
1168	past there have been problems using -j with buildworld and/or
1169	installworld.  This is especially true when upgrading between
1170	"distant" versions (eg one that cross a major release boundary
1171	or several minor releases, or when several months have passed
1172	on the -current branch).
1173
1174	Sometimes, obscure build problems are the result of environment
1175	poisoning.  This can happen because the make utility reads its
1176	environment when searching for values for global variables.
1177	To run your build attempts in an "environmental clean room",
1178	prefix all make commands with 'env -i '.  See the env(1) manual
1179	page for more details.
1180
1181	When upgrading from one major version to another it is generally
1182	best to upgrade to the latest code in the currently installed branch
1183	first, then do an upgrade to the new branch. This is the best-tested
1184	upgrade path, and has the highest probability of being successful.
1185	Please try this approach before reporting problems with a major
1186	version upgrade.
1187
1188	To build a kernel
1189	-----------------
1190	If you are updating from a prior version of FreeBSD (even one just
1191	a few days old), you should follow this procedure.  It is the most
1192	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
1193
1194	make kernel-toolchain
1195	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
1196	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
1197
1198	To test a kernel once
1199	---------------------
1200	If you just want to boot a kernel once (because you are not sure
1201	if it works, or if you want to boot a known bad kernel to provide
1202	debugging information) run
1203	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
1204	nextboot -k testkernel
1205
1206	To just build a kernel when you know that it won't mess you up
1207	--------------------------------------------------------------
1208	This assumes you are already running a 5.X system.  Replace
1209	${arch} with the architecture of your machine (e.g. "i386",
1210	"alpha", "amd64", "ia64", "pc98", "sparc64", etc).
1211
1212	cd src/sys/${arch}/conf
1213	config KERNEL_NAME_HERE
1214	cd ../compile/KERNEL_NAME_HERE
1215	make depend
1216	make
1217	make install
1218
1219	If this fails, go to the "To build a kernel" section.
1220
1221	To rebuild everything and install it on the current system.
1222	-----------------------------------------------------------
1223	# Note: sometimes if you are running current you gotta do more than
1224	# is listed here if you are upgrading from a really old current.
1225
1226	<make sure you have good level 0 dumps>
1227	make buildworld
1228	make kernel KERNCONF=YOUR_KERNEL_HERE
1229							[1]
1230	<reboot in single user>				[3]
1231	mergemaster -p					[5]
1232	make installworld
1233	make delete-old
1234	mergemaster					[4]
1235	<reboot>
1236
1237
1238	To cross-install current onto a separate partition
1239	--------------------------------------------------
1240	# In this approach we use a separate partition to hold
1241	# current's root, 'usr', and 'var' directories.   A partition
1242	# holding "/", "/usr" and "/var" should be about 2GB in
1243	# size.
1244
1245	<make sure you have good level 0 dumps>
1246	<boot into -stable>
1247	make buildworld
1248	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1249	<maybe newfs current's root partition>
1250	<mount current's root partition on directory ${CURRENT_ROOT}>
1251	make installworld DESTDIR=${CURRENT_ROOT}
1252	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1253	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1254	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
1255	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1256	<reboot into current>
1257	<do a "native" rebuild/install as described in the previous section>
1258	<maybe install compatibility libraries from ports/misc/compat*>
1259	<reboot>
1260
1261
1262	To upgrade in-place from 5.x-stable to current
1263	----------------------------------------------
1264	<make sure you have good level 0 dumps>
1265	make buildworld					[9]
1266	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
1267							[1]
1268	<reboot in single user>				[3]
1269	mergemaster -p					[5]
1270	make installworld
1271	make delete-old
1272	mergemaster -i					[4]
1273	<reboot>
1274
1275	Make sure that you've read the UPDATING file to understand the
1276	tweaks to various things you need.  At this point in the life
1277	cycle of current, things change often and you are on your own
1278	to cope.  The defaults can also change, so please read ALL of
1279	the UPDATING entries.
1280
1281	Also, if you are tracking -current, you must be subscribed to
1282	freebsd-current@freebsd.org.  Make sure that before you update
1283	your sources that you have read and understood all the recent
1284	messages there.  If in doubt, please track -stable which has
1285	much fewer pitfalls.
1286
1287	[1] If you have third party modules, such as vmware, you
1288	should disable them at this point so they don't crash your
1289	system on reboot.
1290
1291	[3] From the bootblocks, boot -s, and then do
1292		fsck -p
1293		mount -u /
1294		mount -a
1295		cd src
1296		adjkerntz -i		# if CMOS is wall time
1297	Also, when doing a major release upgrade, it is required that
1298	you boot into single user mode to do the installworld.
1299
1300	[4] Note: This step is non-optional.  Failure to do this step
1301	can result in a significant reduction in the functionality of the
1302	system.  Attempting to do it by hand is not recommended and those
1303	that pursue this avenue should read this file carefully, as well
1304	as the archives of freebsd-current and freebsd-hackers mailing lists
1305	for potential gotchas.
1306
1307	[5] Usually this step is a noop.  However, from time to time
1308	you may need to do this if you get unknown user in the following
1309	step.  It never hurts to do it all the time.  You may need to
1310	install a new mergemaster (cd src/usr.sbin/mergemaster && make
1311	install) after the buildworld before this step if you last updated
1312	from current before 20020224 or from -stable before 20020408.
1313
1314	[8] In order to have a kernel that can run the 4.x binaries
1315	needed to do an installworld, you must include the COMPAT_FREEBSD4
1316	option in your kernel.  Failure to do so may leave you with a system
1317	that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5
1318	is required to run the 5.x binaries on more recent kernels.
1319
1320	Make sure that you merge any new devices from GENERIC since the
1321	last time you updated your kernel config file.
1322
1323	[9] When checking out sources, you must include the -P flag to have
1324	cvs prune empty directories.
1325
1326	If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1327	"?=" instead of the "=" assignment operator, so that buildworld can
1328	override the CPUTYPE if it needs to.
1329
1330	MAKEOBJDIRPREFIX must be defined in an environment variable, and
1331	not on the command line, or in /etc/make.conf.  buildworld will
1332	warn if it is improperly defined.
1333FORMAT:
1334
1335This file contains a list, in reverse chronological order, of major
1336breakages in tracking -current.  Not all things will be listed here,
1337and it only starts on October 16, 2004.  Updating files can found in
1338previous releases if your system is older than this.
1339
1340Copyright information:
1341
1342Copyright 1998-2005 M. Warner Losh.  All Rights Reserved.
1343
1344Redistribution, publication, translation and use, with or without
1345modification, in full or in part, in any form or format of this
1346document are permitted without further permission from the author.
1347
1348THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1349IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1350WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1351DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1352INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1353(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1354SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1355HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1356STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1357IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1358POSSIBILITY OF SUCH DAMAGE.
1359
1360If you find this document useful, and you want to, you may buy the
1361author a beer.
1362
1363Contact Warner Losh if you have any questions about your use of
1364this document.
1365
1366$FreeBSD: head/UPDATING 190182 2009-03-20 21:51:27Z ivoras $
1367