What's new in MINIX 3.3.0
Sep 16, 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 MINIX 3.2.1 (Feb 22, 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 MINIX 3.2.0 (Feb 29, 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 MINIX 3.1.7 (Jun 17, 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 MINIX 3.1.6 (Feb 9, 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)