Google just announced the Google Summer of code students for 2011 and I wanted to take this as an opportunity to briefly introduce our students and their projects. We had 30 students applying for Xen projects: for some projects we had up to 5 students competing with each other. This made it hard to choose and unfortunately not everyone could be accepted!
Add Xen PV block device support to SeaBIOS
This project’s goal is to enable SeaBIOS to allow guest OSes to be booted directly from PV disk devices rather than from emulated disk devices. The project will include tasks such as changing SeaBIOS to use XenStore for PV lookup, implementing the PV front end, generating patches for community testing, performance test comparing SeaBIos emulated devices vs SeaBIOS PV Drivers, etc.
Recovery of crashed Linux
This project aims to make kexec/kdump work with the Xen hypervisor and Linux pvops kernel and propose patches for Linux Kernel version 2.6.41. Kexec/kdump is a mechanism for the Linux kernel to start a copy of itself when the system is rebooted (without returning to system BIOS/firmware) or for the crashed kernel to dump the contents of the memory to a remote location (disk, USB stick, scp, NFS, etc).
Xen PV guests rely on paravirtualized hardware to access disk, network and console. The frontend is a driver living in the guest’s kernel and the backend usually lives in the dom0 Linux kernel or within Qemu in userspace. This project involves designing and implementing a new PV audio protocol following the common pattern used by the PV network, disk and console protocols. The frontend/backend driver pairs should be implemented for Linux hooking into PulseAudio (and/or ALSA).
Linux Based Stubdoms
Stubdoms are very small Xen PV guests used to run some software components that otherwise live in dom0. This project will implement a linux based stubdom, which provides device emulation to a particular HVM guest. Because we are using PV linux kernel and upstream qemu to build the system, there are many new problems to be addressed, such as: establishing the environment of linux based stubdom with minimal linux kernel and shared libraries which can contain the qemu process exactly, adapting simulation devices to their relevant frontend devices in an optimal way, addressing the save/restore problem, adding pci pass-through support, etc.
Porting Unix libc to Xen PV
The aim of this project is to replace the Xen “newlib” C library with a more complete and POSIX compliant libc. This improvement will lead to easy porting for embedded applications like qemu(-dm) to Xen and clean interface using the POSIX standard. The project involves porting libc to Xen (with at least minimum expected funtionality), demonstrating usage of character and block devices, developing multi-threading support, porting Xenstored, etc.
Porting VirtIO to Xen
VirtIO is a generic paravirtualized IO framework invented by Rusty Russell, which is mainly used in KVM. The aim of this project is to port VirtIO to Xen. When done, Xen will have access to Linux kernel’s VirtIO interfaces and developers will have an alternative way to deliver PV drivers besides from the original ring buffer flavor. The project will include tasks such as modifying upstream QEMU, replacing KVM-specified interface with generic QEMU functions, modifying Xen and Xentools to support VirtIO and modifying Linux kernel’s VirtIO interfaces.
Please welcome the students into the community! And congratulations!