User Tools

Site Tools


MINIX 3 and Google Summer of Code 2017

This year, MINIX 3 is participating in Google Summer of Code under the umbrella of the Microkernel Devroom confederation. This page provides a preliminary list of student projects and mentors. Right now, this page is preliminary: it is neither complete nor necessarily accurate. If you are a student interested in taking up one of the GSoC projects listed below, please contact mentors as appropriate. More instructions will follow soon. If you would like to sign up as a MINIX 3 mentor or make changes to this page, please coordinate with David van Moolenbroek.

Project: MINIX 3 and embedded ARM platforms

Mentor: Michael Schloh von Bennewitz

MINIX 3 aims to be suitable for use on the high end of embedded ARM platforms. Important steps have been made in that direction, but there is much more work to be done. In this project, a concrete goal in that direction will be arranged together with the student, which could range from porting MINIX 3 to a board similar to those supported already, to implementing drivers to support for example Serial Peripheral Interface (SPI) and/or Controller Area Network (CAN) bus devices.

Project: Porting MINIX 3 to new ARM board vendors

Mentor: Jean-Baptiste Boric

The MINIX 3 ARM port is currently hard-coded to only support the Beagle family of boards. Eventually we will need to support new boards from other vendors in order to expand our horizons. Tasks include among others bootstrapping MINIX 3 on new ARM platforms, writing lots of device drivers, adding flat device tree and multi-vendor support, removing hard-coded Beagle boards assumptions…

Any ARM board is a potential candidate, but the following are especially wanted:

  • Raspberry Pi 2/3: a bare-bones proof of concept port exists, but there is a lot of work to do before it can be merged and reach feature parity with the Beagles
  • QEMU's ARM virt: most ARM board have a fixed hardware configuration and are not suited for heavy-duty tasks like bulk compilation of pkgsrc packages, so there is a need for a highly modular and scalable ARM platform

Completing a port can be a long endeavor spanning several months, so a complete port supporting every last feature of a given board is not expected.

Project: rump

Mentor: Jean-Baptiste Boric

The rump anykernel essentially turns large parts of the NetBSD kernel (notably drivers, file systems and network stack) into portable, reusable components that can run anywhere. Adding rump support to MINIX would drastically boost the number of file systems and hardware peripherals supported by the operating system, vastly improving its usability on physical hardware along with tons of utilities like fs-utils or the rump server.

It has been proven that the rump components themselves will compile with little to no modification inside the MINIX tree, but there is no suitable hypercall implementation to build rump programs in user-space or glue code to run them inside the service or driver layer. We basically have a big heap of libraries without the needed foundations to make use of them.

Note: this is a really, really tough project for students looking for a really, really tough challenge. When in doubt, consider applying for another project.

soc/2017/start.txt · Last modified: 2017/03/15 14:26 by jeanbaptisteboric