Release Notes of MINIX 3.1.3
MINIX 3.1.3 was released friday, april 13th 2007. On 8 june 2007, 3.1.3a, containing some fixes to 3.1.3, was released.
Bugs Fixed in 3.1.3a
Found after release time and fixed in 3.1.3a:
Known at release time, and will be corrected in the future:
- The interface between VFS and its filesystems is
certain to change when code cleanup of VFS/MFS is
- 4 MFS (filesystem) processes are started, all the same size as the
old FS, of which one is not used after initial boot.
So this release uses up (and wastes) much more memory than
the previous release. This will be corrected in the future.
- The AMD LANCE driver has to be loaded below 16MB. Currently
there is no way to indicate this to the system; the only way is to
have enough space under 16MB at the time it's being loaded.
Therefore, when using AMD LANCE, you have to select a 'small'
MINIX making 2 MFS processes 500k instead of 4MB.
- Core dumps are broken.
Please report other bugs
If you find any not-yet reported
bugs in this release, please file a bug at
the MINIX gforge bug tracker.
Changes in MINIX 3.1.3 since 3.1.2a
We've switched from CVS to
Subversion on gforge. For access to the SVN repository,
The below summarizes the most significant changes, roughly
in order of significance. SVN
has a complete changelog.
Significant visible changes
- 64-bit file offsets allowing >4GB filesystems.
- VFS implementation by Balasz Gerofi.
- System statistical and call profiling by Rogier Meurs.
- doc/UPDATING in the svn repository
documents things to look out for when
updating from source.
- Import of zoneinfo system, so abbreviations like TZ=CET and
such can be used, fixing a bug in the previous daylight savings
time code, found by Al Woodhull.
Significant internal changes
- Infrastructure to control which drivers can
call which kernel calls, and register which which IRQ's and
access which I/O ports. Full support from the PCI server to
automate this to a large extent. Special cases and other
configuration in /etc/drivers.conf.
- Introduced 'safecopies', a restricted form of
the MINIX copying functions that requires explicit permission
from the target before copying happens. Normal device drivers now
don't need physcopies/vircopies any more, so they can be denied
these calls. Also, change fs/driver interface and inet/driver
interfaces to use safecopies.
- PM as been made non-blocking, doing asynchronous requests
to FS (now VFS) when it has to be updated on something. This
is mainly significant for device driver recovery.
- Architecture dependent- and independent split in
kernel source tree, (accomodating currently-defunct PPC port by
Architecture-independent code is in /usr/src/kernel/*.[ch],
architecture-dependent code is in /usr/src/kernel/ARCH/.
- Interface with RS is based on labels, instead of pids.
- New boot procedure. First-stage booting now happens
from a ramdisk image that is compiled into the memory driver.
Drivers for the root device are started and the actual root
device is mounted from there. This makes the system need
less boot-specific code in e.g. FS, needing no drivers compiled
into the image, and makes it more generic.
- Allow more than 32 fd's per process (OPEN_MAX).
- All 3rd-party ack libraries go into /usr/local/lib/ack, and
3rd-party gcc libraries go into /usr/local/lib/gcc.
- new CMOS driver that runs once on boot, instead of remaining
active; also can be invoked again afterwards to update the
- off_t is signed now.
- Introduced RTS_SET/RTS_UNSET macros, making kernel code
simpler, and reducing code (logic) duplication.
There are many small bugfixes, probably not worth listing all here. See
the 3.1.2a-3.1.3 changelog for a complete
- Some drivers (TTY) still sent REVIVE messages, causing
a deadlock bug with FS. (REVIVE is totally gone now.)
- Various bugs in at_wini causing odd behaviour on some
systems; not initializing word 6 in ATAPI SCSI_READ10 for instance.
- fix a race condition between CLOCK and SYSTEM when CLOCK
becomes ready (due to an interrupt) while SYSTEM is running
- Start multiple at_wini's for systems with more than two
- Fix wait()/waitpid() hanging forever on
- Fix race condition when runnable processes get a signal;
signal stack location can be wrong
- strcasecmp() and strncasecmp() replaced by BSD library
version due to a bug.
- If sys_privctl() was invoked, the s_flags field for
user processes would be clobbered, making them un-PREEMPTIBLE.