NetBSD
From Wikipedia, the free encyclopedia
Company / developer | The NetBSD Foundation |
---|---|
OS family | BSD, Unix-like |
Working state | Current |
Source model | Open source |
Latest stable release | 4.0.1 / 2008-10-14 |
Package manager | pkgsrc |
Supported platforms | 51 different platforms using the following CPU architectures: Alpha, ARM, PA-RISC, 68k, MIPS, PowerPC, SH3, SPARC, VAX, x86 and x86-64 |
Kernel type | Monolithic kernel |
License | BSD license |
Website | www.netbsd.org |
NetBSD is a freely redistributable, open source version of the Unix-derivative Berkeley Software Distribution (BSD) computer operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. Noted for its portability and quality of design and implementation, it is often used in embedded systems and as a starting point for the porting of other operating systems to new computer architectures.
Contents |
[edit] History
NetBSD was originally derived from the 4.3BSD release from the Computer Systems Research Group of the University of California, Berkeley, via the Networking/2 and 386BSD releases. The project began as a result of frustration within the 386BSD developer community with the pace and direction of the operating system's development. The four founders of the NetBSD project, Chris Demetriou, Theo de Raadt, Adam Glass and Charles Hannum, felt that a more open development model would be beneficial to the project; one which was centered on portable, clean, correct code. Their aim was to produce a unified, multi-platform, production-quality, BSD-based operating system. The name "NetBSD" was suggested by de Raadt, based on the importance and growth of networks such as the Internet at that time, and distributed, collaborative nature of its development.
The NetBSD source code repository was established on March 21, 1993 and the first official release, NetBSD 0.8, was made in April, 1993. This was derived from 386BSD 0.1 plus the version 0.2.2 unofficial patchkit, with several programs from the Net/2 release missing from 386BSD re-integrated, and various other improvements. The first multi-platform release, NetBSD 1.0, was made in October 1994. Later the same year, for disputed reasons, one of the founders, Theo de Raadt, was forced out of the project. He later founded a new project, OpenBSD, from a forked version of NetBSD 1.0 near the end of 1995. In 1998, NetBSD 1.3 introduced the pkgsrc packages collection.
The current stable release of NetBSD is version 4.0.1 (October 14, 2008).
[edit] Symmetric multiprocessing
NetBSD has had support for SMP since the NetBSD 2.0 release in 2004,[1] which was initially implemented using the giant lock approach. During the development cycle of the NetBSD 5 release, major work was done to improve SMP support; most of the kernel subsystems were modified to be MP safe and use the fine-grained locking approach. New synchronization primitives were implemented and scheduler activations was replaced with a 1:1 threading model in February 2007.[2] A scalable M2 thread scheduler was implemented, though the old 4.4BSD scheduler is still provided as an option. Threaded software interrupts were implemented to improve synchronization. The virtual memory system, memory allocator and trap handling were made MP safe. The file system framework, including the VFS and major file systems were modified to be MP safe. Since April, 2008 the only subsystems running with a giant lock are the network protocols and most device drivers.
[edit] Security
NetBSD provides various features in the security area.[3] The Kernel Authorization framework (or Kauth) is a subsystem managing all authorization requests inside the kernel, and used as system-wide security policy. It allows external modules to plug-in the authorization process. NetBSD also incorporates exploit mitigation features,[4] ASLR, MPROTECT and Segvguard from PaX project, and GCC Stack Smashing Protection (SSP, or also known as ProPolice) compiler extensions. The Verified Executables (or Veriexec) is an in-kernel file integrity subsystem in NetBSD. It allows the user to set the digital fingerprints (hashes) of files in the system to monitor by the Veriexec, and prevent the execution of them. For example, one can allow Perl to run only scripts that match the fingerprints.[5] The cryptographic device driver (CGD) provides functionality which allows using the disks or partitions (including CDs and DVDs) for encrypted storage in NetBSD.[6]
[edit] Portability
NetBSD has been ported to a large number of 32- and 64-bit architectures, from VAX minicomputers to Pocket PC PDAs. The NetBSD motto is "Of course it runs NetBSD." As of 2007, NetBSD supports 54+ hardware platforms (comprising around 17 different processor architectures). Although the Linux 2.6 kernel includes support for more processor architectures,[7] NetBSD supports more platforms than any single Linux distribution. The kernel and userland for these platforms are all built from a central unified source-code tree managed by CVS. Currently, unlike other kernels such as μClinux, the NetBSD kernel requires the presence of an MMU in any given target architecture.
Because of the centralized source code management, and portable design, feature additions (which are not hardware specific) can benefit all platforms immediately, with little or no re-porting required.
NetBSD’s portability is due to a number of interfaces for bus space and DMA. Using this portability layer, device drivers are somewhat isolated from the hardware platform. This allows a single driver to be easily used on several platforms by hiding details of exactly how the driver talks to the hardware and dramatically reduces the amount of work needed to port it to a new architecture.
This enables, for instance, a driver for a specific PCI card to work whether that card is in a PCI slot on an IA-32, Alpha, PowerPC, SPARC, or other architecture with a PCI bus. Also, a single driver for a specific device can operate via several different buses (eg. ISA, PCI, PC card, etc).
In comparison, Linux device driver code often needs to be reworked for every new architecture. As a consequence, in recent porting efforts by NetBSD and Linux developers, NetBSD has taken much less time to port to new hardware.[8]
This platform independence aids the development of embedded systems, particularly since NetBSD 1.6, when the entire toolchain of compilers, assemblers, linkers, and other tools fully supported cross-compiling. The NetBSD cross-compiling framework allows a complete NetBSD system for an architecture to be built from another system of different architecture (usually faster or with more hardware resources), even on different operating system since the framework supports most POSIX-compliant systems. Several embedded systems using NetBSD have required no additional software development other than toolchain and target rehost.[8]
In 2005, as a demonstration of NetBSD's portability and suitability for embedded applications, Technologic Systems, a vendor of embedded systems hardware, designed and demonstrated a NetBSD-powered kitchen toaster.[9]
Commercial ports to embedded platforms, including the AMD Geode LX800, Freescale PowerQUICC processors, Marvell Orion, AMCC 405 family of PowerPC processors, Intel XScale IOP and IXP series, are available from and supported by Wasabi Systems.
[edit] Uses
NetBSD's clean design, high performance and scalability, support for many architectures suits the operating system for use in the embedded devices and servers, especially networking, industries.
A commercial real-time operating system, QNX, uses a network stack which is based on NetBSD code [10], and provides various drivers ported from NetBSD.[11]
Force10 Networks uses NetBSD as the underlying operating system that powers FTOS (the Force10 Operating System), which is used in high scalability switch/routers.[12] Force10 also made a donation to the NetBSD Foundation in 2007 to help further research and the open development community.[13]
Wasabi Systems provides a commercial Wasabi Certified® BSD product based on NetBSD with proprietary enterprise features and extensions, which are focused on embedded, server and storage applications.[14]
NetBSD was used in NASA's SAMS-II Project of measuring the microgravity environment on the International Space Station[15], and for investigations of TCP for use in satellite networks.[16]
In 2004, SUNET used NetBSD to set the Internet2 Land Speed Record. NetBSD was chosen "due to the scalability of the TCP code".[17]
The operating system of the T-Mobile Sidekick LX 2009 smartphone is expected to be based on NetBSD.[18]
[edit] Licensing
All of the NetBSD kernel and most of the core userland source code is released under the terms of the BSD License (two, three, and four-clause variants). This essentially allows everyone to use, modify, redistribute or sell it as they wish, as long as they do not remove the copyright notice and license text (the four-clause variants also include terms relating to publicity material). Thus, the development of products based on NetBSD is possible without having to make modifications to the source code public. In contrast, the GPL stipulates that changes to source code of a product must be released to the product recipient when products derived from those changes are released.
On June 20, 2008, the NetBSD Foundation announced a transition to the two clause BSD license, citing concerns with UCB support of clause 3 and industry applicability of clause 4.[19]
NetBSD also includes the GNU development tools and other packages, which are covered by the GPL and other open source licenses.
[edit] Compatibility with other operating systems
At the source code level, NetBSD is very nearly entirely compliant with POSIX.1 (IEEE 1003.1-1990) standard and mostly compliant with POSIX.2 (IEEE 1003.2-1992).
NetBSD also provides system call-level binary compatibility on the appropriate processor architectures with several UNIX-derived and UNIX-like operating systems, including Linux, other BSD variants like FreeBSD, Apple's Darwin, Solaris, HP-UX, SunOS 4 and SCO UNIX. This allows NetBSD users to run many applications that are only distributed in binary form for other operating systems, usually with no significant loss of performance.
A variety of "foreign" disk filesystem formats are also supported in NetBSD, including FAT, NTFS, Linux ext2fs, Mac OS X UFS, RISC OS FileCore/ADFS and AmigaOS Fast File System.
[edit] Releases
The following table lists major NetBSD releases and notable features in them. List is in descending order and does not include minor or patch releases.
Major releases | Release date | Notable features and changes |
---|---|---|
4.0 | December 19, 2007 | Added support for slab allocator, iSCSI target, CARP, tmpfs, Xen 3. Kernel Authorization framework, Veriexec and other security extensions.[20] |
3.0 | December 23, 2005 | Support for Xen 2.0 was added. Support for filesystems > 2 terabytes added. Pluggable Authentication Modules added. OpenBSD Packet Filter was integrated as an alternative to IPFilter. UFS directory hash support.[21] |
2.0 | December 09, 2004 | Addition of native POSIX threads and SMP support on i386 and other platforms. AMD64 architecture added. Support for UFS2 and SMBFS, addition of kqueue.[22] |
1.6 | September 14, 2002 | Unified Buffer Cache (UBC) was introduced, which unifies the filesystem and virtual memory caches of file data. Zero-copy support for TCP and UDP transmit path. Ten new platforms supported. New implementation of cross-building (build.sh) infrastructure.[23] |
1.5 | December 06, 2000 | IPv6 and IPsec were added to the network stack. OpenSSL and OpenSSH imported. New implementation of rc.d system start-up mechanism. Start of migration to ELF-format binaries. A ktruss for kernel tracing was added. Six new platforms supported, including SPARC64. Added FFS soft updates and support for NTFS.[24] |
1.4 | May 12, 1999 | UVM, a rewritten virtual memory subsystem, was introduced. Added RAIDframe, a software RAID implementation, and imported IPFilter. Completion of the integration of all remaining 4.4BSD Lite-2 kernel improvements. Ports to Power Macintosh and NeXTcube/station systems added. Added full USB support.[25] |
1.3 | March 09, 1998 | XFree86 source tree has been made a supported part of the distribution. Support for ISA Plug and Play, PCMCIA, ATAPI and APM added. ext2fs and FAT32 filesystems added. The pkgsrc packages collection system was introduced.[26] |
1.2 | October 04, 1996 | Support for NFSv3, SCSI scanner and medium changer devices added. NTP phase-locked loop added in kernel. Ports for ARM and Sharp X68k systems added.[27] |
1.1 | November 26, 1995 | Ports for DEC Alpha, Atari TT/Falcon030 and MVME68k systems added. Binary emulation facility added. Generic audio subsystem introduced.[28] |
1.0 | October 26, 1994 | The first multi-platform release, supporting the PC, HP 9000 Series 300, Amiga, 68k Macintosh, Sun-4c series and the PC532. Also in this release, the legally encumbered Net/2-derived source code was replaced with equivalent code from 4.4BSD-lite, in accordance with the USL v BSDi lawsuit settlement. Addition of shared libraries and Kerberos 5.[29] |
0.9 | August 20, 1993 | Contained many enhancements and bug fixes. This was still a PC-platform-only release, although by this time work was underway to add support for other architectures. Support for loadable kernel modules (LKM).[30] |
0.8 | April 20, 1993 | The first official release, derived from 386BSD 0.1 plus the version 0.2.2 unofficial patchkit, with several programs from the Net/2 release missing from 386BSD re-integrated, and various other improvements.[31] |
Until 2004, NetBSD 1.x releases were made at roughly annual intervals, with minor "patch" releases in between. From release 2.0 onwards, each major NetBSD release corresponds to an incremented major version number, i.e. the major releases following 2.0 are 3.0, 4.0 and so on. The previous minor releases are now divided into two categories: x.y "stable" maintenance releases and x.y.z releases containing only security and critical fixes.
[edit] The pkgsrc packages collection
NetBSD features pkgsrc (short for "package source"), a framework for building third-party application software packages that will install almost "automagically". The pkgsrc collection consists of more than 8100 packages as of January 2009[update].[32] Building packages such as KDE, GNOME, the Apache server or Perl is performed simply by typing make install in the appropriate directory. This will fetch the source code, unpack, patch, configure, build and install the package such that it can be removed again later. An alternative to compiling from source is to use a precompiled binary package. Either way, any prerequisites/dependencies will be installed automatically by the package system, with no need for manual intervention.
Following its mantra of portability, pkgsrc has been made portable not only across the hardware platforms that run NetBSD, but also — with the help of an autoconf-based bootstrap system — on several other Unix-like operating systems, such as Linux, other BSD variants like FreeBSD and OpenBSD, Solaris, Darwin/Mac OS X, IRIX, Interix and others. pkgsrc has also been adopted as the official package system for DragonFly BSD (announcement).
[edit] Logo
The NetBSD "flag" logo, designed by Grant Bissett, was introduced in 2004 and is an abstraction of their older logo, designed by Shawn Mueller in 1994. This was based on the famous World War II photograph Raising the Flag on Iwo Jima, which some perceived as culturally insensitive and inappropriate for an international project.[33] Even so, the primary reason for the change was actually the complexity of the drawing making it unsuitable for use as logo.[citation needed]
[edit] Governance structure
The NetBSD Foundation is the legal entity that owns the intellectual property and trademarks associated with NetBSD, and has obtained 501(c)3 non-profit organisation status with respect to U.S. taxation. The members of the foundation are NetBSD developers who have CVS commit access. The NetBSD Foundation has a Board of Directors, elected by the voting of members for two years.
[edit] Hosting
Hosting for the project is provided primarily by the Internet Systems Consortium Inc, the Luleå University of Technology, Columbia University, and Western Washington University. Mirrors for the project are spread around the world and provided by volunteers and supporters of the project.
[edit] See also
- Comparison of BSD operating systems
- Comparison of operating systems
- Debian GNU/NetBSD
- DragonFly BSD
- FreeBSD
- MirOS BSD
- OpenBSD
- PC-BSD
[edit] References
- ^ "NetBSD 2.0 release notes". http://www.netbsd.org/changes/2004.html#netbsd-2.0.
- ^ Significant changes from NetBSD 4.0 to 5.0
- ^ http://man.netbsd.org/cgi-bin/man-cgi?security++NetBSD-current
- ^ http://man.netbsd.org/cgi-bin/man-cgi?paxctl++NetBSD-current
- ^ http://www.netbsd.org/docs/guide/en/chap-veriexec.html
- ^ http://www.netbsd.org/docs/guide/en/chap-cgd.html
- ^ Kroah-Hartman, Greg (2006-07-23). "Myths, Lies, and Truths about the Linux kernel". http://www.kroah.com/log/linux/ols_2006_keynote.html. Retrieved on 2007-06-11.
- ^ a b "BSD or Linux: Which Unix is better for embedded applications?" (PDF). Wasabi Systems Inc.. 2003. Archived from the original on 2006-12-30. http://web.archive.org/web/20061230075423/http://www.wasabisystems.com/pdfs/Linux_or_BSD.pdf. Retrieved on 2007-06-11.
(c) 2003 Wasabi Systems Inc. All rights reserved. This paper may not be sold or distributed without the permission of Wasabi Systems Inc. (www.wasabisystems.com). Citations and quotations from this document must include the copyright notice. - ^ Technologic Systems Designs NetBSD Controlled Toaster. Press release. August 2005. http://www.embeddedarm.com/news/netbsd_toaster.htm. Retrieved on 2007-06-11.
- ^ "Core Networking 6.4: Neutrino's Next Gen Networking Stack and Foundry27". http://community.qnx.com/sf/docman/do/downloadDocument/projects.networking/docman.root/doc1280.
- ^ "Foundry27: Project Networking - Driver wiki page". http://community.qnx.com/sf/wiki/do/viewPage/projects.networking/wiki/Drivers_wiki_page.
- ^ Force10 Networks uses NetBSD to build software scalability into operating system. Press release. http://www.force10networks.com/news/pressreleases/2007/pr-2007-02-13.asp.
- ^ Force10 Networks introduces unified operating system across product portfolio to lower total cost of owning and operating networks. Press release. http://www.force10networks.com/news/pressreleases/2008/pr-2008-01-28b.asp.
- ^ "Wasabi Certified® BSD". http://www.wasabisystems.com/docs/WasabiCertifiedBSD.pdf.
- ^ "Re: NetBSD/i386 and single board computers". http://mail-index.netbsd.org/port-i386/1997/12/04/0022.html.
- ^ "HTTP Page Transfer Rates over Geo-Stationary Satellite Links". http://roland.grc.nasa.gov/~jgriner/papers/nash98.pdf.
- ^ "SUNET Internet2 Land Speed Record: 69.073 Pbmps". http://proj.sunet.se/LSR2/.
- ^ "Sidekick LX 2009 / Blade Will Run NetBSD". www.hiptop3.com. 2009-01-30. http://www.hiptop3.com/archives/sidekick-lx-2009-blade-will-run-netbsd/. Retrieved on 2009-02-05.
- ^ NetBSD Licensing and Redistribution. Press release. June 2008. http://www.netbsd.org/about/redistribution.html#why2clause. Retrieved on 2008-06-20.
- ^ "Announcing NetBSD 4.0". http://www.netbsd.org/releases/formal-4/NetBSD-4.0.html.
- ^ "Announcing NetBSD 3.0". http://www.netbsd.org/releases/formal-3/NetBSD-3.0.html.
- ^ "Announcing NetBSD 2.0". http://www.netbsd.org/releases/formal-2.0/NetBSD-2.0.html.
- ^ "Announcing NetBSD 1.6". http://www.netbsd.org/releases/formal-1.6/NetBSD-1.6.html.
- ^ "Announcing NetBSD 1.5". http://www.netbsd.org/releases/formal-1.5/NetBSD-1.5.html.
- ^ "NetBSD 1.4 Release Announcement". http://www.netbsd.org/releases/formal-1.4/NetBSD-1.4.html.
- ^ "Information about NetBSD 1.3". http://www.netbsd.org/releases/formal-1.3/.
- ^ "Information about NetBSD 1.2". http://www.netbsd.org/releases/formal-1.2/.
- ^ "Information about NetBSD 1.1". http://www.netbsd.org/releases/formal-1.1/.
- ^ "NetBSD 1.0 release announcement". http://www.netbsd.org/releases/formal-1.0/NetBSD-1.0.html.
- ^ "NetBSD 0.9 available for anon-ftp...". ftp://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.9.
- ^ "Installation notes for NetBSD 0.8". ftp://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8.
- ^ "The pkgsrc-2008Q4 Release". http://mail-index.netbsd.org/netbsd-announce/2009/01/12/msg000052.html.
- ^ http://mail-index.netbsd.org/netbsd-advocacy/2004/01/14/0001.html
[edit] External links
- NetBSD homepage
- Official NetBSD blog
- NetBSD wiki
- Jibbed a NetBSD based Live CD
- BSD News, Search Engine, Forums and Tutorials
- Binary packages from pkgsrc bulk builds at [1], [2] and [3]
- #netbsd on freenode
- NetBSD CVS Digest
- NetBSD shell account at Super Dimensional Fortress and polarhome
- Wasabi Systems supported hardware platforms
- Recent Security Enhancements in NetBSD
- Manual : architecture independent bus – NetBSD Kernel Developer's
- DMA – NetBSD Kernel Developer's Manual : architecture independent
- Manual : architecture independent virtual memory management – NetBSD Kernel Developer's
- UBC: An Efficient Unified I/O and Memory Caching Subsystem for NetBSD
- An Implementation of Scheduler Activations on the NetBSD Operating System
- An Implementation of User-level Restartable Atomic Sequences on the NetBSD Operating System
- The UVM Virtual Memory System
- The Evolution of NetBSD
- International Space Station message 1 and message 2
- Internet2 SUNET Internet2 Land Speed Record
- Waving the flag: NetBSD developers speak about version 4.0
- Charles Hannum's views on the state of NetBSD, August 2006
- Hubert Feyrer's NetBSD Blog
- What Makes An Operating System "Portable"? by Hubert Feyrer
- #NetBSD Community Blog
- Open Source licensing, BSD compared to GPL
|