The NetBSD Foundation Quarterly Report: January - March 2006

Quarterly Status Report

NetBSD is an actively developed operating system. With fifty seven different
system architectures in total and binary support of 53 architectures in our
last official release (NetBSD 3.0), our widely portable Packages Collection
“pkgsrc” and large userbase there is a lot going on within the
project. In order to allow our users to follow the most important changes over
the last few months, we provide a brief summary in these official status
reports on a regular basis. These status reports, released with irregular
regularity, are suitable for reproduction and publication in part or in whole
as long as the source is clearly indicated.

This report summarizes the changes within NetBSD during the first three
months of 2006.

Miscellaneous

Julio M. Merino Vidal has published documentation
about file system internals in the form of a new
on-line book: the
NetBSD Internals book.
This aims to be a detailed guide about the design
and implementation of NetBSD, including its kernel
and user-land utilities.

Most of this text was written during tmpfs
development - his Google Summer of Code project -
as one of its goals was precisely to write such
documentation.

Please note that this documentation is still
incomplete and very much work-in-progress.
Feedback, fixes and extensions are certainly
welcome.

The IEEE and The Open Group have granted
permission to the NetBSD Foundation to incorporate
documentation for more than 1,400 interfaces from
the joint IEEE 1003.1" POSIX standard and The Open
Group Base Specifications Issue 6 into its NetBSD
operating system.

The POSIX standard, which also forms the core
volumes of Version 3 of The Open Group's Single
UNIX Specification, defines a set of fundamental
services needed for the construction of portable
application programs. The more than 1,400
interfaces from the standard the NetBSD Foundation
can now use includes header files, interfaces for
system and library calls, and utilities.

The NetBSD Project was represented by developers and other volunteers at a
number of conferences and tradeshows during the first quarter of 2006.
Patiently the following people invested a lot of their personal time,
money and resources to tell attendants about NetBSD, to explain (again and
again) the difference between NetBSD and Linux or NetBSD and the other
BSDs, sold CDs and other merchandise and in general deserve thanks for
helping the NetBSD Project:

[20060225] NetBSD's Peter Postma and Geert Hendrickx attended
the sixth Free and Open source Software Developers' European
Meeting (FOSDEM 2006),
a 2 days event, organized by volunteers, to promote the
widespread use of Free and Open Source software. A review
of the event is available here

[20060304] Stefan Schumacher organized a booth at the
Chemnitzer
Linux-Tage. A number of NetBSD presentations
and a workshop were given as well.

pkgsrc

By calculations of Alistair G. Crooks, at the end
of December 2005, there were 5779 packages in the
Packages Collection, up from 5737 the previous
month, a rise of 42.

The pkgsrc team branched the pkgsrc repository,
and released the pkgsrc-2005Q4 branch in December.
The pkgsrc-2005Q3 branch has been deprecated, and
continuing engineering has started on
pkgsrc-2005Q4.

The Package of the Month award goes to Eterm
(x11/eterm).
“I've been using it as my terminal program of
choice for over 6 years, and recently I enabled
the Escreen mode with it. The Escreen mode
interacts with screen - misc/screen - in a
seamless way, provides tabbed access to
screen windows, and integrates frequent screen
commands in an Eterm menu. Highly recommended.” -
says Alistair.

At the end of January 2006, there were 5853
packages in the Packages Collection, up from 5779
the previous month, a rise of 74.

A special “thank you” goes to Mark Davies for
upgrading KDE packages to version 3.5.1, whilst a
number of other packages have been moved around to
reflect better their primary category.

The Package of the Month award goes to
sysutils/vip
nominated by Stoned Elipot. Despite its name, vip
uses your editor of choice, and is most frequently
found in shell pipelines, to edit text coming from
one command before it is submitted to the next
command. As Stoned says: “When you're in the midst
of slowly building a long shell pipeline and
something goes wrong it's so easy to throw |vip|
somewhere in it to check the plumbing!” And
Alistair adding: “I know I find myself using vip
as a pager on the output from commands, since its
searching capabilities are much, much better than
screen's, and it's incredibly useful when those
pipes get long.”

The third pkgsrc conference will be held on May
5-7, 2006 in Paris, France. Universite Paris 7 -
Denis Diderot is graciously hosting the conference
on their campus.

pkgsrcCon is a technical conference for people
working on the NetBSD Packages Collection
(pkgsrc), focusing on existing technologies,
research projects, and works-in-progress in pkgsrc
infrastructure. Developers, contributors, and
users are all welcome to attend, and to share an
excellent opportunity to gather and to discuss
ideas face-to-face on how to improve pkgsrc.

The NetBSD Project has created a new mailing list
pkgsrc-users
to better serve the
pkgsrc user community and to help refocus the
existing tech-pkg
mailing list for
technical discussions. The charters for these two
lists are:

pkgsrc-users: a general
purpose list for most
issues regarding the pkgsrc, regardless of
platform, e.g. soliciting user help for pkgsrc
configuration, unexpected build failures, using
particular packages, upgrading pkgsrc
installations, questions regarding the pkgsrc
release branches, etc. General announcements or
proposals for changes that impact the pkgsrc user
community, e.g. major infrastructure changes, new
features, package removals, etc., may also be
posted.

