NetBSD

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.

[18] 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.

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.

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.

[27] 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.

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.

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.

[35][36] A scalable M2 thread scheduler was also implemented[37], providing separate real-time (RT) and time-sharing (TS) queues, and improving the performance on MP systems.

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.

[38] In reality, starting with release 8.0, various parts of the network stack have been made MP safe already, [39] 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.

[41] 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.

[42] The release of NetBSD 10.0 brought significant performance enhancements, especially on multiprocessor and multicore systems;[43] the scheduler became aware of NUMA and hyperthreading, and able to scale better on a mixture of slow and fast cores (e.g.

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.

The cryptographic device driver (CGD) allows using disks or partitions (including CDs and DVDs) for encrypted storage.[53].

NetBSD also supports a variety of in-kernel bug detection facilities,[56] including code sanitizers (undefined behavior, address, thread, memory sanitizers), [57][58] a kernel memory disclosure detection system (KLEAK)[59] introduced in NetBSD 9.0[60], and a kernel diagnostic subsystem named heartbeat(9).

[61] Other noticeable features include BSD securelevels, and blocklistd,[62] a daemon capable of blocking ports on demand to avoid DoS abuse.

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.

A rump kernel can be seen as a lightweight, portable virtualized driver execution environment, characterized by small memory footprint and minimized attack surface.

[72] 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.

[81] The fss(4)[82] snapshot driver was introduced the same year, [83] 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) / restore(8), tar, rsync to create and export system backups to a backup device.

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.

[102] 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.

[107] 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.

A compatibility mode for the OSS API is provided by the soundcard.h header file and the libossaudio library[123], which internally operate using the native Sun-like audio interface.

NetBSD's clean design, high performance, scalability, and support for many architectures has led to its use in embedded devices and servers, especially in networking applications.

[132] NetBSD was used in NASA's SAMS-II Project of measuring the microgravity environment on the International Space Station,[133][134] and for investigations of TCP for use in satellite networks.

[173] 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).

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.

Mueller's version was based on the famous World War II photograph Raising the Flag on Iwo Jima.

NetBSD/amd64 startup in console mode
NetBSD/amd64 console login and welcome message
NetBSD was used in NASA 's SAMS-II Project of measuring the microgravity environment on the International Space Station , and for investigations of TCP for use in satellite networks. [ 125 ]