% Author: Jan Schaumann % $Id: soc.tex,v 1.2 2006/02/09 13:59:13 jschauma Exp $ \special{! TeXDict begin /landplus90{true}store end } \documentclass[xga]{xdvislides} \usepackage{graphics} \usepackage{graphicx} \usepackage{colordvi} \usepackage{color} \usepackage{ulem} \normalem \begin{document} \setfontphv %%% Headers and footers \lhead{\slidetitle} % default:\lhead{\slidetitle} \chead{NetBSD/SoC - Google's Summer of Code within NetBSD}% default:\chead{\relax} \rhead{Slide \thepage} \lfoot{\Gray{Jan Schaumann}} % default:\lfoot{\slideauthor} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} \rfoot{\Gray{\today}} \vspace*{\fill} \begin{center} \Hugesize -- NetBSD/Soc -- \\ \addvspace{.25in} Google's Summer of Code within NetBSD\\ [1em] \hspace*{5mm}\blueline\\ [1em] \Normalsize {\em Jan Schaumann}\\ \verb+jschauma@NetBSD.org+ \\ \addvspace{.125in} \small \verb+136D 027F DC29 8402 7B42 47D6 7C5B 64AF AF22 6A4C+ \\ \Normalsize \end{center} %\markright{} \vspace*{\fill} \subsection{Summer of Code, eh?} \vspace*{\fill} \begin{center} \begin{tabular}{l c r} \includegraphics[scale=0.8]{figs/soc-flyer.eps} & \includegraphics[scale=0.75]{figs/plus.eps} & \includegraphics[scale=0.4]{figs/SummerOfCode_code.eps} \\ \end{tabular} \end{center} \vspace*{\fill} \subsection{Summer of Code, eh?} \vspace*{\fill} \begin{center} \includegraphics[scale=0.8]{figs/soc-chair.eps} \end{center} \vspace*{\fill} \subsection{Summer of Code?} \begin{center} \includegraphics[angle=-90,scale=0.9]{figs/beach.eps} \end{center} \subsection{Summer of Code Dates} \begin{itemize} \item {\bf May 31st}: Start of application process on {\tt http://code.google.com} \item {\bf June 1st}: Last Day new Organizations will be listed on {\tt http://code.google.com} \item {\bf Interim Period}: Back and Forth with applicants on the Summer-Discuss Google Group \item {\bf June 14th}: Final application submission deadline. \item {\bf June 24th}: All applications approved or rejected. Cut \$500 checks for initial funding. \item {\bf Interim Period}: Give the students a helping hand and guidance. \item {\bf August 3rd}: Google gives a preliminary progress report at OSCON \item {\bf September 1st}: Deadline for all student work (pencils down). \item {\bf September 30th}: All adviser feedback in. \item {\bf October 1st}: Announce successful participants. Cut final checks send t-shirts. \end{itemize} \subsection{Suggested Projects} \begin{itemize} \item NetBSD Ports \item NetBSD Userland \item NetBSD Kernel \item Filesystems \item Networking \item pkgsrc \item Miscellaneous \end{itemize} \subsection{Suggested Projects: Ports \& Userland} \begin{itemize} \item NetBSD Ports \begin{itemize} \item Port NetBSD to SGI Octane and Origin machines \item Support for MMU-less systems \item Zaurus \item IA64 \end{itemize} \item NetBSD Userland \begin{itemize} \item WiFi browser \item BSD licensed privacy guard \item Wide Character Support in curses \item BSD licensed rsync replacement \item Dynamic NSS modules \end{itemize} \end{itemize} \subsection{Suggested Projects: Ports \& Userland} \begin{itemize} \item NetBSD Ports \begin{itemize} \item Port NetBSD to SGI Octane and Origin machines \item Support for MMU-less systems \item Zaurus \item IA64 {\em (WIP using the HP Ski simputer (see references))} \end{itemize} \item NetBSD Userland \begin{itemize} \item WiFi browser \item BSD licensed privacy guard \item Wide Character Support in curses \item BSD licensed rsync replacement \item Dynamic NSS modules \end{itemize} \end{itemize} \subsection{Suggested Projects: Kernel} \begin{itemize} \item NetBSD Kernel \begin{itemize} \item Improve FFS \item Improve Caching \item Improve writing to FS \item NetBSD block device driver for NAND flash chips \item Flash translation layer \item Compressed Cache System \item Debug softdep on slow machines \item Real time support \item Bluetooth support \end{itemize} \end{itemize} \subsection{Suggested Projects: Filesystems} \begin{itemize} \item Filesystems \begin{itemize} \item BSD tool to create ISO filesystems \item BSD licensed XFS \item BSD licensed JFS \item BSD licensed HFS+ \item Journaling for UFS \item ACLs \item Efficient Memory Filesystem \item resize\_ffs \end{itemize} \end{itemize} \subsection{Suggested Projects: Networking \& pkgsrc} \begin{itemize} \item Networking \begin{itemize} \item Teredo: Tunneling IPv6 over UDP through NATs \item Kismet \item NDIS network driver \item Policy routing \item Cleanup routing code \item Implement IPv6 ipflow\_fastforward \item zeroconf \end{itemize} \item pkgsrc \begin{itemize} \item Unprivileged pkgsrc builds \item Parallel bulk builds \end{itemize} \end{itemize} \subsection{Suggested Projects: Networking \& pkgsrc} \begin{itemize} \item Networking \begin{itemize} \item Teredo: Tunneling IPv6 over UDP through NATs \item Kismet \item NDIS network driver \item Policy routing \item Cleanup routing code \item Implement IPv6 ipflow\_fastforward \item zeroconf \end{itemize} \item pkgsrc \begin{itemize} \item Unprivileged pkgsrc builds \item Parallel bulk builds {\em (WIP called ``bobac''; ask jlam@NetBSD.org)} \end{itemize} \end{itemize} \subsection{Suggested Projects: Miscellaneous} \begin{itemize} \item Miscellaneous \begin{itemize} \item syspkgs \item valgrind \item NetBSD LiveCD with installer \item CD Bootloader \item Automate regression framework \end{itemize} \end{itemize} \subsection{Suggested Projects: Miscellaneous} \begin{itemize} \item Miscellaneous \begin{itemize} \item syspkgs \item valgrind \item NetBSD LiveCD with installer \item CD Bootloader {\em (WIP {\tt makefs -t cd9660} in-tree)} \item Automate regression framework \end{itemize} \end{itemize} \subsection{Summer of Code $=>$ Endless Summer?} \vspace{.25in} \begin{center} \includegraphics[scale=0.9]{figs/endless_summer.eps} \end{center} \small \begin{flushright} ... I wish. \end{flushright} \Normalsize \subsection{Selection Process} \begin{itemize} \item small team weeds out obvious rejectees \item list of remaining applications presented to developer body \item list ranked based on developer feedback \item mentors solicited from developer body \item list sorted based on developer interest + mentor availability \item developers vote for their favorite projects \item ranked list returned to Google \item Google decides the total number of awarded projects, picks top ranked applications \end{itemize} \subsection{Accepted Projects} Out of 96 applications in total, the following projects were chosen: \begin{itemize} \item bpg: BSD licensed privacy guard (pgp) \item hfs: HFS+ \item ndis: NDIS network driver \item tmpfs: Efficient memory file-system \item userfs: Userspace file system hooks \item wcurses: Wide Character Support for Curses \item zeroconf: Zeroconfd \end{itemize} \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap.eps} \end{center} \subsection{hfs: HFS+} {\bf Why?} \begin{itemize} \item no HFS+ support currently available \item good amount of work for summer project \end{itemize} \vspace{.25in} {\bf Who?} \\ \begin{itemize} \item Mentoring NetBSD developer: {\bf Bill Studenmund $<${\tt wrstuden@NetBSD.org}$>$} \item Developing student: {\bf Yevgeny Binder $<${\tt yevbee@comcast.net}$>$} \end{itemize} \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-hfs.eps} \end{center} \subsection{hfs: Results} \begin{itemize} \item deliverables adjusted earlier on as the project was found slightly too ambitious \item student did not have much of a NetBSD background, so some time was spent on getting into NetBSD \item basic HFS+ filesystem completed in time \item import into NetBSD source tree: not ready yet \end{itemize} \vspace{.5in} \subsection{hfs: Results} \begin{itemize} \item deliverables adjusted earlier on as the project was found slightly too ambitious \item student did not have much of a NetBSD background, so some time was spent on getting into NetBSD \item basic HFS+ filesystem completed in time \item import into NetBSD source tree: not ready yet \end{itemize} \vspace{.5in} \begin{center}\Large {\bf Success.}\Normalsize\end{center} \subsection{ndis: NDIS network driver} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} {\bf Why?} \begin{itemize} \item driver available for FreeBSD \item allow Windows driver to run on NetBSD \item previous experience \item previous collaboration with mentor \end{itemize} \vspace{.5in} {\bf Who?} \begin{itemize} \item Mentoring NetBSD developer: {\bf Phil Nelson $<${\tt phil@NetBSD.org}$>$} \item Developing student: {\bf Alan Ritter $<${\tt rittera@cc.wwu.edu}$>$} \end{itemize} \hfill\includegraphics[scale=0.35]{figs/alanritter.eps}\hfill \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-ndis.eps} \end{center} \subsection{ndis: NDIS network driver} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} Deliverables: \begin{itemize} \item produce a driver working well enough to use at least a standard wired Ethernet card on PCI bus \end{itemize} \vspace{.5in} Long Term Goals: \begin{itemize} \item get a working driver for one or more PCMCIA cards \item test and fix bugs on a multiprocessor system \item test and make sure it works on 64 bit systems \item merge with latest code from FreeBSD \item run as LKM \end{itemize} \subsection{ndis: Results} \begin{itemize} \item Intel EtherExpress Pro/100: works \item Broadcom wireless card: works \item mentor satisfied $=>$ we're satisfied \item student continues work after official end of SoC \item mentor will review code before feature freeze for NetBSD 4.0 \end{itemize} \subsection{ndis: Results} \begin{itemize} \item Intel EtherExpress Pro/100: works \item Broadcom wireless card: works \item mentor satisfied $=>$ we're satisfied \item student continues work after official end of SoC \item mentor will review code before feature freeze for NetBSD 4.0 \end{itemize} \vspace{.5in} \begin{center}\Huge {\bf Success.}\Normalsize\end{center} \subsection{tmpfs: Efficient memory file-system} {\bf Why?} \begin{itemize} \item {\tt mfs(8)} is regular ffs on top of memory \item no specifically designed filesystem for temporary use available \end{itemize} \vspace{.5in} {\bf Who?} \begin{itemize} \item Mentoring NetBSD developer: {\bf Luke Mewburn $<${\tt lukem@NetBSD.org}$>$} \item Mentoring NetBSD developer: {\bf Bill Studenmund $<${\tt wrstuden@NetBSD.org}$>$} \item Developing student: {\bf Julio M. Merino Vidal $<${\tt jmmv84@gmail.com}$>$} \end{itemize} \hfill\includegraphics[scale=2.0]{figs/jmmv.eps}\hfill \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-tmpfs.eps} \end{center} \special{! TeXDict begin /landplus90{true}store end } \subsection{tmpfs: Goals} \begin{itemize} \item an implementation of an efficient memory file-system \item in-depth documentation about tmpfs in detail, describing its data structures, algorithms used and the rationales that lead to the decisions taken. \item a ``file-system how-to'' document explaining how to write a file-system driver for NetBSD from scratch. \end{itemize} \subsection{tmpfs: Summary} \begin{itemize} \item all goals met \item rated ``top-notch'' \item {\tt tmpfs(8)} already imported into NetBSD-current \item comparisons with {\tt mfs(8)} have shown {\tt tmpfs(8)} to be \begin{itemize} \item more memory-efficient \item more accurate in reporting memory usage \item faster \end{itemize} \item student learned enough about filesystems to already have found and fixed some serious bugs in our NFS code \item expect an article on {\tt tmpfs(8)} on OnLamp \end{itemize} \subsection{tmpfs: Summary} \begin{itemize} \item all goals met \item rated ``top-notch'' \item {\tt tmpfs(8)} already imported into NetBSD-current \item comparisons with {\tt mfs(8)} have shown {\tt tmpfs(8)} to be \begin{itemize} \item more memory-efficient \item more accurate in reporting memory usage \item faster \end{itemize} \item student learned enough about filesystems to already have found and fixed some serious bugs in our NFS code \item expect an article on {\tt tmpfs(8)} on OnLamp \end{itemize} \vspace{.5in} \begin{center}\Huge {\bf Success!}\Normalsize\end{center} \subsection{userfs: Userspace file system hooks} {\bf What?} \begin{itemize} \item make it possible to write a file system in userspace so that an application will see no difference to the pure in-kernel file system. \end{itemize} \vspace{.5in} {\bf Who?} \begin{itemize} \item Mentoring NetBSD developer: {\bf Bill Studenmund $<${\tt wrstuden@NetBSD.org}$>$} \item Developing student: {\bf Antti Kantee $<${\tt antti.kantee@hut.fi}$>$} \end{itemize} \hfill\includegraphics[scale=0.25]{figs/antti.eps}\hfill \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-userfs.eps} \end{center} \subsection{userfs: Userspace file system hooks} \begin{itemize} \item most ambitious project \item consists of three parts \begin{itemize} \item a kernel file system shim \item a communications protocol \item a userland API for the file system to use \end{itemize} \item also provide a trivial userland file system to demonstrate functionality \end{itemize} \subsection{userfs: Userspace file system hooks} Flow-control of the ``Pass-to-Userspace F-F-f-f-fileSystem'': \begin{enumerate} \item application \item kernel (syscall, vfs ...) \item kernel puffs \item userspace puffs \item fs implementation (userspace) \item userspace puffs \item kernel puffs \item application \end{enumerate} \subsection{userfs: Results} \begin{itemize} \item still bare-bones \item simple filesystem with some hardcoded files (which are modifyable) written \item ``The framework coughs but manages to avoid complete and utter defeat.'' \item code not yet imported \item all SoC goals met \end{itemize} \subsection{userfs: Results} \begin{itemize} \item still bare-bones \item simple filesystem with some hardcoded files (which are modifyable) written \item ``The framework coughs but manages to avoid complete and utter defeat.'' \item code not yet imported \item all SoC goals met \end{itemize} \vspace{.5in} \begin{center}\Huge {\bf Success.}\Normalsize\end{center} \subsection{wcurses: Wide Character Support for Curses} {\bf Why?} \begin{itemize} \item wide characters not supported in NetBSD's curses \item limited support for internationalized character sets \end{itemize} \vspace{.5in} {\bf Who?} \begin{itemize} \item Mentoring NetBSD developer: {\bf Julian Coleman $<${\tt jdc@NetBSD.org}$>$} \item Mentoring NetBSD developer: {\bf Brett Lymn $<${\tt blymn@NetBSD.org}$>$} \item Developing student: {\bf Ruibiao Qiu $<${\tt ruibiao@arl.wustl.edu}$>$} \end{itemize} \hfill\includegraphics[scale=8.0]{figs/ruibiao.eps}\hfill \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-wcurses.eps} \end{center} \subsection{wcurses: Results} \begin{center} \includegraphics[scale=0.4]{figs/wcurses.eps} \end{center} \begin{itemize} \item all goals met \item code will be imported into NetBSD source Real Soon Now \end{itemize} \subsection{wcurses: Results} \begin{center} \includegraphics[scale=0.4]{figs/wcurses.eps} \end{center} \begin{itemize} \item all goals met \item code will be imported into NetBSD source Real Soon Now \end{itemize} \begin{center}\Huge {\bf Success.}\Normalsize\end{center} \subsection{zeroconf: Zeroconfd} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} {\bf Who?} \begin{itemize} \item Mentoring NetBSD developer: {\bf Christos Zoulas $<${\tt christos@NetBSD.org}$>$} \item Mentoring NetBSD developer: {\bf David Young $<${\tt dyoung@NetBSD.org}$>$} \item Mentoring NetBSD developer: {\bf Jason R. Thorpe $<${\tt thorpej@NetBSD.org}$>$} \item Mentoring NetBSD developer: {\bf Ignatios Souvatzis $<${\tt is@NetBSD.org}$>$} \item Developing student: {\bf Silvio Valenti $<${\tt silvio.valenti@gmail.com}$>$} \end{itemize} \hfill\includegraphics[scale=0.15]{figs/silvio.eps}\hfill \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-zeroconf.eps} \end{center} \subsection{zeroconf: Zeroconfd} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} Work split in two parts: \begin{itemize} \item daemon which autoconfigures an IPv4 link-local address for a network interface \item a library for multicast DNS, which is used to resolve local network host name and discover available services in network where there is no DNS server \end{itemize} \subsection{zeroconf: Results} \begin{itemize} \item {\tt zeroconfd} implemented \item {\tt responderd} implemented \item both working, but need more work \item import into NetBSD CVS: not yet \item too many mentors \item nevertheless: all goals met \end{itemize} \subsection{zeroconf: Results} \begin{itemize} \item {\tt zeroconfd} implemented \item {\tt responderd} implemented \item both working, but need more work \item import into NetBSD CVS: not yet \item too many mentors \item nevertheless: all goals met \end{itemize} \vspace{.5in} \begin{center}\Large {\bf Success.}\Normalsize\end{center} \subsection{bpg: BSD licensed privacy guard (pgp)} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} {\bf Why?} \begin{itemize} \item no BSD licensed OpenPGP tools available \item GPL licensed {\tt gnupg} convoluted \end{itemize} \vspace{.25in} {\bf Who?} \\ \begin{itemize} \item Mentoring NetBSD developer: {\bf Alistair Crooks $<${\tt agc@NetBSD.org}$>$} \item Mentoring NetBSD developer: {\bf Curt Sampson $<${\tt cjs@NetBSD.org}$>$} \item Developing student: {\bf Manuel Freire $<${\tt droggo@gmail.com}$>$} \begin{itemize} \item previous work on {\tt myPGP} \end{itemize} \end{itemize} \hfill\includegraphics[scale=0.35]{figs/manuel.eps}\hfill \pagebreak \cfoot{\relax} \begin{center} \includegraphics[angle=-90,scale=0.7]{figs/socmap-bpg.eps} \end{center} \subsection{bpg: BSD licensed privacy guard (pgp)} \cfoot{\includegraphics[scale=0.25]{figs/netbsd-google.eps}} BPG, the BSD Privacy Guard, is a BSD-licensed program that performs authentication and encryption using the OpenPGP standard (RFC 2440). \\ It provides: \begin{itemize} \item A set of libraries for signing and encrypting data, allowing the integration of OpenPGP features in other applications. \item A modular ``PGP cryptography toolkit'' that allow users to chose their own encryption and signing algorithms, key management structure, and so on. \item A scriptable and well thought command-line interface built over the libraries. This standalone application will be a suitable replacement for GnuPG or PGP. \end{itemize} \subsection{bpg: main uses} The main uses supported are: \begin{itemize} \item Data confidentiality: the library must support different algorithms for encryption of data. Concretely, it aims to be used for symmetric and asymmetric encryption. \item Data integrity and authentication: via digital signatures, BPG will support providing integrity and authentication to data, as defined in OpenPGP standard. \item Integrated key management: BPG aims to support centralized management of all of a user's public and private keys. \end{itemize} \subsection{bpg: Goals} \begin{itemize} \item Provide a complete implementation of the OpenPGP standard, with the only exception of possible old formats incompatibility if project needs demands it. \item Settle on the basis of a well-thought and well-designed data security framework. \item Develop command-line interface that is both: \begin{itemize} \item powerful: it must support all the program functionality in an easily scriptable way; \item usable: confusing user interfaces reduce security by making it harder for a user to make correct decisions. \end{itemize} \item Design the libraries for extensibility. We'd like BPG to be a good field for developing researchs in the state-of-the-art of authentication and cryptography. \item Make BPG a good candidate to replace GnuPG usage in BSD Unixes. \end{itemize} \subsection{bgp: Architecture} The main goal of BPG is to provide applications with a toolkit for using OpenPGP facilities. For that, functionality was packed into libraries. \\ There are four libraries, corresponding with the four problems BPG tries to solve: \begin{itemize} \item securing data \item key management \item trust management \item algorithms \end{itemize} \subsection{bgp: Architecture: Securing data} Library name: {\tt libbpg} \\ Relies on other libraries: \begin{itemize} \item Key management library: PKI keys are especified in the API with user-IDs and obtained from the BPG key management library. The key management library is the responsible of key decryption if necessary. \item Algorithms library: for performing low-level encryption, hashing and compression, it uses the BPG algorithms library. \item Compression library: BPG will use libzip for compression \end{itemize} \subsection{bgp: Architecture: Key Management} Library name: {\tt libbpgkey} \\ The key managament library is divided into a set of specialized submodules: \begin{itemize} \item Key fetcher: receives petitions for a key and performs the necessary operations to give it back to the user (or say why it wasn't possible). \item Key generator: receives petitions for creating asymmetric or symmetric keys. \item Key importer/exporter: this module receives petitions from the user to take a key from a location A and insert it into location B, where A and B can be files, keyrings or key servers. \item Key interpreter: translates OpenPGP packets containing keys into the internal data structure for keys and viceversa. \item Key deliverer: with no public functions, this module performs the internal checkouts and commits of keys from and to a file, keyring or key server. \end{itemize} \subsection{bgp: Architecture: Trust Management} Library name: {\tt libbpgtrust} \\ The trust library handles the trust database and the trust policy. The trust database contains a list of \[UserID, trust level\] pairs. The policy defines the rules for deriving the trust level of a given key from the trust database (i.e. OpenPGP web of trust, X.509 hierarchical trust model, ...). \subsection{bgp: Architecture: Algorithms} Library name: {\tt libbpgalgo} \\ The initial algorithms supported will be: \begin{itemize} \item Hash functions: SHA-1. \item Symmetric algorithms: AES. \item Asymmetric algorithms: RSA, DSA. \end{itemize} \vspace{.5in} {\tt libbpgalgo} may offer with a plugins system would take the extensibility and reusability to a higher level. \subsection{bpg: Security Issues} \begin{itemize} \item Memory purge \item Integrity of the keyring \item MITM attacks \item Emission captures \item Time-based attacks \item Password sniffing \end{itemize} \subsection{bpg: Results} \begin{itemize} \item very good work, mature code \item all goals set were achieved \item detailed documentation available (see references) \item student was pro-active, responsive \item result still under development on Sourceforge \item discussion on import into NetBSD source tree are ongoing \item expect a summary artice in ``Dr. Dobb's Journal'' \end{itemize} \subsection{bpg: Results} \begin{itemize} \item very good work, mature code \item all goals set were achieved \item detailed documentation available (see references) \item student was pro-active, responsive \item result still under development on Sourceforge \item discussion on import into NetBSD source tree are ongoing \item expect a summary artice in ``Dr. Dobb's Journal'' \end{itemize} \vspace{.5in} \begin{center}\Huge{\bf Success!}\Normalsize\end{center} \subsection{References} General: \\ \verb+http://www.NetBSD.org/+ \\ \verb+http://netbsd-soc.sourceforge.net/+ \\ \verb+http://www.NetBSD.org/contrib/projects.html+ \\ \verb+http://www.NetBSD.org/Foundation/press/soc.html+ \\ \verb+http://www.netmeister.org/netbsd/soc/+ \\ \\ \verb+http://code.google.com/summerofcode.html+ \\ \subsection{References} BPG: \\ \verb+http://www.sourceforge.net/projects/mypgp/+ \\ \verb+http://netbsd-soc.sourceforge.net/projects/bpg/+ \\ \verb+http://netbsd-soc.sourceforge.net/projects/bpg/doc/+ \\ \\ HFS+: \\ \verb+http://developer.apple.com/technotes/tn/tn1150.html+ \\ \verb+http://netbsd-soc.sourceforge.net/projects/hfs/+ \\ \\ NDIS: \\ \verb+http://netbsd-soc.sourceforge.net/projects/nids+ \\ \\ tmpfs: \\ \verb+http://netbsd-soc.sourceforge.net/projects/tmpfs+ \\ \verb+http://www.solarisinternals.com/si/reading/tmpfs.pdf+ \\ \subsection{References} userfs: \\ \verb+http://netbsd-soc.sourceforge.net/projects/userfs+ \\ \\ wcurses: \\ \verb+http://netbsd-soc.sourceforge.net/projects/wcurses+ \\ \\ zeroconf: \\ \verb+http://www.zeroconf.org/+ \\ \verb+http://netbsd-soc.sourceforge.net/projects/zeroconf+ \\ \subsection{References} Other projects: \begin{itemize} \item NetBSD/ia64: \begin{itemize} \item \verb+http://www.NetBSD.org/Ports/ia64/+ \item \verb+http://mail-index.NetBSD.org/port-ia64/+ \item \verb+http://www.hpl.hp.com/research/linux/ski/+ \end{itemize} \end{itemize} \end{document}