MINIX Changelog

New in version 3.3.0

September 16th, 2014
  • The system is based on a tiny (12,700 lines of code) microkernel
  • The microkernel handles interrupts and message passing and is the only code running in kernel mode.
  • The rest of the operating system runs as a collection of isolated, protected, user-mode processes
  • Each device driver is a separate user-mode process isolated by the MMU hardware
  • If a driver crashes, the system automatically restarts it, with running applications not even noticing
  • This means that MINIX 3.3.0 is self-healing
  • Userland is largely compatible with NetBSD and runs thousands of NetBSD packages
  • By combining an innovative self-healing research OS with NetBSD userland, we got the best of both worlds
  • Both the clang/LLVM and gcc compilers are available, as well as perl, python, etc.
  • MINIX 3.3.0 is available for both the x86 and ARM Cortex A8 architectures, making it ideal for embedded systems
  • Tools for cross compiling MINIX 3 for the ARM on Linux are provided
  • Ports are available now for the BeagleBoard XM, BeagleBone white, and BeagleBone black
  • Extensive documentation is available in the MINIX 3 wiki
  • The code has been improved over MINIX 3.2.1 in hundreds of ways, leading to a cleaner and more reliable system

New in version 3.2.1 (February 22nd, 2013)

  • Development:
  • Support for dynamically linked executables, also build shared versions of base system libraries
  • http://wiki.minix3.org/en/UsersGuide/UsingSharedLibraries.
  • Remove the use of Intel segments altogether, giving a performance boost while context switching. Rely exclusively on page tables. (more info)
  • Added support for SYSENTER/SYSCALL based system kernel calls, a significant performance improvement. (more info)
  • Full new clean updated NetBSD build system import. build.sh is supported, allowing crossbuilding MINIX 3.
  • http://wiki.minix3.org/en/DevelopersGuide/Crosscompiling
  • Imported or upgraded many userland utilities and libraries from NetBSD: libc, lorder, join, mtree, tsort, cksum, kill, xinstall, du, libutil, tic, postinstall, flex, zlib, bsdtar, ls, sort, cat, echo, pax, file, mktemp, libc,csu, curses, byacc, tput, test, ln, nvi,ctags, infocomp, nbperf, make, m4, bzip2, libcrypt, printf, passwd, make, ed, nawk, expr, pwd.
  • DDEKIT support (support for USB keyboards, mice and mass storage).
  • http://wiki.minix3.org/en/DdeKitUsb
  • Generalization of the TTY driver.
  • Small and large cleanup represented by retiring MINIXisms such as nonsymbolic rootdev, dev2name, checkhier, badblocks, readall, BIOS_SEG and umap_bios, bios_wini, C macros as _ANSI, _CONST, _VOLATILE, _SIZET, _ARGS, _VOID, PUBLIC, PRIVATE and FORWARD, _PROTOTYPE.
  • VM: Generalized munmap (boot time ramdisk is now freed, saving memory).
  • VFS interaction with drivers is fully asynchronous, making VFS immune to uncooperative drivers. (more info)
  • http://en.wikipedia.org/wiki/Kernel_Normal_Form
  • Exec performance improvement and generalization. Reduce copying, and kernel, RS, VFS and VM all use the same executable parsing code.
  • Some more abstraction in VM to support future improvements.
  • Implemented dynamic mtab support and the mount -a command
  • Generalized the file system cache. (more info)
  • Changes:
  • Make world was replaced with make build
  • Dropped support for a.out binaries
  • Drivers, FS:
  • E1000 add support for 82545EM
  • EXT2 support improvements. (more info)
  • Virtio: virtio-blk, virtio-net drivers
  • How to use: http://wiki.minix3.org/en/UsersGuide/RunningOnQemu
  • Support for AHCI
  • Add VBFS: VirtualBox Shared Folder File System
  • rtl8169: add support for RTL8101E family
  • Keymaps:
  • Portuguese keymap
  • Brazilian keymap
  • Userland:
  • Rewritten sprofalyze in C for better performance.

