2 Building a new boot image requires the current mkfs.mfs.
3 # make -C usr.sbin/mkfs.mfs clean all install
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
12 none /sys devman rw,rslabel=devman 0 0
15 New install and mk files require the following steps:
17 # cp /usr/src/share/mk/*.mk /usr/share/mk
19 # make -C usr.bin/xinstall all
20 # cp usr.bin/xinstall/xinstall /usr/bin/install
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
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.
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
52 an installed genassym is required to build the kernel:
53 # make -C usr.bin/genassym install
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
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
68 To install the new boot configuration run
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
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.
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
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
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'.
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.
125 Follow up to previous entry. The same problem also exists for
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.
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':
142 Then 'make clean world' as usual.
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
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.
159 After a successful "make world", issue the following commands:
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
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
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.
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.)
208 Update your /usr/etc/daily and /etc/man.conf if you
209 want to fully enjoy the manpage fixes.
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
222 To install the new mkdep:
223 # cp /usr/bin/mkdep /usr/bin/ackmkdep
226 # touch findcc.d mkdep.d .depend
230 To install libterminfo and terminfo database, you need
232 # cd /usr/src/usr.bin/stat
235 You must create a directory /usr/share/terminfo for terminfo database
237 # make -C etc install
239 Then make clean world as normal.
242 * VFS and installed MFSes must be in sync before and after this change *
244 You must update the GNU headers.
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
252 # cd /usr/src/servers/vfs
259 # rm -rf /usr/include /usr/netbsd
260 # make etcfiles includes cleandepend depend gnu-includes
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.
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),
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.
291 make -C usr.bin/m4 install
294 You must install clang. By default, it is used to build the
295 elf libraries and some userland utilities.
298 Since buildworld will also build the elf-libraries, you
299 must follow the process in
300 http://wiki.minix3.org/en/UsersGuide/ELFSwitch
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:
315 # mount -e -t procfs none /proc
318 Create ddekit include dirs:
319 mkdir -p /usr/include/ddekit/minix
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.)
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.
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.
345 /usr/src/etc/system.conf updated to include ext2 file server: copy it
346 (or merge it) to /etc/system.conf.
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
354 mknod /dev/uds c 18 0
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.
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
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
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
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.
389 # make depend all install
391 # LEX=flex make depend all install
393 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
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.
398 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
400 Gas2ack updates: Run 'make install' in commands/i386/gas2ack
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
408 /usr/man/man9 is required
409 # mkdir /usr/man/man9
411 Include directory reorganization:
412 # mv /usr/include/ibm /usr/include/i386
413 # ln -s /usr/include/i386 /usr/include/machine
415 # cd commands/simple && make /bin/install
417 Gas2ack updates: Run 'make install' in commands/i386/gas2ack
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
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
429 /etc/drivers.conf has been renamed to /etc/system.conf.
430 user "service" has been added to password file /etc/passwd.
432 OSS requires an improved make to be compiled; run "make install"
433 in /usr/src/commands/make before running "make world".
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.
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.
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.
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.
460 Installing fails for boot. Reboot the system
461 # reboot -x 'unset image; boot'
462 Now install everything
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
471 # cd /usr/src/commands/flex-2.5.4