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".
12 The tsort tool has been also upgraded and is now also used during
14 # make -C usr.bin/tsort all install
15 # cp share/mk/* /usr/share/mk
18 lorder requires a newer version of sort, so to ensure it is present
20 # make -C usr.bin/sort clean all install
23 /etc/mtab is now obsoleted by /proc/mounts. You need to create a
27 # ln -s /proc/mounts /etc/mtab
30 To make the build system less verbose:
32 # cp /usr/src/etc/make.conf /etc
35 Before your first native build you need to update /usr/share/mk.
37 # cp /usr/src/share/mk/* /usr/share/mk
39 With the update, it is now recommended to use the following make
41 - "build" (i.e., make build) instead of "world", which is now obsoleted.
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
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:
55 Building a new boot image requires the current mkfs.mfs.
56 # make -C usr.sbin/mkfs.mfs clean all install
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
65 none /sys devman rw,rslabel=devman 0 0
68 New install and mk files require the following steps:
70 # cp /usr/src/share/mk/*.mk /usr/share/mk
72 # make -C usr.bin/xinstall all
73 # cp usr.bin/xinstall/xinstall /usr/bin/install
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
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.
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
105 an installed genassym is required to build the kernel:
106 # make -C usr.bin/genassym install
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
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
121 To install the new boot configuration run
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
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.
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
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
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'.
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.
178 Follow up to previous entry. The same problem also exists for
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.
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':
195 Then 'make clean world' as usual.
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
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.
212 After a successful "make world", issue the following commands:
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
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
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.
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.)
261 Update your /usr/etc/daily and /etc/man.conf if you
262 want to fully enjoy the manpage fixes.
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
275 To install the new mkdep:
276 # cp /usr/bin/mkdep /usr/bin/ackmkdep
279 # touch findcc.d mkdep.d .depend
283 To install libterminfo and terminfo database, you need
285 # cd /usr/src/usr.bin/stat
288 You must create a directory /usr/share/terminfo for terminfo database
290 # make -C etc install
292 Then make clean world as normal.
295 * VFS and installed MFSes must be in sync before and after this change *
297 You must update the GNU headers.
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
305 # cd /usr/src/servers/vfs
312 # rm -rf /usr/include /usr/netbsd
313 # make etcfiles includes cleandepend depend gnu-includes
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.
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),
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.
344 make -C usr.bin/m4 install
347 You must install clang. By default, it is used to build the
348 elf libraries and some userland utilities.
351 Since buildworld will also build the elf-libraries, you
352 must follow the process in
353 http://wiki.minix3.org/en/UsersGuide/ELFSwitch
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:
368 # mount -e -t procfs none /proc
371 Create ddekit include dirs:
372 mkdir -p /usr/include/ddekit/minix
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.)
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.
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.
398 /usr/src/etc/system.conf updated to include ext2 file server: copy it
399 (or merge it) to /etc/system.conf.
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
407 mknod /dev/uds c 18 0
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.
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
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
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
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.
442 # make depend all install
444 # LEX=flex make depend all install
446 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
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.
451 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
453 Gas2ack updates: Run 'make install' in commands/i386/gas2ack
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
461 /usr/man/man9 is required
462 # mkdir /usr/man/man9
464 Include directory reorganization:
465 # mv /usr/include/ibm /usr/include/i386
466 # ln -s /usr/include/i386 /usr/include/machine
468 # cd commands/simple && make /bin/install
470 Gas2ack updates: Run 'make install' in commands/i386/gas2ack
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
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
482 /etc/drivers.conf has been renamed to /etc/system.conf.
483 user "service" has been added to password file /etc/passwd.
485 OSS requires an improved make to be compiled; run "make install"
486 in /usr/src/commands/make before running "make world".
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.
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.
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.
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.
513 Installing fails for boot. Reboot the system
514 # reboot -x 'unset image; boot'
515 Now install everything
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
524 # cd /usr/src/commands/flex-2.5.4