New in version 3.2.0 (February 29th, 2012)

  • Major Features:
  • Clang is the default compiler (GCC is also supported)
  • NetBSD C library
  • ELF is the default executable format
  • Asynchronous, multithreaded virtual filesystem (VFS) server
  • Experimental SMP support
  • FUSE support (GSOC project by Evgeniy Ivanov)
  • NetBSD password file format (part of GSOC project by Vivek Prakash)
  • FS types infrastructure:
  • Use a proper /etc/fstab file
  • Clean/unclean FS flag in MFS
  • Full base system ext2 integration: newfs, fsck, can install on ext2
  • Do proper `fsck -p` on each boot for all fstab-listed filesystems
  • NetBSD bootloader
  • Smaller boot images (using gzip)
  • ProcFS: /proc file system
  • Multithreading and NCQ support in the AHCI driver
  • Debugging Improvements
  • GDB and core dump support (GSOC project by Adriana Szekeres)
  • Block device tracing
  • New NetBSD userland utilities (part of them as a GSOC project by Vivek Prakash)
  • ext2 fsck&mkfs, gzip, m4, man&tools, mkdep, mkdir, mkfifo, mktemp, rm, rmdir, tic, uniq
  • libcurses, libcrypt, libprop, libterminfo, libutil
  • bzip2, date, indent, mdocml (mandoc), sed, zoneinfo ports
  • Better reliability
  • Transparent recovery from block device driver crashes in file systems
  • Transparent retry upon failing block device I/O in file systems
  • New Faulty Block Device fault injection driver
  • Servers and drivers run as unprivileged users
  • Fix all (potential) bugs found by Clang's more elaborate warnings
  • Better virtualization support
  • Added libvassert, to enable easier support for VMWare VAssert
  • New VirtualBox time sync driver
  • Other important differences:
  • The MINIX project now uses git as its version-control system
  • Known Issues:
  • VirtualBox: Minix cannot be installed w/o hardware acceleration support (VT-x, AMD-V)
  • Workaround: See UsersGuide/RunningMinixOnVirtualBox
  • Build warnings: Clang has much better diagnostics than ACK, so clang reports more warnings on the MINIX codebase. These warnings are being fixed over time.
  • Clang performance: On MINIX, clang builds more slowly than GCC. We are working on this. In the meantime, you have the option to build MINIX with GCC (CC=gcc).

New in version 3.1.7 (June 17th, 2010)

  • Userspace scheduling and a scheduling server
  • Proper support for multiple ethernet cards of the same type
  • Bugfixes (such as workaround to run on recent KVM)
  • Debug features ("verbose" boot monitor variable, access to debug registers DR0-DR7 in kernel)
  • Boot monitor allows loading images > 16 MB
  • Root partition size increased to 64MB (and setup script can now more or less safely deal with root partitions with non-default sizes)
  • Buildsystem support for building MINIX with GCC
  • Source tree reorganization/cleanup
  • New ports: Git, GCC updated to version 4.4.3
  • Secondary FS cache layer in VM that uses all available memory, reducing I/O wait time a lot

New in version 3.1.6 (February 9th, 2010)

  • Major Features:
  • New drivers: Atheros L2, Intel E1000, Realtek 8169, DEC Tulip
  • VirtualPC Network Support (DEC Tulip)
  • PipeFS - removed pipe handling from filesystem drivers
  • HGFS - support for mounting VMware shared folders as file system
  • FPU support
  • System Event Framework (SEF)
  • Experimental APIC support (disabled by default)
  • More ports: more recent QEMU, BSD utilities, Benchmarks
  • Known Issues:
  • VirtualBox 3.1 cannot boot Minix. Please use VirtualBox 3.0 for now.
  • Qemu/KVM 0.12 cannot boot Minix. Please use Qemu/KVM 0.11 for now.
  • VirtualBox: Minix 3.1.6 cannot be installed w/o hardware acceleration support (VT-x, AMD-V)