Hello guys, welcome to next part of my series about Google Summer of Code 2013. You might wanna read previous ones:
Google Summer of Code 2013 - Introduction
Google Summer of Code 2013 - NetBSD
This time I will continue writing about FreeBSD. First part is
here.

FreeBSD
is an advanced operating system for modern server, desktop, and
embedded computer platforms. The FreeBSD Project began 20 years ago in
1993, but is based on the work at Berkeley CSRG with open source
revision history going back 35 years to 1978. Over those thirty years
the code base has gone through continuous development, improvement, and
optimization. The FreeBSD Project is a large, mature, and yet relatively
tightly knit organization, developed and maintained by a large team of
individuals. FreeBSD provides advanced networking, impressive security
features, and world class performance and is used by some of the world's
busiest web sites and most pervasive embedded networking and storage
devices.
There are currently over 300 developers
with write access to the main revision control system, and hundreds
more with access to our Perforce servers for experimental and third
party development (this is also where our summer of code students have
worked in previous years). We have an active mentoring program to bring
all new developers into our community, not just those that we introduce
to FreeBSD through the GSoC. There are hundreds of mailing lists, forums,
blogs, IRC channels, and user groups all detailed on our main website.
FreeBSD offers a complete operating system in which students can work,
not just a kernel or specific userland stack. This allows for
interesting work that spans the userland/kernel boundary.
In
addition to producing an operating system, FreeBSD has incubated the
development of key pieces of infrastructure which are used by other open
source projects including bsnmp, jemalloc, libarchive, OpenBSM, and OpenPAM.
So, this year, FreeBSD got 14
accepted projects. If you wondering what were other ideas they wanted to
make via GSoC, head to Ideas webpage.
Reports can be found at http://lists.freebsd.org/pipermail/soc-status/ mailing list. More details about projects at https://wiki.freebsd.org/SummerOfCode2013Projects
Project intend to develop, test and document a packagekit backend for pkgng,
ideally with the view of being able to use an existing packagekit
frontend such as Apper to install, remove and upgrade packages on a
FreeBSD system. This will be written in C against the packagekit and
libpkg APIs and glib, and the deliverable will be a .so file that can be
used by
PackageKit as a backend as well as the source code to compile it.
This would make system administration using binary packages easier in these use cases:
- Situations
where multiple systems running different operating systems need to be
updated by the same people; for example, University Radio York runs both
Debian and FreeBSD systems which could theoretically both be served by
packagekit if a pkgng backend is created.
- Users who wish to install binary packages on FreeBSD, but would prefer to use a graphical user interface;
- Users who wish to install binary packages on FreeBSD and already know packagekit from an existing supported package manager.
There
is an existing packagekit backend for FreeBSD Ports; ideally Project would
like to implement as much of the functionality already present in that
backend as is applicable to pkgng. However, the core functionality
(getdepends, getdetails, getupdates, installpackages, refreshcache,
removepackages, searchgroup, searchname and updatepackages) would be the
main focus of at least the first leg of the project.
The code (may not be in a compileable state at any given time) is at https://svnweb.freebsd.org/socsvn/soc2013/mattbw/.
GlusterFS is an open source distributed file system that uses FUSE. It
has been used in many different scenarios such as cloud computing. The
code of Glusterfs relies a lot on Linux semantics, and now it's becoming
usable on NetBSD since NetBSD 6.0. Right now, GlusterFS won't compile
on FreeBSD. This project will port GlusterFS and make it fully work
on FreeBSD.
You can see
recent changes here
https://github.com/cosql/glusterfs.git
VirtualBox is very popular virtualization product which supports a
large number of operating systems. And also has many other features, one
of main is "share folders". It is used to transfer files using only
internal resources of the system, without network connection. FreeBSD
does't have support this features with guests OS,and it is uncomfortable
when using VirtualBox, that's why this project is very useful for users
and interesting to develop.
Project will implement VFS virtual system for VirtualBox shared folder. This
project consist of two parts, understand how VirtualBox work with guest
systems and getting it submitted upstream from guest
system. Second part is implement VFS virtual system in FreeBSD side,
that would be kernel interface to file system, special file system for
"shared folder" wich contain files from host system that would be
mounted.
New features in Capsicum will be:
- two new capability rights (CAP_SEND_RIGHTS and CAP_RECV_RIGHTS) for
control sending and receive descriptors by Unix domain sockets.
-Implement new services for Casper daemon:
- system.unix - service provides connect and listen on Unix domain socket
- system.udp - service enabling connect, listen, sending and receive UDP packages.
- close fetch(1) in capability mode.
Current BHyVe implementation supports only few virtual devices: virtio-blk, virtio-net and UART.
It also able to using physical PCI device by PCI passthrough, but there're many PC which doesn't support IOMMU(It also called Intel VT-d or AMD-Vi, required for PCI passthrough).
This project adds support USB device passthrough on BHyVe.
USB device passthrough doesn't require IOMMU or any other special hardware features, it can support much more PCs than PCI passthrough.
USB is not faster than PCIe, but it has different varieties of devices, and much easier to install on host machine.
The project goal is to support USB 1.1/2.0 device passthrough on BHyVe.
PkgNG is the novel package management system designed for using in *BSD systems in conjunction with FreeBSD ports. Currently pkgng uses its own solver, however, it misses important features, such as alternatives logic, advanced conflict resolving and provide/require logic. Furthermore, there are numerous researches related to solver algorithms and pkgng should provide pluggable interface for such solvers and eventually select an optimal one. So the main goal of this project is to design and implement pluggable API for pkgng solver that allows to use experimental solvers with fallback to default solver if there are no external solvers.
Currently bhyve only supports virtio disk for the guest's block device.
This project will add AHCI device emulation to bhyve so that we can
emulate normal cdroms and disks. This project will benefit bhyve a lot.
First of all, since AHCI is widely supported in various Operating
Systems, bhyve can support other nonproprietary and proprietary guest
OSs without the virtio disk driver in those OSs. Secondly, this project
will make it possible to install a GENERIC system from a emulated cdrom
device.
The Code
https://svnweb.freebsd.org/socsvn/soc2013/zcore/
Suspend/resume, a feature to save a running virtual machine state and to
restore the state to a virtual machine help many hypervisor users.
Through this project, this feature will be added to BHyVe.
Good luck to all students!