tar: use utime() to restore timestamps
[minix.git] / docs / UPDATING
blobd012c819e6787980ad5c9a1b0a5a1e4b9777ba2d
1 20130114:
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:
8         # make build && make build && reboot 
9         
10 20121207:
11         The join and lorder tools have been upgraded. Build them first:
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
18         Then do a "make build".
20 20121205:
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
28 20121205:
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
34 20121205:
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
39 20121127:
40         /etc/mtab is now obsoleted by /proc/mounts. You need to create a
41         symlink:
43         # rm /etc/mtab
44         # ln -s /proc/mounts /etc/mtab
46 20121116:
47         To make the build system less verbose:
49         # cp /usr/src/etc/make.conf /etc
51 20121115:
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
71 20120927:
72         Building a new boot image requires the current mkfs.mfs.
73         # make -C usr.sbin/mkfs.mfs clean all install
75 20120703:
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.
82         none  /sys  devman  rw,rslabel=devman 0 0
84 20120608:
85         New install and mk files require the following steps:
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
93         then do
94         # make clean world
96 20120510:
97         WARNING: the shared libraries major revision set to 0 will break
98         existing dynamically linked binaries if they exist.
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.
104                 . re-build world statically first if necessary
105                 . remove libraries from /lib and /usr/lib
106                 . then build world
108 20120416:
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.
114 20120413:
115         Boot loader menu now has an option to boot into single user mode. To
116         get the menu option do:
118         # cp /usr/src/etc/boot.cfg.default /etc
119         # update_bootcfg
121 20120402:
122         an installed genassym is required to build the kernel:
123         # make -C usr.bin/genassym install     
125 20120328:
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
129         # cd /usr/src/sys
130         # make clean install
131         # updateboot
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
138         To install the new boot configuration run
140         # update_bootcfg
142 20120306:
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.
148 20120214:
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.
154 20120214:
155         Full switch to clang/ELF. ack is no longer supported.
157         clang is the ELF-generating compiler in the base system, gcc is
158         available as a package.
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
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.
171         Workaround for header file timestamps causing perpetual recompiles:
172         # find /usr/pkg -name '*.h' | xargs touch
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
178 20120213
179         Replace VFS with AVFS
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'.
185 20120202
186         Rename installboot to installboot_minix.
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.
194 20120119:
195         Follow up to previous entry. The same problem also exists for
196         the man pages.
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.
203 20120112:
204         Replace our native rm and rmdir with NetBSD version.
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.
209         Do this BEFORE a 'make world':
210         # rm /bin/rm
211         # cp /bin/cp /bin/rm
212         Then 'make clean world' as usual.
214 20111222:
215         This update requires /etc/fstab having the new format.
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.
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.
228 20111212:
229         After a successful "make world", issue the following commands:
230         # cd /dev
231         # MAKEDEV fbd
233 20111109:
234         Switch to NetBSD passwd system.
236         You have to bootstrap pwd_mkdb:
237         # make clean includes elf-libraries
238         # make -C usr.sbin/pwd_mkdb install
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.
245         # make clean world
246         # cp etc/group /etc/group
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.
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
260         pwdauth is updated so that current binaries (e.g. sshd) will
261         work with the new pw db.
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.
267 20111109:
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.
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.)
277 20110928:
278         Update your /usr/etc/daily and /etc/man.conf if you
279         want to fully enjoy the manpage fixes.
281 20110817:
282         To use the new asynchronous version of VFS do:
283         # BUILDAVFS=yes make cleandepend world
285         To switch back to the normal VFS do:
286         # make cleandepend world
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.
291 20110722:
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
299 20110716:
300         To install libterminfo and terminfo database, you need 
301         the new stat:
302         # cd /usr/src/usr.bin/stat
303         # make clean install
305         You must create a directory /usr/share/terminfo for terminfo database
306         to be installed. 
307         # make -C etc install
309         Then make clean world as normal.
311 20110708
312         * VFS and installed MFSes must be in sync before and after this change *
314         You must update the GNU headers.
315         # cd /usr/src
316         # make gnu-includes
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
328 20110701:
329         # rm -rf /usr/include /usr/netbsd
330         # make etcfiles includes cleandepend depend gnu-includes
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.
341         This change moves 
342                 1. /usr/include to /usr/include.ack
343                 2. /usr/netbsd/include to /usr/include
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)
351         So this obsoletes the /usr/netbsd hierarchy.
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.
359 20110629:
360         Rebuild m4:
361         make -C usr.bin/m4 install
363 20110629:
364         You must install clang. By default, it is used to build the
365         elf libraries and some userland utilities.
367 20110628:
368         Since buildworld will also build the elf-libraries, you
369         must follow the process in
370         http://wiki.minix3.org/en/UsersGuide/ELFSwitch
372 20110624:
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
381         To create the /usr/netbsd hierarchy:
382         # cd /usr/src
383         # umount /proc
384         # make etcfiles
385         # mount -e -t procfs none /proc
387 20110225:
388         Create ddekit include dirs:
389         mkdir -p /usr/include/ddekit/minix
391 20100921:
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.)
397 20100914:
398         mkdir /proc
399         chmod 555 /proc
401 20100827:
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.
408 20100805:
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.
414 20100802:
415         /usr/src/etc/system.conf updated to include ext2 file server: copy it
416         (or merge it) to /etc/system.conf.
418 20100719:
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
423 20100714:
424         mknod /dev/uds c 18 0
425         chmod 666 /dev/uds
427 20100713:
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.
434 20100705:
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
439 20100630:
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.
445 20100625:
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
450 20100515:
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.
455 20100512:
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
462 20100506:
463         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
464 20100410:
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.
467 20100408:
468         /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
469 20100318:
470         Gas2ack updates: Run 'make install' in commands/i386/gas2ack
471 20100317:
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
477 20100316:
478         /usr/man/man9 is required
479         # mkdir /usr/man/man9
480 20100308:
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
486 20100303:
487         Gas2ack updates: Run 'make install' in commands/i386/gas2ack
488 20100215:
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
498 20091212:
499         /etc/drivers.conf has been renamed to /etc/system.conf.
500         user "service" has been added to password file /etc/passwd.
501 20091006 (r5422):
502         OSS requires an improved make to be compiled; run "make install"
503         in /usr/src/commands/make before running "make world".
504 20070212 (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.
508 20070118:
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.
511 20061222:
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.
516 20061222:
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
535 20060818:
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