kernel: separate state for trace-deferred syscalls
[minix.git] / docs / UPDATING
blob1c7cb620f63946069a843c20ead3e8e931b6cd9e
1 20121207:
2         The join and lorder tools have been upgraded. Build them first:
4         # make -C usr.bin/lorder clean all install
5         # make -C usr.bin/join clean all install
6         # make -C usr.bin/tic clean all install
7         # make -C usr.bin/nbperf clean all install
9         Then do a "make build".
11 20121205:
12         The tsort tool has been also upgraded and is now also used during
13         the build:
14         # make -C usr.bin/tsort all install
15         # cp share/mk/* /usr/share/mk
17 20121205:
18         lorder requires a newer version of sort, so to ensure it is present
19         do the following:
20         # make -C usr.bin/sort clean all install
22 20121127:
23         /etc/mtab is now obsoleted by /proc/mounts. You need to create a
24         symlink:
26         # rm /etc/mtab
27         # ln -s /proc/mounts /etc/mtab
29 20121116:
30         To make the build system less verbose:
32         # cp /usr/src/etc/make.conf /etc
34 20121115:
35         Before your first native build you need to update /usr/share/mk.
36         # rm /usr/share/mk/*
37         # cp /usr/src/share/mk/* /usr/share/mk
38         
39         With the update, it is now recommended to use the following make
40         targets :
41         - "build" (i.e., make build) instead of "world", which is now obsoleted.
42         
43         There is some differences between make build and make world. namely:
44         - make build is NOT automatically followed by make etcforce.
45         - make build is by default preceded by a make clean, to prevent that
46           use the following command:
47           # make build MKUPDATE=yes
48         
49         It is now possible to crosscompile minix on minix, if you have 
50         not already followed the previous steps, you will need to do the
51         following before using the build.sh script:
52         # make etcforce
54 20120927:
55         Building a new boot image requires the current mkfs.mfs.
56         # make -C usr.sbin/mkfs.mfs clean all install
58 20120703:
59         The device manager(devman) is now started automatically during the 
60         mount -a operation.  As fstab is generated during installation it is 
61         required to manually insert the following entry in fstab. Failing to 
62         do so will result in the devmand daemon to be able to open the events 
63         file in /sys.
65         none  /sys  devman  rw,rslabel=devman 0 0
67 20120608:
68         New install and mk files require the following steps:
70         # cp /usr/src/share/mk/*.mk /usr/share/mk
71         # cd /usr/src
72         # make -C usr.bin/xinstall all
73         # cp usr.bin/xinstall/xinstall /usr/bin/install
74         # rm /bin/install
76         then do
77         # make clean world
79 20120510:
80         WARNING: the shared libraries major revision set to 0 will break
81         existing dynamically linked binaries if they exist.
83         There are two risks. One: existing binaries won't find the current
84         libraries; two: linking binaries with both majors present will link
85         them in twice. So the previous libraries have to be removed.
87                 . re-build world statically first if necessary
88                 . remove libraries from /lib and /usr/lib
89                 . then build world
91 20120416:
92         Upgrade your clang to clang-2.9nb6 or clang-3.1nb3 to be able to
93         build shared libraries and dynamically linked executables. The
94         system will keep working without them, but a dynamic-capable
95         system will be a requirement soon.
97 20120413:
98         Boot loader menu now has an option to boot into single user mode. To
99         get the menu option do:
101         # cp /usr/src/etc/boot.cfg.default /etc
102         # update_bootcfg
104 20120402:
105         an installed genassym is required to build the kernel:
106         # make -C usr.bin/genassym install     
108 20120328:
109         The boot loader now defaults to 115200 baud rate to make booting over
110         serial more pleasant. To install the new boot loader do
112         # cd /usr/src/sys
113         # make clean install
114         # updateboot
116         To boot over serial add the following to /etc/boot.cfg.local (create
117         the file if not present):
118         menu=Start latest serial MINIX 3:load_mods /boot/minix_latest/mod*;multiboot /boot/minix_latest/kernel rootdevname=c0d0p0s0 cttyline=0 cttybaud=115200
119         consdev=com0
121         To install the new boot configuration run
123         # update_bootcfg
125 20120306:
126         The base system only looks in /usr/pkg/compiler-rt/lib now, so
127         -L/usr/pkg/lib is gone.
128         Please make sure you have the latest compiler-rt package
129         installed.
131 20120214:
132         Compiling everything with clang (previous entry) depends on a
133         relatively new clang package. Please make sure you have at
134         least clang-2.9nb3 installed. The symptom of an old clang being 
135         used is an assert(inited) firing, e.g. after rebuilding make.
137 20120214:
138         Full switch to clang/ELF. ack is no longer supported.
140         clang is the ELF-generating compiler in the base system, gcc is
141         available as a package.
143         To boot ELF-format images, either reinstall your whole system,
144         thereby getting the netbsd-based boot loader, or use the boot
145         monitor as documented at
146                 http://wiki.minix3.org/en/UsersGuide/BootMonitor
148         Single copies of ELF boot files are also stored in /boot on
149         make hdboot as a boot monitor compatability measure. In short,
150         to boot the ELF image in /boot using the boot monitor,
151         do "mb=1" and "kernel=/boot/kernel", then "boot" in the boot
152         monitor.
154         Workaround for header file timestamps causing perpetual recompiles:
155         # find /usr/pkg -name '*.h' | xargs touch
157         Now that CC is clang instead of ack (cc), the depend files will
158         be out of date, so to make world, do:
159         # make cleandepend clean world
161 20120213
162         Replace VFS with AVFS
164         In case you were running AVFS by doing
165         'BUILDAVFS=yes make clean world', you now have to do a
166         'make clean cleandepend world' instead of a normal 'make clean world'.
168 20120202
169         Rename installboot to installboot_minix.
171         Do this BEFORE a 'make world':
172         # rm -f /usr/bin/installboot /usr/sbin/installboot
173         # make -C boot/installboot clean install
174         # make -C usr.sbin/installboot clean install
175         Then 'make clean world' as usual.
177 20120119:
178         Follow up to previous entry. The same problem also exists for
179         the man pages.
181         Do this BEFORE a 'make world':
182         # rm /usr/man/man1/rm.1
183         # cp /usr/man/man1/cp.1 /usr/man/man1/rm.1
184         Then 'make clean world' as usual.
186 20120112:
187         Replace our native rm and rmdir with NetBSD version.
189         As our native rm is a hard link to cp, simply overwriting rm with
190         the new version would cause mv, cp, ln, etc to stop working.
192         Do this BEFORE a 'make world':
193         # rm /bin/rm
194         # cp /bin/cp /bin/rm
195         Then 'make clean world' as usual.
197 20111222:
198         This update requires /etc/fstab having the new format.
200         The latest mkfs.mfs and fsck.mfs must be installed in
201         /sbin when building a new image, and booting with the new mfs,
202         and the new system rc script must be installed that invokes the new
203         fsck driver.
205         Do this BEFORE a 'make world':
206         # make clean etcfiles etcforce includes libraries
207         # make -C commands/mkfs.mfs clean install
208         # make -C commands/fsck.mfs clean install
209         Then 'make clean world' as usual.
211 20111212:
212         After a successful "make world", issue the following commands:
213         # cd /dev
214         # MAKEDEV fbd
216 20111109:
217         Switch to NetBSD passwd system.
219         You have to bootstrap pwd_mkdb:
220         # make clean includes elf-libraries
221         # make -C usr.sbin/pwd_mkdb install
223         Now build world.  WARNING: this will blind your system to
224         /etc/shadow, making current user accounts vanish. Updating the
225         group file is necessary to add a 'users' group so the new stock
226         useradd will work.
228         # make clean world
229         # cp etc/group /etc/group
231         The new shadow file is /etc/master.passwd.  Add your old user
232         accounts back with useradd(8), groups with groupadd(8), and
233         set a root pw with passwd(1) if you want.  Use vipw(8) to edit
234         /etc/master.passwd if you want. See useradd(8) to get started
235         with the new pw format. Test your new system now by logging in.
237         Once you're satisfied your new system works, remove the old
238         adduser, and rely exclusively on the new useradd and
239         master.passwd.
240         # rm /usr/bin/adduser
241         # mv /etc/shadow /etc/shadow.orig
243         pwdauth is updated so that current binaries (e.g. sshd) will
244         work with the new pw db.
246         By default your new users are in the 'users' group. Add yourself
247         to the 'operator' group if you want to be able to su without
248         typing in the password.
250 20111109:
251         fstab format change. /etc/rc reads both formats for a while.
252         Please convert your /etc/fstab to the new format though as
253         the system will assume the new format in the future.
255         A helper script is in etc/. Example:
256         # sh etc/newfstab.sh /etc/fstab >newfstab
257         (Don't redirect to /etc/fstab directly as the shell will
258         truncate it before it can be read.)
260 20110928:
261         Update your /usr/etc/daily and /etc/man.conf if you
262         want to fully enjoy the manpage fixes.
264 20110817:
265         To use the new asynchronous version of VFS do:
266         # BUILDAVFS=yes make cleandepend world
268         To switch back to the normal VFS do:
269         # make cleandepend world
271         By default the old VFS and PFS are built and included in the boot
272         image. AVFS is a work in progress and not yet mature. Use at your own
273         risk.
274 20110722:
275         To install the new mkdep:
276         # cp /usr/bin/mkdep /usr/bin/ackmkdep
277         # make elf-libraries
278         # cd usr.bin/mkdep
279         # touch findcc.d mkdep.d .depend
280         # make install
282 20110716:
283         To install libterminfo and terminfo database, you need 
284         the new stat:
285         # cd /usr/src/usr.bin/stat
286         # make clean install
288         You must create a directory /usr/share/terminfo for terminfo database
289         to be installed. 
290         # make -C etc install
292         Then make clean world as normal.
294 20110708
295         * VFS and installed MFSes must be in sync before and after this change *
297         You must update the GNU headers.
298         # cd /usr/src
299         # make gnu-includes
301         You must rebuild both MFS and VFS (including those one in the image).
302         Either make world or do the following:
303         # cd /usr/src/servers/mfs
304         # make install
305         # cd /usr/src/servers/vfs
306         # make install
307         # cd /usr/src/tools
308         # make hdboot
309         # shutdown -r now
311 20110701:
312         # rm -rf /usr/include /usr/netbsd
313         # make etcfiles includes cleandepend depend gnu-includes
315         DOWNGRADING:
316           Important: this automatically updates your /usr/lib/descr,
317           something you will have to revert manually if you
318           want to go back a revision! Previous to this
319           revision, you do this by:
320           # cp commands/acd/acd.descr /usr/lib/descr
321           Repeating the above commands to make sure your /usr/include
322           is re-acked is probably a good idea too for going back revisions.
324         This change moves 
325                 1. /usr/include to /usr/include.ack
326                 2. /usr/netbsd/include to /usr/include
328         Reduce compiler cases to only two:
329                 1. ack, a.out, minix headers (moved to /usr/include.ack),
330                    minix libc
331                 2. gcc/clang, elf, netbsd headers (moved to /usr/include),
332                    netbsd libc (moved to /usr/lib)
334         So this obsoletes the /usr/netbsd hierarchy.
336         There are no specific UPDATING instructions, but you should know
337         that starting with this version, gcc/clang use the netbsd libc and
338         headers system exclusively, and those files are in the standard
339         locations now. It's the first step to switching completely and
340         simplifying building.
342 20110629:
343         Rebuild m4:
344         make -C usr.bin/m4 install
346 20110629:
347         You must install clang. By default, it is used to build the
348         elf libraries and some userland utilities.
350 20110628:
351         Since buildworld will also build the elf-libraries, you
352         must follow the process in
353         http://wiki.minix3.org/en/UsersGuide/ELFSwitch
355 20110624:
356         (Next release bumped to MINIX 3.2.0.)
357         ELF support in the base system. /usr/lib libraries
358         will be in ELF format once you upgrade.
359         These were know as 'gcc format', but now more properly refered
360         to as 'elf format,' as they are shared between gcc and clang.
361         To start producing ELF, please see:
362         http://wiki.minix3.org/en/UsersGuide/ELFSwitch
364         To create the /usr/netbsd hierarchy:
365         # cd /usr/src
366         # umount /proc
367         # make etcfiles
368         # mount -e -t procfs none /proc
370 20110225:
371         Create ddekit include dirs:
372         mkdir -p /usr/include/ddekit/minix
374 20100921:
375         gcc format libraries are created in /usr/lib now, 
376         so throw out /usr/gnu/lib/ if you want to make sure you
377         don't pick up the old ones.
378         (with pkgsrc and this, all of /usr/gnu is obsolete now.)
380 20100914:
381         mkdir /proc
382         chmod 555 /proc
384 20100827:
385         From now on, the rc scripts, recovery scripts and system.conf in /etc
386         and /usr/etc are updated automatically by make world. If you want to
387         change them, do so in the source tree. If you make changes to your
388         settings in /etc and /usr/etc, merge them into the the source tree
389         before issuing a make world.
391 20100805:
392         mkfs and fsck have been renamed to mkfs.mfs and fsck.mfs, respectively.
393         Moreover, they have been moved to /sbin, which is by default not in
394         PATH. Edit your .ashrc (or equivalent) to also include /sbin in PATH.
395         Also, first issue a 'make commands' before building world.
397 20100802:
398         /usr/src/etc/system.conf updated to include ext2 file server: copy it
399         (or merge it) to /etc/system.conf.
401 20100719:
402         If you installed using a 3.1.6 image (or earlier) and haven't updated 
403         the boot monitor since r6246 you need to do so now:
404         cd /usr/src/boot; make install; sh updateboot.sh
406 20100714:
407         mknod /dev/uds c 18 0
408         chmod 666 /dev/uds
410 20100713:
411         /usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
412         /usr/src/etc/system.conf updated to include boot sys services: copy
413         it (or merge it) to /etc/system.conf.
414         *** WARNING ***: this change breaks binary compatibility with
415         old images. Use only newly compiled images (make clean world
416         the first time) or download and install the latest ISO.
417 20100705:
418         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
419         /usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
420         Perform some cleanup (optional):
421         # rm -f /sbin/tty /sbin/log
422 20100630:
423         protocol change between service and rs: be sure to compile commands
424         together with the system image and don't use the new userspace with
425         an old image (or vice versa); it is recommended to replace
426         /boot/image_big with the newly compiled image to keep option 1 in the
427         boot menu working.
428 20100625:
429         /etc/mk has been moved to /usr/share/mk. You will need to
430         create /usr/share/mk manually.
431         # cp -r /usr/src/share/mk /usr/share/
432         # cd /usr/src; make -m /usr/share/mk world
433 20100515:
434         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
435         /etc/inet.conf is now line-based; if you have hand-edited this file
436         before, then make sure that you do not have configurations in there
437         that span multiple lines.
438 20100512:
439         yacc and lex updated
440         # make includes
441         # cd commands/yacc
442         # make depend all install
443         # cd commands/lex
444         # LEX=flex make depend all install
445 20100506:
446         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
447 20100410:
448         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
449         /usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
450 20100408:
451         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
452 20100318:
453         Gas2ack updates: Run 'make install' in commands/i386/gas2ack
454 20100317:
455         /usr/src/etc/system.conf updated to ignore default kernel calls: copy
456         it (or merge it) to /etc/system.conf.
457         The hello driver (/dev/hello) added to the distribution:
458         # cd /usr/src/commands/scripts && make clean install
459         # cd /dev && MAKEDEV hello
460 20100316:
461         /usr/man/man9 is required
462         # mkdir /usr/man/man9
463 20100308:
464         Include directory reorganization:
465         # mv /usr/include/ibm /usr/include/i386
466         # ln -s /usr/include/i386 /usr/include/machine
467         Install(1) updates:
468         # cd commands/simple && make /bin/install
469 20100303:
470         Gas2ack updates: Run 'make install' in commands/i386/gas2ack
471 20100215:
472         Make(1) has been replaced: Run 'make install' in commands/make
473         Mkdep updates: Copy commands/scripts/mkdep.sh to /usr/bin/mkdep
474         Make(1) needs mkfiles: Copy files in etc/mk to /etc/mk
475         ACK update: Copy commands/i386/acd.descr to /usr/lib/descr
476         End.a renamed:
477            -Copy /usr/lib/i86/end.a to /usr/lib/i86/libend.a
478            -Copy /usr/lib/i386/end.a to /usr/lib/i386/libend.a
479            -Copy /usr/gnu/lib/end.a to /usr/gnu/lib/libend.a
480         Asmconv updates: Run 'make install' in commands/i386/asmconv
481 20091212:
482         /etc/drivers.conf has been renamed to /etc/system.conf.
483         user "service" has been added to password file /etc/passwd.
484 20091006 (r5422):
485         OSS requires an improved make to be compiled; run "make install"
486         in /usr/src/commands/make before running "make world".
487 20070212 (r2751):
488         mkfs needs more memory to make an image; chmem it or do
489         # touch mkfs.c ; make /usr/bin/mkfs
490         in /usr/src/commands/simple.
491 20070118:
492         drivers.conf has been updated to include an ACL for mfs. it has
493         to be installed before rebooting after an update of the mount command.
494 20061222:
495         The archictecture-dependent/-independent split needs ARCH=<arch>
496         in /etc/make.conf, included by some Makefiles and sourced by
497         some shell scripts. To install it, type 'make install' in
498         src/etc, or simply copy the file over.
499 20061222:
500         Install binaries in the right order because the new readdir
501         implementation and the new mount program are incompatible
502         with older kernels and the new kernels require the new mount.
503         # cd /usr/src
504         # make includes
505         # make libraries
506         # make cmds
507         # make depend
508         # cd /usr/src/tools
509         # make hdboot
510         # make install
511         # cd ..
512         # make install
513         Installing fails for boot. Reboot the system
514         # reboot -x 'unset image; boot'
515         Now install everything
516         # cd /usr/src
517         # make install
518 20060818:
519         You need flex in your $PATH, which has become part of the base
520         system. This needs bigger binaries.
521         If you don't have flex yet, you can compile it first by doing:
522         # cp /usr/src/etc/binary_sizes* /etc
523         # binsizes big
524         # cd /usr/src/commands/flex-2.5.4
525         # sh build