NetBSD#4.0

{{short description|Free and open-source Unix-like operating system}}

{{Use dmy dates|date=September 2021}}

{{Infobox OS

| name = NetBSD

| logo = NetBSD.svg

| screenshot = NetBSD 10.1 sparc64 ctwm screenshot.png

| caption = NetBSD 10.1 default CTWM desktop on a Sun UltraSPARC-IIe station

| developer = The NetBSD Foundation, Inc.

| family = Unix-like (BSD)

| released = {{Start date and age|df=yes|1993|04|19}}

| programmed in = C

| source model = Open source

| latest release version = 10.1

| latest release date = {{start date and age|df=yes|2024|12|16}}{{cite web

| url = https://www.netbsd.org/releases/formal-10/NetBSD-10.1.html

| title = Announcing NetBSD 10.1 (Dec 16, 2024)

}}

| latest preview version = 10.99.x{{Cite web |url=https://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/latest/ |title=Daily Release Engineering Builds |access-date=5 October 2024 |archive-date=26 May 2022 |archive-url=https://web.archive.org/web/20220526082411/https://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/latest/ |url-status=live }}

| latest preview date = Daily builds

| kernel type = Monolithic with dynamically loadable modules, rump kernel

| userland = BSD

| influenced_by = 386BSD

| ui = ash, X11 (CTWM)

| license = 2-clause BSD license

| working state = Current

| supported platforms = Alpha, ARM, x86 (IA-32 and x86-64), PA-RISC, 68k, MIPS, PowerPC, SH3, SPARC, RISC-V, VAX

| package_manager = pkgsrc

| tagline = "Of course it runs NetBSD"{{cite web |last1=Delony |first1=David |title=NetBSD Explained: The Unix System That Can Run on Anything |url=https://www.makeuseof.com/what-is-netbsd/ |website=Makeuseof |date=17 August 2021 |access-date=16 January 2023 |archive-date=24 January 2023 |archive-url=https://web.archive.org/web/20230124205308/https://www.makeuseof.com/what-is-netbsd/ |url-status=live }}

| website = {{URL|//netbsd.org/}}

}}

NetBSD is a free and open-source Unix-like operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked.{{cite book|chapter=Twenty Years of Berkeley Unix: From AT&T-Owned to Freely Redistributable|chapter-url=http://www.oreilly.com/openbook/opensources/book/kirkmck.html|title=Open Sources: Voices from the Open Source Revolution|url=https://archive.org/details/isbn_9781565925823|publisher=O'Reilly Media|date=January 1999|isbn=1-56592-582-3}}{{cite web|url=http://freelicensegames.com/NetBSD.htm|title=About NetBSD|access-date=7 June 2014|quote=NetBSD is a fork of the 386/BSD branch of the Berkeley Software Distribution (or BSD) operating system.|archive-date=5 April 2013|archive-url=https://web.archive.org/web/20130405131107/http://freelicensegames.com/NetBSD.htm|url-status=live}} It continues to be actively developed and is available for many platforms, including servers, desktops, handheld devices, and embedded systems.{{cite web|url=http://www.ibm.com/developerworks/aix/library/au-netbsd.html|title=Get to know NetBSD: An operating system that travels|publisher=ibm.org|access-date=28 November 2009|archive-date=1 May 2008|archive-url=https://web.archive.org/web/20080501175739/http://www.ibm.com/developerworks/aix/library/au-netbsd.html|url-status=live}}{{cite book|url=https://books.google.com/books?id=HLpTtLjEXqcC&pg=PT291|title=Embedded Hardware|isbn=978-0-7506-8584-9|author1=Ganssle, Jack G|author2=Noergaard, Tammy|author3=Eady, Fred|author4=Edwards, Lewin|author5=Katz, David J|date=14 September 2007|publisher=Newnes }} pp. 291–292.

The NetBSD project focuses on code clarity, careful design, and portability across many computer architectures. Its source code is publicly available and permissively licensed.{{cite web|title=About NetBSD|at=The NetBSD Project's goals|url=https://www.netbsd.org/about/|publisher=The NetBSD Foundation, Inc.|access-date=26 September 2023}}{{cite web|title=NetBSD features list|url=https://www.netbsd.org/about/features.html#clean-design|publisher=The NetBSD Foundation, Inc.|access-date=7 June 2014|quote=NetBSD focuses on clean design and well architected solutions.|archive-date=6 August 2011|archive-url=https://web.archive.org/web/20110806041016/https://www.netbsd.org/about/features.html#clean-design|url-status=dead}}{{cite book|last1=Love|first1=Robert|title=Linux Kernel development|date=2005|publisher=Sams Publishing|isbn=0-672-32720-1|edition=2.|chapter-url=https://archive.org/details/linuxkerneldevel00love_0|access-date=7 June 2014|chapter=Chapter 19|quote=Some examples of highly portable operating systems are Minix, NetBSD, and many research systems.}}

History

NetBSD was originally derived from the 4.3BSD-Reno release of the Berkeley Software Distribution from the Computer Systems Research Group of the University of California, Berkeley, via its 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.{{cite web|url=https://www.netbsd.org/about/history.html|title=The History of the NetBSD Project|work=netbsd.org|publisher=The NetBSD Foundation|access-date=29 November 2009|archive-date=6 August 2011|archive-url=https://web.archive.org/web/20110806041208/http://www.netbsd.org/about/history.html|url-status=live}} 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 benefit the project: one centered on portable, clean, correct code. They aimed to produce a unified, multi-platform, production-quality, BSD-based operating system. The name "NetBSD" was chosen based on the importance and growth of networks such as the Internet at that time, and the distributed, collaborative nature of its development.{{Cite web|date=20 April 1993|title=INSTALLATION NOTES for NetBSD 0.8|url=http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8|url-status=dead|access-date=20 October 2020|website=NetBSD|archive-date=17 January 2020|archive-url=https://web.archive.org/web/20200117054425/http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8}}

The NetBSD source code repository was established on 21 March 1993 and the first official release, NetBSD 0.8, was made on 19 April 1993.{{cite newsgroup|url=http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8|title=So you say you want an interim release of 386bsd?|author=Chris G. Demetriou|date=19 April 1993|newsgroup=comp.os.386bsd.announce|access-date=12 May 2010|archive-date=17 January 2020|archive-url=https://web.archive.org/web/20200117054425/http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8|url-status=live}} 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.{{cite web|url=https://www.netbsd.org/releases/formal-0.8/|title=Information about NetBSD 0.8|access-date=4 November 2017|archive-date=29 June 2018|archive-url=https://web.archive.org/web/20180629191228/http://www.netbsd.org/releases/formal-0.8/|url-status=live}} The first multi-platform release, NetBSD 1.0, was made in October 1994, and being updated with 4.4BSD-Lite sources, it was free of all legally encumbered 4.3BSD Net/2 code.{{cite web|url=https://www.netbsd.org/releases/formal-1.0/|title=Information about NetBSD 1.0|access-date=4 November 2017|archive-date=3 November 2019|archive-url=https://web.archive.org/web/20191103233740/http://netbsd.org/releases/formal-1.0/|url-status=live}} Also in 1994, for disputed reasons, one of the founders, Theo de Raadt, was removed from the project. He later founded a new project, OpenBSD, from a forked version of NetBSD 1.0 near the end of 1995.{{cite web |url=http://www.theos.com/deraadt/coremail.html |first=Theo |last=De Raadt |author-link=Theo de Raadt |title=Archive of the mail conversation leading to Theo de Raadt's departure |date=29 March 2009 |access-date=15 January 2010 |archive-date=1 November 2008 |archive-url=https://web.archive.org/web/20081101132539/http://www.theos.com/deraadt/coremail.html |url-status=live }}

In 1998, NetBSD 1.3 introduced the pkgsrc packages collection.{{cite web|url=https://www.netbsd.org/docs/pkgsrc/introduction.html#supported-platforms|title=Platforms supported by pkgsrc|work=netbsd.org|publisher=The NetBSD Foundation|access-date=10 January 2010|archive-date=22 June 2018|archive-url=https://web.archive.org/web/20180622111455/https://www.netbsd.org/docs/pkgsrc/introduction.html#supported-platforms|url-status=live}}

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.{{cite web|url=https://www.netbsd.org/releases/release-map.html|title=NetBSD release glossary and graphs|date=13 January 2010|publisher=The NetBSD Project|access-date=15 January 2010|archive-date=19 July 2011|archive-url=https://web.archive.org/web/20110719135146/http://www.netbsd.org/releases/release-map.html|url-status=live}}

NetBSD used to ship with twm as a preconfigured graphical interface (window manager); in 2020 (version 9.1) this was changed to the more modern and versatile CTWM.{{Cite web |last=Plura |first=Michael |date=2020-10-26 |title=NetBSD 9.1 mit mehr ZFS und "neuem" Fenstermanager CTWM |url=https://www.heise.de/news/NetBSD-9-1-mit-mehr-ZFS-und-neuem-Fenstermanager-CTWM-4938633.html |access-date=2024-05-30 |website=heise online |language=de |archive-date=18 April 2024 |archive-url=https://web.archive.org/web/20240418101712/https://www.heise.de/news/NetBSD-9-1-mit-mehr-ZFS-und-neuem-Fenstermanager-CTWM-4938633.html |url-status=live }}

Features

= Portability =

{{See also|busdma}}

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. NetBSD has also been ported to several video game consoles such as the Sega Dreamcast{{Cite web |title=About NetBSD/dreamcast |url=https://wiki.netbsd.org/ports/dreamcast/ |access-date=February 25, 2024 |website=NetBSD Blog |archive-date=24 February 2024 |archive-url=https://web.archive.org/web/20240224025429/https://wiki.netbsd.org/ports/dreamcast/ |url-status=live }} and the Nintendo Wii.{{Cite web |last=McNeill |first=Jared |date=January 21, 2024 |title=NetBSD/evbppc 10.99.10 on the Nintendo Wii |url=https://www.youtube.com/watch?v=n-MShCcFm_w |access-date=February 25, 2024 |website=YouTube |archive-date=25 February 2024 |archive-url=https://web.archive.org/web/20240225211039/https://www.youtube.com/watch?v=n-MShCcFm_w |url-status=live }} As of 2019, NetBSD supports 59 hardware platforms (across 16 different instruction sets). 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" (MI) and "machine-dependent" (MD) components. This makes a single driver easily usable on several platforms by hiding hardware access details, and reduces the work to port it to a new system.{{cite web|url=http://netbsd.org/about/portability.html|title=Portability and supported hardware platforms|work=netbsd.org|publisher=The NetBSD Foundation|access-date=29 November 2009|archive-date=22 December 2021|archive-url=https://web.archive.org/web/20211222014507/http://www.netbsd.org/about/portability.html|url-status=live}}

This permits a particular device driver for a PCI card to work without modifications, whether it 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, like ISA, PCI, or PC Card.

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.{{cite press release|url=http://www.embeddedarm.com/software/arm-netbsd-toaster.php|title=Technologic Systems Designs NetBSD Controlled Toaster|date=August 2005|access-date=11 June 2007|archive-date=19 October 2011|archive-url=https://web.archive.org/web/20111019004907/http://www.embeddedarm.com/software/arm-netbsd-toaster.php|url-status=live}}

Commercial ports to embedded platforms were available from and supported by Wasabi Systems, including platforms such as the AMD Geode LX800, Freescale PowerQUICC processors, Marvell Orion, AMCC 405 family of PowerPC processors, and the Intel XScale IOP and IXP series.

= Portable build framework =

The NetBSD cross-compiling framework (also known as "build.sh"{{cite web |url=https://www.netbsd.org/docs/guide/en/chap-build.html |title=Chapter 31. Crosscompiling NetBSD with build.sh |work=The NetBSD Guide |author=The NetBSD Foundation |date=10 January 2010 |access-date=15 January 2010 |archive-date=6 August 2011 |archive-url=https://web.archive.org/web/20110806044418/http://www.netbsd.org/docs/guide/en/chap-build.html |url-status=live }}) lets a developer build a complete NetBSD system for an architecture from a more powerful system of different architecture (cross-compiling), including on a different operating system (the framework supports most POSIX-compliant systems). Several embedded systems using NetBSD have required no additional software development other than toolchain and target rehost.{{cite web |url=http://wasabisystems.com/pdfs/Linux_or_BSD.pdf |title=BSD or Linux: Which Unix is better for embedded applications? |year=2003 |publisher=Wasabi Systems Inc. |access-date=11 June 2007 |archive-date=30 December 2006 |archive-url=https://web.archive.org/web/20061230075423/http://www.wasabisystems.com/pdfs/Linux_or_BSD.pdf}}

As of 2017, NetBSD had reached fully reproducible builds on amd64 and SPARC64.{{cite web |url=https://blog.netbsd.org/tnf/entry/netbsd_fully_reproducible_builds |title=NetBSD fully reproducible builds |work=NetBSD Blog |first=Christos |last=Zoulas |date=20 February 2017 |access-date=15 January 2010}} The build.sh -P flag handles reproducible builds automatically.

= The pkgsrc packages collection =

{{Main|pkgsrc}}

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 20,000 packages as of {{As of|2019|alt=October 2019}}.{{cite mailing list|url=http://mail-index.netbsd.org/tech-pkg/2019/10/03/msg022032.html|title=The pkgsrc-2019Q3 Release|first=Thomas|last=Klausner|date=3 October 2019|mailing-list=tech-pkg|access-date=8 October 2021|archive-date=10 March 2021|archive-url=https://web.archive.org/web/20210310230231/https://mail-index.netbsd.org/tech-pkg/2019/10/03/msg022032.html|url-status=live}} Building and installing packages such as Lumina, 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 is a cross-platform packaging system, for it supports not only NetBSD, but can be used on several other Unices, among which macOS, Solaris and Linux are considered primary targets.{{cite web |url=https://anonhg.netbsd.org/pkgsrc/file/trunk/bootstrap/README |title=pkgsrc bootstrap README |work=pkgsrc sources (anonhg) |date=21 April 2024 |access-date=11 February 2025 |archive-date=11 February 2025 |archive-url=https://web.archive.org/web/20250211203356/https://anonhg.netbsd.org/pkgsrc/file/trunk/bootstrap/README |url-status=live }} Other BSDs, HP-UX, Minix, SCO UNIX (Unixware and OpenServer) and QNX have a number of active pkgsrc users but do not receive active maintenance.

pkgsrc is the default package management system on SmartOS{{cite web |title=MNX Packages Documentation - Home |url=https://pkgsrc.smartos.org/ |publisher=MNX Clound |access-date=11 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218041228/https://pkgsrc.smartos.org/ |url-status=live }} and Minix3.{{cite web |title=Pkgsrc Guide |url=https://wiki.minix3.org/doku.php?id=developersguide:pkgsrcguide |work=MINIX 3 wiki |date=10 July 2021 |access-date=11 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313040536/https://wiki.minix3.org/doku.php?id=developersguide:pkgsrcguide |url-status=live }}

It was also previously adopted as the official package management system for DragonFly BSD,{{cite mailing list |url=http://leaf.dragonflybsd.org/mailarchive/users/2005-08/msg00347.html |title=PKGSRC will be officially supported as of the next release |first=Matthew |last=Dillon |author-link=Matthew Dillon (computer scientist) |mailing-list=DragonFly users |date=31 August 2005 |access-date=15 January 2010 |archive-url=https://web.archive.org/web/20080120045308/http://leaf.dragonflybsd.org/mailarchive/users/2005-08/msg00347.html |archive-date=20 January 2008 |url-status=dead }} and made available as an alternative packaging framework on MirBSD{{cite web |title=pkgsrc on MirBSD |url=https://archive.fosdem.org/2012/schedule/event/849/111_pkgsrc-on-MirBSD.pdf | first=Benny | last=Siegert |work=FOSDEM 2012 |access-date=11 February 2025}} and QNX.{{cite web |title=QNX Community pkgsrc Project |url=https://community.qnx.com/sf/projects/pkgsrc/ |publisher=Digital.ai Teamforge |date=13 September 2007 |access-date=11 February 2025 |archive-date=11 February 2025 |archive-url=https://web.archive.org/web/20250211203352/https://community.qnx.com/sf/projects/pkgsrc/ |url-status=live }}

= Symmetric multiprocessing =

NetBSD has supported SMP since the NetBSD 2.0 release in 2004,{{cite web|url=https://www.netbsd.org/changes/2004.html#netbsd-2.0|title=NetBSD 2.0 release notes|access-date=5 October 2024|archive-date=7 October 2024|archive-url=https://web.archive.org/web/20241007095723/https://www.netbsd.org/changes/2004.html#netbsd-2.0|url-status=live}} 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 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.{{cite web |url=https://www.netbsd.org/changes/changes-5.0.html |title=Significant changes from NetBSD 4.0 to 5.0 |date=23 December 2009 |access-date=15 January 2010 |archive-date=6 August 2011 |archive-url=https://web.archive.org/web/20110806041301/http://www.netbsd.org/changes/changes-5.0.html |url-status=live }}{{cite web |url=https://www.netbsd.org/~rmind/pub/netbsd_5_scheduling_apis.pdf |title=Thread scheduling and related interfaces in NetBSD 5.0 |first=Mindaugas |last=Rasiukevicius |date=4 May 2009 |access-date=15 January 2010 |archive-date=20 May 2009 |archive-url=https://web.archive.org/web/20090520164915/http://www.netbsd.org/~rmind/pub/netbsd_5_scheduling_apis.pdf |url-status=live }} A scalable M2 thread scheduler was also implemented,{{cite mailing list |url=https://mail-index.netbsd.org/tech-kern/2007/10/04/0001.html |title=Implementation of SCHED_M2 scheduler |first=Mindaugas |last=Rasiukevicius |date=4 October 2007 |mailing-list=tech-kern |access-date=9 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313015944/https://mail-index.netbsd.org/tech-kern/2007/10/04/0001.html |url-status=live }} providing separate real-time (RT) and time-sharing (TS) queues, and improving the performance on MP systems. 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. As of NetBSD 10.0, the only subsystems running with a giant lock are SATA device drivers, interrupt handlers, the autoconf(9) framework and most the network stack, unless the NET_MPSAFE kernel option is enabled.{{cite web |url=https://man.netbsd.org/KERNEL_LOCK.9 |title=KERNEL_LOCK(9) |work=NetBSD Manual Pages |date=13 February 2022 |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313033503/https://man.netbsd.org/KERNEL_LOCK.9 |url-status=live }}

In reality, starting with release 8.0, various parts of the network stack have been made MP safe already, but NET_MPSAFE is kept disabled by default, because non-MP-safe components that are also unprotected by the giant lock may otherwise crash the kernel when loaded in memory.{{cite web |url=https://anonhg.netbsd.org/src/file/trunk/doc/TODO.smpnet |title=doc/TODO.smpnet |work=NetBSD sources (anonhg) |date=12 August 2024 |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313015820/https://anonhg.netbsd.org/src/file/trunk/doc/TODO.smpnet |url-status=live }}

The 4.4BSD scheduler still remains the default, but was modified to scale with SMP, merging features from SCHED_M2.{{cite web |url=https://manikishan.wordpress.com/2020/05/10/scheduling-in-netbsd-part-1/ |title=Scheduling in NetBSD – Part 1 |date=10 May 2020 |access-date=9 February 2025 |archive-date=9 February 2025 |archive-url=https://web.archive.org/web/20250209111713/https://manikishan.wordpress.com/2020/05/10/scheduling-in-netbsd-part-1/ |url-status=live }}

In 2017, the scheduler was changed to better distribute load of long-running processes on multiple CPUs, and tunable kern.sched sysctl(3) parameters were introduced.{{cite web |url=https://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20170109_2108.html |title=Documenting NetBSD's scheduler tweaks |author=Hubert Feyrer |work=hubertf's NetBSD Blog |date=1 September 2017 |access-date=9 February 2025 |archive-date=9 February 2025 |archive-url=https://web.archive.org/web/20250209111714/https://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20170109_2108.html |url-status=live }} The release of NetBSD 10.0 brought significant performance enhancements, especially on multiprocessor and multicore systems; the scheduler gained major awareness of NUMA and hyperthreading, and became able to spread the load evenly across different physical CPUs, as well as to scale better on a mixture of slow and fast cores (e.g. ARM big.LITTLE).{{cite mailing list |url=https://mail-index.netbsd.org/source-changes/2020/01/09/msg112749.html |title=Many small tweaks to the SMT awareness in the scheduler |first=Andrew |last=Doran |date=9 January 2020 |mailing-list=source-changes|access-date=9 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313024951/https://mail-index.netbsd.org/source-changes/2020/01/09/msg112749.html |url-status=live }}

= Security =

NetBSD supports a number of features designed to improve system security.{{cite web|url=https://man.netbsd.org/security.7|title=security(7)|work=NetBSD Manual Pages|access-date=9 February 2025|archive-date=12 February 2025|archive-url=https://web.archive.org/web/20250212050549/https://man.netbsd.org/security.7|url-status=live}} Some are listed below.

The Kernel Authorization framework{{cite web |url=https://man.netbsd.org/kauth.9 |title=kauth(9) |work=NetBSD Manual Pages |date=10 August 2009 |access-date=15 January 2010 |archive-date=20 September 2020 |archive-url=https://web.archive.org/web/20200920213107/http://man.netbsd.org/kauth.9 |url-status=live }} (or kauth) is a subsystem managing all authorization requests inside the kernel, and used as system-wide security policy. kauth(9) acts as a gatekeeper between kernel's own routines, by checking whether a given call or a specific operation is allowed within the context, and returns EPERM if not.{{cite web |url=https://media.defcon.org/DEF%20CON%2016/DEF%20CON%2016%20presentations/DEF%20CON%2016%20-%20martinez-bowen.pdf |work=DEF CON 2016 |title=Toasterkit - A NetBSD Rootkit |author=Anthony Martinez, Thomas Bowen |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313022958/https://media.defcon.org/DEF%20CON%2016/DEF%20CON%2016%20presentations/DEF%20CON%2016%20-%20martinez-bowen.pdf |url-status=live }} Most syscalls issue an authorization request in their corresponding

handler via kauth_authorize_action(). kauth also allows external modules to plug-in the authorization process.

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.{{cite web|url=https://www.netbsd.org/docs/guide/en/chap-veriexec.html|title=Chapter 19. NetBSD Veriexec subsystem|work=NetBSD Guide|access-date=5 October 2024|archive-date=27 July 2011|archive-url=https://web.archive.org/web/20110727120125/http://www.netbsd.org/docs/guide/en/chap-veriexec.html|url-status=live}}

Starting with version 2.0, NetBSD supports non-executable mappings on platforms where the hardware allows it.{{cite mailing list |url=https://mail-index.netbsd.org/source-changes/2003/08/24/msg132500.html |title=Add support for non-executable mappings |first=Chuck |last=Silvers |date=24 August 2003 |mailing-list=source-changes|access-date=9 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313021738/https://mail-index.netbsd.org/source-changes/2003/08/24/msg132500.html |url-status=live }} Process stack and heap mappings are non-executable by default. This makes exploiting potential buffer overflows harder.

NetBSD supports PROT_EXEC permission via mmap() for all platforms where the hardware differentiates execute access from data access, though not necessarily with single-page granularity.{{cite web|url=https://man.netbsd.org/mmap.2|title=mmap(2)|work=NetBSD Manual Pages|access-date=17 February 2025|archive-date=6 March 2025|archive-url=https://web.archive.org/web/20250306141702/https://man.netbsd.org/mmap.2|url-status=live}}

NetBSD implements several exploit mitigation features, such as ASLR (in both userland and kernel{{cite web|url=https://man.netbsd.org/paxctl.8|title=paxctl(8)|work=NetBSD Manual Pages|access-date=9 February 2025|archive-date=11 February 2025|archive-url=https://web.archive.org/web/20250211081017/https://man.netbsd.org/paxctl.8|url-status=live}}{{cite web |url=https://blog.netbsd.org/tnf/entry/the_strongest_kaslr_ever |title=The strongest KASLR, ever? |first=Maxime |last=Villard |work=NetBSD Blog |date=20 November 2017 |access-date=15 February 2025 |archive-date=15 February 2025 |archive-url=https://web.archive.org/web/20250215061257/https://blog.netbsd.org/tnf/entry/the_strongest_kaslr_ever |url-status=live }}), restricted mprotect() (W^X) and Segvguard from the PaX project, and GCC Stack Smashing Protection (SSP, or also known as ProPolice, enabled by default since NetBSD 6.0) compiler extensions.

The cryptographic device driver (CGD) provides transparent disk encryption by acting as a logical device that is layered on top of another block device, such as a physical disk or partition (including CDs and DVDs) or a vnd(4) pseudo device.{{cite web |url=https://www.netbsd.org/docs/guide/en/chap-cgd.html |title=Chapter 14. The cryptographic device driver (CGD) |work=NetBSD guide |access-date=5 October 2024 |archive-date=6 August 2011 |archive-url=https://web.archive.org/web/20110806032841/http://www.netbsd.org/docs/guide/en/chap-cgd.html |url-status=live }} It supports the Adiantum cipher, besides AES in CBC/XTS modes.{{cite web |url=https://man.netbsd.org/cgd.4 |title=cgd(4) |work=NetBSD Manual Pages |date=27 September 2024 |access-date=16 February 2025 |archive-date=31 December 2024 |archive-url=https://web.archive.org/web/20241231214629/https://man.netbsd.org/cgd.4 |url-status=live }}

NPF, introduced with NetBSD 6.0,{{cite mailing list |url=https://mail-index.netbsd.org/netbsd-announce/2012/10/17/msg000161.html |title=Introducing NPF in NetBSD 6.0 |first=Mindaugas |last=Rasiukevicius |date=17 October 2012 |mailing-list=tech-net|access-date=9 February 2025 |archive-date=25 January 2025 |archive-url=https://web.archive.org/web/20250125062352/https://mail-index.netbsd.org/netbsd-announce/2012/10/17/msg000161.html |url-status=live }} is a layer 3 packet filter, supporting stateful packet inspection, IPv6, NAT, IP sets, and extensions.{{cite web |url=https://rmind.github.io/npf/ |title=NPF documentation |access-date=9 February 2025 |archive-date=11 April 2024 |archive-url=https://web.archive.org/web/20240411172948/https://rmind.github.io/npf/ |url-status=live }} It uses BPF as its core engine, and supports bpfjit. NPF was designed with a focus on high performance, scalability, multi-threading and modularity.

Relevant to security are also BSD securelevels,{{cite web |url=https://man.netbsd.org/secmodel_securelevel.9 |title=Securelevel security model |work=NetBSD Manual Pages |date=18 May 2019 |access-date=16 February 2025 |archive-date=26 January 2025 |archive-url=https://web.archive.org/web/20250126045143/https://man.netbsd.org/secmodel_securelevel.9 |url-status=live }} blocklistd(8), a daemon capable of blocking ports on demand to avoid DoS abuse,{{cite web |url=https://toobnix.org/w/oLeZmooQT77ZPbDs8yWJDq |title=Blacklistd by Christos Zoulas |publisher=BSDTV |work=NYCBUG 2015 |access-date=16 February 2015 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313024651/https://toobnix.org/w/oLeZmooQT77ZPbDs8yWJDq |url-status=live }} and the wg(4) interface, which provides a homegrown implementation of the Wireguard protocol.{{cite mailing list |url=https://mail-index.netbsd.org/current-users/2020/08/20/msg039393.html |title=Wireguard in NetBSD |author=Taylor R Campbell |date=20 Aug 2020 |mailing-list=current-users|access-date=26 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313020821/https://mail-index.netbsd.org/current-users/2020/08/20/msg039393.html |url-status=live }}

The NetBSD code is regularly scanned for bugs, and security advisories — containing a pointer to the fix — are published on the official mailing lists.{{cite web|url=https://www.netbsd.org/support/security/|title=Security and NetBSD|publisher=NetBSD.org|access-date=9 February 2025|archive-date=12 February 2025|archive-url=https://web.archive.org/web/20250212083002/https://netbsd.org/support/security/|url-status=live}}

= Memory management =

NetBSD uses the UVM{{cite web |url=https://www.netbsd.org/docs/kernel/uvm.html |title=UVM, the new Virtual Memory system |work=NetBSD Docs |access-date=24 February 2025 |archive-date=16 August 2024 |archive-url=https://web.archive.org/web/20240816190229/https://www.netbsd.org/docs/kernel/uvm.html |url-status=live }} virtual memory system, developed by Charles D. Cranor at Washington University in 1998, and committed to the NetBSD source tree by Matthew Green, who handled integration issues and wrote the swap subsystem.{{cite mailing list |url=https://mail-index.netbsd.org/source-changes/1998/02/05/msg028344.html |title=UVM: initial import of the new virtual memory system |first=Matthew |last=Green |date=4 February 1998 |mailing-list=source-changes|access-date=24 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313015423/https://mail-index.netbsd.org/source-changes/1998/02/05/msg028344.html |url-status=live }}

The original Mach based 4.4BSD system{{cite web |url=https://docs.freebsd.org/en/books/design-44bsd/#_bsd_memory_management_design_decisions |title=BSD Memory-Management Design Decisions |author=Marshall Kirk McKusick |work=The Design and Implementation of the 4.4BSD Operating System |date=30 April 1996 |access-date=24 February 2025 |archive-date=14 February 2025 |archive-url=https://web.archive.org/web/20250214090423/https://docs.freebsd.org/en/books/design-44bsd/#_bsd_memory_management_design_decisions |url-status=live }} was replaced by UVM in NetBSD 1.4. UVM is designed to reduce the complexity of the 4.4BSD VM system, and offer improved performance for those applications which make heavy use of VM features, such as memory-mapped files and copy-on-write memory.{{cite web |url=https://www.usenix.org/legacy/event/usenix99/full_papers/cranor/cranor.pdf |title=The UVM Virtual Memory System |author=Charles D. Cranor |work=Proceedings of the USENIX Annual Technical Conference |date=June 1999 |access-date=24 February 2025}}

While retaining the same MD/MI layering and mapping structures of the BSD VM,{{cite web |url=https://blog.pr4tt.com/2016/02/02/BSD-virtual-memory/ |title=BSD Virtual Memory |author=Simon Pratt |website=blog.pr4tt.com |date=2 February 2016 |access-date=24 February 2025 |archive-date=20 April 2024 |archive-url=https://web.archive.org/web/20240420101710/https://blog.pr4tt.com/2016/02/02/BSD-virtual-memory/ |url-status=live }} UVM introduces some noticeable changes:

  • Memory objects are allocated and managed in cooperation with their backing data source (typically vnodes), reducing the overhead of the vm_object chain management. The vm_page structure describes how the backing store can be accessed. Essentially, this is a pointer to a list of functions which act as bridge between UVM and the external backing store (such as a disk) that provides UVM with its data. UVM's memory object points directly to the pager operations, making the allocation of pager-related data structures more efficient.
  • Anonymous pages are grouped in multi-page clusters for pageout. Each page’s location on swap is assigned, so that the cluster occupies a contiguous chunk of swap and can be paged out in a single large I/O operation. This enhances paging response time for I/O operations, and allows UVM to recover quicker from page shortages.
  • Memory sharing is supported using three data movement mechanisms: page loanout, page transfer, and map entry passing.{{cite web |url=https://chuck.cranor.org/p/uvm_move.pdf |title=Zero-Copy Data Movement Mechanisms for UVM |author=Charles D. Cranor |date=June 1999 |access-date=24 February 2025 |archive-date=15 November 2022 |archive-url=https://web.archive.org/web/20221115065923/https://chuck.cranor.org/p/uvm_move.pdf |url-status=live }} A process may safely let a shared copy-on-write copy of its memory be used either by other processes, the I/O system, or the IPC system. The unified buffer cache (ubc(9){{cite web |url=https://man.netbsd.org/nvmm.4 |title=ubc(9) |work=NetBSD Manual Pages |date=12 May 2018 |access-date=16 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218041327/https://man.netbsd.org/nvmm.4 |url-status=live }} ), written by Chuck Silvers, allows to use UVM pages to cache vnode data rather than the traditional UNIX buffer cache.{{cite web |url=http://unixbyrahul.50webs.com/unix3.html |title=The Buffer Cache |author=Rahul Singh |date=25 January 2012 |access-date=24 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313022508/http://unixbyrahul.50webs.com/unix3.html |url-status=live }} This avoids costly data copies, and makes more memory available for caching regular file data.

In 2003, UVM was modified to use a top-down memory management, thus merging the space reserved for heap growth and the area of space reserved for mmap(2)'ed allocations.{{cite mailing list |url=https://mail-index.netbsd.org/current-users/2003/02/20/0020.html |title=HEADS-UP: top down vm available for use on i386 platform, for development on others |author=Andrew Brown |date=20 February 2003 |mailing-list=current-users|access-date=25 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313023009/https://mail-index.netbsd.org/current-users/2003/02/20/0020.html |url-status=live }} This allows the heap to grow larger, or a process to mmap more or larger objects.

Support for RAM hot-plugging was added in 2016.{{cite mailing list |url=https://mail-index.netbsd.org/tech-kern/2016/12/29/msg021412.html |title=uvm_hotplug(9) port masters' FAQ |author=Cherry G. Mathew |date=29 December 2016 |mailing-list=tech-kern|access-date=25 February 2025}} The uvm_hotplug(9) API replaces the previously exposed vm_physmem static array with a red–black tree backing to keep track of memory segments, allowing the list of physical pages to be dynamically expanded or collapsed.

During the release cycle of NetBSD 10.0, major work was done to optimize the virtual memory system.{{cite web |url=https://www.netbsd.org/changes/changes-10.0.html#uvm |title=Significant changes from NetBSD 9.0 to 10.0 |publisher=NetBSD.org |date=6 October 2024 |access-date=26 February 2025 |archive-date=26 January 2025 |archive-url=https://web.archive.org/web/20250126123041/https://www.netbsd.org/changes/changes-10.0.html#uvm |url-status=live }} The page allocator was rewritten to be more efficient and CPU topology aware, adding preliminary NUMA support. The algorithm used in the memory page lookup cache was switched to a faster radix tree. Tracking and indexing of clean/dirty pages was improved, speeding up fsync(2) on large files by orders of magnitude. Lock contention was reduced by making the maintentance of page replacement state more concurrent.

= Virtualization =

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.{{cite web |url=http://netbsd.gw.com/cgi-bin/man-cgi?boot++NetBSD-current |title=boot(8) |work=NetBSD Manual Pages |date=4 September 2009 |access-date=15 January 2010 |archive-date=17 July 2013 |archive-url=https://web.archive.org/web/20130717090129/http://netbsd.gw.com/cgi-bin/man-cgi?boot++NetBSD-current |url-status=live }} NetBSD 6 as a Dom0 has been benchmarked comparably to Linux, with better performance than Linux in some tests.{{cite web |url=http://www.slideshare.net/xen_com_mgr/free-and-net-bsd-xen-roadmap |title=(Free and Net) BSD Xen Roadmap |first1=Cherry G. |last1=Matthew |first2=Roger Pau |last2=Monné |date=August 2012 |access-date=29 December 2012 |archive-date=12 May 2013 |archive-url=https://web.archive.org/web/20130512081818/http://www.slideshare.net/xen_com_mgr/free-and-net-bsd-xen-roadmap |url-status=live }}

As of NetBSD 9.0, accelerated virtualization is provided through the native type-2 hypervisor NVMM (NetBSD Virtual Machine Monitor).{{cite web

|url = https://m00nbsd.net/4e0798b7f2620c965d0dd9d6a7a2f296.html

|title = NetBSD Virtual Machine Monitor

|website = m00nbsd.net

}}

It provides a virtualization API, libnvmm, that can be leveraged by emulators such as QEMU.{{cite web

|url = https://blog.netbsd.org/tnf/entry/from_zero_to_nvmm

|title = From zero to NVMM

|author = Maxime Villard

|work = NetBSD Blog

|date = 9 April 2019

|access-date = 15 February 2025

|archive-date = 18 February 2025

|archive-url = https://web.archive.org/web/20250218040225/https://blog.netbsd.org/tnf/entry/from_zero_to_nvmm

|url-status = live

}}{{cite web |url=https://www.netbsd.org/docs/guide/en/chap-virt.html |title=Chapter 30. Using virtualization: QEMU and NVMM

|work=NetBSD Guide |access-date=15 February 2025}}

The kernel NVMM driver comes as a dynamically loadable kernel module, made of a generic machine-independent frontend, to which machine-dependent backends can be plugged to implement the core virtualization (currently only x86 AMD SVM and Intel VMX are supported).{{cite web |url=https://man.netbsd.org/nvmm.4 |title=nvmm(4) |work=NetBSD Manual Pages |date=30 July 2023 |access-date=16 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218041327/https://man.netbsd.org/nvmm.4 |url-status=live }} A unique property of NVMM is that the kernel never accesses guest VM memory, only creating it.{{cite mailing list |url=https://mail-index.netbsd.org/netbsd-users/2020/03/06/msg024206.html |title=Re: What is the difference between nvmm-netbsd and kvm-linux? |first=Maxime |last=Villard |date=6 March 2020 |mailing-list=netbsd-users|access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313022952/https://mail-index.netbsd.org/netbsd-users/2020/03/06/msg024206.html |url-status=live }}

Intel's Hardware Accelerated Execution Manager (HAXM) provides an alternative solution for acceleration in QEMU for Intel CPUs only, similar to Linux's KVM.{{cite web |url = https://blog.netbsd.org/tnf/entry/the_hardware_assisted_virtualization_challenge |title = The hardware-assisted virtualization challenge |author = Kamil Rytarowski |work = NetBSD Blog |date = 30 January 2019 |access-date = 15 February 2025 |archive-date = 11 February 2025 |archive-url = https://web.archive.org/web/20250211081056/http://blog.netbsd.org/tnf/entry/the_hardware_assisted_virtualization_challenge |url-status = live }}

= Rump kernels =

{{Main|rump kernel}}

NetBSD 5.0 introduced the rump kernel,{{cite web |url=https://rumpkernel.github.io/ |title=Rump Kernels website |access-date=15 February 2025 |archive-date=11 August 2024 |archive-url=https://web.archive.org/web/20240811232511/https://rumpkernel.github.io/ |url-status=live }} an architecture to run drivers in user-space by emulating kernel-space calls. A rump kernel can be seen as a lightweight, portable virtualized driver execution environment, characterized by small memory footprint and minimized attack surface.{{cite web |url=https://www.usenix.org/system/files/login/articles/login_1410_03_kantee.pdf |title=Rump Kernels: No OS? No Problem! |author=Antii Kantee, Justin Cormack |publisher=USENIX |date=October 2014 |access-date=15 February 2025 |archive-date=24 August 2017 |archive-url=https://web.archive.org/web/20170824114727/https://www.usenix.org/system/files/login/articles/login_1410_03_kantee.pdf |url-status=live }}

The core of a rump kernel contains a set of fundamental routines which allow it to access the host platform's resources, such as virtual memory, thread scheduler and I/O functions. This is called the rampuser(3) hypercall interface.{{cite web |url=https://man.netbsd.org/rumpuser.3 |title=rampuser(3) |work=NetBSD Manual Pages |access-date=15 February 2025 |archive-date=12 October 2024 |archive-url=https://web.archive.org/web/20241012004339/https://man.netbsd.org/rumpuser.3 |url-status=live }}

The various kernel subsystems (e.g. TCP/IP stack, filesystems, hardware device drivers), globally referred as drivers, are layered on top of the hypercall interface, by being linked against a stripped-down version of the NetBSD kernel that can be executed in user mode. Most drivers are optional, and may be included or not depending on the target application and scope.

This "anykernel" design allows adding support of NetBSD drivers to other kernel architectures,{{cite web |url=https://blog.netbsd.org/tnf/entry/a_rump_kernel_hypervisor_for |title=A Rump Kernel Hypervisor for the Linux Kernel | first=Antti |last=Kantee |work=NetBSD Blog |date=23 April 2013 |access-date=15 February 2025}} ranging from exokernels to monolithic kernels.{{cite web |url=https://www.netbsd.org/docs/rump/ |title=The Anykernel and Rump Kernels |work=NetBSD docs |date=28 March 2022 |access-date=15 February 2025 |archive-date=22 December 2012 |archive-url=https://web.archive.org/web/20121222003433/http://www.netbsd.org/docs/rump/ |url-status=live }} Other possible applications of rump kernels include deploying a task-specific unikernel to provide a POSIX API for application depending on it, running a self-contained database with minimal footprints,{{cite web |url=https://github.com/rumpkernel/rumprun |title=Rumprun Github repository |date=11 May 2020 |access-date=15 February 2025 |archive-date=15 February 2025 |archive-url=https://web.archive.org/web/20250215122015/https://github.com/rumpkernel/rumprun |url-status=live }} a userspace Wireguard instance,{{cite web |url=https://man.netbsd.org/wg-userspace.8 |title=wg-userspace(8) |work=NetBSD Manual Pages |date=20 August 2020 |access-date=26 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313045206/https://man.netbsd.org/wg-userspace.8 |url-status=live }} editing the contents of a file system as unprivileged user, and segregating a web browser to its own TCP/IP stack.{{cite web |url=https://www.netbsd.org/docs/rump/sptut.html |title=Tutorial On Rump Kernel Servers and Clients |first=Antti |last=Kantee |work=NetBSD docs |access-date=29 December 2012 |archive-date=22 December 2012 |archive-url=https://web.archive.org/web/20121222025107/http://www.netbsd.org//docs/rump/sptut.html |url-status=live }}

Rump kernels are also used internally by the NetBSD project for running tests on different kernel subsystems, as well as for debugging purposes.{{cite web |url=https://www.netbsd.org/gallery/presentations/justin/2015_AsiaBSDCon/justincormack-abc2015.pdf |title=The rump kernel: A tool for driver development and a toolkit for applications |author=Justin Cormack |work=AsiaBSDCon 2015 |access-date=10 April 2025}}

= Storage =

NetBSD includes many enterprise features like iSCSI, a journaling filesystem, logical volume management and the ZFS filesystem.

The bio(4) interface for vendor-agnostic RAID volume management through bioctl has been available in NetBSD since 2007.{{cite web

|url= http://bxr.su/n/sbin/bioctl/bioctl.8

|title = bioctl(8) – RAID management interface

|website= BSD Cross Reference

|publisher= NetBSD

}}

Support for software RAID is provided as a port of CMU RAIDframe, available since NetBSD 1.4.{{cite web | url = https://www.netbsd.org/docs/guide/en/chap-rf.html | title = Chapter 16. NetBSD RAIDframe | work = NetBSD Guide | access-date = 2025-02-08 | archive-date = 20 February 2025 | archive-url = https://web.archive.org/web/20250220002803/https://www.netbsd.org/docs/guide/en/chap-rf.html | url-status = live }}

The ccd(4) driver provides the capability of combining one or more disks/partitions into one virtual disk, acting as another in-kernel RAID 0 subsystem.{{cite web | date = 2023-01-08 | url = https://www.netbsd.org/docs/guide/en/chap-ccd.html/ | title = Chapter 15. Concatenated Disk Device (CCD) configuration | work = NetBSD Guide | access-date = 2025-02-08 | archive-date = 11 February 2025 | archive-url = https://web.archive.org/web/20250211094108/https://www.netbsd.org/docs/guide/en/chap-ccd.html | url-status = live }}

UFS2, an extension to BSD FFS adding 64-bit block pointers, variable-sized blocks (similar to extents), and extended flag fields, was ported from FreeBSD in 2003{{cite mailing list |url=https://mail-index.netbsd.org/current-users/2003/04/02/0005.html |title=initial UFS2 support committed |author=Frank van der Linden |date=4 February 2003 |mailing-list=current-users|access-date=15 February 2025}} and made available since NetBSD 2.0.{{cite web |title=Chapter 2: New features in NetBSD 2.0 |url=https://people.allbsd.org/~hrs/NetBSD/guide/en/chap-whatsnew.html#AEN106 |work=NetBSD Guide (old) |access-date=2025-02-14 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313024607/https://people.allbsd.org/~hrs/NetBSD/guide/en/chap-whatsnew.html#AEN106 |url-status=live }} The fss(4){{cite web | url = https://man.netbsd.org/fss.4 | title = fss(4) | work = NetBSD Manual Pages | access-date = 2025-02-08 | archive-date = 18 February 2025 | archive-url = https://web.archive.org/web/20250218045252/https://man.netbsd.org/fss.4 | url-status = live }} snapshot driver was introduced the same year,{{cite mailing list |url=https://mail-index.netbsd.org/current-users/2003/12/10/0013.html |title=File system snapshot driver committed |author=Juergen Hannken-Illjes |date=10 December 2003 |mailing-list=current-users|access-date=15 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218031719/https://mail-index.netbsd.org/current-users/2003/12/10/0013.html |url-status=live }} allowing to create a read-only, atomic view of a FFS filesystem at a given point of time; a FFS snapshot works as a special device, which can be mounted and used in conjunction with utilities like dump(8) to create and export system backups.{{cite web |url=https://sehnsucht.multics.org/texts/feae87.htm |title=Full system backups with FFS snapshots and dump(8) |author=Paolo Vincenzo Olivo |work=RetroBSD Net |date=16 March 2022 |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313030746/https://sehnsucht.multics.org/texts/feae87.htm |url-status=live }}

WAPBL, a FFS filesystem extension providing data journaling, was contributed by Wasabi Systems in 2008.{{cite mailing list |url=http://mail-index.netbsd.org/tech-kern/2008/03/02/msg000504.html |title=Patches for journalling support |first=Simon |last=Burge |date=2 March 2008 |mailing-list=tech-kern|access-date=15 January 2010}} Journaling allows rapid filesystem consistency after an unclean shutdown, and improves write performance by reducing synchronous metadata writes, especially when creating a large number of inodes.{{cite web |url=https://www.bsdcan.org/2009/schedule/attachments/106_wapbl.pdf |title=Journaling FFS with WAPBL |author=Jörg Sonnenberger |work=BSDCan 2009 |publisher=NetBSD Gallery |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313005842/https://www.bsdcan.org/2009/schedule/attachments/106_wapbl.pdf |url-status=live }} Support for soft updates on NetBSD FFS(v1/2) was eventually removed in favor of WAPBL.{{cite web |author= Adam Hamsik |date= 2009-02-23 |url= http://blog.netbsd.org/tnf/entry/soft_dependencies_removed |title= Soft dependencies removed |publisher= NetBSD |access-date= 16 February 2025 |archive-date= 13 March 2025 |archive-url= https://web.archive.org/web/20250313021838/http://blog.netbsd.org/tnf/entry/soft_dependencies_removed |url-status= live }}

Starting with release 10.0, FFSv2 also supports extended file attributes and ACLs{{cite web | date = 2023-01-08 | url = https://wiki.netbsd.org/tutorials/acls_and_extended_attributes_on_ffs/ | title = acls and extended attributes on ffs | work = NetBSD wiki | access-date = 2025-02-08 | archive-date = 11 February 2025 | archive-url = https://web.archive.org/web/20250211083636/https://wiki.netbsd.org/tutorials/acls_and_extended_attributes_on_ffs/ | url-status = live }} as well as data TRIM.{{cite web | url = https://man.netbsd.org/NetBSD-10.0/blkdiscard.8 | title = blkdiscard(8) | work = NetBSD Manual Pages | access-date = 2025-02-08 | archive-date = 18 February 2025 | archive-url = https://web.archive.org/web/20250218102151/https://man.netbsd.org/NetBSD-10.0/blkdiscard.8 | url-status = live }}

The ZFS filesystem developed by Sun Microsystems was imported into the NetBSD base system in 2009.{{cite mailing list |url=https://mail-index.netbsd.org/tech-kern/2009/08/07/msg005683.html |title=[HEADS UP] zfs import |author=Adam Hamsik |mailing-list=current-users|date=7 August 2009 |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313021807/https://mail-index.netbsd.org/tech-kern/2009/08/07/msg005683.html |url-status=live }} In 2018, the ZFS codebase was updated and rebased on FreeBSD's implementation.{{cite mailing list |url=https://mail-index.netbsd.org/source-changes/2018/05/28/msg095545.html |title=Merge a new version of the CDDL dtrace and ZFS code |first=Chuck |last=Silvers |date=28 May 2018 |mailing-list=source-changes|access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313020725/https://mail-index.netbsd.org/source-changes/2018/05/28/msg095545.html |url-status=live }} ZFS was finally marked safe for daily use in NetBSD 9.0. As of 10.0 release, NetBSD ZFS stack is comparable to that of FreeBSD 12 (or below), with ZFS filesystem version "5.3", zpool version "5000" (some feature flags are not supported).{{cite web |url=https://vermaden.wordpress.com/2022/03/25/zfs-compatibility/ |title=ZFS Compatibility | publisher=vermaden wordpress |author=Sławomir W. Wojtczak |date=25 March 2022 |access-date=14 February 2025}}{{cite web |url=https://sehnsucht.multics.org/texts/5cbb59.htm |title=Creating ZFS pools on NetBSD |author=Paolo Vincenzo Olivo |work=RetroBSD Net |date=16 March 2022 |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313031333/https://sehnsucht.multics.org/texts/5cbb59.htm |url-status=live }} Native ZFS encryption is noticeably missing, though a zpool may be created within a cgd(4) encrypted disk.{{cite web |url=https://rubenerd.com/encrypted-zfs-on-netbsd-9-for-a-freebsd-guy/ |title=Encrypted ZFS on NetBSD 9.0, for a FreeBSD guy |author=Ruben Shade |publisher=Rubernerd |date=24 May 2020 |access-date=15 February 2025 |archive-date=14 March 2025 |archive-url=https://web.archive.org/web/20250314021246/https://rubenerd.com/encrypted-zfs-on-netbsd-9-for-a-freebsd-guy/ |url-status=live }}

Initial support for ZFS root is available, but neither integrated in the installer nor in the bootloader.{{cite web |title=Root on ZFS |url=https://wiki.netbsd.org/root_on_zfs/ |work=NetBSD wiki |date=2024-11-27 |access-date=2025-02-08 |archive-date=11 February 2025 |archive-url=https://web.archive.org/web/20250211082252/https://wiki.netbsd.org/root_on_zfs/ |url-status=live }}

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.{{cite mailing list |url=http://mail-index.netbsd.org/tech-kern/2008/08/28/msg002554.html |title=HEADS UP NetBSD lvm support |first=Adam |last=Hamsik |date=29 August 2008 |mailing-list=tech-kern|access-date=15 January 2010 |archive-date=19 July 2011 |archive-url=https://web.archive.org/web/20110719050559/http://mail-index.netbsd.org/tech-kern/2008/08/28/msg002554.html |url-status=live }}

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.

The PUFFS framework, introduced in NetBSD 5.0,{{citation |url=https://www.netbsd.org/docs/puffs/ |title=Filesystems in userspace: puffs, refuse, FUSE, and more |work=NetBSD docs |access-date=9 February 2025 |archive-date=24 November 2024 |archive-url=https://web.archive.org/web/20241124075502/http://www.netbsd.org/docs/puffs/ |url-status=live }} is a kernel subsystem designed for running filesystems in userspace, and provides FUSE kernel level API compatibility in conjunction with the perfused(8) userland daemon.

A tmpfs implementation for NetBSD using conventional in-memory data structures, was first developed by Julio M. Merino Vidal in 2005 as a GSoC project,{{cite web |title=tmpfs for NetBSD - Efficient memory file system |url=https://jmmv.dev/software/tmpfs.html |first=Julio |last=Merino |date=2021-02-24 |access-date=2025-02-08 |archive-date=11 February 2025 |archive-url=https://web.archive.org/web/20250211094547/https://jmmv.dev/software/tmpfs.html |url-status=live }} and merged the same year in the NetBSD source tree.{{cite mailing list |url=https://mail-index.netbsd.org/tech-kern/2005/09/10/0004.html |title=HEADS UP: tmpfs added |first=Julio |last=Merino |date=9 October 2005 |mailing-list=tech-kern|access-date=9 February 2025}}

= 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 provides system call-level binary compatibility on the appropriate processor architectures with its previous releases, but also with several other UNIX-derived and UNIX-like operating systems, including Linux, and other 4.3BSD derivatives like 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.{{cite web |url=https://www.netbsd.org/docs/compat.html |title=NetBSD Binary Emulation |date=13 January 2010 |access-date=15 January 2010 |archive-date=6 August 2011 |archive-url=https://web.archive.org/web/20110806042425/http://www.netbsd.org/docs/compat.html |url-status=live }} Initial support for a Haiku binary compat layer was published on the netbsd-user mailing list.{{cite mailing list |url=https://mail-index.netbsd.org/netbsd-users/2023/11/27/msg030366.html |title=First bits of a Haiku compatibility layer |author-link=|mailing-list=netbsd-users |date=27 November 2023 |access-date=12 February 2025 |archive-date=1 February 2025 |archive-url=https://web.archive.org/web/20250201072911/https://mail-index.netbsd.org/netbsd-users/2023/11/27/msg030366.html |url-status=live }}

A variety of "foreign" disk filesystem formats are also supported in NetBSD, including ZFS, FAT, NTFS, Linux ext2fs, Apple HFS and OS X UFS, RISC OS FileCore/ADFS, AmigaOS Fast File System, IRIX EFS, Version 7 Unix File System, and many more through PUFFS.

WINE can be installed on NetBSD through pkgsrc.{{cite web |url=https://pkgsrc.se/emulators/wine |title=Wine on the Pkgsrc package collection |publisher=pkgsrc.se |access-date=12 February 2025 |archive-date=19 December 2024 |archive-url=https://web.archive.org/web/20241219220917/https://pkgsrc.se/emulators/wine |url-status=live }} Kernel support for USER_LTD — required for WoW64 — was contributed by Maxime Villard in 2017,{{cite mailing list |url=https://mail-index.netbsd.org/tech-kern/2017/02/05/msg021545.html |title=amd64: USER_LDT (and wine) |first=Maxime |last=Villard |mailing-list=tech-kern |date=5 February 2017 |access-date=12 February 2025 |archive-date=25 January 2025 |archive-url=https://web.archive.org/web/20250125022920/http://mail-index.netbsd.org/tech-kern/2017/02/05/msg021545.html |url-status=live }} allowing Win32 applications to be executed on amd64.{{cite web |url=https://washbear.neocities.org/wine-sandbox |title=Running Wine in a 32-bit sandbox on 64-bit NetBSD |first=Nia |last=Alarie |date=1 September 2020 |access-date=12 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218034355/https://washbear.neocities.org/wine-sandbox |url-status=live }} The amd64 port of wine for NetBSD was completed by Naveen Narayanan as part of GSoC 2019.{{cite web |url=https://washbear.neocities.org/wine-sandbox |title=Porting wine to amd64 on NetBSD, third evaluation report |work=NetBSD Blog |date=21 August 2019 |access-date=12 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218034355/https://washbear.neocities.org/wine-sandbox |url-status=live }}

= Kernel scripting =

Kernel-space scripting with the Lua programming language was added in NetBSD 7.0.{{cite web |url=https://www.netbsd.org/~lneto/dls14.pdf |title=Scriptable Operating Systems with Lua |author=Lourival Vieira Neto |work=DLS '14 |date=20 October 2014 |access-date=14 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218062134/https://www.netbsd.org/~lneto/dls14.pdf |url-status=live }} The Lua language (i.e., its interpreter and standard libraries) was initially ported by Lourival Vieira Neto to the NetBSD kernel during GSoC 2010 and has undergone several improvements since then.{{cite web |url=https://www.netbsd.org/~lneto/bsdconbr15.pdf |title=Lua on NetBSD: Scripting Operating Systems with Lua |work=BSDCon Brazil |author=Lourival Vieira Neto |date=October 2015 |access-date=14 February 2025 |archive-date=18 March 2025 |archive-url=https://web.archive.org/web/20250318133442/https://www.netbsd.org/~lneto/bsdconbr15.pdf |url-status=live }} The Lua (userspace) Test Suite was ported to NetBSD kernel Lua during GSoC 2015.{{cite web |url=https://github.com/gszr/luatests |title=NetBSD kernel Lua test suite |author=Guilherme Salazar |date=2 June 2016 |access-date=14 February 2025 |archive-date=17 March 2025 |archive-url=https://web.archive.org/web/20250317201637/https://github.com/gszr/luatests |url-status=live }}

There are two main differences between user and kernel space Lua: kernel Lua does not support floating-point numbers; as such, only Lua integers are available.{{cite web |url=https://sehnsucht.multics.org/texts/d727aa.htm |title=Testing the Lua kernel interpreter |author=Paolo Vincenzo Olivo |date= 15 March 2022 |access-date=14 February 2025}} It also does not have full support to user space libraries that rely on the operating system (e.g., io and os). A sample implementation of I/O (file systems and sockets) bindings for kernel Lua was developed by Guilherme Salazar.{{cite web |url=https://github.com/gszr/luaio |title=Kernel Lua I/O Bindings |author=Guilherme Salazar |date=6 May 2018 |access-date=14 February 2025}}

Possible applications of the Lua kernel interpreter include embedding extensions for the NPF packet fiter,{{cite web |url=https://www.netbsd.org/~lneto/eurobsdcon14.pdf |title=NPF Scripting with Lua |work=EuroBSDcon 2014 |author=Lourival Vieira Neto |date=26 September 2014 |access-date=14 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218061157/https://www.netbsd.org/~lneto/eurobsdcon14.pdf |url-status=live }}{{cite web |url=https://github.com/dressupgeekout/npflua |title=Lua interface to libnpf |author=Charlotte Koch |date=12 February 2018 |access-date=14 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313042102/https://github.com/dressupgeekout/npflua |url-status=live }} and building an in-kernel application sandbox based on kauth(9), with sandbox policies provided as Lua scripts.{{cite web |url=https://www.bsdcan.org/2017/schedule/attachments/431_smherwig-sandbox-bsdcan2017-slides.pdf |title=secmodel_sandbox: An application sandbox for NetBSD |author=Stephen Herwig |work=BSDCan 2017 |access-date=14 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218052609/https://www.bsdcan.org/2017/schedule/attachments/431_smherwig-sandbox-bsdcan2017-slides.pdf |url-status=live }}

= Kernel debugging =

NetBSD provides a minimalist kernel debugger — DDB(4) — which is invoked by default whenever the kernel would otherwise panic.{{cite web |url=https://man.netbsd.org/ddb.4 |title=ddb -- in-kernel debugger |work=NetBSD Manual Pages |date=29 June 2024 |access-date=10 February 2025}} DDB allows to inspect processes and threads, investigate deadlocks, get a stack trace, and generate a kernel crash dump for later analysis.{{cite web |url=https://wiki.netbsd.org/tutorials/panic/ |title=Kernel Panic Procedures |work=NetBSD Tutorials |date=4 May 2019 |access-date=10 February 2025 |archive-date=11 October 2024 |archive-url=https://web.archive.org/web/20241011200516/https://wiki.netbsd.org/tutorials/panic/ |url-status=live }}

Strict consistency check is enabled by building the kernel with option DIAGNOSTIC. This will cause the kernel to panic if corruption of internal data structures is detected (e.g. kernel NULL pointer dereference).{{cite web |url=https://man.netbsd.org/options.4 |title=options -- Miscellaneous kernel configuration options |work=NetBSD Manual Pages |date=12 May 2024 |access-date=10 February 2025}}

NetBSD also supports a variety of in-kernel bug detection facilities,{{cite web |url=https://troopers.de/downloads/troopers19/TROOPERS19_AR_Evolution_of_kernel.pdf |title=Evolution of kernel fuzzers in NetBSD |publisher=Siddharth Muralee - Team bi0s |access-date=9 February 2025}} including code sanitizers (undefined behavior, address, thread, memory sanitizers),{{cite web |url=https://man.netbsd.org/kernel_sanitizers.7 |title=NetBSD Kernel Sanitizers |work=NetBSD Manual Pages |access-date=9 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313022723/https://man.netbsd.org/kernel_sanitizers.7 |url-status=live }}{{cite web|url=https://wiki.netbsd.org/users/kamil/sanitizers/ |title=sanitizers |author=Kamil Rytarowski |work=NetBSD wiki |date=2 September 2019 |access-date=9 February 2025}} a kernel memory disclosure detection system (KLEAK){{cite web |url=https://www.netbsd.org/gallery/presentations/maxv/kleak.pdf |title=KLEAK: Practical Kernel Memory Disclosure Detection |publisher=Thomas Barabosch - Maxime Villard |date=December 2018 |access-date=9 February 2025 |archive-date=14 March 2025 |archive-url=https://web.archive.org/web/20250314045912/https://netbsd.org/gallery/presentations/maxv/kleak.pdf |url-status=live }} and a kernel diagnostic subsystem named heartbeat(9).{{cite mailing list |url=https://mail-index.netbsd.org/current-users/2023/07/07/msg044095.html |title=Call for testing: New kernel heartbeat(9) checks |author=Taylor R Campbell |mailing-list=current-users| date=7 July 2023 |access-date=9 February 2025}}

= LKMs =

Loadable kernel modules have been supported on NetBSD since 0.9. The original lkm(4) interface {{cite web |url=https://www.home.unix-ag.org/bmeurer/NetBSD/howto-lkm.html |title=Introduction to NetBSD loadable kernel modules |first=Benedikt |last=Meurer |date=15 January 2007 |access-date=9 February 2025 |archive-date=13 July 2024 |archive-url=https://web.archive.org/web/20240713053710/http://www.home.unix-ag.org/bmeurer/NetBSD/howto-lkm.html |url-status=live }} written by Terry Lambert was replaced by the new modules(7) subsystem,{{cite web|url=https://man.netbsd.org/modules.7|title=modules(7) |work=NetBSD Manual Pages}} which supports dependency handling between modules, and loading of kernel modules on demand.{{cite web |url=https://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20090922_2256.html |title=Looking at the new kernel modules in NetBSD-current |first=Hubert |last=Feyrer |date=27 September 2009 |access-date=9 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313022705/https://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20090922_2256.html |url-status=live }}

New modules can only be loaded when securelevel is less than or equal to zero, or if the kernel was built with options INSECURE, due to security concerns regarding the lack of memory protection between modules and the rest of the kernel.

Every kernel module is required to define its metadata through the C macro MODULE(class, name, required) and to implement a MODNAME_modcmd function, which the kernel calls to report important module-related events, like when the module loads or unloads.{{cite web |url=https://saurvs.github.io/post/writing-netbsd-kern-mod/nb_20090922_2256.html|title=Writing a NetBSD kernel module |first=Saurav |last=Sachidanand |date=2 February 2017 |access-date=9 February 2025}}

= Init =

NetBSD uses a BSD style init.

Support for using an initial ramdisk is available but not enabled by default,{{cite web |url=https://bentsukun.ch/posts/ramdisk-kernel/ |title=Building a NetBSD ramdisk kernel |author=Benny Siegert |work=benzblog |date=26 November 2023 |access-date=26 February 2025 |archive-date=14 March 2025 |archive-url=https://web.archive.org/web/20250314044517/https://bentsukun.ch/posts/ramdisk-kernel/ |url-status=live }} except for specific configurations (e.g. root encryption).{{cite web | url = https://wiki.netbsd.org/security/cgdroot/ | title = Root Filesystem Encryption | work = NetBSD Wiki | date = 15 January 2025 | access-date = 26 February 2025 | archive-date = 13 March 2025 | archive-url = https://web.archive.org/web/20250313021843/https://wiki.netbsd.org/security/cgdroot/ | url-status = live }}

The rc.d(8) framework, designed by Luke Mewburn{{cite web | url=https://mewburn.net/luke/papers/rc.d.pdf | title=The Design and Implementation of the NetBSD rc.d system | author=Luke Mewburn | work=USENIX 2001 | access-date=26 February 2025 | archive-date=13 March 2025 | archive-url=https://web.archive.org/web/20250313025228/https://mewburn.net/luke/papers/rc.d.pdf | url-status=live }} for NetBSD 1.5, provides a fully modular service management system, using individual shell scripts for controlling services, similar to what System V does, but without runlevels.{{cite web | url = https://www.netbsd.org/docs/guide/en/chap-rc.html | title = Chapter 7. The rc.d System | work = NetBSD Guide | access-date = 26 February 2025 | archive-date = 13 March 2025 | archive-url = https://web.archive.org/web/20250313022406/https://www.netbsd.org/docs/guide/en/chap-rc.html | url-status = live }} When /etc/rc/ is invoked by init(8), it executes scripts located in the /etc/rc.d directory. The order in which scripts are executed is determined by the rcorder(8) utility, based on the requirements stated in the dependency tags found within each script.{{cite web | url = http://aplawrence.com/Basics/unix-startup-scripts-2.html | title = Unix and Linux startup scripts, Part 2 | author = Andrew Smallshaw | date = 7 December 2009 | access-date = 26 February 2025 | archive-date = 18 December 2009 | archive-url = https://web.archive.org/web/20091218083059/http://aplawrence.com/Basics/unix-startup-scripts-2.html | url-status = live }}

= Sensors =

{{Main|envsys}}

NetBSD has featured a native hardware monitoring framework since 1999/2000. In 2003, it served as the inspiration behind the OpenBSD's sysctl hw.sensors framework when some NetBSD drivers were being ported to OpenBSD.{{cite thesis

|degree= MMath

|author= Constantine A. Murenin |date= 2010-05-21

|section = 6. Evolution of the Framework; 7.1. NetBSD envsys / sysmon

|title= OpenBSD Hardware Sensors – Environmental Monitoring and Fan Control.

|location= University of Waterloo |publisher= UWSpace

|url = http://cnst.su/MMathCS |hdl = 10012/5234

|id = Document ID: ab71498b6b1a60ff817b29d56997a418.

}}

{{As of|2019|03}}, NetBSD had close to 85 device drivers exporting data through the API of the envsys framework. Since the 2007 revision, serialization of data between the kernel and userland is done through XML property lists with the help of NetBSD's proplib(3).

= Sound subsystem =

The NetBSD audio(4){{cite web|url=https://man.netbsd.org/audio.4|title=audio(4) |work=NetBSD Manual Pages}} kernel API, modelled after SunOS sound stack (SADA),{{cite mailing list |url=https://mail-index.netbsd.org/source-changes/1997/10/19/msg025145.html |title=audio(4): Update for SunOS compatibility |first=Lennart |last=Augustsson |date=19 October 1997 |mailing-list=source-changes|access-date=24 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313052825/https://mail-index.netbsd.org/source-changes/1997/10/19/msg025145.html |url-status=live }} provides at the same time a uniform programming interface layer above different underlying audio hardware drivers, and a simple and well-documented backend for different sound libraries (SDL, PortAudio, Mozilla cubeb) to use.

Applications may interact with the /dev/audio device node directly, using a series of ioctls specified in the sys/audioio.h header file. Audio device information may be queried with the AUDIO_GETDEV ioctl. Playing and recording sound implies opening /dev/audio for read() / write() operations and passing a audio_info struct to the kernel. This results in reduced audio latency and CPU usage compared to using additional abstraction layers (other sound libraries and/or sound servers).{{cite web |url=https://www.netbsd.org/gallery/presentations/nia/netbsd-audio/index.html |title=NetBSD audio – an application perspective |first=Nia |last=Alarie |work=pkgsrcCon 2019 |access-date=9 February 2025 |archive-date=11 February 2025 |archive-url=https://web.archive.org/web/20250211133948/https://www.netbsd.org/gallery/presentations/nia/netbsd-audio/index.html |url-status=live }}

The audio stack was reworked in NetBSD 8.0 to provide an in-kernel software mixing engine, with support for virtual channels;{{cite mailing list |url=https://mail-index.netbsd.org/tech-kern/2018/05/06/msg023413.html |title=NetBSD Audio specification 2018 |first=Nathanial |last=Sloss |date=7 May 2018 |mailing-list=tech-kern|access-date=9 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313030801/https://mail-index.netbsd.org/tech-kern/2018/05/06/msg023413.html |url-status=live }} this allows more than one process to play or record audio at the same time.

A compatibility mode for the OSS API is provided by the soundcard.h header file and the libossaudio library,{{cite web|url=https://man.netbsd.org/ossaudio.3|title=ossaudio(3)|work=NetBSD Manual Pages|access-date=9 February 2025|archive-date=11 February 2025|archive-url=https://web.archive.org/web/20250211094137/https://man.netbsd.org/ossaudio.3|url-status=live}} which internally operate using the native Sun-like audio interface.

NetBSD includes built-in MIDI support through the machine-independent midi(4){{cite web|url=https://man.netbsd.org/midi.4|title=midi(4)|work=NetBSD Manual Pages|access-date=9 February 2025|archive-date=13 March 2025|archive-url=https://web.archive.org/web/20250313040159/https://man.netbsd.org/midi.4|url-status=live}} system.

Uses

File:ISS on 20 August 2001.jpg's SAMS-II Project of measuring the microgravity environment on the International Space Station, and for investigations of TCP for use in satellite networks.{{Cite web |title=Research carried out using NetBSD |url=https://netbsd.org/gallery/research.html#sams-ii |access-date=2022-05-11 |website=netbsd.org}}]]

NetBSD's clean design, high performance, scalability, and support for many architectures has led to its use in embedded devices and servers,{{cite web |url=https://yazzy.org/docs/NetBSD/Embedding_NetBSD.pdf |title=Embedding the NetBSD Operating System |author=Wasabi Systems Inc |access-date=8 February 2025}} especially in networking applications.

NetBSD has also been noted for its stability and reliability over time.{{cite web|url=https://it-notes.dragas.net/2023/08/27/that-old-netbsd-server-running-since-2010/ |title=That Old NetBSD Server, Running Since 2010 | work=IT Notes |author=Stefano Marinelli |date=27 August 2023 |access-date=16 February 2025}}{{cite web |url=https://rubenerd.com/boring-tech-is-mature-not-old/ |title=Boring tech is mature, not old |author=Ruben Shade |date=11 February 2023 |access-date=16 February 2025 |archive-date=16 February 2025 |archive-url=https://web.archive.org/web/20250216150745/https://rubenerd.com/boring-tech-is-mature-not-old/ |url-status=live }}

A commercial real-time operating system, QNX, uses a network stack based on NetBSD code,{{cite web|url=http://www.qnx.com/legal/licensing/dev_license/eula/tposltg1_01.html#BSD2|title=Third Party Open Source License Terms Guide|work=QNX Software Systems|access-date=27 December 2011|archive-date=16 July 2023|archive-url=https://web.archive.org/web/20230716101320/http://www.qnx.com/legal/licensing/dev_license/eula/tposltg1_01.html#BSD2|url-status=live}}{{cite web|url=http://community.qnx.com/sf/docman/do/downloadDocument/projects.networking/docman.root/doc1280?logged=1|title=Core Networking 6.4: Neutrino's Next Gen Networking Stack and Foundry27|work=QNX Software Systems|access-date=15 January 2010|archive-date=16 July 2011|archive-url=https://web.archive.org/web/20110716163723/http://community.qnx.com/sf/docman/do/downloadDocument/projects.networking/docman.root/doc1280?logged=1|url-status=dead}} (registration required) and provides various drivers ported from NetBSD.{{cite web|url=http://community.qnx.com/sf/wiki/do/viewPage/projects.networking/wiki/Drivers_wiki_page|title=Foundry27: Project Networking – Driver wiki page|work=QNX Software Systems|access-date=27 December 2011|archive-date=16 July 2011|archive-url=https://web.archive.org/web/20110716163716/http://community.qnx.com/sf/wiki/do/viewPage/projects.networking/wiki/Drivers_wiki_page|url-status=live}}

Dell Force10 uses NetBSD as the underlying operating system that powers FTOS (the Force10 Operating System), which is used in high scalability switch/routers.{{cite press release|url=http://www.force10networks.com/news/pressreleases/2007/pr-2007-02-13.asp |title=Force10 Networks uses NetBSD to build software scalability into operating system |date=13 February 2007 |work=Dell |access-date=27 December 2011 |url-status=dead |archive-url=https://web.archive.org/web/20111115101312/http://force10networks.com/news/pressreleases/2007/pr-2007-02-13.asp |archive-date=15 November 2011 }} Force10 also made a donation to the NetBSD Foundation in 2007 to help further research and the open development community.{{cite press release|url=http://www.force10networks.com/news/pressreleases/2008/pr-2008-01-28b.asp |title=Force10 Networks introduces unified operating system across product portfolio to lower total cost of owning and operating networks |date=28 January 2008 |work=Dell |access-date=27 December 2011 |url-status=dead |archive-url=https://web.archive.org/web/20111115095657/http://force10networks.com/news/pressreleases/2008/pr-2008-01-28b.asp |archive-date=15 November 2011 }}

NetBSD was used in NASA's SAMS-II Project of measuring the microgravity environment on the International Space Station,{{Cite news|url=https://bsdmag.org/netbsd_intr/|archive-url=https://web.archive.org/web/20171110063343/https://bsdmag.org/netbsd_intr/|url-status=usurped|archive-date=10 November 2017|title=NetBSD Introduction by Siju Oommen George - BSD MAG|last=Duc|first=Hiep Nguyen|date=2016-06-21|work=BSD MAG|access-date=2017-11-09|language=en-US}}{{cite mailing list|url=http://mail-index.netbsd.org/port-i386/1997/12/04/0022.html|title=Re: NetBSD/i386 and single board computers|first=Mary|last=Rivett|date=12 April 1997|mailing-list=port-i386|access-date=31 March 2005|archive-date=6 March 2005|archive-url=https://web.archive.org/web/20050306184211/http://mail-index.netbsd.org/port-i386/1997/12/04/0022.html|url-status=live}} and for investigations of TCP for use in satellite networks.{{Cite news|url=https://bsdmag.org/netbsd_intr/|archive-url=https://web.archive.org/web/20171110063343/https://bsdmag.org/netbsd_intr/|url-status=usurped|archive-date=10 November 2017|title=NetBSD Introduction by Siju Oommen George - BSD MAG|last=Duc|first=Hiep Nguyen|date=2016-06-21|work=BSD MAG|access-date=2017-11-09|language=en-US}}{{cite web|url=http://roland.grc.nasa.gov/~jgriner/papers/nash98.pdf|title=HTTP Page Transfer Rates over Geo-Stationary Satellite Links|first1=Hans|last1=Kruse|first2=Mark|last2=Allman|first3=Jim|last3=Griner|first4=Diepchi|last4=Tran|name-list-style=amp|date=5 March 1998|access-date=27 December 2011|url-status=dead|archive-url=https://web.archive.org/web/20090720152309/http://roland.grc.nasa.gov/~jgriner/papers/nash98.pdf|archive-date=20 July 2009}}

In 2004, SUNET used NetBSD to set the Internet2 Land Speed Record. NetBSD was chosen "due to the scalability of the TCP code".{{cite web|url=http://proj.sunet.se/LSR2/|title=SUNET Internet2 Land Speed Record: 69.073 Pbmps|first=Börje|last=Josefsson|work=SUNET|date=14 April 2004|access-date=27 December 2011|archive-date=1 January 2006|archive-url=https://web.archive.org/web/20060101074217/http://proj.sunet.se/LSR2/|url-status=dead}}

NetBSD is also used in Apple's AirPort Extreme and Time Capsule products,{{cite web|url=http://superuser.com/questions/23816/how-to-jailbreak-an-apple-time-capsule|title=How to jailbreak an Apple Time Capsule?|work=superuser.com|access-date=27 December 2009|archive-date=21 September 2023|archive-url=https://web.archive.org/web/20230921041414/https://superuser.com/questions/23816/how-to-jailbreak-an-apple-time-capsule|url-status=live}}{{cite web|url=http://wifinetnews.com/archives/2007/02/airport_extreme_apple_breaks_90_mbps.html|title=AirPort Extreme: Apple Breaks 90 Mbps|last=Fleishman|first=Glenn|date=16 February 2007|work=wifinetnews.com|access-date=28 December 2009|archive-date=6 February 2010|archive-url=https://web.archive.org/web/20100206113602/http://wifinetnews.com/archives/2007/02/airport_extreme_apple_breaks_90_mbps.html|url-status=live}} instead of Apple's own OS X (of which most Unix-level userland code is derived from FreeBSD code but some is derived from NetBSD code{{cite web|title=Myths about FreeBSD|url=http://wiki.freebsd.org/Myths|access-date=7 June 2014|quote=The two operating systems do share a lot of code, for example most userland utilities and the C library on OS X are derived from FreeBSD versions.|archive-date=14 July 2014|archive-url=https://web.archive.org/web/20140714222938/https://wiki.freebsd.org/Myths|url-status=live}}{{cite web|url=https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/background/background.html|title=Overview of OS X|publisher=Apple Inc.|date=11 June 2012|access-date=29 July 2015|archive-date=4 March 2016|archive-url=https://web.archive.org/web/20160304094528/https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/background/background.html|url-status=live}}).

Several companies are known to use NetBSD internally:

  • Wasabi Systems{{cite web|url=https://www.wasabisystems.com/|title=Wasabi Systems|access-date=16 February 2018|archive-date=8 October 2023|archive-url=https://web.archive.org/web/20231008090513/http://www.wasabisystems.com/|url-status=live}} provides a commercial "Wasabi Certified BSD" product based on NetBSD{{cite web |url=https://www.datastorageconnection.com/doc/wasabi-certified-bsd-0001 |title=Wasabi Certified® BSD |publisher=Data Storage Connection |access-date=14 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313015855/https://www.datastorageconnection.com/doc/wasabi-certified-bsd-0001 |url-status=live }} with proprietary enterprise features and extensions, which are focused on embedded, server and storage applications. Wasabi has a long history of cooperation with the NetBSD project, including the development of WAPBL{{cite web

|url= http://broadcast.oreilly.com/2009/05/netbsd-wapbl.html

|title= NetBSD WAPBL |author= Federico Biancuzzi |publisher= O'Reilly Media |date= 2008-05-18 |archive-url= https://web.archive.org/web/20100107141731/http://broadcast.oreilly.com/2009/05/netbsd-wapbl.html |access-date=2019-03-24 |archive-date= 2010-01-07}} and PCI storage devices powered by NetBSD.{{cite web |url=https://www.usenix.org/conference/bsdcon-2003/whba-project-experiences-deeply-embedding-netbsd |title=The WHBA Project: Experiences "deeply embedding" NetBSD |publisher=USENIX Website |work=BSDCON'03 |author=Jason R. Thorpe, Allen K. Briggs |date=21 August 2003 |access-date=14 February 2025 |archive-date=11 August 2024 |archive-url=https://web.archive.org/web/20240811002452/https://www.usenix.org/conference/bsdcon-2003/whba-project-experiences-deeply-embedding-netbsd |url-status=live }}

  • Precedence Technologies{{cite web|url=https://www.precedence.co.uk/|title=Precedence Technologies|access-date=14 February 2025|archive-date=19 January 2025|archive-url=https://web.archive.org/web/20250119231630/http://www.precedence.co.uk/|url-status=live}} offers thin-client software (ThinIT) and accompanying hardware based on NetBSD.{{cite web |url=https://www.bsdcan.org/2009/schedule/attachments/77_BuildingProductsWithNetBSDthin-clients-Stephen-Borrill.pdf |title=Building products with NetBSD - thin-clients |work=BSDCan 2009 |first=Stephen |last=Borrill |date=9 May 2009 |access-date=14 February 2025}}
  • Internet Initiative Japan, Inc. (IIJ) sells CPE routers commercialized as "SEIL",{{cite web|url=https://www.seil.jp/|title=SEIL website|access-date=11 February 2025}} which run a modified version of NetBSD at their core, and operate through a proprietary network management system (SMF) also based on NetBSD.{{cite web |url=https://www.netbsd.org/gallery/presentations/msaitoh/2014_AsiaBSDCon/ABC2014-P6B-paper.pdf |title=Developing CPE Routers based on NetBSD: Fifteen Years of SEIL |work=AsiaBSDCon 2014 |author=Masanobu SAITOH, Hiroki SUENAGA |date=March 2014 |access-date=14 February 2025 |archive-date=10 October 2024 |archive-url=https://web.archive.org/web/20241010134105/https://www.netbsd.org/gallery/presentations/msaitoh/2014_AsiaBSDCon/ABC2014-P6B-paper.pdf |url-status=live }} The SEIL/X4 has 2x GE ports (WAN, DMZ), 4x GE L2 switch ports, 2x USB 2.0 ports, and reaches a throughput of 2Gbps, and VPN rate of up to 2 Gbit/s.{{cite web |url=https://www.iij.ad.jp/en/news/pressrelease/2019/0328.html |title=SEIL/X4 press release |publisher=IIJ |date=28 March 2019 |access-date=11 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313032806/https://www.iij.ad.jp/en/news/pressrelease/2019/0328.html |url-status=live }}
  • Moritz Systems, an EU-based IT company specialized in embedded systems, IoT, edge computing and quality audits, also bases its products on NetBSD.{{cite web|url=https://www.moritz.systems/|title=Moritz Systems|access-date=11 February 2025|archive-date=12 February 2025|archive-url=https://web.archive.org/web/20250212161433/https://www.moritz.systems/|url-status=live}}
  • TDI Security,{{cite web|url=https://www.tdisecurity.com/|title=TDI: Cybersecure the World|access-date=14 February 2025|archive-date=3 February 2025|archive-url=https://web.archive.org/web/20250203175747/https://www.tdisecurity.com/|url-status=live}} a US company specialized in cybersecurity, offers portable SAN and VPN solutions (named "pocketSAN" and "pocketVPN" respectively), designed to be run from a USB thumb-drive or an embedded device, and built upon a minimalist deployment of NetBSD installed on flash memory ("polyBSD").{{cite web |url=https://www.tdisecurity.com/labs/polybsd-pocketsan-pocketvpn/ |title=NetBSD on embedded devices - turning USB thumb-drives into VPNs. |publisher=TDI Security |access-date=2025-02-14 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313022955/https://www.tdisecurity.com/labs/polybsd-pocketsan-pocketvpn/ |url-status=live }}

The operating system of the T-Mobile Sidekick LX 2009 smartphone is based on NetBSD.{{cite web|url=http://www.hiptop3.com/archives/sidekick-lx-2009-blade-will-run-netbsd/|title=Sidekick LX 2009 / Blade Will Run NetBSD|date=30 January 2009|work=hiptop3.com|access-date=5 February 2009|archive-url=https://web.archive.org/web/20090317022256/http://www.hiptop3.com/archives/sidekick-lx-2009-blade-will-run-netbsd/|archive-date=17 March 2009|url-status=dead}}

The Minix operating system uses a mostly NetBSD userland as well as its pkgsrc packages infrastructure since version 3.2.{{cite web|url=https://www.pcworld.com/article/251011/minix_gets_a_netbsd_code_infusion.html|title=Minix Gets a NetBSD Code Infusion|date=29 February 2012|work=pcworld.com|access-date=4 July 2012|archive-date=27 September 2021|archive-url=https://web.archive.org/web/20210927022352/https://www.pcworld.com/article/251011/minix_gets_a_netbsd_code_infusion.html|url-status=live}}

Parts of macOS were originally taken from NetBSD, such as some userspace command line tools.{{cite web|url=https://opensource.apple.com/source/file_cmds/file_cmds-45/chmod/chmod.c.auto.html|title=chmod.c|website=opensource.apple.com|access-date=5 February 2021|archive-date=27 September 2021|archive-url=https://web.archive.org/web/20210927010715/https://opensource.apple.com/source/file_cmds/file_cmds-45/chmod/chmod.c.auto.html|url-status=live}}{{cite web|url=https://opensource.apple.com/source/file_cmds/file_cmds-45/du/du.c.auto.html|title=du.c|website=opensource.apple.com|access-date=5 February 2021|archive-date=27 September 2021|archive-url=https://web.archive.org/web/20210927011816/https://opensource.apple.com/source/file_cmds/file_cmds-45/du/du.c.auto.html|url-status=live}}{{cite web|url=https://opensource.apple.com/source/file_cmds/file_cmds-45/mv/mv.c.auto.html|title=mv.c|website=opensource.apple.com|access-date=5 February 2021|archive-date=27 September 2021|archive-url=https://web.archive.org/web/20210927011740/https://opensource.apple.com/source/file_cmds/file_cmds-45/mv/mv.c.auto.html|url-status=live}}

Bionic, the C standard library found in Android, incorporates code from NetBSD libc.{{cite mailing list |url=https://mail-index.netbsd.org/tech-userlevel/2012/07/25/msg006571.html |title=getting Android's bionic C library back in sync with upstream |first=Elliot |last=Hughes |date=25 July 2012 |mailing-list=tech-userlevel|access-date=11 February 2025 |archive-date=12 February 2025 |archive-url=https://web.archive.org/web/20250212162145/https://mail-index.netbsd.org/tech-userlevel/2012/07/25/msg006571.html |url-status=live }}

The NPF packet filter has been used in commercial products such as Outscale{{cite web|url=https://github.com/outscale/packetgraph/ |title=Packetgraph is a library aiming to give the user a tool to build networks graph easily|date=23 March 2023|work=Outscale Github Repository|access-date=11 February 2025}} and BisonRouter.{{cite web|url=https://github.com/alexk99/the_router |title=BisonRouter is a software packet router based on DPDK an NPF libraries |date=29 January 2025|work=TheRouter Github Repository|access-date=11 February 2025}}

NetBSD's own curses implementation{{cite web |url=https://wiki.netbsd.org/curses_in_netbsd/ |title=curses in NetBSD |date=6 August 2020 |work=NetBSD wiki |access-date=11 February 2025 |archive-date=16 February 2025 |archive-url=https://web.archive.org/web/20250216150745/https://wiki.netbsd.org/curses_in_netbsd/ |url-status=live }} is used by Sabotage Linux.{{cite web |url=https://github.com/sabotage-linux/netbsd-curses |title=netbsd-libcurses portable edition |date=16 January 2024 |work=Sabotage Linux Github repository |access-date=11 February 2025 |archive-date=16 February 2025 |archive-url=https://web.archive.org/web/20250216150744/https://github.com/sabotage-linux/netbsd-curses |url-status=live }}

NetBSD has earned popularity among retrocomputing enthusiasts,{{cite web |url=https://www.theregister.com/2022/08/10/netbsd_93/ |title=NetBSD 9.3: A 2022 OS that can run on late-1980s hardware | author=The Register |date=10 August 2022 |access-date=8 February 2025}} due to its lightweight and support for a wide range of hardware architecures.{{cite web |url=https://archive.fosdem.org/2018/schedule/event/netbsd_modern_operating_system_for_retro_battlestation/ |title=NetBSD - A modern operating system for your retro battlestation | author=Sevan Janiyan |work=FOSDEM 2018 | date=4 February 2018 |access-date=14 April 2025}} NetBSD may be used to revive vintage hardware, rainging from DEC VAXen, to Commodore Amiga and IBM PCs.{{cite web |url=https://jack23247.github.io/blog/sysadm/netbsd-vax-netboot/ |title=Booting NetBSD/VAX 1.5.3 from network on a MicroVAX 3300 |author=Jacopo Maltagliati |date=19 March 2021 |access-date=14 April 2025}}{{cite web |url=https://luke8086.dev/netbsd-on-thinkpad-380z.html |title=Running NetBSD on IBM ThinkPad 380Z | author=Luke S. |date=16 December 2024 |access-date=14 April 2025}}{{cite web |url=https://sandervanderburg.blogspot.com/2025/02/running-netbsd-on-my-amiga-4000.html |title=Running NetBSD on my Amiga 4000 |author=Sander van der Burg |date=18 February 2025 |access-date=14 April 2025}}

Rump kernels have been integrated in other operating systems to provide additional functionality:

  • Genode OS Framework; uses a rump kernel to support various files systems, both as a standalone FS server (rump_fs) and as a library plugin for its modular VFS (vfs_rump.lib.so).{{cite web|url=https://genode.org/documentation/release-notes/14.02#NetBSD_file_systems_using_rump_kernels|title=Release notes for the Genode OS Framework 14.02: NetBSD file systems using rump kernels|publisher=Genode|date=28 February 2017|access-date=15 February 2025|archive-date=4 March 2025|archive-url=https://web.archive.org/web/20250304090654/https://genode.org/documentation/release-notes/14.02#NetBSD_file_systems_using_rump_kernels|url-status=live}}{{cite web |url=https://genode.org/documentation/release-notes/17.02#Rump-kernel-based_file_systems_as_VFS_plugin |title=Release notes for the Genode OS Framework 17.02: Rump-kernel-based file systems as VFS plugin |publisher=Genode |date=28 February 2014 |access-date=15 February 2025 |archive-date=7 March 2025 |archive-url=https://web.archive.org/web/20250307204733/https://genode.org/documentation/release-notes/17.02#Rump-kernel-based_file_systems_as_VFS_plugin |url-status=live }}
  • GNU Hurd; implements multiple rump kernel deployments to get modern device drivers, ranging from storage device drivers (RumpDisk), to sound devices drivers (RumpSound), and drivers for Ethernet/WLAN controllers (RumpNet).{{cite web |url=https://darnassus.sceen.net/~hurd-web/hurd/rump/ |title=rump on GNU HURD |work=Hurd wiki |publisher=darnassus.sceen.net |date=21 October 2024 |access-date=15 February 2025 |archive-date=18 February 2025 |archive-url=https://web.archive.org/web/20250218030250/https://darnassus.sceen.net/~hurd-web/hurd/rump/ |url-status=live }}
  • VMware's Node Replicated Kernel (NRK); uses a rump kernel to provide a POSIX userspace API (libc, libpthread etc.) used by applications like memcached, LevelDB and Redis.{{cite web |url=https://nrkernel.systems/book/Overview.html |title=Overview - NRK Documentation |work=NRkernel Website |access-date=15 February 2025 |archive-date=13 March 2025 |archive-url=https://web.archive.org/web/20250313185415/https://nrkernel.systems/book/Overview.html |url-status=live }}

The SDF Public Access Unix System, a non-profit public access UNIX shell provider with the aim to provide remotely accessible computing facilities, uses NetBSD to power its infrastructure.{{cite web |title=What SDF looks like TODAY |url=https://sdf.org/?tour |publisher=SDF.org |date=December 2021 |access-date=14 February 2025 |archive-date=29 January 2025 |archive-url=https://web.archive.org/web/20250129135331/https://sdf.org/?tour |url-status=live }} With a network of eight 64-bit enterprise class servers running NetBSD, and realising a combined processing power of over 21.1 GFLOPS (2018),{{cite web|title=WHAT IS SDF? (QUICK SUMMARY) |url=https://sdf.org/?faq?BASICS?01|publisher=SDF.org |date=22 September 2018| access-date=14 February 2025}} the SDF.org cluster is considered the largest NetBSD installation in the world, factually working as a testbed for future NetBSD releases.{{cite web|title=What's in store for NetBSD 9.0|url=https://www.netbsd.org/gallery/presentations/sevan/eurobsdcon2018.pdf|publisher=NetBSD Gallery|author=Sevan Janiyan|work=EuroBSDcon 2018|quote=SDF is a NetBSD development site|date=22 September 2018|access-date=14 February 2025|archive-date=5 March 2025|archive-url=https://web.archive.org/web/20250305183714/https://www.netbsd.org/gallery/presentations/sevan/eurobsdcon2018.pdf|url-status=live}}

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, which does not apply to NetBSD, 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.{{cite press release|url=https://www.netbsd.org/about/redistribution.html#why2clause|title=NetBSD Licensing and Redistribution|date=June 2008|access-date=20 June 2008}}

NetBSD also includes the GNU development tools and other packages, which are covered by the GPL and other open source licenses. As with other BSD projects, NetBSD separates those in its base source tree to make it easier to remove code that is under more restrictive licenses.{{cite web|title=Distro description|url=http://www.freepenguin.it/netbsd_download|publisher=Free Penguin|access-date=7 June 2014|location=Licensing Section|quote=NetBSD separates those in its base source tree, in order to make removal of code under more restrictive licenses easier.|archive-date=14 July 2014|archive-url=https://web.archive.org/web/20140714201604/http://www.freepenguin.it/netbsd_download|url-status=live}} As for packages, the installed software licenses may be controlled by modifying the list of allowed licenses in the pkgsrc configuration file (mk.conf).

Releases

The following table lists major NetBSD releases and their notable features in reverse chronological order. Minor and patch releases are not included.

{{Version |l |show=111110}}

class="wikitable sortable"
Major releasesRelease dateclass="unsortable"|Notable features and changes
{{Version |c |10.0}}{{Cite web|url=https://www.netbsd.org/releases/formal-10/NetBSD-10.0.html|title=Announcing NetBSD 10.0 (Mar 28, 2024)|access-date=4 January 2024|archive-date=4 January 2024|archive-url=https://web.archive.org/web/20240104164111/http://www.netbsd.org/releases/formal-10/NetBSD-10.0.html|url-status=live}}

| 28 March 2024

|

{{Version |co |9.0}}{{Cite web|url=https://www.netbsd.org/releases/formal-9/NetBSD-9.0.html|title=Announcing NetBSD 9.0 (Feb 14, 2020)|access-date=4 December 2019|archive-date=29 May 2020|archive-url=https://web.archive.org/web/20200529211903/http://netbsd.org/releases/formal-9/NetBSD-9.0.html|url-status=live}}{{Cite web|url=https://blog.netbsd.org/tnf/entry/netbsd_9_0_available|title=NetBSD Blog|access-date=15 February 2020|archive-date=15 February 2020|archive-url=https://web.archive.org/web/20200215221553/https://blog.netbsd.org/tnf/entry/netbsd_9_0_available|url-status=live}}

| 14 February 2020

|

  • Support for AArch64 (64-bit ARMv8-A) machines, including SBSA/SBBR, big.LITTLE, compatibility with 32-bit binaries, and up to 256 CPUs
  • Enhanced support for ARMv7-A, including UEFI bootloader, big.LITTLE, kernel mode setting for Allwinner and other SoCs, and device tree support
  • Updated Direct Rendering Manager (DRM) to Linux 4.4, support for Intel graphics up to and including Kaby Lake
  • Hardware accelerated virtualization for QEMU via NVMM (NetBSD Virtual Machine Monitor)
  • Improvements in the NPF firewall, updated ZFS, new and reworked drivers
  • Support for various new kernel and userland code sanitizers, and kernel ASLR. Audited network stack.
  • Removal of various old and unmaintained components, such as Intel 386 and ISDN support
{{Version |o |8.0}}{{cite web|url=https://www.netbsd.org/releases/formal-8/NetBSD-8.0.html|title=Announcing NetBSD 8.0|date=17 July 2017|website=NetBSD|access-date=21 July 2018|archive-date=21 July 2018|archive-url=https://web.archive.org/web/20180721144706/https://www.netbsd.org/releases/formal-8/NetBSD-8.0.html|url-status=live}}

| 17 July 2018

|

  • Audio system reworked with an in-kernel mixer
  • USB stack reworked with support for USB 3 host controllers and data rates
  • PaX ASLR enabled by default on supported architectures
  • Hardened memory layout with fewer writable pages and PaX MPROTECT (W^X) enforced by default on supported architectures
  • Support for reproducible builds, and userland built with position-independent code by default
  • Meltdown and Spectre vulnerability mitigations for Intel and AMD CPUs
  • Added a UEFI bootloader, NVMe driver, nouveau driver for Nvidia GPUs, support for more ARM boards including the Raspberry Pi 3
{{Version |o |7.0}}{{cite web|url=https://www.netbsd.org/releases/formal-7/NetBSD-7.0.html|title=Announcing NetBSD 7.0|access-date=5 October 2024|archive-date=9 October 2015|archive-url=https://web.archive.org/web/20151009015420/http://www.netbsd.org/releases/formal-7/NetBSD-7.0.html|url-status=live}}{{Cite web |url=https://distrowatch.com/weekly.php?issue=20151130#netbsd |title=DistroWatch Weekly, Issue 638, 30 November 2015 |access-date=27 May 2018 |archive-date=22 June 2018 |archive-url=https://web.archive.org/web/20180622111450/https://distrowatch.com/weekly.php?issue=20151130#netbsd |url-status=live }}

| 8 October 2015

|

{{Version |o |6.0}}{{cite web|url=https://www.netbsd.org/releases/formal-6/NetBSD-6.0.html|title=Announcing NetBSD 6.0|access-date=5 October 2024|archive-date=15 January 2016|archive-url=https://web.archive.org/web/20160115091208/http://www.netbsd.org/releases/formal-6/NetBSD-6.0.html|url-status=live}}

| 17 October 2012

|

{{Version |o |5.0}}{{cite web|url=https://www.netbsd.org/releases/formal-5/NetBSD-5.0.html|title=Announcing NetBSD 5.0|access-date=5 October 2024|archive-date=17 July 2011|archive-url=https://web.archive.org/web/20110717002042/http://www.netbsd.org/releases/formal-5/NetBSD-5.0.html|url-status=live}}{{Cite web |url=https://lwn.net/Articles/330909/ |title=Distributions [LWN.net] |access-date=27 May 2018 |archive-date=27 May 2018 |archive-url=https://web.archive.org/web/20180527202346/https://lwn.net/Articles/330909/ |url-status=live }}{{Cite web |url=https://distrowatch.com/weekly.php?issue=20110103#feature |title=DistroWatch Weekly, Issue 386, 3 January 2011 |access-date=27 May 2018 |archive-date=22 June 2018 |archive-url=https://web.archive.org/web/20180622140109/https://distrowatch.com/weekly.php?issue=20110103#feature |url-status=live }}

| 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 Loadable kernel module 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. Preliminary support for using Clang instead of GCC as the system compiler.{{cite web |url=http://www.sonnenberger.org/2012/01/19/status-netbsd-and-llvm/ |title=Status of NetBSD and LLVM |last=Sonnenberger |first=Jörg |date=2012-01-19 |access-date=2015-03-26 |archive-url=https://web.archive.org/web/20140409203110/http://www.sonnenberger.org/2012/01/19/status-netbsd-and-llvm/ |archive-date=9 April 2014 |url-status=dead }}
  • Added support for ASLR in the kernel and dynamic linker.
  • Rewritten envsys framework (envsys2); addition of 8 new Hardware Monitoring sensor drivers; new I2C attachment of the lm(4) driver; additional hardware support in several sensor drivers
{{Version |o |4.0}}

| 19 December 2007

|

  • Added support for slab allocator{{Citation needed|date=May 2025|reason=There is no mention of a slab allocator in the 4.0 release notes, and Matthew Green claims in personal communication that NetBSD's slab allocator (called a 'pool allocator' by NetBSD) was added in 1.4.}}, bioctl, iSCSI target, CARP, tmpfs, Explicit Congestion Notification, Xen 3, the Kernel Authorization framework, Veriexec and other security extensions, property list exchange between kernel/userland through ioctl with proplib(3), and a Bluetooth protocol suite.{{cite web|url=https://www.netbsd.org/releases/formal-4/NetBSD-4.0.html|title=Announcing NetBSD 4.0|access-date=5 October 2024|archive-date=18 July 2011|archive-url=https://web.archive.org/web/20110718180359/http://www.netbsd.org/releases/formal-4/NetBSD-4.0.html|url-status=live}}
{{Version |o |3.0}}

| 23 December 2005

|

  • Support for Xen 2.0
  • Support for filesystems > 2 terabytes added.
  • Pluggable Authentication Modules added.
  • OpenBSD Packet Filter was integrated as an alternative to IPFilter.
  • UFS directory hash support.{{cite web|url=https://www.netbsd.org/releases/formal-3/NetBSD-3.0.html|title=Announcing NetBSD 3.0|access-date=5 October 2024|archive-date=6 August 2011|archive-url=https://web.archive.org/web/20110806045234/http://www.netbsd.org/releases/formal-3/NetBSD-3.0.html|url-status=live}}
{{Version |o |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.{{cite web|url=https://www.netbsd.org/releases/formal-2.0/NetBSD-2.0.html|title=Announcing NetBSD 2.0|access-date=5 October 2024|archive-date=6 August 2011|archive-url=https://web.archive.org/web/20110806044349/http://www.netbsd.org/releases/formal-2.0/NetBSD-2.0.html|url-status=live}}
{{Version |o |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.{{cite web|url=https://www.netbsd.org/releases/formal-1.6/NetBSD-1.6.html|title=Announcing NetBSD 1.6|access-date=5 October 2024|archive-date=6 August 2011|archive-url=https://web.archive.org/web/20110806050208/http://www.netbsd.org/releases/formal-1.6/NetBSD-1.6.html|url-status=live}}[http://www.osnews.com/story/6398 OS Review: NetBSD 1.6.2 on SPARC64] {{Webarchive|url=https://web.archive.org/web/20180622140055/http://www.osnews.com/story/6398 |date=22 June 2018 }}, OSNews
{{Version |o |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.{{cite web|url=https://www.netbsd.org/releases/formal-1.5/NetBSD-1.5.html|title=Announcing NetBSD 1.5|access-date=5 October 2024|archive-date=6 August 2011|archive-url=https://web.archive.org/web/20110806050429/http://www.netbsd.org/releases/formal-1.5/NetBSD-1.5.html|url-status=live}}
{{Version |o |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.{{cite web|url=https://www.netbsd.org/releases/formal-1.4/NetBSD-1.4.html|title=NetBSD 1.4 Release Announcement|access-date=5 October 2024|archive-date=13 April 2011|archive-url=https://web.archive.org/web/20110413005855/http://www.netbsd.org/releases/formal-1.4/NetBSD-1.4.html|url-status=live}}
{{Version |o |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.{{cite web|url=https://www.netbsd.org/releases/formal-1.3/|title=Information about NetBSD 1.3|access-date=5 October 2024|archive-date=7 June 2011|archive-url=https://web.archive.org/web/20110607000155/http://www.netbsd.org/releases/formal-1.3/|url-status=live}}
{{Version |o |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.{{cite web|url=https://www.netbsd.org/releases/formal-1.2/|title=Information about NetBSD 1.2|access-date=5 October 2024|archive-date=7 June 2011|archive-url=https://web.archive.org/web/20110607000219/http://www.netbsd.org/releases/formal-1.2/|url-status=live}}
{{Version |o |1.1}}

| 26 November 1995

|

  • Ports for DEC Alpha, Atari TT/Falcon030 and MVME68k systems added.
  • Binary emulation facility added.
  • Generic audio subsystem introduced.{{cite web|url=https://www.netbsd.org/releases/formal-1.1/|title=Information about NetBSD 1.1|access-date=5 October 2024|archive-date=7 June 2011|archive-url=https://web.archive.org/web/20110607000210/http://www.netbsd.org/releases/formal-1.1/|url-status=live}}
{{Version |o |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.
  • 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.{{cite web|url=https://www.netbsd.org/releases/formal-1.0/NetBSD-1.0.html|title=NetBSD 1.0 release announcement|access-date=5 October 2024|archive-date=7 June 2011|archive-url=https://web.archive.org/web/20110607014356/http://www.netbsd.org/releases/formal-1.0/NetBSD-1.0.html|url-status=live}}
{{Version |o |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).{{cite web|url=http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.9|title=NetBSD 0.9 available for anon-ftp...|access-date=8 October 2021|archive-date=22 September 2021|archive-url=https://web.archive.org/web/20210922172749/http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.9|url-status=live}}
{{Version |o |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.{{cite web|url=http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8|title=Installation notes for NetBSD 0.8|access-date=12 May 2010|archive-date=17 January 2020|archive-url=https://web.archive.org/web/20200117054425/http://ftp.netbsd.org/pub/NetBSD/misc/release/NetBSD/NetBSD-0.8|url-status=live}}

Logo

The NetBSD "flag" logo, designed by Grant Bissett, was introduced in 2004 and is an abstraction of the older logo,[//www.netbsd.org/images/NetBSD-old.jpg Old NetBSD logo] which was designed by Shawn Mueller in 1994. Mueller's version was based on the famous World War II photograph Raising the Flag on Iwo Jima.{{cite web|url=http://mail-index.netbsd.org/netbsd-advocacy/2004/01/14/0001.html|title=NetBSD logo design competition|access-date=19 April 2006|archive-date=23 July 2014|archive-url=https://web.archive.org/web/20140723124721/http://mail-index.netbsd.org/netbsd-advocacy/2004/01/14/0001.html|url-status=live}}

The NetBSD Foundation

The NetBSD Foundation is the legal entity that owns the intellectual property and trademarks associated with NetBSD,[//www.netbsd.org/foundation/ The NetBSD Foundation, Inc.] 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.{{cite web |url=https://www.netbsd.org/people/developers.html |title=NetBSD Developers |date=7 January 2010 |access-date=15 January 2010 |archive-date=19 July 2011 |archive-url=https://web.archive.org/web/20110719012253/http://www.netbsd.org/people/developers.html |url-status=live }} The NetBSD Foundation has a Board of Directors, elected by the voting of members for two years.{{cite web|title=Bylaws of The NetBSD Foundation, Constitution of The NetBSD Foundation|url=https://www.netbsd.org/foundation/bylaws.html|access-date=7 June 2014|page=Section 5.4|quote=Each Director shall serve for two years|archive-date=26 June 2014|archive-url=https://web.archive.org/web/20140626033116/http://netbsd.org/foundation/bylaws.html|url-status=live}}

Hosting

Hosting for the project is provided primarily by Columbia University, and Western Washington University, fronted by a CDN provided by Fastly. Mirrors for the project are spread around the world and provided by volunteers and supporters of the project.

See also

References

{{Reflist}}

{{Refbegin}}

  • {{Cite book

|first1 = Christopher

|last1 = Negus

|first2 = Francois

|last2 = Caen

|date = April 2008

|title = BSD UNIX Toolbox: 1000+ Commands for FreeBSD, OpenBSD and NetBSD

|edition = First

|publisher = Wiley

|page = 309

|isbn = 978-0-470-38725-2

|url = https://www.wiley.com/BSD+UNIX+Toolbox%3A+1000%2B+Commands+for+FreeBSD%2C+OpenBSD+and+NetBSD-p-9780470387252

}}

  • {{Cite book

| first1 = Dru

| last1 = Lavigne

| date = 24 May 2004

| title = BSD Hacks

| edition = First

| publisher = O'Reilly Media

| page = 448

| isbn = 0-596-00679-9

| url = http://oreilly.com/catalog/9780596006792/

| archive-date = 17 April 2009

| access-date = 30 April 2009

| archive-url = https://web.archive.org/web/20090417211251/http://oreilly.com/catalog/9780596006792/

| url-status = live

}}

{{Refend}}