5acaa0814f
To use the new SD building script, Linux has to be configured with loop.max_part=15 on the command line (or set at module load time) to make the loopback device see the partitions. This commit removes a lot of differences between the ARM and x86 boot ramdisk and rc scripts. It changes the ARM build from running from ramdisk to requiring a full filesystem on the SD image and booting into it. . ramdisk: remove some arm-only utilities only used for running from the shell . remove ARM-only rc.arm, proto.arm.small, ttys and mylogin.sh boot-time ramdisk files . change kernel to add "arch" variable so userland knows what we're running on from sysenv . make ARM use the regular ramdisk rc file, changed to distinguish i386-only and ARM-only drivers; requires rootdevname to be set . change /etc/rc and /usr/etc/rc to start i386-only drivers only on i386 systems . change the kernel/arm to have a special case for the memory driver to load it higher so it can be bigger . add uEnv.txt, cmdline.txt and a for now highly linux-dependent SD preparation script arm_sdimage.sh to the git repository in releasetools/ Change-Id: I68910ba4e96ee80f7a12b65e48b5d39b43ca6397
571 lines
18 KiB
Text
571 lines
18 KiB
Text
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
|