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