GSoC/GCI Archive
Google Summer of Code 2013

The NetBSD Foundation

Web Page:

Mailing List:

NetBSD is a free, secure, and highly portable Unix-like Open Source operating system available for many platforms, from 64-bit Opteron machines and desktop systems to handheld and embedded devices. Its clean design and advanced features make it excellent in both production and research environments, and it is user-supported with complete source. Many applications are easily available through pkgsrc, the NetBSD Packages Collection.


  • Defragmentation for FFS in NetBSD The goal is to implement a userspace tool, that can do offline defragmentation of a (FFS aka. UFS2) filesystem. Keep the code as portable as possible, so other BSD projects can make use of it.
  • Implement file system flags to scrub data blocks before deletion The goal of this project is to implement file system flags marking that data blocks are to be scrubbed before deletion. This security mechanism could prevent sensitive information to be retrieved from data storage media after removing files from the file system.
  • Port Linux's drm/kms/gem/i915 Finish the partial port of Linux's drm/kms/gem/i915 drivers that I began this year.
  • System upgrade NetBSD currently has no option to upgrade the system without issueing one command. When you do an upgrade from sources, you have to rebuild everything (or only the updated part), copy the new kernel, boot into the new kernel and then do an installation from the script (i.e., ` install` or `make installworld`). The part with the kernel can be skipped when you are only doing userland upgrades. When upgrading to a new (even minor) release, you should run etcupdate(8). While this process is rather simple due to and make wrappers around everything, the process with binary updates is rather complicated. First, you have to dig into the details of NetBSD release engineering (e.g., when a security advisory [SA] occurs, there are only instructions how to *rebuild* NetBSD with the patch applied). Then, you have to choose a mirror, download the sets you think are appropriate for an update, unpack the kernel, boot into it, and *carefully* unpack them to your root directory (such that permissions are preserved). After that, you run etcupdate(8) again.