How Minix compares against NetBSD

368 views
Skip to first unread message

Bruno Melo

unread,
Jan 17, 2017, 5:55:49 PM1/17/17
to minix3
Hi people,

I like to study different implementation of the same software concept, that's why I loved when Tanenbaum gave the talk "A Reimplementation of NetBSD Based on a Microkernel" because I like to see one operating systems being implemented on a different kernel architecture.

So I gave my look at MINIX3 sources and I'm seeing all the userland were replaced by NetBSD userland and they are still being added in Minix base. I have seen many code from NetBSD kernel too, but here is my question: Minix is a new kernel for NetBSD or it is the NetBSD kernel implemented as microkernel? In first case I mean Minix is a different kernel replacing the traditional NetBSD one, in second case I mean Minix is the NetBSD kernel (most kernel code like scheduler, memory management, etc) modified to be a microkernel.

Thanks for the answer.

Jean-Baptiste Boric

unread,
Jan 18, 2017, 5:56:25 AM1/18/17
to minix3
Hi,

From what I've gathered hacking the MINIX 3 source code, it's... not exactly straightforward to answer. Here's my take on it:

MINIX 3's kernel is not a new kernel for NetBSD since it's not a drop-in replacement, as you can't run NetBSD binaries on it due to ABI mismatch and there's no ABI compatibility layer. It's also not the NetBSD kernel implemented as a microkernel since the microkernel and associated services and drivers are homegrown.

What happens is that the NetBSD kernel calls are shimmed at the source code level in the lowest layers of libc and converted to appropriate MINIX 3 kernel calls. So a pedantic would probably say that MINIX 3 is "a source code-level reimplementation of NetBSD's API based on a Microkernel". Which means we're mostly source code compatible with NetBSD's POSIX userland.

If I ever manage to make NetBSD's RUMP do useful things on MINIX 3, the answer is going to be far more fuzzy. RUMP is a mechanism to run parts of the NetBSD kernel (namely all the drivers, file systems and networking) pretty much anywhere, but it's not a kernel by itself. The anykernel concept behind RUMP is likely to interest you in the opposite sense : different software of the same implementation. If that sounded strange, wait until you've read Antti Kantee's rumpkernel book or seen his talks on the subject.
Reply all
Reply to author
Forward
0 new messages