GSoC/GCI Archive
Google Summer of Code 2009

The NetBSD Project

Web Page: http://www.netbsd.org/contrib/soc-projects.html

Mailing List: http://www.netbsd.org/mailinglists/

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.

Projects

  • A tool to dump / restore pf state table Pf is quite a famous stateful firewall in BSD world, first written for OpenBSD, and then integrated into NetBSD, FreeBSD. For a lots of people, it has replaced the usage of ipf. However, some features are still not available in pf. During this project, we want to provide a replacement for pf to the ipfs(8) tool, a tool which permit to get the state table of the firewall, and restore back, for example, after a reboot.
  • Generic file system mounting This application is in relation with the following project idea : http://www.netbsd.org/contrib/soc-projects.html#xmount. The aim of this project is to get rid of the opaque data container when calling mount(2). This will allow to mount a file system without knowing the type. To do so, it will be necessary to add a new vfs operation which determines whether the parameters can be handled by the file system.
  • GPT aware boot loader support There are two standard ways to load kernel off the GPT: use EFI, or use legacy BIOS boostrtapping with GPT support. This project is about implementing GPT aware bootloader for the NetBSD operating system by extending its MBR/disklabel based multistaged kernel loader.
  • Implementing efficient wide character regular expressions During this years Google Summer of Code I want to improve the performance of NetBSD’s regular expression library and add support to it for wide characters.
  • Improve and Extend resize_ffs This project will seek to thoroughly test and improve the resize_ffs utility as well as to potentially extend it to support features such as live resizing. The primary goal is to make resize_ffs stable through a thorough regression test suite and code review, fixing bugs where encountered and improving on areas such as resource utilization.
  • Improving RAIDframe parity handling If a NetBSD system using a software RAID device loses power or crashes, a lengthy (many hours, for today's disk sizes) and I/O-intensive parity rewrite is required afterwards. I propose to modify the raid(4) driver to remove this deficiency — which may be discouraging the use of NetBSD in server applications — by more closely tracking which parity information actually needs to be recomputed. In addition, some less major shortcomings of raid(4) could be addressed at the same time.
  • Miniaturise NetBSD I propose to build a facility to produce a boot image for a system with no more than 4MB Flash / 16MB RAM, run a useful NetBSD router with DHCP client/server, IPv6 route solicitation/advertisement, PPPoE, and an 802.11a/b/g WPA access point. The image will be replicable: using only the NetBSD sources, and my scripts and Makefiles, a developer should be able to cross-build their system boot image.
  • Minimalistic X Server - NetBSD port Currently XOrg supports a minimalistic implementation of an X Server - called "KDrive" internally. This provides a set of basic features, and is configured at compile time, resulting in a single binary that doesn't require any config or driver files. This could be highly useful in an embedded environment where an X server is wanted, but space requirements prohibit using a fully featured X server. Currently kdrive only supports Linux, this project is to create a NetBSD port.
  • PXE Bulk Install My objective is to enable a common NetBSD user to configure and execute a bulk install of NetBSD on any number of networked machines using PXE booting. The user will be able to create custom defined machine configurations for application to different machines. The PXE Bulk Install system has already been created, but is in a rough, virtually undocumented state. My work will involve simplifying the process of configuration as well as writing extensive documentation.
  • The NetBSD zfs port ZFS is general purpose file system designed and written by Sun for Solaris operating system. It was designed with support for high storage devices in mind. It is a 128bit file systems and therefore it support Zetabyte partition size. This filesystem was released under the CDDL license and his code is freely available. My task during soc would be continue in effort of Andrew Doran and Oliver Gould and eventualy get ZFS into the working state in NetBSD.
  • XML command-line utilities for NetBSD Though XML is becoming an universal standard in protocols and formats, the Unix world has yet to embrace it fully. A major obstacle to its integration is the lack of efficient command-line tools for users and administrators. This project aims at providing NetBSD with a lightweight, consistent, set of stream-oriented XML utilities, inspired by traditional Unix programs such as grep, join and sed, hopefully opening the way for similar support in other mainstream systems.