tech-pkg: a list for technical
discussions related
to pkgsrc development, e.g. soliciting feedback
for changes to pkgsrc infrastructure, proposed new
features, questions related to porting pkgsrc to a
new platform, advice for maintaining a package,
patches that affect many packages, help requests
moved from pkgsrc-users when an
infrastructure bug is found, etc.

All current subscribers to the tech-pkg mailing
list are encouraged to subscribe to the
pkgsrc-users mailing list.

At the end of March, the pkgsrc team branched the
first stable branch of 2006, with support for 5943
packages. As well as updated versions of many
many packages, the infrastructure of pkgsrc itself
has been improved for better platform and compiler
support, and also for enhanced security. At the
same time, the pkgsrc-2005Q4 branch has been
deprecated, and continuing engineering starts on
the pkgsrc-2006Q1 branch.

Garrett D'Amore has added support for a variety of new
platforms, including expanded support for Alchemy
Au1550 (this enables the DBAu1550 and Plat'home
OpenMicroServer platforms), AMD Alchemy (this
makes the MTX-1, aka MeshCube/AccessCube, a useful
system), and Atheros AR5312 (a chip used in a
variety of commodity access points and wireless
routers) platforms. Not all devices are supported
on these platforms, but a lot of forward progress
is occurring.

Cherry G. Mathew has imported his initial
work-in-progress port of NetBSD to the Itanium
family of processors into the source tree. While
the code is still in a very early stage of
development, all users are encouraged to get
involved in the development.

Tim Rightnour has taken over the role of portmaster
for the prep port, replacing NONAKA Kimihiro who did
the original port of NetBSD to the prep
architecture. Tim's goals for this port are
summarized in his
email to the port-prep mailinglist.

Atheros wlan devices require a binary-only HAL,
linked into the kernel with the driver proper.
After David Young imported a new HAL, a version for
NetBSD/sparc64 is now available, tested, and known
to work.

Manuel Bouyer has continued his work on getting
NetBSD to work on Version 3 of the Xen virtual
machine monitor over the past few weeks, and he
writes that “NetBSD should now be functional
on Xen3 domU (unprivileged domains) with block and
network devices”. This support for Xen3
domU has also been integrated into the netbsd-3
branch, meaning it will be part of NetBSD 3.1.
There are XEN3_U and INSTALL_XEN3_U kernels built
as part of the release process, just as for Xen-2,
which means it's as easy to get a NetBSD domU on a
xen-3 system as it is for xen-2.

Technical

Reinoud Zandijk has added a new implementation of
the UDF file system to the NetBSD source tree. UDF
is a file system defined by the OSTA
standardization group and is tailored for data
interchange on optical discs (like CDs and DVDs)
between different operating systems. Its also more
and more common on other media like Compact Flash
(CF) cards.

Julio Merino added support for the Multiboot
Specification to i386 kernels. This makes it
possible to boot them directly from
Multiboot-compliant boot loaders such as GRUB.
Unfortunately, due to the way this has been done,
a third-party patch is required for GRUB to
workaround a bug in it; this fix is already in
pkgsrc, but prevents GRUB builds made by Linux
distributions to work properly. NetBSD/i386 will
be fixed in the future to not require any patch.

Alistair G. Crooks has recently added support for an iSCSI
target to NetBSD, and written HOWTOs for using it.
iSCSI is specified in RFC 3720 and describes a
method for encapsulating SCSI commands in TCP/IP
to remotely access block-level storage. In iSCSI,
the party offering a SCSI device (the server) is
called a "target", and the party using that device
(the client) is called an "initiator", so the
iSCSI target exports blocks to the iSCSI
initiators.

NetBSD's iSCSI implementation was developed from
the original Intel code (BSD-licensed) and has
been tested with version 1.06 of the Microsoft
initiator as well as with its own test harness; an
iSCSI initiator for NetBSD is currently under
development.

Havard Eidnes committed a port of the ciss(4) driver
from OpenBSD, thanks to the porting efforts of
Tonnerre Lombard. The driver supports the newer
series of Smart Array controllers from HP/Compaq.
The driver has also been pulled up to the netbsd-2
and netbsd-3 branches.

Elad Efrat has worked vigorously on the kauth
branch, which should soon be merged into the
trunk. Kernel authorization is a framework
intended to replace the way authorization requests
are handled in the kernel. Kauth divides the
"types" of authorization requests to "scopes" and
allows authorization schemes to hook into each
scope.

To illustrate with a simplified example, if until
now, a request to mount a new file-system would
behave as follows:

Is the user the super-user or user mounts
are allowed?

Is the security level allowing us to
complete the request?

In a kauth kernel the request would be:

Dispatch request for 'mount file-system' issued by user with
credentials to the proper authorization
wrapper for the scope

The scope would call all authorization listeners attached to it
and return the decision

The security model would then be implemented by
said authorization listeners -- these could either
check for uid 0, check an associated capabilities
struct, post the request to a user-level handler
for a decision (like systrace does), or further
dispatch the request to a 'security server', as in
a FLASK-environment.