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
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".
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
29 The tsort tool has been also upgraded and is now also used during
31 # make -C usr.bin/tsort all install
32 # cp share/mk/* /usr/share/mk
35 lorder requires a newer version of sort, so to ensure it is present
37 # make -C usr.bin/sort clean all install
40 /etc/mtab is now obsoleted by /proc/mounts. You need to create a
44 # ln -s /proc/mounts /etc/mtab
47 To make the build system less verbose:
49 # cp /usr/src/etc/make.conf /etc
52 Before your first native build you need to update /usr/share/mk.
54 # cp /usr/src/share/mk/* /usr/share/mk
56 With the update, it is now recommended to use the following make
58 - "build" (i.e., make build) instead of "world", which is now obsoleted.
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
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:
72 Building a new boot image requires the current mkfs.mfs.
73 # make -C usr.sbin/mkfs.mfs clean all install
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
82 none /sys devman rw,rslabel=devman 0 0
85 New install and mk files require the following steps:
87 # cp /usr/src/share/mk/*.mk /usr/share/mk
89 # make -C usr.bin/xinstall all
90 # cp usr.bin/xinstall/xinstall /usr/bin/install
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
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.
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
122 an installed genassym is required to build the kernel:
123 # make -C usr.bin/genassym install
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
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
138 To install the new boot configuration run
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
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.
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
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
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'.
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.
195 Follow up to previous entry. The same problem also exists for
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.
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':
212 Then 'make clean world' as usual.
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
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.
229 After a successful "make world", issue the following commands:
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
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
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.
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.)
278 Update your /usr/etc/daily and /etc/man.conf if you
279 want to fully enjoy the manpage fixes.
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
292 To install the new mkdep:
293 # cp /usr/bin/mkdep /usr/bin/ackmkdep
296 # touch findcc.d mkdep.d .depend
300 To install libterminfo and terminfo database, you need
302 # cd /usr/src/usr.bin/stat
305 You must create a directory /usr/share/terminfo for terminfo database
307 # make -C etc install
309 Then make clean world as normal.
312 * VFS and installed MFSes must be in sync before and after this change *
314 You must update the GNU headers.
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
322 # cd /usr/src/servers/vfs
329 # rm -rf /usr/include /usr/netbsd
330 # make etcfiles includes cleandepend depend gnu-includes
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.
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),
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.
361 make -C usr.bin/m4 install
364 You must install clang. By default, it is used to build the
365 elf libraries and some userland utilities.
368 Since buildworld will also build the elf-libraries, you
369 must follow the process in
370 http://wiki.minix3.org/en/UsersGuide/ELFSwitch
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:
385 # mount -e -t procfs none /proc
388 Create ddekit include dirs:
389 mkdir -p /usr/include/ddekit/minix
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.)
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.
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.
415 /usr/src/etc/system.conf updated to include ext2 file server: copy it
416 (or merge it) to /etc/system.conf.
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
424 mknod /dev/uds c 18 0
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.
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
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
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
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.
459 # make depend all install
461 # LEX=flex make depend all install
463 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
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.
468 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
470 Gas2ack updates: Run 'make install' in commands/i386/gas2ack
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
478 /usr/man/man9 is required
479 # mkdir /usr/man/man9
481 Include directory reorganization:
482 # mv /usr/include/ibm /usr/include/i386
483 # ln -s /usr/include/i386 /usr/include/machine
485 # cd commands/simple && make /bin/install
487 Gas2ack updates: Run 'make install' in commands/i386/gas2ack
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
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
499 /etc/drivers.conf has been renamed to /etc/system.conf.
500 user "service" has been added to password file /etc/passwd.
502 OSS requires an improved make to be compiled; run "make install"
503 in /usr/src/commands/make before running "make world".
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.
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.
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.
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.
530 Installing fails for boot. Reboot the system
531 # reboot -x 'unset image; boot'
532 Now install everything
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
541 # cd /usr/src/commands/flex-2.5.4