xref: /minix3/docs/UPDATING (revision b1c4ba4ab66acbca4eb1bab1b49a15e96feef93e)
120130114:
2	The terminfo update is also linked to the databases functions,
3	which means the tool used to generate the termcap entries has to
4	be rebuild with the new libraries before creating a valid
5        terminfo DB. To resolve this issue we have to do two (2) full
6	build of the system. The simplest is to do the following:
7
8	# make build && make build && reboot
9
1020121207:
11	The join and lorder tools have been upgraded. Build them first:
12
13	# make -C usr.bin/lorder clean all install
14	# make -C usr.bin/join clean all install
15	# make -C usr.bin/tic clean all install
16	# make -C usr.bin/nbperf clean all install
17
18	Then do a "make build".
19
2020121205:
21	Following the terminfo update, some new tools are now used during
22	the build. Execute the following to install them:
23	# make -C usr.bin/nbperf all install
24	# make -C usr.bin/lorder all install
25	# make -C usr.bin/join all install
26	# make -C usr.bin/tic all install
27
2820121205:
29	The tsort tool has been also upgraded and is now also used during
30	the build:
31	# make -C usr.bin/tsort all install
32	# cp share/mk/* /usr/share/mk
33
3420121205:
35	lorder requires a newer version of sort, so to ensure it is present
36	do the following:
37	# make -C usr.bin/sort clean all install
38
3920121127:
40	/etc/mtab is now obsoleted by /proc/mounts. You need to create a
41	symlink:
42
43	# rm /etc/mtab
44	# ln -s /proc/mounts /etc/mtab
45
4620121116:
47	To make the build system less verbose:
48
49	# cp /usr/src/etc/make.conf /etc
50
5120121115:
52	Before your first native build you need to update /usr/share/mk.
53	# rm /usr/share/mk/*
54	# cp /usr/src/share/mk/* /usr/share/mk
55
56	With the update, it is now recommended to use the following make
57	targets :
58	- "build" (i.e., make build) instead of "world", which is now obsoleted.
59
60	There is some differences between make build and make world. namely:
61	- make build is NOT automatically followed by make etcforce.
62	- make build is by default preceded by a make clean, to prevent that
63	  use the following command:
64	  # make build MKUPDATE=yes
65
66	It is now possible to crosscompile minix on minix, if you have
67	not already followed the previous steps, you will need to do the
68	following before using the build.sh script:
69	# make etcforce
70
7120120927:
72	Building a new boot image requires the current mkfs.mfs.
73	# make -C usr.sbin/mkfs.mfs clean all install
74
7520120703:
76	The device manager(devman) is now started automatically during the
77	mount -a operation.  As fstab is generated during installation it is
78	required to manually insert the following entry in fstab. Failing to
79	do so will result in the devmand daemon to be able to open the events
80	file in /sys.
81
82	none  /sys  devman  rw,rslabel=devman 0 0
83
8420120608:
85	New install and mk files require the following steps:
86
87	# cp /usr/src/share/mk/*.mk /usr/share/mk
88	# cd /usr/src
89	# make -C usr.bin/xinstall all
90	# cp usr.bin/xinstall/xinstall /usr/bin/install
91	# rm /bin/install
92
93	then do
94	# make clean world
95
9620120510:
97	WARNING: the shared libraries major revision set to 0 will break
98	existing dynamically linked binaries if they exist.
99
100	There are two risks. One: existing binaries won't find the current
101	libraries; two: linking binaries with both majors present will link
102	them in twice. So the previous libraries have to be removed.
103
104		. re-build world statically first if necessary
105		. remove libraries from /lib and /usr/lib
106		. then build world
107
10820120416:
109	Upgrade your clang to clang-2.9nb6 or clang-3.1nb3 to be able to
110	build shared libraries and dynamically linked executables. The
111	system will keep working without them, but a dynamic-capable
112	system will be a requirement soon.
113
11420120413:
115	Boot loader menu now has an option to boot into single user mode. To
116	get the menu option do:
117
118	# cp /usr/src/etc/boot.cfg.default /etc
119	# update_bootcfg
120
12120120402:
122	an installed genassym is required to build the kernel:
123	# make -C usr.bin/genassym install
124
12520120328:
126	The boot loader now defaults to 115200 baud rate to make booting over
127	serial more pleasant. To install the new boot loader do
128
129	# cd /usr/src/sys
130	# make clean install
131	# updateboot
132
133	To boot over serial add the following to /etc/boot.cfg.local (create
134	the file if not present):
135	menu=Start latest serial MINIX 3:load_mods /boot/minix_latest/mod*;multiboot /boot/minix_latest/kernel rootdevname=c0d0p0s0 cttyline=0 cttybaud=115200
136	consdev=com0
137
138	To install the new boot configuration run
139
140	# update_bootcfg
141
14220120306:
143	The base system only looks in /usr/pkg/compiler-rt/lib now, so
144	-L/usr/pkg/lib is gone.
145	Please make sure you have the latest compiler-rt package
146	installed.
147
14820120214:
149	Compiling everything with clang (previous entry) depends on a
150	relatively new clang package. Please make sure you have at
151	least clang-2.9nb3 installed. The symptom of an old clang being
152	used is an assert(inited) firing, e.g. after rebuilding make.
153
15420120214:
155	Full switch to clang/ELF. ack is no longer supported.
156
157	clang is the ELF-generating compiler in the base system, gcc is
158	available as a package.
159
160	To boot ELF-format images, either reinstall your whole system,
161	thereby getting the netbsd-based boot loader, or use the boot
162	monitor as documented at
163		http://wiki.minix3.org/en/UsersGuide/BootMonitor
164
165	Single copies of ELF boot files are also stored in /boot on
166	make hdboot as a boot monitor compatability measure. In short,
167	to boot the ELF image in /boot using the boot monitor,
168	do "mb=1" and "kernel=/boot/kernel", then "boot" in the boot
169	monitor.
170
171	Workaround for header file timestamps causing perpetual recompiles:
172	# find /usr/pkg -name '*.h' | xargs touch
173
174	Now that CC is clang instead of ack (cc), the depend files will
175	be out of date, so to make world, do:
176	# make cleandepend clean world
177
17820120213
179	Replace VFS with AVFS
180
181	In case you were running AVFS by doing
182	'BUILDAVFS=yes make clean world', you now have to do a
183	'make clean cleandepend world' instead of a normal 'make clean world'.
184
18520120202
186	Rename installboot to installboot_minix.
187
188	Do this BEFORE a 'make world':
189	# rm -f /usr/bin/installboot /usr/sbin/installboot
190	# make -C boot/installboot clean install
191	# make -C usr.sbin/installboot clean install
192	Then 'make clean world' as usual.
193
19420120119:
195	Follow up to previous entry. The same problem also exists for
196	the man pages.
197
198	Do this BEFORE a 'make world':
199	# rm /usr/man/man1/rm.1
200	# cp /usr/man/man1/cp.1 /usr/man/man1/rm.1
201	Then 'make clean world' as usual.
202
20320120112:
204	Replace our native rm and rmdir with NetBSD version.
205
206	As our native rm is a hard link to cp, simply overwriting rm with
207	the new version would cause mv, cp, ln, etc to stop working.
208
209	Do this BEFORE a 'make world':
210	# rm /bin/rm
211	# cp /bin/cp /bin/rm
212	Then 'make clean world' as usual.
213
21420111222:
215	This update requires /etc/fstab having the new format.
216
217	The latest mkfs.mfs and fsck.mfs must be installed in
218	/sbin when building a new image, and booting with the new mfs,
219	and the new system rc script must be installed that invokes the new
220	fsck driver.
221
222	Do this BEFORE a 'make world':
223	# make clean etcfiles etcforce includes libraries
224	# make -C commands/mkfs.mfs clean install
225	# make -C commands/fsck.mfs clean install
226	Then 'make clean world' as usual.
227
22820111212:
229	After a successful "make world", issue the following commands:
230	# cd /dev
231	# MAKEDEV fbd
232
23320111109:
234	Switch to NetBSD passwd system.
235
236	You have to bootstrap pwd_mkdb:
237	# make clean includes elf-libraries
238	# make -C usr.sbin/pwd_mkdb install
239
240	Now build world.  WARNING: this will blind your system to
241	/etc/shadow, making current user accounts vanish. Updating the
242	group file is necessary to add a 'users' group so the new stock
243	useradd will work.
244
245	# make clean world
246	# cp etc/group /etc/group
247
248	The new shadow file is /etc/master.passwd.  Add your old user
249	accounts back with useradd(8), groups with groupadd(8), and
250	set a root pw with passwd(1) if you want.  Use vipw(8) to edit
251	/etc/master.passwd if you want. See useradd(8) to get started
252	with the new pw format. Test your new system now by logging in.
253
254	Once you're satisfied your new system works, remove the old
255	adduser, and rely exclusively on the new useradd and
256	master.passwd.
257	# rm /usr/bin/adduser
258	# mv /etc/shadow /etc/shadow.orig
259
260	pwdauth is updated so that current binaries (e.g. sshd) will
261	work with the new pw db.
262
263	By default your new users are in the 'users' group. Add yourself
264	to the 'operator' group if you want to be able to su without
265	typing in the password.
266
26720111109:
268	fstab format change. /etc/rc reads both formats for a while.
269	Please convert your /etc/fstab to the new format though as
270	the system will assume the new format in the future.
271
272	A helper script is in etc/. Example:
273	# sh etc/newfstab.sh /etc/fstab >newfstab
274	(Don't redirect to /etc/fstab directly as the shell will
275	truncate it before it can be read.)
276
27720110928:
278	Update your /usr/etc/daily and /etc/man.conf if you
279	want to fully enjoy the manpage fixes.
280
28120110817:
282	To use the new asynchronous version of VFS do:
283	# BUILDAVFS=yes make cleandepend world
284
285	To switch back to the normal VFS do:
286	# make cleandepend world
287
288	By default the old VFS and PFS are built and included in the boot
289	image. AVFS is a work in progress and not yet mature. Use at your own
290	risk.
29120110722:
292	To install the new mkdep:
293	# cp /usr/bin/mkdep /usr/bin/ackmkdep
294	# make elf-libraries
295	# cd usr.bin/mkdep
296	# touch findcc.d mkdep.d .depend
297	# make install
298
29920110716:
300	To install libterminfo and terminfo database, you need
301	the new stat:
302	# cd /usr/src/usr.bin/stat
303	# make clean install
304
305	You must create a directory /usr/share/terminfo for terminfo database
306	to be installed.
307	# make -C etc install
308
309	Then make clean world as normal.
310
31120110708
312        * VFS and installed MFSes must be in sync before and after this change *
313
314	You must update the GNU headers.
315	# cd /usr/src
316	# make gnu-includes
317
318	You must rebuild both MFS and VFS (including those one in the image).
319	Either make world or do the following:
320	# cd /usr/src/servers/mfs
321	# make install
322	# cd /usr/src/servers/vfs
323	# make install
324	# cd /usr/src/tools
325	# make hdboot
326	# shutdown -r now
327
32820110701:
329	# rm -rf /usr/include /usr/netbsd
330	# make etcfiles includes cleandepend depend gnu-includes
331
332        DOWNGRADING:
333	  Important: this automatically updates your /usr/lib/descr,
334	  something you will have to revert manually if you
335	  want to go back a revision! Previous to this
336	  revision, you do this by:
337	  # cp commands/acd/acd.descr /usr/lib/descr
338	  Repeating the above commands to make sure your /usr/include
339	  is re-acked is probably a good idea too for going back revisions.
340
341	This change moves
342		1. /usr/include to /usr/include.ack
343		2. /usr/netbsd/include to /usr/include
344
345	Reduce compiler cases to only two:
346		1. ack, a.out, minix headers (moved to /usr/include.ack),
347		   minix libc
348		2. gcc/clang, elf, netbsd headers (moved to /usr/include),
349		   netbsd libc (moved to /usr/lib)
350
351	So this obsoletes the /usr/netbsd hierarchy.
352
353	There are no specific UPDATING instructions, but you should know
354	that starting with this version, gcc/clang use the netbsd libc and
355	headers system exclusively, and those files are in the standard
356	locations now. It's the first step to switching completely and
357	simplifying building.
358
35920110629:
360	Rebuild m4:
361	make -C usr.bin/m4 install
362
36320110629:
364	You must install clang. By default, it is used to build the
365	elf libraries and some userland utilities.
366
36720110628:
368	Since buildworld will also build the elf-libraries, you
369	must follow the process in
370	http://wiki.minix3.org/en/UsersGuide/ELFSwitch
371
37220110624:
373	(Next release bumped to MINIX 3.2.0.)
374	ELF support in the base system. /usr/lib libraries
375	will be in ELF format once you upgrade.
376	These were know as 'gcc format', but now more properly refered
377	to as 'elf format,' as they are shared between gcc and clang.
378	To start producing ELF, please see:
379	http://wiki.minix3.org/en/UsersGuide/ELFSwitch
380
381        To create the /usr/netbsd hierarchy:
382	# cd /usr/src
383	# umount /proc
384	# make etcfiles
385	# mount -e -t procfs none /proc
386
38720110225:
388	Create ddekit include dirs:
389	mkdir -p /usr/include/ddekit/minix
390
39120100921:
392	gcc format libraries are created in /usr/lib now,
393	so throw out /usr/gnu/lib/ if you want to make sure you
394	don't pick up the old ones.
395	(with pkgsrc and this, all of /usr/gnu is obsolete now.)
396
39720100914:
398	mkdir /proc
399	chmod 555 /proc
400
40120100827:
402	From now on, the rc scripts, recovery scripts and system.conf in /etc
403	and /usr/etc are updated automatically by make world. If you want to
404	change them, do so in the source tree. If you make changes to your
405	settings in /etc and /usr/etc, merge them into the the source tree
406	before issuing a make world.
407
40820100805:
409	mkfs and fsck have been renamed to mkfs.mfs and fsck.mfs, respectively.
410	Moreover, they have been moved to /sbin, which is by default not in
411	PATH. Edit your .ashrc (or equivalent) to also include /sbin in PATH.
412	Also, first issue a 'make commands' before building world.
413
41420100802:
415	/usr/src/etc/system.conf updated to include ext2 file server: copy it
416	(or merge it) to /etc/system.conf.
417
41820100719:
419	If you installed using a 3.1.6 image (or earlier) and haven't updated
420	the boot monitor since r6246 you need to do so now:
421	cd /usr/src/boot; make install; sh updateboot.sh
422
42320100714:
424	mknod /dev/uds c 18 0
425	chmod 666 /dev/uds
426
42720100713:
428        /usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
429        /usr/src/etc/system.conf updated to include boot sys services: copy
430        it (or merge it) to /etc/system.conf.
431        *** WARNING ***: this change breaks binary compatibility with
432        old images. Use only newly compiled images (make clean world
433        the first time) or download and install the latest ISO.
43420100705:
435        /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
436        /usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
437        Perform some cleanup (optional):
438        # rm -f /sbin/tty /sbin/log
43920100630:
440	protocol change between service and rs: be sure to compile commands
441	together with the system image and don't use the new userspace with
442	an old image (or vice versa); it is recommended to replace
443	/boot/image_big with the newly compiled image to keep option 1 in the
444	boot menu working.
44520100625:
446	/etc/mk has been moved to /usr/share/mk. You will need to
447	create /usr/share/mk manually.
448	# cp -r /usr/src/share/mk /usr/share/
449	# cd /usr/src; make -m /usr/share/mk world
45020100515:
451        /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
452	/etc/inet.conf is now line-based; if you have hand-edited this file
453	before, then make sure that you do not have configurations in there
454	that span multiple lines.
45520100512:
456        yacc and lex updated
457	# make includes
458	# cd commands/yacc
459	# make depend all install
460	# cd commands/lex
461	# LEX=flex make depend all install
46220100506:
463        /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
46420100410:
465        /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
466        /usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
46720100408:
468        /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
46920100318:
470        Gas2ack updates: Run 'make install' in commands/i386/gas2ack
47120100317:
472        /usr/src/etc/system.conf updated to ignore default kernel calls: copy
473        it (or merge it) to /etc/system.conf.
474        The hello driver (/dev/hello) added to the distribution:
475        # cd /usr/src/commands/scripts && make clean install
476        # cd /dev && MAKEDEV hello
47720100316:
478        /usr/man/man9 is required
479	# mkdir /usr/man/man9
48020100308:
481        Include directory reorganization:
482        # mv /usr/include/ibm /usr/include/i386
483        # ln -s /usr/include/i386 /usr/include/machine
484        Install(1) updates:
485        # cd commands/simple && make /bin/install
48620100303:
487        Gas2ack updates: Run 'make install' in commands/i386/gas2ack
48820100215:
489        Make(1) has been replaced: Run 'make install' in commands/make
490        Mkdep updates: Copy commands/scripts/mkdep.sh to /usr/bin/mkdep
491        Make(1) needs mkfiles: Copy files in etc/mk to /etc/mk
492        ACK update: Copy commands/i386/acd.descr to /usr/lib/descr
493        End.a renamed:
494           -Copy /usr/lib/i86/end.a to /usr/lib/i86/libend.a
495           -Copy /usr/lib/i386/end.a to /usr/lib/i386/libend.a
496           -Copy /usr/gnu/lib/end.a to /usr/gnu/lib/libend.a
497        Asmconv updates: Run 'make install' in commands/i386/asmconv
49820091212:
499        /etc/drivers.conf has been renamed to /etc/system.conf.
500        user "service" has been added to password file /etc/passwd.
50120091006 (r5422):
502	OSS requires an improved make to be compiled; run "make install"
503	in /usr/src/commands/make before running "make world".
50420070212 (r2751):
505	mkfs needs more memory to make an image; chmem it or do
506	# touch mkfs.c ; make /usr/bin/mkfs
507	in /usr/src/commands/simple.
50820070118:
509	drivers.conf has been updated to include an ACL for mfs. it has
510	to be installed before rebooting after an update of the mount command.
51120061222:
512	The archictecture-dependent/-independent split needs ARCH=<arch>
513	in /etc/make.conf, included by some Makefiles and sourced by
514	some shell scripts. To install it, type 'make install' in
515	src/etc, or simply copy the file over.
51620061222:
517	Install binaries in the right order because the new readdir
518	implementation and the new mount program are incompatible
519	with older kernels and the new kernels require the new mount.
520	# cd /usr/src
521	# make includes
522	# make libraries
523	# make cmds
524	# make depend
525	# cd /usr/src/tools
526	# make hdboot
527	# make install
528	# cd ..
529	# make install
530	Installing fails for boot. Reboot the system
531	# reboot -x 'unset image; boot'
532	Now install everything
533	# cd /usr/src
534	# make install
53520060818:
536	You need flex in your $PATH, which has become part of the base
537	system. This needs bigger binaries.
538	If you don't have flex yet, you can compile it first by doing:
539	# cp /usr/src/etc/binary_sizes* /etc
540	# binsizes big
541	# cd /usr/src/commands/flex-2.5.4
542	# sh build
543