minix/docs/UPDATING

572 lines
18 KiB
Text
Raw Normal View History

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
2012-11-27 18:36:53 +01:00
20121127:
/etc/mtab is now obsoleted by /proc/mounts. You need to create a
symlink:
# rm /etc/mtab
# ln -s /proc/mounts /etc/mtab
2012-11-16 18:50:56 +01:00
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
2012-04-02 16:32:32 +02:00
20120402:
an installed genassym is required to build the kernel:
# make -C usr.bin/genassym install
2012-03-27 17:09:37 +02:00
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
2012-02-13 16:28:04 +01:00
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:
2012-01-08 17:34:46 +01:00
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':
2012-01-08 16:56:31 +01:00
# 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.
2011-07-22 17:28:27 +02:00
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.
2011-06-29 00:17:35 +02:00
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
2011-02-27 00:01:27 +01:00
20110225:
Create ddekit include dirs:
mkdir -p /usr/include/ddekit/minix
2010-09-21 14:46:55 +02:00
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.)
2010-09-14 23:27:31 +02:00
20100914:
mkdir /proc
chmod 555 /proc
2010-08-27 12:09:06 +02:00
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.
2010-08-05 17:11:10 +02:00
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.
2010-07-20 09:52:46 +02:00
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
2010-07-20 09:52:55 +02:00
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.
2010-06-26 22:33:57 +02:00
# cp -r /usr/src/share/mk /usr/share/
# cd /usr/src; make -m /usr/share/mk world
This patch switches the MINIX3 ethernet driver stack from a port-based model to an instance-based model. Each ethernet driver instance is now responsible for exactly one network interface card. The port field in /etc/inet.conf now acts as an instance field instead. This patch also updates the data link protocol. This update: - eliminates the concept of ports entirely; - eliminates DL_GETNAME entirely; - standardizes on using m_source for IPC and DL_ENDPT for safecopies; - removes error codes from TASK/STAT replies, as they were unused; - removes a number of other old or unused fields; - names and renames a few other fields. All ethernet drivers have been changed to: - conform to the new protocol, and exactly that; - take on an instance number based on a given "instance" argument; - skip that number of PCI devices in probe iterations; - use config tables and environment variables based on that number; - no longer be limited to a predefined maximum of cards in any way; - get rid of any leftover non-safecopy support and other ancient junk; - have a correct banner protocol figure, or none at all. Other changes: * Inet.conf is now taken to be line-based, and supports #-comments. No existing installations are expected to be affected by this. * A new, select-based asynchio library replaces the old one. Kindly contributed by Kees J. Bot. * Inet now supports use of select() on IP devices. Combined, the last two changes together speed up dhcpd considerably in the presence of multiple interfaces. * A small bug has been fixed in nonamed.
2010-05-18 00:22:53 +02:00
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
2010-05-07 00:18:21 +02:00
20100506:
/usr/src/etc/usr/rc updated: copy it (or merge it) to /usr/etc/rc.
2010-04-12 19:56:07 +02:00
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.
Driver refactory for live update and crash recovery. SYSLIB CHANGES: - DS calls to publish / retrieve labels consider endpoints instead of u32_t. VFS CHANGES: - mapdriver() only adds an entry in the dmap table in VFS. - dev_up() is only executed upon reception of a driver up event. INET CHANGES: - INET no longer searches for existing drivers instances at startup. - A newtwork driver is (re)initialized upon reception of a driver up event. - Networking startup is now race-free by design. No need to waste 5 seconds at startup any more. DRIVER CHANGES: - Every driver publishes driver up events when starting for the first time or in case of restart when recovery actions must be taken in the upper layers. - Driver up events are published by drivers through DS. - For regular drivers, VFS is normally the only subscriber, but not necessarily. For instance, when the filter driver is in use, it must subscribe to driver up events to initiate recovery. - For network drivers, inet is the only subscriber for now. - Every VFS driver is statically linked with libdriver, every network driver is statically linked with libnetdriver. DRIVER LIBRARIES CHANGES: - Libdriver is extended to provide generic receive() and ds_publish() interfaces for VFS drivers. - driver_receive() is a wrapper for sef_receive() also used in driver_task() to discard spurious messages that were meant to be delivered to a previous version of the driver. - driver_receive_mq() is the same as driver_receive() but integrates support for queued messages. - driver_announce() publishes a driver up event for VFS drivers and marks the driver as initialized and expecting a DEV_OPEN message. - Libnetdriver is introduced to provide similar receive() and ds_publish() interfaces for network drivers (netdriver_announce() and netdriver_receive()). - Network drivers all support live update with no state transfer now. KERNEL CHANGES: - Added kernel call statectl for state management. Used by driver_announce() to unblock eventual callers sendrecing to the driver.
2010-04-08 15:41:35 +02:00
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
2010-03-24 14:41:38 +01:00
# 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.
2006-12-22 14:36:18 +01:00
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