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