UPDATING revision 170510
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 7.x IS SLOW:
12	FreeBSD 7.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.
23
2420070610:
25	The pam_nologin(8) module ceases to provide an authentication
26	function and starts providing an account management function.
27	Consequent changes to /etc/pam.d should be brought in using
28	mergemaster(8).  Third-party files in /usr/local/etc/pam.d may
29	need manual editing as follows.  Locate this line (or similar):
30
31		auth	required	pam_nologin.so	no_warn
32
33	and change it according to this example:
34
35		account	required	pam_nologin.so	no_warn
36
37	That is, the first word needs to be changed from "auth" to
38	"account".  The new line can be moved to the account section
39	within the file for clarity.  Not updating pam.conf(5) files
40	will result in nologin(5) ignored by the respective services.
41
4220070529:
43	The ether_ioctl() function has been synchronized with ioctl(2)
44	and ifnet.if_ioctl.  Due to that, the size of one of its arguments
45	has changed on 64-bit architectures.  All kernel modules using
46	ether_ioctl() need to be rebuilt on such architectures.
47
4820070516:
49	Improved INCLUDE_CONFIG_FILE support has been introduced to the
50	config(8) utility. In order to take advantage of this new
51	functionality, you are expected to recompile and install
52	src/usr.sbin/config. If you don't rebuild config(8), and your
53	kernel configuration depends on INCLUDE_CONFIG_FILE, the kernel
54	build will be broken because of a missing "kernconfstring"
55	symbol.
56
5720070513:
58	Symbol versioning is enabled by default.  To disable it, use
59	option WITHOUT_SYMVER.  It is not advisable to attempt to
60	disable symbol versioning once it is enabled; your installworld
61	will break because a symbol version-less libc will get installed
62	before the install tools.  As a result, the old install tools,
63	which previously had symbol dependencies to FBSD_1.0, will fail
64	because the freshly installed libc will not have them.
65
66	The default threading library has been changed to libthr.  If
67	you wish to have libpthread as your default, use option
68	DEFAULT_THREAD_LIB=libpthread for the buildworld.
69
7020070423:
71        The ABI breakage in sendmail(8)'s libmilter has been repaired
72        so it is no longer necessary to recompile mail filters (aka,
73        milters).  If you recompiled mail filters after the 20070408
74        note, it is not necessary to recompile them again.
75
7620070417:
77	The new trunk(4) driver has been renamed to lagg(4) as it better
78	reflects its purpose. ifconfig will need to be recompiled.
79
8020070408:
81	sendmail(8) has been updated to version 8.14.1.  Mail filters
82	(aka, milters) compiled against the libmilter included in the
83	base operating system should be recompiled.
84
8520070302:
86	Firmwares for ipw(4) and iwi(4) are now included in the base tree.
87	In order to use them one must agree to the respective LICENSE in
88	share/doc/legal and define legal.intel_<name>.license_ack=1 via
89	loader.conf(5) or kenv(1).  Make sure to deinstall the now
90	deprecated modules from the respective firmware ports.
91
9220070228:
93	The name resolution/mapping functions addr2ascii(3) and ascii2addr(3)
94	were removed from FreeBSD's libc. These originally came from INRIA
95	IPv6. Nothing in FreeBSD ever used them. They may be regarded as
96	deprecated in previous releases.
97	The AF_LINK support for getnameinfo(3) was merged from NetBSD to
98	replace it as a more portable (and re-entrant) API.
99
10020070224:
101	To support interrupt filtering a modification to the newbus API 
102	has occurred, ABI was broken and __FreeBSD_version was bumped
103	to 700031. Please make sure that your kernel and modules are in 
104	sync. For more info:
105	http://docs.freebsd.org/cgi/mid.cgi?20070221233124.GA13941
106
10720070224:
108	The IPv6 multicast forwarding code may now be loaded into GENERIC
109	kernels by loading the ip_mroute.ko module. This is built into the
110	module unless WITHOUT_INET6 or WITHOUT_INET6_SUPPORT options are
111	set; see src.conf(5) for more information.
112
11320070214:
114	The output of netstat -r has changed. Without -n, we now only
115	print a "network name" without the prefix length if the network
116	address and mask exactly match a Class A/B/C network, and an entry
117	exists in the nsswitch "networks" map.
118	With -n, we print the full unabbreviated CIDR network prefix in
119	the form "a.b.c.d/p". 0.0.0.0/0 is always printed as "default".
120	This change is in preparation for changes such as equal-cost
121	multipath, and to more generally assist operational deployment
122	of FreeBSD as a modern IPv4 router.
123
12420070210:
125	PIM has been turned on by default in the IPv4 multicast
126	routing code. The kernel option 'PIM' has now been removed.
127	PIM is now built by default if option 'MROUTING' is specified.
128	It may now be loaded into GENERIC kernels by loading the
129	ip_mroute.ko module.
130
13120070207:
132	Support for IPIP tunnels (VIFF_TUNNEL) in IPv4 multicast routing
133	has been removed. Its functionality may be achieved by explicitly
134	configuring gif(4) interfaces and using the 'phyint' keyword in
135	mrouted.conf.
136	XORP does not support source-routed IPv4 multicast tunnels nor the
137	integrated IPIP tunneling, therefore it is not affected by this
138	change. The __FreeBSD_version macro has been bumped to 700030.
139
14020061221:
141	Support for PCI Message Signalled Interrupts has been
142	re-enabled in the bge driver, only for those chips which are
143	believed to support it properly.  If there are any problems,
144	MSI can be disabled completely by setting the
145	'hw.pci.enable_msi' and 'hw.pci.enable_msix' tunables to 0
146	in the loader.
147
14820061214:
149	Support for PCI Message Signalled Interrupts has been
150	disabled again in the bge driver.  Many revisions of the
151	hardware fail to support it properly.  Support can be
152	re-enabled by removing the #define of BGE_DISABLE_MSI in
153	"src/sys/dev/bge/if_bge.c".
154
15520061214:
156	Support for PCI Message Signalled Interrupts has been added
157	to the bge driver.  If there are any problems, MSI can be
158	disabled completely by setting the 'hw.pci.enable_msi' and
159	'hw.pci.enable_msix' tunables to 0 in the loader.
160
16120061205:
162	The removal of several facets of the experimental Threading 
163	system from the kernel means that the proc and thread structures 
164	have changed quite a bit. I suggest all kernel modules that might
165	reference these structures be recompiled.. Especially the
166	linux module.
167
16820061126:
169	Sound infrastructure has been updated with various fixes and
170	improvements. Most of the changes are pretty much transparent,
171	with exceptions of followings:
172	1) All sound driver specific sysctls (hw.snd.pcm%d.*) have been
173	   moved to their own dev sysctl nodes, for example:
174		hw.snd.pcm0.vchans -> dev.pcm.0.vchans
175	2) /dev/dspr%d.%d has been deprecated. Each channel now has its
176	   own chardev in the form of "dsp%d.<function>%d", where <function>
177	   is p = playback, r = record and v = virtual, respectively. Users
178	   are encouraged to use these devs instead of (old) "/dev/dsp%d.%d".
179	   This does not affect those who are using "/dev/dsp".
180
18120061122:
182	The following binaries have been disconnected from the build:
183	mount_devfs, mount_ext2fs, mount_fdescfs, mount_procfs, mount_linprocfs,
184	and mount_std.  The functionality of these programs has been
185	moved into the mount program.  For example, to mount a devfs
186	filesystem, instead of using mount_devfs, use: "mount -t devfs".
187	This does not affect entries in /etc/fstab, since entries in
188	/etc/fstab are always processed with "mount -t fstype".
189
19020061113:
191	Support for PCI Message Signalled Interrupts on i386 and amd64
192	has been added to the kernel and various drivers will soon be
193	updated to use MSI when it is available.  If there are any problems,
194	MSI can be disabled completely by setting the 'hw.pci.enable_msi'
195	and 'hw.pci.enable_msix' tunables to 0 in the loader.
196
19720061110:
198	The MUTEX_PROFILING option has been renamed to LOCK_PROFILING.
199	The lockmgr object layout has been changed as a result of having
200	a lock_object embedded in it. As a consequence all file system
201	kernel modules must be re-compiled. The mutex profiling man page 
202	has not yet been updated to reflect this change.
203
20420061026:
205	KSE in the kernel has now been made optional and turned on by
206	default. Use 'nooption KSE' in your kernel config to turn it
207	off. All kernel modules *must* be recompiled after this change.
208	There-after, modules from a KSE kernel should be compatible with
209	modules from a NOKSE kernel due to the temporary padding fields
210	added to 'struct proc'.
211
21220060929:
213	mrouted and its utilities have been removed from the base system.
214
21520060927:
216	Some ioctl(2) command codes have changed.  Full backward ABI
217	compatibility is provided if the "options COMPAT_FREEBSD6" is
218	present in the kernel configuration file.  Make sure to add
219	this option to your kernel config file, or recompile X.Org
220	and the rest of ports; otherwise they may refuse to work.
221
22220060924:
223	tcpslice has been removed from the base system.
224
22520060913:
226	The sizes of struct tcpcb (and struct xtcpcb) have changed due to
227	the rewrite of TCP syncookies.  Tools like netstat, sockstat, and
228	systat needs to be rebuilt.
229
23020060903:
231	libpcap updated to v0.9.4 and tcpdump to v3.9.4
232
23320060816:
234	The IPFIREWALL_FORWARD_EXTENDED option is gone and the behaviour
235	for IPFIREWALL_FORWARD is now as it was before when it was first
236	committed and for years after. The behaviour is now ON.
237
23820060725:
239	enigma(1)/crypt(1) utility has been changed on 64 bit architectures.
240	Now it can decrypt files created from different architectures.
241	Unfortunately, it is no longer able to decrypt a cipher text
242	generated with an older version on 64 bit architectures.
243	If you have such a file, you need old utility to decrypt it.
244
24520060709:
246 	The interface version of the i4b kernel part has changed. So
247 	after updating the kernel sources and compiling a new kernel,
248 	the i4b user space tools in "/usr/src/usr.sbin/i4b" must also
249 	be rebuilt, and vice versa.
250 
25120060627:
252	The XBOX kernel now defaults to the nfe(4) driver instead of
253	the nve(4) driver. Please update your configuration
254	accordingly.
255
25620060514:
257	The i386-only lnc(4) driver for the AMD Am7900 LANCE and Am79C9xx
258	PCnet family of NICs has been removed. The new le(4) driver serves
259	as an equivalent but cross-platform replacement with the pcn(4)
260	driver still providing performance-optimized support for the subset
261	of AMD Am79C971 PCnet-FAST and greater chips as before.
262
26320060511:
264	The machdep.* sysctls and the adjkerntz utility have been
265	modified a bit.  The new adjkerntz utility uses the new
266	sysctl names and sysctlbyname() calls, so it may be impossible
267	to run an old /sbin/adjkerntz utility in single-user mode
268	with a new kernel.  Replace the `adjkerntz -i' step before
269	`make installworld' with:
270
271	    /usr/obj/usr/src/sbin/adjkerntz/adjkerntz -i
272
273	and proceed as usual with the rest of the installworld-stage
274	steps.  Otherwise, you risk installing binaries with their
275	timestamp set several hours in the future, especially if
276	you are running with local time set to GMT+X hours.
277
27820060412:
279	The ip6fw utility has been removed.  The behavior provided by
280	ip6fw has been in ipfw2 for a good while and the rc.d scripts
281	have been updated to deal with it.  There are some rules that
282	might not migrate cleanly.  Use rc.firewall6 as a template to
283	rewrite rules.
284
28520060428:
286	The puc(4) driver has been overhauled. The ebus(4) and sbus(4)
287	attachments have been removed. Make sure to configure scc(4)
288	on sparc64. Note also that by default puc(4) will use uart(4)
289	and not sio(4) for serial ports because interrupt handling has
290	been optimized for multi-port serial cards and only uart(4)
291	implements the interface to support it.
292
29320060330:
294	The scc(4) driver replaces puc(4) for Serial Communications
295	Controllers (SCCs) like the Siemens SAB82532 and the Zilog
296	Z8530. On sparc64, it is advised to add scc(4) to the kernel
297	configuration to make sure that the serial ports remain
298	functional.
299
30020060317:
301	Most world/kernel related NO_* build options changed names.
302	New knobs have common prefixes WITHOUT_*/WITH_* (modelled
303	after FreeBSD ports) and should be set in /etc/src.conf
304	(the src.conf(5) manpage is provided).  Full backwards
305	compatibility is maintained for the time being though it's
306	highly recommended to start moving old options out of the
307	system-wide /etc/make.conf file into the new /etc/src.conf
308	while also properly renaming them.  More conversions will
309	likely follow.  Posting to current@:
310
311	http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
312
31320060305:
314	The NETSMBCRYPTO kernel option has been retired because its
315	functionality is always included in NETSMB and smbfs.ko now.
316
31720060303:
318	The TDFX_LINUX kernel option was retired and replaced by the
319	tdfx_linux device.  The latter can be loaded as the 3dfx_linux.ko
320	kernel module.  Loading it alone should suffice to get 3dfx support
321	for Linux apps because it will pull in 3dfx.ko and linux.ko through
322	its dependencies.
323
32420060204:
325	The 'audit' group was added to support the new auditing functionality
326	in the base system.  Be sure to follow the directions for updating,
327	including the requirement to run mergemaster -p.
328
32920060201:
330	The kernel ABI to file system modules was changed on i386.
331	Please make sure that your kernel and modules are in sync.
332	
33320060118:
334	This actually occured some time ago, but installing the kernel
335	now also installs a bunch of symbol files for the kernel modules.
336	This increases the size of /boot/kernel to about 67Mbytes. You
337	will need twice this if you will eventually back this up to kernel.old
338	on your next install.
339	If you have a shortage of room in your root partition, you should add
340	-DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
341	to your /etc/make.conf.
342
34320060113:
344	libc's malloc implementation has been replaced.  This change has the
345	potential to uncover application bugs that previously went unnoticed.
346	See the malloc(3) manual page for more details.
347
34820060112:
349	The generic netgraph(4) cookie has been changed. If you upgrade
350	kernel passing this point, you also need to upgrade userland
351	and netgraph(4) utilities like ports/net/mpd or ports/net/mpd4.
352
35320060106:
354	si(4)'s device files now contain the unit number.
355	Uses of {cua,tty}A[0-9a-f] should be replaced by {cua,tty}A0[0-9a-f].
356
35720060106:
358	The kernel ABI was mostly destroyed due to a change in the size
359	of struct lock_object which is nested in other structures such
360	as mutexes which are nested in all sorts of other structures.
361	Make sure your kernel and modules are in sync.
362
36320051231:
364	The page coloring algorithm in the VM subsystem was converted
365	from tuning with kernel options to autotuning. Please remove
366	any PQ_* option except PQ_NOOPT from your kernel config.
367
36820051211:
369	The net80211-related tools in the tools/tools/ath directory
370	have been moved to tools/tools/net80211 and renamed with a
371	"wlan" prefix.  Scripts that use them should be adjusted
372	accordingly.
373
37420051202:
375	Scripts in the local_startup directories (as defined in
376	/etc/defaults/rc.conf) that have the new rc.d semantics will
377	now be run as part of the base system rcorder. If there are
378	errors or problems with one of these local scripts, it could
379	cause boot problems. If you encounter such problems, boot in
380	single user mode, remove that script from the */rc.d directory.
381	Please report the problem to the port's maintainer, and the
382	freebsd-ports@freebsd.org mailing list.
383
38420051129:
385	The nodev mount option was deprecated in RELENG_6 (where it
386	was a no-op), and is now unsupported.  If you have nodev or dev listed
387	in /etc/fstab, remove it, otherwise it will result in a mount error.
388
38920051129:
390	ABI between ipfw(4) and ipfw(8) has been changed. You need
391	to rebuild ipfw(8) when rebuilding kernel.
392
39320051108:
394	rp(4)'s device files now contain the unit number.
395	Uses of {cua,tty}R[0-9a-f] should be replaced by {cua,tty}R0[0-9a-f].
396
39720051029:
398	/etc/rc.d/ppp-user has been renamed to /etc/rc.d/ppp.
399	Its /etc/rc.conf.d configuration file has been `ppp' from
400	the beginning, and hence there is no need to touch it.
401
40220051014:
403	Now most modules get their build-time options from the kernel
404	configuration file.  A few modules still have fixed options
405	due to their non-conformant implementation, but they will be
406	corrected eventually.  You may need to review the options of
407	the modules in use, explicitly specify the non-default options
408	in the kernel configuration file, and rebuild the kernel and
409	modules afterwards.
410
41120051001:
412	kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
413	to turn polling(4) on your interfaces.
414
41520050927:
416	The old bridge(4) implementation was retired.  The new
417	if_bridge(4) serves as a full functional replacement.
418
41920050722:
420	The ai_addrlen of a struct addrinfo was changed to a socklen_t
421	to conform to POSIX-2001.  This change broke an ABI
422	compatibility on 64 bit architecture.  You have to recompile
423	userland programs that use getaddrinfo(3) on 64 bit
424	architecture.
425
42620050711:
427	RELENG_6 branched here.
428
42920050629:
430	The pccard_ifconfig rc.conf variable has been removed and a new
431	variable, ifconfig_DEFAULT has been introduced.  Unlike
432	pccard_ifconfig, ifconfig_DEFAULT applies to ALL interfaces that
433	do not have ifconfig_ifn entries rather than just those in
434	removable_interfaces.
435
43620050616:
437	Some previous versions of PAM have permitted the use of
438	non-absolute paths in /etc/pam.conf or /etc/pam.d/* when referring
439	to third party PAM modules in /usr/local/lib.  A change has been
440	made to require the use of absolute paths in order to avoid
441	ambiguity and dependence on library path configuration, which may
442	affect existing configurations.
443
44420050610:
445	Major changes to network interface API.  All drivers must be
446	recompiled.  Drivers not in the base system will need to be
447	updated to the new APIs.
448
44920050609:
450	Changes were made to kinfo_proc in sys/user.h.  Please recompile
451	userland, or commands like `fstat', `pkill', `ps', `top' and `w'
452	will not behave correctly.
453
454	The API and ABI for hwpmc(4) have changed with the addition
455	of sampling support.  Please recompile lib/libpmc(3) and
456	usr.sbin/{pmcstat,pmccontrol}.
457
45820050606:
459	The OpenBSD dhclient was imported in place of the ISC dhclient
460	and the network interface configuration scripts were updated
461	accordingly.  If you use DHCP to configure your interfaces, you
462	must now run devd.  Also, DNS updating was lost so you will need
463	to find a workaround if you use this feature.
464
465	The '_dhcp' user was added to support the OpenBSD dhclient.  Be
466	sure to run mergemaster -p (like you are supposed to do every time
467	anyway).
468
46920050605:
470	if_bridge was added to the tree. This has changed struct ifnet.
471	Please recompile userland and all network related modules.
472
47320050603:
474	The n_net of a struct netent was changed to an uint32_t, and
475	1st argument of getnetbyaddr() was changed to an uint32_t, to
476	conform to POSIX-2001.  These changes broke an ABI
477	compatibility on 64 bit architecture.  With these changes,
478	shlib major of libpcap was bumped.  You have to recompile
479	userland programs that use getnetbyaddr(3), getnetbyname(3),
480	getnetent(3) and/or libpcap on 64 bit architecture.
481
48220050528:
483	Kernel parsing of extra options on '#!' first lines of shell
484	scripts has changed.  Lines with multiple options likely will
485	fail after this date.  For full details, please see
486		http://people.freebsd.org/~gad/Updating-20050528.txt
487
48820050503:
489	The packet filter (pf) code has been updated to OpenBSD 3.7
490	Please note the changed anchor syntax and the fact that
491	authpf(8) now needs a mounted fdescfs(5) to function.
492
49320050415:
494	The NO_MIXED_MODE kernel option has been removed from the i386
495	amd64 platforms as its use has been superceded by the new local
496	APIC timer code.  Any kernel config files containing this option
497	should be updated.
498
49920050227:
500	The on-disk format of LC_CTYPE files was changed to be machine
501	independent.  Please make sure NOT to use NO_CLEAN buildworld
502	when crossing this point. Crossing this point also requires
503	recompile or reinstall of all locale depended packages.
504
50520050225:
506	The ifi_epoch member of struct if_data has been changed to
507	contain the uptime at which the interface was created or the
508	statistics zeroed rather then the wall clock time because
509	wallclock time may go backwards.  This should have no impact
510	unless an snmp implementation is using this value (I know of
511	none at this point.)
512
51320050224:
514	The acpi_perf and acpi_throttle drivers are now part of the
515	acpi(4) main module.  They are no longer built separately.
516
51720050223:
518	The layout of struct image_params has changed. You have to
519	recompile all compatibility modules (linux, svr4, etc) for use
520	with the new kernel.
521
52220050223:
523	The p4tcc driver has been merged into cpufreq(4).  This makes
524	"options CPU_ENABLE_TCC" obsolete.  Please load cpufreq.ko or
525	compile in "device cpufreq" to restore this functionality.
526
52720050220:
528	The responsibility of recomputing the file system summary of
529	a SoftUpdates-enabled dirty volume has been transferred to the
530	background fsck.  A rebuild of fsck(8) utility is recommended
531	if you have updated the kernel.
532
533	To get the old behavior (recompute file system summary at mount
534	time), you can set vfs.ffs.compute_summary_at_mount=1 before
535	mounting the new volume.
536
53720050206:
538	The cpufreq import is complete.  As part of this, the sysctls for
539	acpi(4) throttling have been removed.  The power_profile script
540	has been updated, so you can use performance/economy_cpu_freq in
541	rc.conf(5) to set AC on/offline cpu frequencies.
542
54320050206:
544	NG_VERSION has been increased. Recompiling kernel (or ng_socket.ko)
545	requires recompiling libnetgraph and userland netgraph utilities.
546
54720050114:
548	Support for abbreviated forms of a number of ipfw options is
549	now deprecated.  Warnings are printed to stderr indicating the
550	correct full form when a match occurs.  Some abbreviations may
551	be supported at a later date based on user feedback.  To be
552	considered for support, abbreviations must be in use prior to
553	this commit and unlikely to be confused with current key words.
554
55520041221:
556	By a popular demand, a lot of NOFOO options were renamed
557	to NO_FOO (see bsd.compat.mk for a full list).  The old
558	spellings are still supported, but will cause annoying
559	warnings on stderr.  Make sure you upgrade properly (see
560	the COMMON ITEMS: section later in this file).
561
56220041219:
563	Auto-loading of ancillary wlan modules such as wlan_wep has
564	been temporarily disabled; you need to statically configure
565	the modules you need into your kernel or explicitly load them
566	prior to use.  Specifically, if you intend to use WEP encryption
567	with an 802.11 device load/configure wlan_wep; if you want to
568	use WPA with the ath driver load/configure wlan_tkip, wlan_ccmp,
569	and wlan_xauth as required.
570
57120041213:
572	The behaviour of ppp(8) has changed slightly.  If lqr is enabled
573	(``enable lqr''), older versions would revert to LCP ECHO mode on
574	negotiation failure.  Now, ``enable echo'' is required for this
575	behaviour.  The ppp version number has been bumped to 3.4.2 to
576	reflect the change.
577
57820041201:
579	The wlan support has been updated to split the crypto support
580	into separate modules.  For static WEP you must configure the
581	wlan_wep module in your system or build and install the module
582	in place where it can be loaded (the kernel will auto-load
583	the module when a wep key is configured).
584
58520041201:
586	The ath driver has been updated to split the tx rate control
587	algorithm into a separate module.  You need to include either
588	ath_rate_onoe or ath_rate_amrr when configuring the kernel.
589
59020041116:
591	Support for systems with an 80386 CPU has been removed.  Please
592	use FreeBSD 5.x or earlier on systems with an 80386.
593
59420041110:
595	We have had a hack which would mount the root filesystem
596	R/W if the device were named 'md*'.  As part of the vnode
597	work I'm doing I have had to remove this hack.  People
598	building systems which use preloaded MD root filesystems
599	may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in
600	their /etc/rc scripts.
601
60220041104:
603	FreeBSD 5.3 shipped here.
604
60520041102:
606	The size of struct tcpcb has changed again due to the removal
607	of RFC1644 T/TCP.  You have to recompile userland programs that
608	read kmem for tcp sockets directly (netstat, sockstat, etc.)
609
61020041022:
611	The size of struct tcpcb has changed.  You have to recompile
612	userland programs that read kmem for tcp sockets directly
613	(netstat, sockstat, etc.)
614
61520041016:
616	RELENG_5 branched here.  For older entries, please see updating
617	in the RELENG_5 branch.
618
619COMMON ITEMS:
620
621	General Notes
622	-------------
623	Avoid using make -j when upgrading.  From time to time in the
624	past there have been problems using -j with buildworld and/or
625	installworld.  This is especially true when upgrading between
626	"distant" versions (eg one that cross a major release boundary
627	or several minor releases, or when several months have passed
628	on the -current branch).
629
630	Sometimes, obscure build problems are the result of environment
631	poisoning.  This can happen because the make utility reads its
632	environment when searching for values for global variables.
633	To run your build attempts in an "environmental clean room",
634	prefix all make commands with 'env -i '.  See the env(1) manual
635	page for more details.
636
637	When upgrading from one major version to another it is generally
638	best to upgrade to the latest code in the currently installed branch
639	first, then do an upgrade to the new branch. This is the best-tested
640	upgrade path, and has the highest probability of being successful.
641	Please try this approach before reporting problems with a major
642	version upgrade.
643
644	To build a kernel
645	-----------------
646	If you are updating from a prior version of FreeBSD (even one just
647	a few days old), you should follow this procedure.  It is the most
648	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
649
650	make kernel-toolchain
651	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
652	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
653
654	To test a kernel once
655	---------------------
656	If you just want to boot a kernel once (because you are not sure
657	if it works, or if you want to boot a known bad kernel to provide
658	debugging information) run
659	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
660	nextboot -k testkernel
661
662	To just build a kernel when you know that it won't mess you up
663	--------------------------------------------------------------
664	This assumes you are already running a 5.X system.  Replace
665	${arch} with the architecture of your machine (e.g. "i386",
666	"alpha", "amd64", "ia64", "pc98", "sparc64", etc).
667
668	cd src/sys/${arch}/conf
669	config KERNEL_NAME_HERE
670	cd ../compile/KERNEL_NAME_HERE
671	make depend
672	make
673	make install
674
675	If this fails, go to the "To build a kernel" section.
676
677	To rebuild everything and install it on the current system.
678	-----------------------------------------------------------
679	# Note: sometimes if you are running current you gotta do more than
680	# is listed here if you are upgrading from a really old current.
681
682	<make sure you have good level 0 dumps>
683	make buildworld
684	make kernel KERNCONF=YOUR_KERNEL_HERE
685							[1]
686	<reboot in single user>				[3]
687	mergemaster -p					[5]
688	make installworld
689	make delete-old
690	mergemaster					[4]
691	<reboot>
692
693
694	To cross-install current onto a separate partition
695	--------------------------------------------------
696	# In this approach we use a separate partition to hold
697	# current's root, 'usr', and 'var' directories.   A partition
698	# holding "/", "/usr" and "/var" should be about 2GB in
699	# size.
700
701	<make sure you have good level 0 dumps>
702	<boot into -stable>
703	make buildworld
704	make buildkernel KERNCONF=YOUR_KERNEL_HERE
705	<maybe newfs current's root partition>
706	<mount current's root partition on directory ${CURRENT_ROOT}>
707	make installworld DESTDIR=${CURRENT_ROOT}
708	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
709	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
710	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
711	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
712	<reboot into current>
713	<do a "native" rebuild/install as described in the previous section>
714	<maybe install compatibility libraries from src/lib/compat>
715 	<reboot>
716
717
718	To upgrade in-place from 5.x-stable to current
719	----------------------------------------------
720	<make sure you have good level 0 dumps>
721	make buildworld					[9]
722	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
723							[1]
724	<reboot in single user>				[3]
725	mergemaster -p					[5]
726	make installworld
727	make delete-old
728	mergemaster -i					[4]
729	<reboot>
730
731	Make sure that you've read the UPDATING file to understand the
732	tweaks to various things you need.  At this point in the life
733	cycle of current, things change often and you are on your own
734	to cope.  The defaults can also change, so please read ALL of
735	the UPDATING entries.
736
737	Also, if you are tracking -current, you must be subscribed to
738	freebsd-current@freebsd.org.  Make sure that before you update
739	your sources that you have read and understood all the recent
740	messages there.  If in doubt, please track -stable which has
741	much fewer pitfalls.
742
743	[1] If you have third party modules, such as vmware, you
744	should disable them at this point so they don't crash your
745	system on reboot.
746
747	[3] From the bootblocks, boot -s, and then do
748		fsck -p
749		mount -u /
750		mount -a
751		cd src
752		adjkerntz -i		# if CMOS is wall time
753	Also, when doing a major release upgrade, it is required that
754	you boot into single user mode to do the installworld.
755
756	[4] Note: This step is non-optional.  Failure to do this step
757	can result in a significant reduction in the functionality of the
758	system.  Attempting to do it by hand is not recommended and those
759	that pursue this avenue should read this file carefully, as well
760	as the archives of freebsd-current and freebsd-hackers mailing lists
761	for potential gotchas.
762
763	[5] Usually this step is a noop.  However, from time to time
764	you may need to do this if you get unknown user in the following
765	step.  It never hurts to do it all the time.  You may need to
766	install a new mergemaster (cd src/usr.sbin/mergemaster && make
767	install) after the buildworld before this step if you last updated
768	from current before 20020224 or from -stable before 20020408.
769
770	[8] In order to have a kernel that can run the 4.x binaries
771	needed to do an installworld, you must include the COMPAT_FREEBSD4
772	option in your kernel.  Failure to do so may leave you with a system
773	that is hard to boot to recover. A similar kernel option COMPAT_FREEBSD5
774	is required to run the 5.x binaries on more recent kernels.
775
776	Make sure that you merge any new devices from GENERIC since the
777	last time you updated your kernel config file.
778
779	[9] When checking out sources, you must include the -P flag to have
780	cvs prune empty directories.
781
782	If CPUTYPE is defined in your /etc/make.conf, make sure to use the
783	"?=" instead of the "=" assignment operator, so that buildworld can
784	override the CPUTYPE if it needs to.
785
786	MAKEOBJDIRPREFIX must be defined in an environment variable, and
787	not on the command line, or in /etc/make.conf.  buildworld will
788	warn if it is improperly defined.
789FORMAT:
790
791This file contains a list, in reverse chronological order, of major
792breakages in tracking -current.  Not all things will be listed here,
793and it only starts on October 16, 2004.  Updating files can found in
794previous releases if your system is older than this.
795
796Copyright information:
797
798Copyright 1998-2005 M. Warner Losh.  All Rights Reserved.
799
800Redistribution, publication, translation and use, with or without
801modification, in full or in part, in any form or format of this
802document are permitted without further permission from the author.
803
804THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
805IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
806WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
807DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
808INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
809(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
810SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
811HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
812STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
813IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
814POSSIBILITY OF SUCH DAMAGE.
815
816If you find this document useful, and you want to, you may buy the
817author a beer.
818
819Contact Warner Losh if you have any questions about your use of
820this document.
821
822$FreeBSD: head/UPDATING 170510 2007-06-10 18:57:20Z yar $
823