8a3677def0
There where two reasons for needing root access while making ARM builds. The first reason was that we needed root permissions to create device nodes and assign permissions to files. The second reason we needed root was that we used loop mounted files to copy the build output to the file backed storage. The first problem is solved by building in unprivileged mode (adding -U) during compilation. The second problem is solved by using mcopy to put files on the fat partition and use the mkfs.mfs proto files to create MFS file system. Future work might be to replace this script by the netbsd makefs tool. Change-Id: Ibba61d4cad053f7c1ede26169d5214065a4939d8
582 lines
19 KiB
Text
582 lines
19 KiB
Text
20130422:
|
|
The ARM build no longer requires you to build as root user you
|
|
therefore need to wipe (or chmod) your build generated files
|
|
and start building using the -U option of build.sh.
|
|
|
|
20130312:
|
|
/bin/ksh was imported and needs to be added to your /etc/shells.
|
|
Run this command to add it:
|
|
|
|
# echo "/bin/ksh" >> /etc/shells
|
|
|
|
20130306:
|
|
For people building ARM images, the procedure has changed
|
|
a bit. You need a full FS to boot now. In short, you need
|
|
to use the new in-tree script to make a full SD image. See
|
|
http://wiki.minix3.org/en/DevelopersGuide/MinixOnARM
|
|
for details.
|
|
|
|
20130201:
|
|
Replace our native ln with NetBSD version.
|
|
|
|
As our native ln is a hard link to cp, simply overwriting ln with
|
|
the new version would cause mv, cp, etc to stop working.
|
|
|
|
Do this BEFORE a 'make build':
|
|
|
|
# rm /bin/ln
|
|
# cp /bin/cp /bin/ln
|
|
|
|
Then 'make build' as usual.
|
|
|
|
20130130:
|
|
With the shell update, and following update of 'test', some
|
|
modifications are needed in .profile and .ashrc.
|
|
If you use the defaults, simply execute the following for all
|
|
of your users:
|
|
|
|
# cp etc/ast/.ashrc ~/
|
|
# cp etc/ast/.profile ~/
|
|
|
|
20130114:
|
|
The terminfo update is also linked to the databases functions,
|
|
which means the tool used to generate the termcap entries has to
|
|
be rebuild with the new libraries before creating a valid
|
|
terminfo DB. To resolve this issue we have to do two (2) full
|
|
build of the system. The simplest is to do the following:
|
|
|
|
# make build && make build && reboot
|
|
|
|
20121207:
|
|
The join and lorder tools have been upgraded. Build them first:
|
|
|
|
# make -C usr.bin/lorder clean all install
|
|
# make -C usr.bin/join clean all install
|
|
# make -C usr.bin/tic clean all install
|
|
# make -C usr.bin/nbperf clean all install
|
|
|
|
Then do a "make build".
|
|
|
|
20121205:
|
|
Following the terminfo update, some new tools are now used during
|
|
the build. Execute the following to install them:
|
|
# make -C usr.bin/nbperf all install
|
|
# make -C usr.bin/lorder all install
|
|
# make -C usr.bin/join all install
|
|
# make -C usr.bin/tic all install
|
|
|
|
20121205:
|
|
The tsort tool has been also upgraded and is now also used during
|
|
the build:
|
|
# make -C usr.bin/tsort all install
|
|
# cp share/mk/* /usr/share/mk
|
|
|
|
20121205:
|
|
lorder requires a newer version of sort, so to ensure it is present
|
|
do the following:
|
|
# make -C usr.bin/sort clean all install
|
|
|
|
20121127:
|
|
/etc/mtab is now obsoleted by /proc/mounts. You need to create a
|
|
symlink:
|
|
|
|
# rm /etc/mtab
|
|
# ln -s /proc/mounts /etc/mtab
|
|
|
|
20121116:
|
|
To make the build system less verbose:
|
|
|
|
# cp /usr/src/etc/make.conf /etc
|
|
|
|
20121115:
|
|
Before your first native build you need to update /usr/share/mk.
|
|
# rm /usr/share/mk/*
|
|
# cp /usr/src/share/mk/* /usr/share/mk
|
|
|
|
With the update, it is now recommended to use the following make
|
|
targets :
|
|
- "build" (i.e., make build) instead of "world", which is now obsoleted.
|
|
|
|
There is some differences between make build and make world. namely:
|
|
- make build is NOT automatically followed by make etcforce.
|
|
- make build is by default preceded by a make clean, to prevent that
|
|
use the following command:
|
|
# make build MKUPDATE=yes
|
|
|
|
It is now possible to crosscompile minix on minix, if you have
|
|
not already followed the previous steps, you will need to do the
|
|
following before using the build.sh script:
|
|
# make etcforce
|
|
|
|
20120927:
|
|
Building a new boot image requires the current mkfs.mfs.
|
|
# make -C usr.sbin/mkfs.mfs clean all install
|
|
|
|
20120703:
|
|
The device manager(devman) is now started automatically during the
|
|
mount -a operation. As fstab is generated during installation it is
|
|
required to manually insert the following entry in fstab. Failing to
|
|
do so will result in the devmand daemon to be able to open the events
|
|
file in /sys.
|
|
|
|
none /sys devman rw,rslabel=devman 0 0
|
|
|
|
20120608:
|
|
New install and mk files require the following steps:
|
|
|
|
# cp /usr/src/share/mk/*.mk /usr/share/mk
|
|
# cd /usr/src
|
|
# make -C usr.bin/xinstall all
|
|
# cp usr.bin/xinstall/xinstall /usr/bin/install
|
|
# rm /bin/install
|
|
|
|
then do
|
|
# make clean world
|
|
|
|
20120510:
|
|
WARNING: the shared libraries major revision set to 0 will break
|
|
existing dynamically linked binaries if they exist.
|
|
|
|
There are two risks. One: existing binaries won't find the current
|
|
libraries; two: linking binaries with both majors present will link
|
|
them in twice. So the previous libraries have to be removed.
|
|
|
|
. re-build world statically first if necessary
|
|
. remove libraries from /lib and /usr/lib
|
|
. then build world
|
|
|
|
20120416:
|
|
Upgrade your clang to clang-2.9nb6 or clang-3.1nb3 to be able to
|
|
build shared libraries and dynamically linked executables. The
|
|
system will keep working without them, but a dynamic-capable
|
|
system will be a requirement soon.
|
|
|
|
20120413:
|
|
Boot loader menu now has an option to boot into single user mode. To
|
|
get the menu option do:
|
|
|
|
# cp /usr/src/etc/boot.cfg.default /etc
|
|
# update_bootcfg
|
|
|
|
20120402:
|
|
an installed genassym is required to build the kernel:
|
|
# make -C usr.bin/genassym install
|
|
|
|
20120328:
|
|
The boot loader now defaults to 115200 baud rate to make booting over
|
|
serial more pleasant. To install the new boot loader do
|
|
|
|
# cd /usr/src/sys
|
|
# make clean install
|
|
# updateboot
|
|
|
|
To boot over serial add the following to /etc/boot.cfg.local (create
|
|
the file if not present):
|
|
menu=Start latest serial MINIX 3:load_mods /boot/minix_latest/mod*;multiboot /boot/minix_latest/kernel rootdevname=c0d0p0s0 cttyline=0 cttybaud=115200
|
|
consdev=com0
|
|
|
|
To install the new boot configuration run
|
|
|
|
# update_bootcfg
|
|
|
|
20120306:
|
|
The base system only looks in /usr/pkg/compiler-rt/lib now, so
|
|
-L/usr/pkg/lib is gone.
|
|
Please make sure you have the latest compiler-rt package
|
|
installed.
|
|
|
|
20120214:
|
|
Compiling everything with clang (previous entry) depends on a
|
|
relatively new clang package. Please make sure you have at
|
|
least clang-2.9nb3 installed. The symptom of an old clang being
|
|
used is an assert(inited) firing, e.g. after rebuilding make.
|
|
|
|
20120214:
|
|
Full switch to clang/ELF. ack is no longer supported.
|
|
|
|
clang is the ELF-generating compiler in the base system, gcc is
|
|
available as a package.
|
|
|
|
To boot ELF-format images, either reinstall your whole system,
|
|
thereby getting the netbsd-based boot loader, or use the boot
|
|
monitor as documented at
|
|
http://wiki.minix3.org/en/UsersGuide/BootMonitor
|
|
|
|
Single copies of ELF boot files are also stored in /boot on
|
|
make hdboot as a boot monitor compatability measure. In short,
|
|
to boot the ELF image in /boot using the boot monitor,
|
|
do "mb=1" and "kernel=/boot/kernel", then "boot" in the boot
|
|
monitor.
|
|
|
|
Workaround for header file timestamps causing perpetual recompiles:
|
|
# find /usr/pkg -name '*.h' | xargs touch
|
|
|
|
Now that CC is clang instead of ack (cc), the depend files will
|
|
be out of date, so to make world, do:
|
|
# make cleandepend clean world
|
|
|
|
20120213
|
|
Replace VFS with AVFS
|
|
|
|
In case you were running AVFS by doing
|
|
'BUILDAVFS=yes make clean world', you now have to do a
|
|
'make clean cleandepend world' instead of a normal 'make clean world'.
|
|
|
|
20120202
|
|
Rename installboot to installboot_minix.
|
|
|
|
Do this BEFORE a 'make world':
|
|
# rm -f /usr/bin/installboot /usr/sbin/installboot
|
|
# make -C boot/installboot clean install
|
|
# make -C usr.sbin/installboot clean install
|
|
Then 'make clean world' as usual.
|
|
|
|
20120119:
|
|
Follow up to previous entry. The same problem also exists for
|
|
the man pages.
|
|
|
|
Do this BEFORE a 'make world':
|
|
# rm /usr/man/man1/rm.1
|
|
# cp /usr/man/man1/cp.1 /usr/man/man1/rm.1
|
|
Then 'make clean world' as usual.
|
|
|
|
20120112:
|
|
Replace our native rm and rmdir with NetBSD version.
|
|
|
|
As our native rm is a hard link to cp, simply overwriting rm with
|
|
the new version would cause mv, cp, ln, etc to stop working.
|
|
|
|
Do this BEFORE a 'make world':
|
|
# rm /bin/rm
|
|
# cp /bin/cp /bin/rm
|
|
Then 'make clean world' as usual.
|
|
|
|
20111222:
|
|
This update requires /etc/fstab having the new format.
|
|
|
|
The latest mkfs.mfs and fsck.mfs must be installed in
|
|
/sbin when building a new image, and booting with the new mfs,
|
|
and the new system rc script must be installed that invokes the new
|
|
fsck driver.
|
|
|
|
Do this BEFORE a 'make world':
|
|
# make clean etcfiles etcforce includes libraries
|
|
# make -C commands/mkfs.mfs clean install
|
|
# make -C commands/fsck.mfs clean install
|
|
Then 'make clean world' as usual.
|
|
|
|
20111212:
|
|
After a successful "make world", issue the following commands:
|
|
# cd /dev
|
|
# MAKEDEV fbd
|
|
|
|
20111109:
|
|
Switch to NetBSD passwd system.
|
|
|
|
You have to bootstrap pwd_mkdb:
|
|
# make clean includes elf-libraries
|
|
# make -C usr.sbin/pwd_mkdb install
|
|
|
|
Now build world. WARNING: this will blind your system to
|
|
/etc/shadow, making current user accounts vanish. Updating the
|
|
group file is necessary to add a 'users' group so the new stock
|
|
useradd will work.
|
|
|
|
# make clean world
|
|
# cp etc/group /etc/group
|
|
|
|
The new shadow file is /etc/master.passwd. Add your old user
|
|
accounts back with useradd(8), groups with groupadd(8), and
|
|
set a root pw with passwd(1) if you want. Use vipw(8) to edit
|
|
/etc/master.passwd if you want. See useradd(8) to get started
|
|
with the new pw format. Test your new system now by logging in.
|
|
|
|
Once you're satisfied your new system works, remove the old
|
|
adduser, and rely exclusively on the new useradd and
|
|
master.passwd.
|
|
# rm /usr/bin/adduser
|
|
# mv /etc/shadow /etc/shadow.orig
|
|
|
|
pwdauth is updated so that current binaries (e.g. sshd) will
|
|
work with the new pw db.
|
|
|
|
By default your new users are in the 'users' group. Add yourself
|
|
to the 'operator' group if you want to be able to su without
|
|
typing in the password.
|
|
|
|
20111109:
|
|
fstab format change. /etc/rc reads both formats for a while.
|
|
Please convert your /etc/fstab to the new format though as
|
|
the system will assume the new format in the future.
|
|
|
|
A helper script is in etc/. Example:
|
|
# sh etc/newfstab.sh /etc/fstab >newfstab
|
|
(Don't redirect to /etc/fstab directly as the shell will
|
|
truncate it before it can be read.)
|
|
|
|
20110928:
|
|
Update your /usr/etc/daily and /etc/man.conf if you
|
|
want to fully enjoy the manpage fixes.
|
|
|
|
20110817:
|
|
To use the new asynchronous version of VFS do:
|
|
# BUILDAVFS=yes make cleandepend world
|
|
|
|
To switch back to the normal VFS do:
|
|
# make cleandepend world
|
|
|
|
By default the old VFS and PFS are built and included in the boot
|
|
image. AVFS is a work in progress and not yet mature. Use at your own
|
|
risk.
|
|
20110722:
|
|
To install the new mkdep:
|
|
# cp /usr/bin/mkdep /usr/bin/ackmkdep
|
|
# make elf-libraries
|
|
# cd usr.bin/mkdep
|
|
# touch findcc.d mkdep.d .depend
|
|
# make install
|
|
|
|
20110716:
|
|
To install libterminfo and terminfo database, you need
|
|
the new stat:
|
|
# cd /usr/src/usr.bin/stat
|
|
# make clean install
|
|
|
|
You must create a directory /usr/share/terminfo for terminfo database
|
|
to be installed.
|
|
# make -C etc install
|
|
|
|
Then make clean world as normal.
|
|
|
|
20110708
|
|
* VFS and installed MFSes must be in sync before and after this change *
|
|
|
|
You must update the GNU headers.
|
|
# cd /usr/src
|
|
# make gnu-includes
|
|
|
|
You must rebuild both MFS and VFS (including those one in the image).
|
|
Either make world or do the following:
|
|
# cd /usr/src/servers/mfs
|
|
# make install
|
|
# cd /usr/src/servers/vfs
|
|
# make install
|
|
# cd /usr/src/tools
|
|
# make hdboot
|
|
# shutdown -r now
|
|
|
|
20110701:
|
|
# rm -rf /usr/include /usr/netbsd
|
|
# make etcfiles includes cleandepend depend gnu-includes
|
|
|
|
DOWNGRADING:
|
|
Important: this automatically updates your /usr/lib/descr,
|
|
something you will have to revert manually if you
|
|
want to go back a revision! Previous to this
|
|
revision, you do this by:
|
|
# cp commands/acd/acd.descr /usr/lib/descr
|
|
Repeating the above commands to make sure your /usr/include
|
|
is re-acked is probably a good idea too for going back revisions.
|
|
|
|
This change moves
|
|
1. /usr/include to /usr/include.ack
|
|
2. /usr/netbsd/include to /usr/include
|
|
|
|
Reduce compiler cases to only two:
|
|
1. ack, a.out, minix headers (moved to /usr/include.ack),
|
|
minix libc
|
|
2. gcc/clang, elf, netbsd headers (moved to /usr/include),
|
|
netbsd libc (moved to /usr/lib)
|
|
|
|
So this obsoletes the /usr/netbsd hierarchy.
|
|
|
|
There are no specific UPDATING instructions, but you should know
|
|
that starting with this version, gcc/clang use the netbsd libc and
|
|
headers system exclusively, and those files are in the standard
|
|
locations now. It's the first step to switching completely and
|
|
simplifying building.
|
|
|
|
20110629:
|
|
Rebuild m4:
|
|
make -C usr.bin/m4 install
|
|
|
|
20110629:
|
|
You must install clang. By default, it is used to build the
|
|
elf libraries and some userland utilities.
|
|
|
|
20110628:
|
|
Since buildworld will also build the elf-libraries, you
|
|
must follow the process in
|
|
http://wiki.minix3.org/en/UsersGuide/ELFSwitch
|
|
|
|
20110624:
|
|
(Next release bumped to MINIX 3.2.0.)
|
|
ELF support in the base system. /usr/lib libraries
|
|
will be in ELF format once you upgrade.
|
|
These were know as 'gcc format', but now more properly refered
|
|
to as 'elf format,' as they are shared between gcc and clang.
|
|
To start producing ELF, please see:
|
|
http://wiki.minix3.org/en/UsersGuide/ELFSwitch
|
|
|
|
To create the /usr/netbsd hierarchy:
|
|
# cd /usr/src
|
|
# umount /proc
|
|
# make etcfiles
|
|
# mount -e -t procfs none /proc
|
|
|
|
20110225:
|
|
Create ddekit include dirs:
|
|
mkdir -p /usr/include/ddekit/minix
|
|
|
|
20100921:
|
|
gcc format libraries are created in /usr/lib now,
|
|
so throw out /usr/gnu/lib/ if you want to make sure you
|
|
don't pick up the old ones.
|
|
(with pkgsrc and this, all of /usr/gnu is obsolete now.)
|
|
|
|
20100914:
|
|
mkdir /proc
|
|
chmod 555 /proc
|
|
|
|
20100827:
|
|
From now on, the rc scripts, recovery scripts and system.conf in /etc
|
|
and /usr/etc are updated automatically by make world. If you want to
|
|
change them, do so in the source tree. If you make changes to your
|
|
settings in /etc and /usr/etc, merge them into the the source tree
|
|
before issuing a make world.
|
|
|
|
20100805:
|
|
mkfs and fsck have been renamed to mkfs.mfs and fsck.mfs, respectively.
|
|
Moreover, they have been moved to /sbin, which is by default not in
|
|
PATH. Edit your .ashrc (or equivalent) to also include /sbin in PATH.
|
|
Also, first issue a 'make commands' before building world.
|
|
|
|
20100802:
|
|
/usr/src/etc/system.conf updated to include ext2 file server: copy it
|
|
(or merge it) to /etc/system.conf.
|
|
|
|
20100719:
|
|
If you installed using a 3.1.6 image (or earlier) and haven't updated
|
|
the boot monitor since r6246 you need to do so now:
|
|
cd /usr/src/boot; make install; sh updateboot.sh
|
|
|
|
20100714:
|
|
mknod /dev/uds c 18 0
|
|
chmod 666 /dev/uds
|
|
|
|
20100713:
|
|
/usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
|
|
/usr/src/etc/system.conf updated to include boot sys services: copy
|
|
it (or merge it) to /etc/system.conf.
|
|
*** WARNING ***: this change breaks binary compatibility with
|
|
old images. Use only newly compiled images (make clean world
|
|
the first time) or download and install the latest ISO.
|
|
20100705:
|
|
/usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
|
|
/usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
|
|
Perform some cleanup (optional):
|
|
# rm -f /sbin/tty /sbin/log
|
|
20100630:
|
|
protocol change between service and rs: be sure to compile commands
|
|
together with the system image and don't use the new userspace with
|
|
an old image (or vice versa); it is recommended to replace
|
|
/boot/image_big with the newly compiled image to keep option 1 in the
|
|
boot menu working.
|
|
20100625:
|
|
/etc/mk has been moved to /usr/share/mk. You will need to
|
|
create /usr/share/mk manually.
|
|
# cp -r /usr/src/share/mk /usr/share/
|
|
# cd /usr/src; make -m /usr/share/mk world
|
|
20100515:
|
|
/usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
|
|
/etc/inet.conf is now line-based; if you have hand-edited this file
|
|
before, then make sure that you do not have configurations in there
|
|
that span multiple lines.
|
|
20100512:
|
|
yacc and lex updated
|
|
# make includes
|
|
# cd commands/yacc
|
|
# make depend all install
|
|
# cd commands/lex
|
|
# LEX=flex make depend all install
|
|
20100506:
|
|
/usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
|
|
20100410:
|
|
/usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
|
|
/usr/src/etc/rc updated: copy it (or merge it) to /etc/rc.
|
|
20100408:
|
|
/usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
|
|
20100318:
|
|
Gas2ack updates: Run 'make install' in commands/i386/gas2ack
|
|
20100317:
|
|
/usr/src/etc/system.conf updated to ignore default kernel calls: copy
|
|
it (or merge it) to /etc/system.conf.
|
|
The hello driver (/dev/hello) added to the distribution:
|
|
# cd /usr/src/commands/scripts && make clean install
|
|
# cd /dev && MAKEDEV hello
|
|
20100316:
|
|
/usr/man/man9 is required
|
|
# mkdir /usr/man/man9
|
|
20100308:
|
|
Include directory reorganization:
|
|
# mv /usr/include/ibm /usr/include/i386
|
|
# ln -s /usr/include/i386 /usr/include/machine
|
|
Install(1) updates:
|
|
# cd commands/simple && make /bin/install
|
|
20100303:
|
|
Gas2ack updates: Run 'make install' in commands/i386/gas2ack
|
|
20100215:
|
|
Make(1) has been replaced: Run 'make install' in commands/make
|
|
Mkdep updates: Copy commands/scripts/mkdep.sh to /usr/bin/mkdep
|
|
Make(1) needs mkfiles: Copy files in etc/mk to /etc/mk
|
|
ACK update: Copy commands/i386/acd.descr to /usr/lib/descr
|
|
End.a renamed:
|
|
-Copy /usr/lib/i86/end.a to /usr/lib/i86/libend.a
|
|
-Copy /usr/lib/i386/end.a to /usr/lib/i386/libend.a
|
|
-Copy /usr/gnu/lib/end.a to /usr/gnu/lib/libend.a
|
|
Asmconv updates: Run 'make install' in commands/i386/asmconv
|
|
20091212:
|
|
/etc/drivers.conf has been renamed to /etc/system.conf.
|
|
user "service" has been added to password file /etc/passwd.
|
|
20091006 (r5422):
|
|
OSS requires an improved make to be compiled; run "make install"
|
|
in /usr/src/commands/make before running "make world".
|
|
20070212 (r2751):
|
|
mkfs needs more memory to make an image; chmem it or do
|
|
# touch mkfs.c ; make /usr/bin/mkfs
|
|
in /usr/src/commands/simple.
|
|
20070118:
|
|
drivers.conf has been updated to include an ACL for mfs. it has
|
|
to be installed before rebooting after an update of the mount command.
|
|
20061222:
|
|
The archictecture-dependent/-independent split needs ARCH=<arch>
|
|
in /etc/make.conf, included by some Makefiles and sourced by
|
|
some shell scripts. To install it, type 'make install' in
|
|
src/etc, or simply copy the file over.
|
|
20061222:
|
|
Install binaries in the right order because the new readdir
|
|
implementation and the new mount program are incompatible
|
|
with older kernels and the new kernels require the new mount.
|
|
# cd /usr/src
|
|
# make includes
|
|
# make libraries
|
|
# make cmds
|
|
# make depend
|
|
# cd /usr/src/tools
|
|
# make hdboot
|
|
# make install
|
|
# cd ..
|
|
# make install
|
|
Installing fails for boot. Reboot the system
|
|
# reboot -x 'unset image; boot'
|
|
Now install everything
|
|
# cd /usr/src
|
|
# make install
|
|
20060818:
|
|
You need flex in your $PATH, which has become part of the base
|
|
system. This needs bigger binaries.
|
|
If you don't have flex yet, you can compile it first by doing:
|
|
# cp /usr/src/etc/binary_sizes* /etc
|
|
# binsizes big
|
|
# cd /usr/src/commands/flex-2.5.4
|
|
# sh build
|