||This article's lead section may not adequately summarize key points of its contents. (December 2012)|
|Company / developer||The NetBSD Foundation|
|OS family||Unix-like (BSD)|
|Source model||Open source|
|Latest release||6.1.3 / 27 January 2014|
|Latest preview||6.1 RC4 / 2 May 2013|
|Supported platforms||57 different platforms using the following CPU architectures: Alpha, ARM (32 Bit only), PA-RISC, 68k, MIPS, PowerPC, SH3, SPARC, VAX and x86|
|Kernel type||Monolithic kernel Anykernel|
|Default user interface||Command-line interface|
NetBSD is an open-source Unix-like operating system descended from Berkeley Software Distribution (BSD), a Unix derivative developed at the University of California, Berkeley. It was the second open-source BSD descendant to be formally released, after 386BSD, and it continues to be actively developed. The NetBSD project is primarily focused on high-quality design, stability and performance of the system. Due to its portability and Berkeley-style license, NetBSD is often used in embedded systems.
The current stable release of NetBSD is version 6.1.3 (27 January 2014).
- 1 History
- 2 Features
- 3 Licensing
- 4 Releases
- 5 Logo
- 6 The NetBSD Foundation
- 7 Examples of use
- 8 Hosting
- 9 Gallery
- 10 See also
- 11 Notes
- 12 References
- 13 External links
NetBSD was originally derived from the 4.3BSD release of the Berkeley Software Distribution from the Computer Systems Research Group of the University of California, Berkeley, via their Net/2 source code release and the 386BSD project. The NetBSD 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 the distributed, collaborative nature of its development.
The NetBSD source code repository was established on 21 March 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. Also in 1994, for disputed reasons, one of the founders, Theo de Raadt, left 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.
Until 2004, NetBSD 1.x releases were made at roughly annual intervals, with minor "patch" releases in between. From release 2.0 onwards, NetBSD uses semantic versioning, and 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.
As the project's motto ("Of course it runs NetBSD" ) suggests, NetBSD has been ported to a large number of 32- and 64-bit architectures. These range from VAX minicomputers to Pocket PC PDAs. As of 2009, NetBSD supports 57 hardware platforms (across 15 different processor architectures). 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.
NetBSD's portability is aided by the use of hardware abstraction layer interfaces for low-level hardware access such as bus input/output or DMA. Using this portability layer, device drivers can be split into "machine-independent" and "machine-dependent" components. This allows a single driver to be easily used on several platforms by hiding details of exactly how the driver accesses the hardware, and 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, for example ISA, PCI, PC card, etcetera.
In comparison, Linux device driver code often needs to be reworked for every new architecture. As a consequence, in porting efforts by NetBSD and Linux developers, NetBSD has taken much less time to port to new hardware.
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 support cross-compiling.
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.
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, were available from and supported by Wasabi Systems.
Portable build framework
The NetBSD cross-compiling framework (also known as "build.sh" ) 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 a 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.
The pkgsrc packages collection
NetBSD features pkgsrc (short for "package source"), a framework for building and managing third-party application software packages. The pkgsrc collection consists of more than 12000 packages as of October 2012[update]. Building and installing packages such as KDE, GNOME, the Apache HTTP server or Perl is performed through the use of a system of makefiles. This can automatically 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. In either case, any prerequisites/dependencies will be installed automatically by the package system, without need for manual intervention.
pkgsrc supports not only NetBSD, but also several other BSD variants like FreeBSD and Darwin/Mac OS X, and other Unix-like operating systems such as Linux, Solaris, IRIX, and others, as well as Interix. pkgsrc has also been adopted as the official package management system for DragonFly BSD.
NetBSD has had support for SMP since the NetBSD 2.0 release in 2004, 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. A scalable M2 thread scheduler was implemented, though the old 4.4BSD scheduler still remains the default but was modified to scale with SMP. 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.
NetBSD provides various features in the security area. 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, ASLR, MPROTECT and Segvguard from PaX project, and GCC Stack Smashing Protection (SSP, or also known as ProPolice, enabled by default since NetBSD 6.0) compiler extensions. Verified Executables (or Veriexec) is an in-kernel file integrity subsystem in NetBSD. It allows the user to set digital fingerprints (hashes) of files, and take a number of different actions if files do not match their fingerprints. For example, one can allow Perl to run only scripts that match their fingerprints. The cryptographic device driver (CGD) allows using disks or partitions (including CDs and DVDs) for encrypted storage.
The Xen virtual-machine monitor has been supported in NetBSD since release 3.0. The use of Xen requires a special pre-kernel boot environment that loads a Xen-specialized kernel as the "host OS" (Dom0). Any number of "guest OSes" (DomU) virtualized computers, with or without specific Xen/DomU support, can be run in parallel with the appropriate hardware resources.
The need for a third-party boot manager, such as GRUB, was eliminated with NetBSD 5's Xen-compatible boot manager. NetBSD 6 as a Dom0 has been benchmarked comparably to Linux, with better performance than Linux in some tests.
NetBSD 5.0 introduced rump (Runnable Userspace Meta Programs), an architecture to run drivers in user-space by emulating kernel-space calls. The anykernel architecture allows adding support of NetBSD drivers to other kernel architectures, ranging from Exokernels to Monolithic kernels.
The WAPBL journaling filesystem, an extension of the BSD FFS filesystem, was contributed by Wasabi Systems in 2008.
The NetBSD Logical Volume Manager is based on a BSD reimplementation of a device-mapper driver and a port of the Linux Logical Volume Manager tools. It was mostly written during the Google Summer of Code 2008.
The CHFS Flash memory filesystem was imported into NetBSD in November 2011. CHFS is a file system developed at the Department of Software Engineering, University of Szeged, Hungary, and is the first open source Flash-specific file system written for NetBSD.
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 and SunOS 4. 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, AmigaOS Fast File System, IRIX EFS and many more through FUSE.
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 20 June 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.
NetBSD also includes the GNU development tools and other packages, which are covered by the GPL and other open source licenses. As is the case for the other BSD projects, NetBSD separates those in its base source tree, in order to make removal of code under more restrictive licenses easier. As for packages, the installed software licenses may be controlled by modifying the list of allowed licenses in the pkgsrc configuration file (
The following table lists major NetBSD releases and their notable features in reverse chronological order. Minor and patch releases are not included.
|Legend:||Old version||Older version, still supported||Current version||Latest preview version||Future release|
|Major releases||Release date||Notable features and changes|
|Current stable version: 6.1 ||18 May 2013||Numerous bugfixes, support for onboard ethernet and USB on Raspberry Pi Model B, support for Apple's Thunderbolt to Gigabit adapter, and porting of Linux's flock command.|
|Current stable version: 6.0 ||17 October 2012||Highlights: Support for thread-local storage, Logical Volume Manager functionality, rewritten disk quota subsystem, new subsystems to handle flash devices and NAND controllers, an experimental CHFS file system designed for flash devices, support for the Multiprotocol Label Switching protocol.
This release also introduces NetBSD Packet Filter (NPF) – a new packet filter, designed with multi-core systems in mind, which can do TCP/IP traffic filtering, stateful inspection, and Network Address Translation. SMP support for Xen domU kernels, initial suspend/resume support for Xen domU, PCI pass-through support for Xen3, and addition of the balloon driver. Major rework of MIPS port adding support for SMP and 64-bit (O32, N32, N64 ABIs are supported) processors, DSP v2 ASE extension, various NetLogic/RMI processor models, Loongson family processors, and new SoC boards. Improved SMP on PowerPC port and added support for Book E Freescale MPC85xx (e500 core) processors. ARM has gained support for Cortex-A8 processors, various new SoCs, and initial support for Raspberry Pi. To address the year 2038 problem, time t was extended to 64-bit type on all NetBSD ports.
|Current stable version: 5.0 ||29 April 2009||Rewritten threading subsystem based on a 1:1 model and rewritten scheduler implementation. Support for kernel preemption, POSIX real-time scheduling extensions, processor-sets, and dynamic CPU sets for thread affinity. Added jemalloc memory allocator. A metadata journaling for FFS, known as WAPBL (Write Ahead Physical Block Logging). Rewritten kernel modules framework, which will replace old LKMs. Use of X.Org rather than XFree86 by default for i386 and amd64 ports, and introduction of drm(4)/DRI for 3d hardware acceleration.|
|Old version, no longer supported: 4.0||19 December 2007||Added support for slab allocator, iSCSI target, CARP, tmpfs, Xen 3, the Kernel Authorization framework, Veriexec and other security extensions, and a Bluetooth protocol suite.|
|Old version, no longer supported: 3.0||23 December 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.|
|Old version, no longer supported: 2.0||9 December 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.|
|Old version, no longer supported: 1.6||14 September 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. Added support for multibyte LC_CTYPE locales.|
|Old version, no longer supported: 1.5||6 December 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 utility for kernel tracing was added. Six new platforms supported, including SPARC64. Added FFS soft updates and support for NTFS.|
|Old version, no longer supported: 1.4||12 May 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.|
|Old version, no longer supported: 1.3||9 March 1998||XFree86 source tree was 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.|
|Old version, no longer supported: 1.2||4 October 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.|
|Old version, no longer supported: 1.1||26 November 1995||Ports for DEC Alpha, Atari TT/Falcon030 and MVME68k systems added. Binary emulation facility added. Generic audio subsystem introduced.|
|Old version, no longer supported: 1.0||26 October 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.|
|Old version, no longer supported: 0.9||20 August 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).|
|Old version, no longer supported: 0.8||20 April 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.|
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. Mueller's version 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.
The NetBSD Foundation
The NetBSD Foundation is the legal entity that owns the intellectual property and trademarks associated with NetBSD, and on 22 January 2004, became a 501(c)3 tax-exempt non-profit organization. The members of the foundation are developers who have CVS commit access. The NetBSD Foundation has a Board of Directors, elected by the voting of members for two years.
Examples of use
NetBSD's clean design, high performance, scalability, and support for many architectures has led to its use in embedded devices and servers, especially in networking applications.
Dell Force10 uses NetBSD as the underlying operating system that powers FTOS (the Force10 Operating System), which is used in high scalability switch/routers. Force10 also made a donation to the NetBSD Foundation in 2007 to help further research and the open development community.
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.
Hosting for the project is provided primarily by the Internet Systems Consortium Inc, Columbia University, and Western Washington University. Mirrors for the project are spread around the world and provided by volunteers and supporters of the project.
- "NetBSD Blog".
- "Open Sources: Voices from the Open Source Revolution". oreilly.com.
- "About the NetBSD Project".
- "Get to know NetBSD: An operating system that travels". ibm.org.
- Ganssle, Jack G; Noergaard, Tammy; Eady, Fred; Edwards, Lewin; Katz, David J (14 September 2007). Embedded Hardware. ISBN 978-0-7506-8584-9. pp. 291–292.
- "Announcing NetBSD 6.1.3".
- "The History of the NetBSD Project". www.netbsd.org. The NetBSD Foundation. Retrieved 29 November 2009.
- Chris G. Demetriou (19 April 1993). "So you say you want an interim release of 386bsd?". comp.os.386bsd.announce. Web link. Retrieved 12 May 2010.
- de Raadt, Theo (29 March 2009). "Archive of the mail conversation leading to Theo de Raadt's departure". Retrieved 15 January 2010.
- "Platforms supported by pkgsrc". www.netbsd.org. The NetBSD Foundation. Retrieved 10 January 2010.
- "NetBSD release glossary and graphs". The NetBSD Project. 13 January 2010. Retrieved 15 January 2010.
- "Portability and supported hardware platforms". www.netbsd.org. The NetBSD Foundation. Retrieved 29 November 2009.
- "BSD or Linux: Which Unix is better for embedded applications?" (PDF). Wasabi Systems Inc. 2003. Archived from the original on 30 December 2006. Retrieved 11 June 2007.
- "Technologic Systems Designs NetBSD Controlled Toaster" (Press release). August 2005. Retrieved 11 June 2007.
- The NetBSD Foundation (10 January 2010). "Chapter 31. Crosscompiling NetBSD with build.sh". The NetBSD Guide. Retrieved 15 January 2010.
- "The pkgsrc-2012Q3 Release".
- Dillon, Matthew (31 August 2005). "PKGSRC will be officially supported as of the next release". DragonFly users List mailing list. http://leaf.dragonflybsd.org/mailarchive/users/2005-08/msg00347.html. Retrieved 15 January 2010.
- "NetBSD 2.0 release notes".
- "Significant changes from NetBSD 4.0 to 5.0". 23 December 2009. Retrieved 15 January 2010.
- "NetBSD security(8) manual page".
- "kauth(9)". NetBSD Manual Pages. 10 August 2009. Retrieved 15 January 2010.
- "NetBSD paxctl(8) manual page".
- "Chapter 19. NetBSD Veriexec subsystem".
- "Chapter 14. The cryptographic device driver (CGD)".
- "boot(8)". NetBSD Manual Pages. 4 September 2009. Retrieved 15 January 2010.
- Matthew, Cherry G.; Monné, Roger Pau (August 2012). "(Free and Net) BSD Xen Roadmap". Retrieved 29 December 2012.
- "The Anykernel and Rump Kernels".
- Burge, Simon (2 March 2008). "Patches for journalling support". http://mail-index.netbsd.org/tech-kern/2008/03/02/msg000504.html. Retrieved 15 January 2010.
- Hamsik, Adam (29 August 2008). "HEADS UP NetBSD lvm support". http://mail-index.netbsd.org/tech-kern/2008/08/28/msg002554.html. Retrieved 15 January 2010.
- "NetBSD Binary Emulation". 13 January 2010. Retrieved 15 January 2010.
- "NetBSD Licensing and Redistribution" (Press release). June 2008. Retrieved 20 June 2008.
- "Announcing NetBSD 6.1".
- "Announcing NetBSD 6.0".
- "Announcing NetBSD 5.0".
- "Announcing NetBSD 4.0".
- "Announcing NetBSD 3.0".
- "Announcing NetBSD 2.0".
- "Announcing NetBSD 1.6".
- "Announcing NetBSD 1.5".
- "NetBSD 1.4 Release Announcement".
- "Information about NetBSD 1.3".
- "Information about NetBSD 1.2".
- "Information about NetBSD 1.1".
- "NetBSD 1.0 release announcement".
- "NetBSD 0.9 available for anon-ftp...".
- "Installation notes for NetBSD 0.8".
- Old NetBSD logo
- "NetBSD logo design competition".
- The NetBSD Foundation, Inc.
- "NetBSD Developers". 7 January 2010. Retrieved 15 January 2010.
- "Foundry27: Project Networking – Driver wiki page". QNX Software Systems. Retrieved 27 December 2011.
- "Third Party Open Source License Terms Guide". QNX Software Systems. Retrieved 27 December 2011.
- "Core Networking 6.4: Neutrino's Next Gen Networking Stack and Foundry27" (PDF). QNX Software Systems. (registration required)
- "Force10 Networks uses NetBSD to build software scalability into operating system". Dell (Press release). 13 February 2007. Retrieved 27 December 2011.
- "Force10 Networks introduces unified operating system across product portfolio to lower total cost of owning and operating networks". Dell (Press release). 28 January 2008. Retrieved 27 December 2011.
- "Wasabi Certified BSD".
- Rivett, Mary (12 April 1997). "Re: NetBSD/i386 and single board computers". port-i386 mailing list. http://mail-index.netbsd.org/port-i386/1997/12/04/0022.html.
- Kruse, Hans; Allman, Mark; Griner, Jim & Tran, Diepchi (5 March 1998). "HTTP Page Transfer Rates over Geo-Stationary Satellite Links". Retrieved 27 December 2011.
- Josefsson, Börje (14 April 2004). "SUNET Internet2 Land Speed Record: 69.073 Pbmps". SUNET. Retrieved 27 December 2011.
- "How to jailbreak an Apple Time Capsule?". superuser.com. Retrieved 27 December 2009.
- Fleishman, Glenn (16 February 2007). "AirPort Extreme: Apple Breaks 90 Mbps". wifinetnews.com. Retrieved 28 December 2009.
- "Sidekick LX 2009 / Blade Will Run NetBSD". www.hiptop3.com. 30 January 2009. Retrieved 5 February 2009.
- "Minix Gets a NetBSD Code Infusion". pcworld.com. 29 February 2012. Retrieved 4 July 2012.
|Wikimedia Commons has media related to NetBSD.|