The features listed below are all available in the base system, which is compiled from a single source tree.
- Packet filtering and Network Address Translation (NAT)
- Network File System (NFS)
- Comprehensive and robust networking
- Wireless networking
- Hardware and software RAID
- High performance PCI IDE
- SCSIPI subsystem - combined SCSI and ATAPI
- 64-bit file systems
- Large IDE disks
- Many file system types
- Userspace filesystem support
- DVD ROM and RAM
- Disk encryption
- The package system (applications)
- Machine independent driver framework
- Machine independent audio framework
- Kernel debugging
- OS emulation
- USB (Universal serial bus)
- Other device support
- The UVM virtual memory system
- wscons machine independent console
- 64-bit clean
- Non-executable stack and heap
- Kernel authorization framework (kauth)
- Modular kernel
Clean design (top)
NetBSD focuses on clean design and well architected solutions. Because of this NetBSD may support certain 'exciting' features later than other systems, but as time progresses the NetBSD codebase is getting even stronger and easier to manage, while other systems that value features over code quality are finding increasing problems with code management and conflicts.
NetBSD supports a massive range of hardware platforms from a single source tree, including simultaneous release across all platforms, and continues to attract users and experienced developers despite lack of media exposure and commercial backing - all thanks to attention to code quality.
BSD Licence (top)
While NetBSD uses the GNU toolchain (compiler, assembler, etc), and certain other GNU tools, the entire kernel and the core of the userland utilities are shipped under a BSD licence. This allows companies to develop products based on NetBSD without the requirement to make changes public (as with the GPL). While the NetBSD Project encourages companies and individuals to feed back changes to the tree, we respect their right to make that decision themselves.
Full source availability (top)
NetBSD makes the full source available, both the source code and the full CVS repository. Since everything is in the same source tree, you can always access any version of all files. We were not the first BSD to make a CVS repository available, but we were the only one to meticulously check every file and remove only those revisions that contained tainted USL code, rather than discarding every revision before an arbitrary date.
See the Security page.
Mature and stable (top)
The BSD codebase can be traced back to the early 80s at UC Berkeley, and has been open to public scrutiny ever since. NetBSD continues this tradition and works ever harder to promote clean design and functionality over hype. NetBSD is being used at NASA's Numerical Aerospace Simulation facility for a reason. Their main platforms are Alpha systems with lots of RAM and diskspace (terabyte and up), and they need a good, stable, codebase on which they can build custom projects. NetBSD was also the first free OS to make a y2k statement. See our testimonials for more success stories!
Hype free (top)
Probably the only thing you won't get with NetBSD is the media hype. You'll need to get that somewhere else.
Packet filtering and Network Address Translation (NAT) (top)
NetBSD ships with an in-kernel packet filtering engine, allowing filtering of traffic based on interface, protocol, port, tos, ttl, source, destination and many other factors. Keeping this inside the kernel permits higher performance.
Network Address Translation can permit a local network of machines to use one set of addresses internally, and a different set (or even single IP address) externally. This can be used for security or simple convenience reasons, and also includes a transparent FTP proxy. Again this is all kept inside the kernel for higher performance.
NetBSD was the first free OS to provide a leading edge standards conforming IPv6 implementation, and we continue to work with the KAME project to track changes to the specification. NetBSD was also the first free operating system to ship with NFS via IPv6, for both client and server part.
Network File System (NFS) (top)
NetBSD provides complete in-kernel NFS client and server support, interoperable with other systems, for both NFS2 and NFS3 protocols. This includes support for swapping over NFS, and no arbitrary limits on the size of swap partitions. Client side file creation is correctly implemented as an atomic operation - on systems without this dot locking is not reliable.
Comprehensive and robust networking (top)
NetBSD supports the following network types:
In the process of ARCnet support the ARP subsystem was reworked to remove Ethernet dependencies and to be more generally applicable.
NetBSD also supports the following network protocols:
NetBSD also ships with many standard networking daemons, with built-in tcp wrappers support where appropriate, including bootparamd(8), bootpd(8), dhcpd(8), ftpd(8), identd(8), mopd(8), named(8), postfix(1), rarpd(8), rbootd(8), sshd(8), tftpd(8), and xntpd(8).
Wireless networking (top)
Portability and supported platforms
Multi-platform support (top)
NetBSD is designed to take advantage of the latest high end hardware available in Alpha, PowerPC, and PC systems, while still retaining support for older architectures. This is all done from the same source tree and is only possible due to the emphasis on correct design and clean code. It also makes NetBSD an ideal codebase to port to new machines and embedded platforms, such as mips, ARM and Super-H based handheld Windows CE devices.
NetBSD on Embedded Systems (top)
The NetBSD Operating System is highly portable and many of the supported hardware platforms are suited for embedded applications. Read more about NetBSD on Embedded Systems
Hardware and software RAID (top)
In addition to many standalone SCSI RAID devices, NetBSD supports a variety of RAID controllers and a complete software RAID 0, 1, 4, 5, and 6 system in RAIDframe. (More details)
High performance PCI IDE (top)
Many recent PCI IDE controllers support high speed DMA transfers. NetBSD is one of the few systems to take advantage of these features 'out of the box'. Due to NetBSD's clean design the same drivers and features are available on alpha, i386, macppc and sparc64.
SCSIPI subsystem - combined SCSI and ATAPI (top)
NetBSD implements a unified SCSIPI subsystem, avoiding code
duplication and allowing a common userland SCSI and ATAPI
interface for many devices. As a direct result of this, when
ATAPI CD-R units became available existing tools such as
sysutils/cdrtools worked with them
without any need for modification.
64-bit file systems (top)
NetBSD has shipped with 64-bit file systems since the 1.0 release in October 1994. Under NetBSD berkeley fast file systems can be up to 4TB (4096GB) in size, on both 64- and 32-bit machines. Files and user file quotas can also reach terabytes. Many other systems limit filesize to 4GB on 32-bit machines.
An ffs can have up to 2^31 fragment blocks - the maximum file system size is dependent on the fragment size:
Large IDE disks (top)
NetBSD fully supports IDE disks of over 34GB in size, including booting from partitions beyond 8GB (where the BIOS permits). Starting with release 1.6, NetBSD can also use 48-bit logical block addresses (ATA-6 Expanded Addressing) in order to access disks with sizes greater than 137GB.
Many file system types (top)
NetBSD can handle and manipulate many different file systems, which is useful for both data exchange and binary compatibility. Systems can also optionally mount file systems writing with opposing byte ordering. Note that unlike some other systems NetBSD imposes metadata write ordering, allowing fsync(2) to be used to avoid important data loss in the event of power failure, even on ext2fs.
- ffs (Berkeley Fast File System) - both the latest 64-bit FFS, including soft updates, and the older 32-bit FFS used by some vendors (SunOS, Ultrix, etc).
- lfs (Log-structured File System) - LFS is designed to allow safe asynchronous file creation, fast file writes without intervening head seek and near-instantaneous crash recovery. This is a more completely log structured form of 'Journaled' file systems such as IRIX's XFS, Reiserfs, Microsoft's NTFS, IBM's JFS, and similar file systems in Netware and Unixware. (More details).
- tmpfs (an efficient memory file system)
- iso9660 (Standard CD file system, supports Rockridge and Joliet extensions).
- msdosfs (Windows, MS-DOS, and Atari TOS) - including long filenames, FAT32 and VFAT.
- ntfs (Windows NT native file system)
- ext2fs (Linux extended file system).
- ados (AmigaDOS file system).
- filecorefs (Acorn RISC OS file system).
NetBSD also has a range of virtual file system types, including:
- kernfs - access kernel information
- nullfs - for loopback mounts
- portal - portal daemon file system
- procfs - access process information
- umapfs - automatically remap uids and gids
- unionfs - attaches a directory in such a way that the contents of both directory trees remain visible. This can be used to mount a writable file system over a CD-ROM.
Userspace filesystem support (top)
Starting with version 4.0, NetBSD provides the puffs(3) framework for creating file systems as userspace servers. This opens a myriad of possibilities, like developing new filesystems in userspace for comfortable testing, or representing userspace functionality as a filesystem (such as a SSH filesystem). NetBSD 5.0 will also include the refuse library, which provides a FUSE-like interface. With refuse, many FUSE filesystems can run on top of puffs(3).
You can find more information about puffs and refuse on our “Filesystems in userspace” page.
DVD ROM and RAM (top)
NetBSD supports large capacity DVD drives for reading data in the common DVD file systems available nowadays.
Disk encryption (top)
NetBSD provides transparent disk encryption through the cgd(4) driver. cgd(4) acts as a logical device that is layered on top of another block device, such as a physical disk partition or a vnd(4) pseudo device. cgd(4) currently supports the AES, 3DES, and Blowfish ciphers in CBC mode.
The package system (applications) (top)
The NetBSD Packages Collection, pkgsrc, provides easy
source or binary installation of a large number of third party
applications. It includes all the essentials such as
and more. Features include:
- Easy install from local or remote binary packages, including automated download of any required packages.
- Handles fixed and wildcard dependencies both when building from source and installing binary packages.
- Allows automated installation for tools that cannot be redistributed in binary or source form.
- Provides an infrastructure designed to keep the information required to build each package both shorter and easier to maintain than in other package systems.
- Follows the concept of "pristine source", allowing both easy incorporation of local or 3rd party patches as well as submitting changes back to package authors.
- Includes built-in support for the internal structure of many common source distributions like Imakefiles, GNU autoconf, ..., reducing the need for complicated package specific build rules.
Pkgsrc was derived from FreeBSD's 'ports' system, but has been substantially enhanced.
Machine independent driver framework (top)
- Simplifies porting to new hardware.
- Reduces the size of a kernel - devices which use same controller share the same driver, and only the necessary bus dependent parts (isa/eisa/pci/pcmcia/sbus/cardbus...) are included.
- Device drivers (including 32-bit pci devices) are ready for 64-bit physical memory. (Unlike many other systems).
- Bounce buffer support is unnecessary on the machines which have appropriate hardware (e.g., sparc, nearly all alpha), and where needed it is a function of the bus code, not each individual driver.
Machine independent audio framework (top)
In a similar fashion to the SCSI subsystem, NetBSD has a generic audio layer which attaches to the individual chipset drivers. This gives significantly more consistency and code sharing than other free OS projects.
Kernel debugging (top)
- NetBSD has fully featured in-kernel debugger (DDB), much more advanced than some other systems 'SysRQ' type features.
- Supports kernel crash dumps to ease kernel debugging.
- Strict consistency check - if a null pointer is accessed by the kernel it will either drop into DDB, or crashdump and reboot to avoid running with potentially corrupted data.
OS emulation (top)
NetBSD's unique binary compatibility protects users' investment in existing applications by in kernel support for non-native binaries (for the same processor) to run transparently. Systems include:
- BSD/OS (i386)
- FreeBSD (i386)
- HP-UX (m68k)
- IRIX (sgimips)
- Linux (amd64, i386, m68k, alpha, powerpc, mips, arm)
- OSF1/Digitial UNIX/Tru64 (alpha)
- SCO/iBCS2 (i386)
- Solaris and SVR4 (sparc, sparc64, i386, m68k)
- SunOS 4 (sparc, sparc64, m68k)
- ULTRIX (mips, vax)
emulators/bochs- i386 machine emulator
emulators/ia64sim- IA64 (Intel(R) Architecture 64)
emulators/mame- Many old arcade and console machines
emulators/qemu- a generic processor emulator using dynamic translation
emulators/spim- MIPS R2000 Simulator
emulators/wine- Windows emulator
See also supported file systems.
USB (Universal serial bus) (top)
NetBSD was the first free OS to provide USB support, and was using USB on Apple Power Macintosh machines before Apple had Mac OS X even booting. The USB support is available on all appropriate platforms, including alpha, i386, and macppc. Supported devices include mice, keyboards, modems, and mass storage devices (ZIP), with more drivers becoming available as the USB standard develops.
Other device support (top)
- Well designed and robust support for ISA PnP (Plug'n'play) devices.
- Raw device access.
The UVM virtual memory system (top)
UVM is a new virtual memory system specifically designed to provide the I/O and IPC (Inter Process Communication) systems with a range of flexible data movement mechanisms. UVM completely replaces the Mach based 4.4BSD VM system, improving virtual memory performance over other VM systems. (More details)
Support for the 'cardbus' PC-card and PCMCIA sockets found in many laptops is available, including hot-swapping, power management and detaching of devices.
wscons machine independent console (top)
The wscons(4) driver provides support for machine independent access to the console. It is composed of a number of cooperating modules, in particular:
64-bit clean (top)
NetBSD was the first free OS to support a 64-bit architecture such as the alpha, and still supports more alpha models than any other. The entire source tree has been 64-bit clean for some time, and the package system includes patches to make many third party applications 64-bit clean.
Non-executable stack and heap (top)
Starting with version 2.0, NetBSD supports non-executable mappings on many platforms. If non-executable mappings are enabled, parts of the stack and heap are made non-executable when they are marked writable. This makes exploiting potential buffer overflows harder. We have a separate page with more detailed information about this subject.
Kernel authorization framework (kauth) (top)
Starting with NetBSD 4.0, the NetBSD kernel uses an extensive authorization framework, kauth(9). In contrast to earlier NetBSD versions, where the access control policy was mostly hard-coded in the kernel following traditional Unix and BSD semantics, every authorization-related decision is now passed to the kauth(9) framework. This allows for the implementation of new security models, either as part of the base system or as LKMs, and modification of the traditional 4.4BSD/NetBSD security model.
Modular kernel (top)
The NetBSD kernel supports the dynamic loading and unloading of optional file systems, device drivers, and other system features. This facilitates debugging of system code, and enables replacement of system components without requiring a complete reboot. Modules can be loaded and unloaded manually or automatically, at system boot or on an as-needed basis.