Beastie Meets Raccoon: MINIX 3 as a BSD

MINIX 3 has imported a significant amount of userland BSD code. The trend began several years ago, but the pace has quickened markedly. We have already imported NetBSD’s buildsystem, NetBSD’s C library, the pkgsrc package management infrastructure, and various userland utilities from NetBSD and FreeBSD. We are currently in the process of porting a full NetBSD userland as well as puffs for increased filesystem support. Though not technically BSD code, we have adopted clang/LLVM as our default toolchain, and we are working to adopt elftoolchain as a binutils replacement. When MINIX 3 was originally conceived, the goal was to create a robust multiserver operating system that maintains POSIX compatibility. We leveraged our multiserver architecture in which most OS code runs in separate usermode processes to provide new functionality, such as driver isolation and restartability. Now, we would like to push farther than just POSIX compatibility and provide a system that looks much like a BSD from a user’s perspective. This paper serves as a progress report on our ongoing work turning MINIX 3 into a BSD. We have a long way to go before MINIX implements all BSD functionality, but we have a good start. We will continue to pull in BSD code, and we have identified future opportunities to pull in driver code and kernel components from BSD. This will serve to enable our vision of the best of both worlds: isolation and restartability features unique to Minix combined with the well-maintained, real-world-hardened system code for drivers, filesystems, userland, and other OS code, of a modern BSD OS.

[1]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[2]  Antti Kantee,et al.  Rump File Systems: Kernel Code Reborn , 2009, USENIX Annual Technical Conference.

[3]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[4]  Antti Kantee puffs-Pass-to-Userspace Framework File System , 2007 .

[5]  Herbert Bos,et al.  Reorganizing UNIX for Reliability , 2006, Asia-Pacific Computer Systems Architecture Conference.

[6]  Herbert Bos,et al.  MINIX 3: a highly reliable, self-repairing operating system , 2006, OPSR.

[7]  Herbert Bos,et al.  Failure Resilience for Device Drivers , 2007, 37th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN'07).

[8]  Herbert Bos,et al.  Fault isolation for device drivers , 2009, 2009 IEEE/IFIP International Conference on Dependable Systems & Networks.

[9]  Antti Kantee ReFUSE : Userspace FUSE Reimplementation Using puffs , 2007 .

[10]  Herbert Bos,et al.  Can we make operating systems reliable and secure? , 2006, Computer.

[11]  Andrew S. Tanenbaum,et al.  A practical tool kit for making portable compilers , 1983, Commun. ACM.