120130114: 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: 7 8 # make build && make build && reboot 9 1020121207: 11 The join and lorder tools have been upgraded. Build them first: 12 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 17 18 Then do a "make build". 19 2020121205: 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 27 2820121205: 29 The tsort tool has been also upgraded and is now also used during 30 the build: 31 # make -C usr.bin/tsort all install 32 # cp share/mk/* /usr/share/mk 33 3420121205: 35 lorder requires a newer version of sort, so to ensure it is present 36 do the following: 37 # make -C usr.bin/sort clean all install 38 3920121127: 40 /etc/mtab is now obsoleted by /proc/mounts. You need to create a 41 symlink: 42 43 # rm /etc/mtab 44 # ln -s /proc/mounts /etc/mtab 45 4620121116: 47 To make the build system less verbose: 48 49 # cp /usr/src/etc/make.conf /etc 50 5120121115: 52 Before your first native build you need to update /usr/share/mk. 53 # rm /usr/share/mk/* 54 # cp /usr/src/share/mk/* /usr/share/mk 55 56 With the update, it is now recommended to use the following make 57 targets : 58 - "build" (i.e., make build) instead of "world", which is now obsoleted. 59 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 65 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: 69 # make etcforce 70 7120120927: 72 Building a new boot image requires the current mkfs.mfs. 73 # make -C usr.sbin/mkfs.mfs clean all install 74 7520120703: 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 80 file in /sys. 81 82 none /sys devman rw,rslabel=devman 0 0 83 8420120608: 85 New install and mk files require the following steps: 86 87 # cp /usr/src/share/mk/*.mk /usr/share/mk 88 # cd /usr/src 89 # make -C usr.bin/xinstall all 90 # cp usr.bin/xinstall/xinstall /usr/bin/install 91 # rm /bin/install 92 93 then do 94 # make clean world 95 9620120510: 97 WARNING: the shared libraries major revision set to 0 will break 98 existing dynamically linked binaries if they exist. 99 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. 103 104 . re-build world statically first if necessary 105 . remove libraries from /lib and /usr/lib 106 . then build world 107 10820120416: 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. 113 11420120413: 115 Boot loader menu now has an option to boot into single user mode. To 116 get the menu option do: 117 118 # cp /usr/src/etc/boot.cfg.default /etc 119 # update_bootcfg 120 12120120402: 122 an installed genassym is required to build the kernel: 123 # make -C usr.bin/genassym install 124 12520120328: 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 128 129 # cd /usr/src/sys 130 # make clean install 131 # updateboot 132 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 136 consdev=com0 137 138 To install the new boot configuration run 139 140 # update_bootcfg 141 14220120306: 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 146 installed. 147 14820120214: 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. 153 15420120214: 155 Full switch to clang/ELF. ack is no longer supported. 156 157 clang is the ELF-generating compiler in the base system, gcc is 158 available as a package. 159 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 164 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 169 monitor. 170 171 Workaround for header file timestamps causing perpetual recompiles: 172 # find /usr/pkg -name '*.h' | xargs touch 173 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 177 17820120213 179 Replace VFS with AVFS 180 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'. 184 18520120202 186 Rename installboot to installboot_minix. 187 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. 193 19420120119: 195 Follow up to previous entry. The same problem also exists for 196 the man pages. 197 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. 202 20320120112: 204 Replace our native rm and rmdir with NetBSD version. 205 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. 208 209 Do this BEFORE a 'make world': 210 # rm /bin/rm 211 # cp /bin/cp /bin/rm 212 Then 'make clean world' as usual. 213 21420111222: 215 This update requires /etc/fstab having the new format. 216 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 220 fsck driver. 221 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. 227 22820111212: 229 After a successful "make world", issue the following commands: 230 # cd /dev 231 # MAKEDEV fbd 232 23320111109: 234 Switch to NetBSD passwd system. 235 236 You have to bootstrap pwd_mkdb: 237 # make clean includes elf-libraries 238 # make -C usr.sbin/pwd_mkdb install 239 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 243 useradd will work. 244 245 # make clean world 246 # cp etc/group /etc/group 247 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. 253 254 Once you're satisfied your new system works, remove the old 255 adduser, and rely exclusively on the new useradd and 256 master.passwd. 257 # rm /usr/bin/adduser 258 # mv /etc/shadow /etc/shadow.orig 259 260 pwdauth is updated so that current binaries (e.g. sshd) will 261 work with the new pw db. 262 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. 266 26720111109: 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. 271 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.) 276 27720110928: 278 Update your /usr/etc/daily and /etc/man.conf if you 279 want to fully enjoy the manpage fixes. 280 28120110817: 282 To use the new asynchronous version of VFS do: 283 # BUILDAVFS=yes make cleandepend world 284 285 To switch back to the normal VFS do: 286 # make cleandepend world 287 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 290 risk. 29120110722: 292 To install the new mkdep: 293 # cp /usr/bin/mkdep /usr/bin/ackmkdep 294 # make elf-libraries 295 # cd usr.bin/mkdep 296 # touch findcc.d mkdep.d .depend 297 # make install 298 29920110716: 300 To install libterminfo and terminfo database, you need 301 the new stat: 302 # cd /usr/src/usr.bin/stat 303 # make clean install 304 305 You must create a directory /usr/share/terminfo for terminfo database 306 to be installed. 307 # make -C etc install 308 309 Then make clean world as normal. 310 31120110708 312 * VFS and installed MFSes must be in sync before and after this change * 313 314 You must update the GNU headers. 315 # cd /usr/src 316 # make gnu-includes 317 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 321 # make install 322 # cd /usr/src/servers/vfs 323 # make install 324 # cd /usr/src/tools 325 # make hdboot 326 # shutdown -r now 327 32820110701: 329 # rm -rf /usr/include /usr/netbsd 330 # make etcfiles includes cleandepend depend gnu-includes 331 332 DOWNGRADING: 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. 340 341 This change moves 342 1. /usr/include to /usr/include.ack 343 2. /usr/netbsd/include to /usr/include 344 345 Reduce compiler cases to only two: 346 1. ack, a.out, minix headers (moved to /usr/include.ack), 347 minix libc 348 2. gcc/clang, elf, netbsd headers (moved to /usr/include), 349 netbsd libc (moved to /usr/lib) 350 351 So this obsoletes the /usr/netbsd hierarchy. 352 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. 358 35920110629: 360 Rebuild m4: 361 make -C usr.bin/m4 install 362 36320110629: 364 You must install clang. By default, it is used to build the 365 elf libraries and some userland utilities. 366 36720110628: 368 Since buildworld will also build the elf-libraries, you 369 must follow the process in 370 http://wiki.minix3.org/en/UsersGuide/ELFSwitch 371 37220110624: 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 380 381 To create the /usr/netbsd hierarchy: 382 # cd /usr/src 383 # umount /proc 384 # make etcfiles 385 # mount -e -t procfs none /proc 386 38720110225: 388 Create ddekit include dirs: 389 mkdir -p /usr/include/ddekit/minix 390 39120100921: 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.) 396 39720100914: 398 mkdir /proc 399 chmod 555 /proc 400 40120100827: 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. 407 40820100805: 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. 413 41420100802: 415 /usr/src/etc/system.conf updated to include ext2 file server: copy it 416 (or merge it) to /etc/system.conf. 417 41820100719: 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 422 42320100714: 424 mknod /dev/uds c 18 0 425 chmod 666 /dev/uds 426 42720100713: 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. 43420100705: 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 43920100630: 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 444 boot menu working. 44520100625: 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 45020100515: 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. 45520100512: 456 yacc and lex updated 457 # make includes 458 # cd commands/yacc 459 # make depend all install 460 # cd commands/lex 461 # LEX=flex make depend all install 46220100506: 463 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc. 46420100410: 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. 46720100408: 468 /usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc. 46920100318: 470 Gas2ack updates: Run 'make install' in commands/i386/gas2ack 47120100317: 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 47720100316: 478 /usr/man/man9 is required 479 # mkdir /usr/man/man9 48020100308: 481 Include directory reorganization: 482 # mv /usr/include/ibm /usr/include/i386 483 # ln -s /usr/include/i386 /usr/include/machine 484 Install(1) updates: 485 # cd commands/simple && make /bin/install 48620100303: 487 Gas2ack updates: Run 'make install' in commands/i386/gas2ack 48820100215: 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 493 End.a renamed: 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 49820091212: 499 /etc/drivers.conf has been renamed to /etc/system.conf. 500 user "service" has been added to password file /etc/passwd. 50120091006 (r5422): 502 OSS requires an improved make to be compiled; run "make install" 503 in /usr/src/commands/make before running "make world". 50420070212 (r2751): 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. 50820070118: 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. 51120061222: 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. 51620061222: 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. 520 # cd /usr/src 521 # make includes 522 # make libraries 523 # make cmds 524 # make depend 525 # cd /usr/src/tools 526 # make hdboot 527 # make install 528 # cd .. 529 # make install 530 Installing fails for boot. Reboot the system 531 # reboot -x 'unset image; boot' 532 Now install everything 533 # cd /usr/src 534 # make install 53520060818: 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 540 # binsizes big 541 # cd /usr/src/commands/flex-2.5.4 542 # sh build 543