FreeBSD

Page semi-protected
From Wikipedia, the free encyclopedia

FreeBSD
FreeBSD 13.0 bootloader with ASCII art logo
DeveloperThe FreeBSD Project
OS familyUnix-like (BSD)
Working stateCurrent
Source modelOpen source
Initial release1 November 1993; 30 years ago (1993-11-01)
Latest release14.0 (20 November 2023; 3 months ago (2023-11-20)) [±][1]

13.2 (11 April 2023; 11 months ago (2023-04-11)) [±][2]

https://www.freebsd.org/releases/14.0R/announce/
Repository
Marketing targetServers, workstations, embedded systems, network firewalls
Package managerpkg
Platformsx86-64, ARM64, ARM32, IA-32, PowerPC, RISC-V
Kernel typeMonolithic with dynamically loadable modules
UserlandBSD
Default
user interface
Unix shells: sh or tcsh (user-selectable)
LicenseFreeBSD License, FreeBSD Documentation License
Official websitewww.freebsd.org

FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version of FreeBSD was released in 1993 developed from 386BSD[3] and the current version runs on x86, ARM, PowerPC and RISC-V processors. The project is supported and promoted by the FreeBSD Foundation.

FreeBSD maintains a complete system, delivering a kernel, device drivers, userland utilities, and documentation, as opposed to Linux only delivering a kernel and drivers, and relying on third-parties like GNU for system software.[4] The FreeBSD source code is generally released under a permissive BSD license, as opposed to the copyleft GPL used by Linux.

The FreeBSD project includes a security team overseeing all software shipped in the base distribution. A wide range of additional third-party applications may be installed from binary packages using the pkg package management system or from source via FreeBSD Ports,[5] or by manually compiling source code.

As of 2005, FreeBSD was the most popular open-source BSD operating system, accounting for more than three-quarters of all installed and permissively licensed BSD systems.[6] Much of FreeBSD's codebase has become an integral part of other operating systems such as Darwin (the basis for macOS, iOS, iPadOS, watchOS, and tvOS), TrueNAS (an open-source NAS/SAN operating system), and the system software for the PlayStation 3[7][8] and PlayStation 4[9] game consoles. The other BSD systems (OpenBSD, NetBSD, and DragonFly BSD) also contain a large amount of FreeBSD code, and vice-versa[citation needed].

History

Background

In 1974, Professor Bob Fabry of the University of California, Berkeley, acquired a Unix source license from AT&T. Supported by funding from DARPA, the Computer Systems Research Group started to modify and improve AT&T Research Unix. They called this modified version "Berkeley Unix" or "Berkeley Software Distribution" (BSD), implementing features such as TCP/IP, virtual memory, and the Berkeley Fast File System. The BSD project was founded in 1976 by Bill Joy. But since BSD contained code from AT&T Unix, all recipients had to first get a license from AT&T in order to use BSD.[10]

In June 1989, "Networking Release 1" or simply Net-1 – the first public version of BSD – was released. After releasing Net-1, Keith Bostic, a developer of BSD, suggested replacing all AT&T code with freely-redistributable code under the original BSD license. Work on replacing AT&T code began and, after 18 months, much of the AT&T code was replaced. However, six files containing AT&T code remained in the kernel. The BSD developers decided to release the "Networking Release 2" (Net-2) without those six files. Net-2 was released in 1991.[10]

Birth of FreeBSD

In 1992, several months after the release of Net-2, William and Lynne Jolitz wrote replacements for the six AT&T files, ported BSD to Intel 80386-based microprocessors, and called their new operating system 386BSD. They released 386BSD via an anonymous FTP server.[10] The development flow of 386BSD was slow, and after a period of neglect, a group of 386BSD users including Nate Williams, Rod Grimes and Jordan Hubbard[11] decided to branch out on their own so that they could keep the operating system up to date. On 19 June 1993, the name FreeBSD was chosen for the project.[12] The first version of FreeBSD was released in November 1993.[13][10]

In the early days of the project's inception, a company named Walnut Creek CDROM, upon the suggestion of the two FreeBSD developers, agreed to release the operating system on CD-ROM. In addition to that, the company employed Jordan Hubbard and David Greenman, ran FreeBSD on its servers, sponsored FreeBSD conferences and published FreeBSD-related books, including The Complete FreeBSD by Greg Lehey. By 1997, FreeBSD was Walnut Creek's "most successful product". The company later renamed itself to The FreeBSD Mall and later iXsystems.[14][15][16]

Today, FreeBSD is used by many IT companies such as IBM, Nokia, Juniper Networks, and NetApp to build their products.[17][18] Certain parts of Apple's Mac OS X operating system are based on FreeBSD.[19] Both the PlayStation 3 and Nintendo Switch operating system also borrow certain components from FreeBSD,[7][8] while the PlayStation 4 operating system is derived from FreeBSD 9.[20] Netflix,[21] WhatsApp,[22] and FlightAware[23] are also examples of large, successful and heavily network-oriented companies which are running FreeBSD.

Lawsuit

386BSD and FreeBSD were both derived from BSD releases.[17] In January 1992, Berkeley Software Design Inc. (BSDi) started to release BSD/386, later called BSD/OS, an operating system similar to FreeBSD and based on 4.3BSD Net/2. AT&T filed a lawsuit against BSDi and alleged distribution of AT&T source code in violation of license agreements. The lawsuit was settled out of court and the exact terms were not all disclosed. The only one that became public was that BSDi would migrate their source base to the newer 4.4BSD-Lite2 sources. Although not involved in the litigation, it was suggested to FreeBSD that they should also move to 4.4BSD-Lite2.[24] FreeBSD 2.0, which was released in November 1994, was the first version of FreeBSD without any code from AT&T.[25]

Features

FreeBSD 14 console after login

Use cases

FreeBSD contains a significant collection of server-related software in the base system and the ports collection, allowing FreeBSD to be configured and used as a mail server, web server, firewall, FTP server, DNS server and a router, among other applications.

FreeBSD can be installed on a regular desktop or a laptop. The X Window System is not installed by default, but is available in the FreeBSD ports collection. Wayland is also available for FreeBSD[26] (unofficially supported). A number of desktop environments such as Lumina, GNOME, KDE, and Xfce, as well as lightweight window managers such as Openbox, Fluxbox, dwm, and bspwm, are also available for FreeBSD. As of FreeBSD 12, support for a modern graphics stack is available via drm-kmod. A large number of wireless adapters are supported.

FreeBSD releases installation images for supported platforms. Since FreeBSD 13 the focus has been on x86-64 and aarch64 platforms which have Tier 1 support.[27] IA-32 is a Tier 1 platform in FreeBSD 12 but is a Tier 2 platform in FreeBSD 13. 32 bit ARM processors using armv6 or armv7 also have Tier 2 support. 64 bit versions of PowerPC and RISC-V are also supported.[28] Interest in the RISC-V architecture has been growing.[29] The MIPS architecture port has been marked for deprecation and there is no image for any currently supported version.[30] FreeBSD 12 supports SPARC but there is no image for FreeBSD 13.

Networking

FreeBSD's TCP/IP stack is based on the 4.2BSD implementation of TCP/IP which greatly contributed to the widespread adoption of these protocols.[31] FreeBSD also supports IPv6,[32] SCTP, IPSec, and wireless networking (Wi-Fi).[33] The IPv6 and IPSec stacks were taken from the KAME project.[34] Prior to version 11.0, FreeBSD supported IPX and AppleTalk protocols, but they are considered old and have now been dropped.[35]

As of FreeBSD 5.4, support for the Common Address Redundancy Protocol (CARP) was imported from the OpenBSD project. CARP allows multiple nodes to share a set of IP addresses, so if one of the nodes goes down, other nodes can still serve the requests.[36]

Storage

FreeBSD has several unique features related to storage. Soft updates can protect the consistency of the UFS filesystem (widely used on the BSDs) in the event of a system crash.[37] Filesystem snapshots allow an image of a UFS filesystem at an instant in time to be efficiently created.[38] Snapshots allow reliable backup of a live filesystem. GEOM is a modular framework that provides RAID (levels 0, 1, 3 currently), full disk encryption, journaling, concatenation, caching, and access to network-backed storage. GEOM allows building of complex storage solutions combining ("chaining") these mechanisms.[39] FreeBSD provides two frameworks for data encryption: GBDE and Geli. Both GBDE and Geli operate at the disk level. GBDE was written by Poul-Henning Kamp and is distributed under the two-clause BSD license. Geli is an alternative to GBDE that was written by Pawel Jakub Dawidek and first appeared in FreeBSD 6.0.[40][41]

From 7.0 onward, FreeBSD supports the ZFS filesystem. ZFS was previously an open-source filesystem that was first developed by Sun Microsystems, but when Oracle acquired Sun, ZFS became a proprietary product. However, the FreeBSD project is still developing and improving its ZFS implementation via the OpenZFS project.[42] The currently supported version of OpenZFS is 2.2.2 which contains an important fix for a data corruption bug. This version is compatible with releases starting from 12.2-RELEASE. [43]

Security

FreeBSD provides several security-related features including access-control lists (ACLs),[44] security event auditing, extended file system attributes, mandatory access controls (MAC)[45] and fine-grained capabilities.[46] These security enhancements were developed by the TrustedBSD project. The project was founded by Robert Watson with the goal of implementing concepts from the Common Criteria for Information Technology Security Evaluation and the Orange Book. This project is ongoing[timeframe?] and many of its extensions have been integrated into FreeBSD.[47] The project is supported by a variety of organizations, including the DARPA, NSA, Network Associates Laboratories, Safeport Network Services, the University of Pennsylvania, Yahoo!, McAfee Research, SPARTA, Apple Computer, nCircle Network Security, Google, the University of Cambridge Computer Laboratory, and others.[48]

The project has also ported the NSA's FLASK/TE implementation from SELinux to FreeBSD. Other work includes the development of OpenBSM, an open-source implementation of Sun's Basic Security Module (BSM) API and audit log file format, which supports an extensive security audit system. This was shipped as part of FreeBSD 6.2. Other infrastructure work in FreeBSD performed as part of the TrustedBSD Project has included GEOM and OpenPAM.[46]

Most components of the TrustedBSD project are eventually folded into the main sources for FreeBSD. In addition, many features, once fully matured, find their way into other operating systems. For example, OpenPAM has been adopted by NetBSD.[49] Moreover, the TrustedBSD MAC Framework has been adopted by Apple for macOS.[50]

FreeBSD ships with three different firewall packages: IPFW, pf and IPFilter. IPFW is FreeBSD's native firewall. pf was taken from OpenBSD and IPFilter was ported to FreeBSD by Darren Reed.[51]

Taken from OpenBSD, the OpenSSH program was included in the default install. OpenSSH is a free implementation of the SSH protocol and is a replacement for telnet. Unlike telnet, OpenSSH encrypts all information (including usernames and passwords).[52]

In November 2012, The FreeBSD Security Team announced that hackers gained unauthorized access on two of the project's servers. These servers were turned off immediately. More research demonstrated that the first unauthorized access by hackers occurred on 19 September. Apparently hackers gained access to these servers by stealing SSH keys from one of the developers, not by exploiting a bug in the operating system itself. These two hacked servers were part of the infrastructure used to build third-party software packages. The FreeBSD Security Team checked the integrity of the binary packages and announced that no unauthorized changes were made to the binary packages, but stated that they could not guarantee the integrity of packages that were downloaded between 19 September and 11 November.[53][54][55]

Portability

FreeBSD has been ported to a variety of instruction set architectures. The FreeBSD project organizes architectures into tiers that characterize the level of support provided. Tier 1 architectures are mature and fully supported, e.g. it is the only tier "supported by the security officer". Tier 2 architectures are under active development but are not fully supported. Tier 3 architectures are experimental or are no longer under active development.[56]

As of December 2023, FreeBSD has been ported to the following architectures:[27]

Architecture Support level in 14.x[57] Notes
x86-64 Tier 1 referred to as "amd64"
x86 (IA-32) Tier 2 referred to as "i386", unsupported in 15.x
64-bit ARMv8 Tier 1 referred to as "aarch64"
32-bit ARMv7 Tier 2 referred to as "armv7"
32-bit ARMv6 Tier 3 referred to as "armv6", unsupported in 15.x
MIPS unsupported referred to as "mips", "mipsel", "mipshf", "mipselhf", "mipsn32", "mips64", "mips64el", "mips64hf", "mips64elhf", tier 2 until 12.x
32-bit and 64-bit PowerPC Tier 2 referred to as "powerpc", "powerpcspe", "powerpc64", "powerpc64le". 32 bit will not be supported from 15.x
64-bit RISC-V Tier 2 referred to as "riscv64"

The 32-bit ARM (including OTG) and MIPS support is mostly aimed at embedded systems (ARM64 is also aimed at servers[58]), however FreeBSD/ARM runs on a number of single-board computers, including the BeagleBone Black, Raspberry Pi[59][60] and Wandboard.[61]

Hardware compatibility

Supported devices are listed in the FreeBSD 12.1-RELEASE Hardware Notes.[62] The document describes the devices currently known to be supported by FreeBSD. Other configurations may also work, but simply have not been tested yet. Rough automatically extracted lists of supported device ids are available in a third party repository.[63]

In 2020, a new project was introduced to automatically collect information about tested hardware configurations.[64]

Third-party software

FreeBSD has a software repository of over 30,000 [65] applications that are developed by third parties. Examples include windowing systems, web browsers, email clients, office suites and so forth. In general, the project itself does not develop this software, only the framework to allow these programs to be installed, which is known as the Ports collection. Applications may either be compiled from source ("ports"), provided their licensing terms allow this, or downloaded as precompiled binaries ("packages").[66] The Ports collection supports the current and stable branches of FreeBSD. Older releases are not supported and may or may not work correctly with an up-to-date Ports collection.[67]

Ports use Makefiles to automatically fetch the desired application's source code, either from a local or remote repository, unpack it on the system, apply patches to it and compile it.[4][68] Depending on the size of the source code, compiling can take a long time, but it gives the user more control over the process and its result. Most ports also have package counterparts (i.e. precompiled binaries), giving the user a choice. Although this method is faster, the user has fewer customization options.[66]

FreeBSD version 10.0 introduced the package manager pkg as a replacement for the previously used package tools.[69] It is functionally similar to apt and yum in Linux distributions. It allows for installation, upgrading and removal of both ports and packages. In addition to pkg, PackageKit can also be used to access the Ports collection.

Jails

First introduced in FreeBSD version 4,[70] jails are a security mechanism and an implementation of operating-system-level virtualization that enables the user to run multiple instances of a guest operating system on top of a FreeBSD host. It is an enhanced version of the traditional chroot mechanism. A process that runs within such a jail is unable to access the resources outside of it. Every jail has its own hostname and IP address. It is possible to run multiple jails at the same time, but the kernel is shared among all of them. Hence only software supported by the FreeBSD kernel can be run within a jail.[71]

Virtualization

bhyve, a new virtualization solution, was introduced in FreeBSD 10.0. bhyve allows a user to run a number of guest operating systems (FreeBSD, OpenBSD, Linux, and Microsoft Windows[72]) simultaneously. Other operating systems such as Illumos are planned. bhyve was written by Neel Natu and Peter Grehan and was announced in the 2011 BSDCan conference for the first time. The main difference between bhyve and FreeBSD jails is that jails are an operating system-level virtualization and therefore limited to only FreeBSD guests; but bhyve is a type 2 hypervisor and is not limited to only FreeBSD guests.[73][74][75] For comparison, bhyve is a similar technology to KVM whereas jails are closer to LXC containers or Solaris Zones. Amazon EC2 AMI instances are also supported via amazon-ssm-agent

Since FreeBSD 11.0, there has been support for running as the Dom0 privileged domain for the Xen type 1 hypervisor.[76] Support for running as DomU (guest) has been available since FreeBSD 8.0.

VirtualBox (without the closed-source Extension Pack) and QEMU are available on FreeBSD.

OS compatibility layers

Most software that runs on Linux can run on FreeBSD using an optional built-in compatibility layer. Hence, most Linux binaries can be run on FreeBSD, including some proprietary applications distributed only in binary form. This compatibility layer is not an emulation; Linux's system call interface is implemented in the FreeBSD's kernel and hence, Linux executable images and shared libraries are treated the same as FreeBSD's native executable images and shared libraries.[77] Additionally, FreeBSD provides compatibility layers for several other Unix-like operating systems, in addition to Linux, such as BSD/OS and SVR4,[77] however, it is more common for users to compile those programs directly on FreeBSD.[78]

No noticeable performance penalty over native FreeBSD programs has been noted when running Linux binaries, and, in some cases, these may even perform more smoothly than on Linux.[79][80] However, the layer is not altogether seamless, and some Linux binaries are unusable or only partially usable on FreeBSD. There is support for system calls up to version 4.4.0,[81] available since FreeBSD 14.0. As of release 10.3, FreeBSD can run 64-bit Linux binaries.[82]

FreeBSD has implemented a number of Microsoft Windows native NDIS kernel interfaces to allow FreeBSD to run (otherwise) Windows-only network drivers.[83][84]

The Wine compatibility layer, which allows the running of many Windows applications, especially games, without a (licensed) copy of Microsoft Windows, is available for FreeBSD.

Kernel

FreeBSD's kernel provides support for some essential tasks such as managing processes, communication, booting and filesystems. FreeBSD has a monolithic kernel,[85] with a modular design. Different parts of the kernel, such as drivers, are designed as modules. The user can load and unload these modules at any time.[86] ULE is the default scheduler in FreeBSD since version 7.1, it supports SMP and SMT.[87] The FreeBSD kernel has also a scalable event notification interface, named kqueue. It has been ported to other BSD-derivatives such as OpenBSD and NetBSD.[88] Kernel threading was introduced in FreeBSD 5.0, using an M:N threading model. This model works well in theory,[89][90] but it is hard to implement and few operating systems support it. Although FreeBSD's implementation of this model worked, it did not perform well, so from version 7.0 onward, FreeBSD started using a 1:1 threading model, called libthr.[90]

Documentation and support

FreeBSD's documentation consists of its handbooks, manual pages, mailing list archives, FAQs and a variety of articles, mainly maintained by The FreeBSD Documentation Project. FreeBSD's documentation is translated into several languages.[91] All official documentation is released under the FreeBSD Documentation License, "a permissive non-copyleft free documentation license that is compatible with the GNU FDL".[92] FreeBSD's documentation is described as "high-quality".[93][94]

The FreeBSD project maintains a variety of mailing lists.[95] Among the most popular mailing lists are FreeBSD-questions (general questions) and FreeBSD-hackers (a place for asking more technical questions).[96]

Since 2004, the New York City BSD Users Group database provides dmesg information from a collection of computers (laptops, workstations, single-board computers, embedded systems, virtual machines, etc.) running FreeBSD.[97]

Installers

From version 2.0 to 8.4, FreeBSD used the sysinstall program as its main installer. It was written in C by Jordan Hubbard. It uses a text user interface, and is divided into a number of menus and screens that can be used to configure and control the installation process. It can also be used to install Ports and Packages as an alternative to the command-line interface.[98]

The sysinstall utility is now considered deprecated in favor of bsdinstall, a new installer which was introduced in FreeBSD 9.0. bsdinstall is "a lightweight replacement for sysinstall" that was written in sh. According to OSNews, "It has lost some features while gaining others, but it is a much more flexible design, and will ultimately be significant improvement".[71][99]

Shell

Prior to 14.0, the default shell was tcsh for root[100] and the Almquist shell (sh) for regular users.[101] Starting with 14.0, the default shell is sh for both root and regulars.[102] The default scripting shell is the Almquist shell.[103]

Development

FreeBSD is developed by a volunteer team located around the world. The developers use the Internet for all communication and many have not met each other in person. In addition to local user groups sponsored and attended by users, an annual conference, called BSDcon, is held by USENIX. BSDcon is not FreeBSD-specific so it deals with the technical aspects of all BSD-derived operating systems, including OpenBSD and NetBSD.[104] In addition to BSDcon, three other annual conferences, EuroBSDCon, AsiaBSDCon and BSDCan take place in Europe, Japan and Canada respectively.[105][106][107]

Governance structure

The FreeBSD Project is run by around 500 committers or developers who have commit access to the master source code repositories and can develop, debug or enhance any part of the system. Most of the developers are volunteers and few developers are paid by some companies.[17] There are several kinds of committers, including source committers (base operating system), doc committers (documentation and website authors) and ports (third-party application porting and infrastructure). Every two years the FreeBSD committers select a 9-member FreeBSD Core Team, which is responsible for overall project direction, setting and enforcing project rules and approving new committers, or the granting of commit access to the source code repositories. A number of responsibilities are officially assigned to other development teams by the FreeBSD Core Team, for example, responsibility for managing the ports collection is delegated to the Ports Management Team.[108]

In addition to developers, FreeBSD has thousands of "contributors". Contributors are also volunteers outside of the FreeBSD project who submit patches for consideration by committers, as they do not have commit access to FreeBSD's source code repository. Committers then evaluate contributors' submissions and decide what to accept and what to reject. A contributor who submits high-quality patches is often asked to become a committer.[108]

Branches

FreeBSD developers maintain at least two branches of simultaneous development. The -CURRENT branch always represents the "bleeding edge" of FreeBSD development. A -STABLE branch of FreeBSD is created for each major version number, from which -RELEASE is cut about once every 4–6 months. If a feature is sufficiently stable and mature it will likely be backported (MFC or Merge from CURRENT in FreeBSD developer slang) to the -STABLE branch.[109][4]

Foundation

FreeBSD development is supported in part by the FreeBSD Foundation. The foundation is a non-profit organization that accepts donations to fund FreeBSD development. Such funding has been used to sponsor developers for specific activities, purchase hardware and network infrastructure, provide travel grants to developer summits, and provide legal support to the FreeBSD project.[110]

In November 2014, the FreeBSD Foundation received US$1 million donation from Jan Koum, co-founder and CEO of WhatsApp – the largest single donation to the Foundation since its inception. In December 2016, Jan Koum donated another $500,000.[111] Jan Koum himself is a FreeBSD user since the late 1990s and WhatsApp uses FreeBSD on its servers.[112]

License

FreeBSD is released under a variety of open-source licenses. The kernel code and most newly created code are released under the two-clause BSD license which allows everyone to use and redistribute FreeBSD as they wish. This license was approved by Free Software Foundation[113] and Open Source Initiative[114] as a Free Software and Open Source license respectively. Free Software Foundation described this license as "a lax, permissive non-copyleft free software license, compatible with the GNU GPL". There are parts released under three- and four-clause BSD licenses, as well as the Beerware license. Some device drivers include a binary blob,[115] such as the Atheros HAL of FreeBSD versions before 7.2.[116][failed verification] Some of the code contributed by other projects is licensed under GPL, LGPL, CDDL[117] and ISC. All the code licensed under GPL and CDDL is clearly separated from the code under liberal licenses, to make it easy for users such as embedded device manufacturers to use only permissive free software licenses. ClangBSD aims to replace some GPL dependencies in the FreeBSD base system by replacing the GNU compiler collection with the BSD-licensed LLVM/Clang compiler. ClangBSD became self-hosting on 16 April 2010.[118]

For many years FreeBSD's logo was the generic BSD Daemon, also called Beastie, a distorted pronunciation of BSD. However, Beastie was not unique to FreeBSD. Beastie first appeared in 1976 on Unix T-shirts of comic artist Phil Foglio art,[119] for Mike O'Brien,[120][121][122][123] with some purchased by Bell Labs.[124]

More popular versions of the BSD daemon were drawn by animation director John Lasseter beginning in 1984.[125][126] Several FreeBSD-specific versions were later drawn by Tatsumi Hosokawa.[127] In lithographic terms, the Lasseter graphic is not line art and often requires a screened, four-color photo offset printing process for faithful reproduction on physical surfaces such as paper. Also, the BSD daemon was thought to be too graphically detailed for smooth size scaling and aesthetically over-dependent on multiple color gradations, making it hard to reliably reproduce as a simple, standardized logo in only two or three colors, much less in monochrome.

Because of these worries, a competition was held and a new logo designed by Anton K. Gural, still echoing the BSD daemon, was released on 8 October 2005.[128][129][130] However, it was announced by Robert Watson that the FreeBSD project is "seeking a new logo, but not a new mascot" and that the FreeBSD project would continue to use Beastie as its mascot.[128]

The name "FreeBSD" was coined by David Greenman on 19 June 1993, other suggested names were "BSDFree86" and "Free86BSD".[131] FreeBSD's slogan, "The Power to Serve", is a trademark of The FreeBSD Foundation.[132]

Derivatives

PC-BSD version 10, the operating system that was later known as TrueOS

There are a number of software distributions based on FreeBSD. Notable derivatives include:

All these distributions have no or only minor changes when compared with the original FreeBSD base system. The main difference to the original FreeBSD is that they come with pre-installed and pre-configured software for specific use cases. This can be compared with Linux distributions, which are all binary compatible because they use the same kernel and also use the same basic tools, compilers, and libraries while coming with different applications, configurations, and branding.

Besides these distributions, there are some independent operating systems based on FreeBSD. DragonFly BSD is a fork from FreeBSD 4.8 aiming for a different multiprocessor synchronization strategy than the one chosen for FreeBSD 5 and development of some microkernel features.[133] It does not aim to stay compatible with FreeBSD and has huge differences in the kernel and basic userland. MidnightBSD is a fork of FreeBSD 6.1 borrowing heavily from NeXTSTEP, particularly in the user interface department.

Darwin, the core of Apple's macOS, includes a virtual file system and network stack derived from those of FreeBSD, and components of its userspace are also FreeBSD-derived.[19][134]

Some subscription services that are directly based on FreeBSD are:

Embedded devices and embedded device operating systems based on FreeBSD include:

Version history

Version Release date Supported until Significant changes
Old version, no longer maintained: 1.x November 1993 ?
  • The first official release.
  • The Ports Collection.
  • Fixed some outstanding bugs from import of 386BSD
  • Addition of some ported applications (XFree86, XView, InterViews, elm, nntp)
Old version, no longer maintained: 2.x 22 November 1994 ?
  • Replaced code base with BSD-Lite 4.4 (to satisfy terms of the USL v. BSDi lawsuit settlement)
  • New installer and new boot manager
  • Loadable filesystems support for more filesystems (MS-DOS, unionfs, kernfs)
  • Imported loadable kernel modules from NetBSD
  • Replaced BSD malloc with phkmalloc
  • Full Linux emulation with ELF
  • Dummynet traffic shaping
Old version, no longer maintained: 3.x 16 October 1998 ?
Old version, no longer maintained: 4.x 14 March 2000[70] 31 January 2007[140]
Old version, no longer maintained: 5.x 14 January 2003 31 May 2008
Old version, no longer maintained: 6.x 1 November 2005 30 November 2010
  • Performance monitoring counters support
  • New Wi-Fi stack
  • GELI
  • Network bridging
  • NanoBSD utility
  • NDIS driver support
  • Keyboard multiplexer
  • UFS filesystem stability
  • Bluetooth autoconfiguration
  • Additional Ethernet and RAID drivers
  • Support for Xbox architecture
  • OpenBSM audit subsystem
  • freebsd-update (binary updates for security fixes and errata patches)
Old version, no longer maintained: 7.x 27 February 2008 28 February 2013
Old version, no longer maintained: 8.x 26 November 2009 1 August 2015
  • SATA NCQ support
  • Xen guest support
  • High Availability Storage
  • Native NFSv4 ACL support
  • USB 3.0 support
Old version, no longer maintained: 9.x 12 January 2012 31 December 2016
  • Capsicum capability-based security mechanism
  • UFS SoftUpdates+Journal
  • ZFS updated to version 28
  • bsdconfig, system configuration utility
  • bsdinstall, the new system installation program
  • RCTL, a flexible resource limits mechanism
  • GRAID, flexible software RAID implementation
  • virtio drivers
  • pkgng[142]
  • vt, the new virtual terminal implementation
Old version, no longer maintained: 10.x 20 January 2014 31 October 2018[143]
  • bhyve hypervisor
  • Clang replaced GCC on supported architectures
  • New iSCSI stack
  • Added support for Raspberry Pi
  • UEFI boot for amd64
  • ZFS booting via UEFI
  • ZFS on root file system
  • ZFS reliability and performance improvements
  • Implementation of pkg, a new FreeBSD package manager, also referred to as pkgng[144]
  • Support for UDP Lite protocol (RFC 3828)
  • SMP support for armv6
  • New autofs-based automounter
  • DRM code updated to match Linux 3.8.13, allowing multiple simultaneous X servers
  • Support for 64-bit Linux binaries through the compatibility layer
Old version, no longer maintained: 11.x 10 October 2016[145] 30 September 2021[146]
  • New version of NetMap[147]
  • Support for the 64-bit ARM Architecture[147]
  • umount(8) -N new flag which is used to forcefully unmount an NFS mounted filesystem
  • crontab -f new flag added
  • The ZFS filesystem has been updated to implement parallel mounting.
  • The trim(8) utility has been added, which deletes content for blocks on flash-based storage devices that use wear-leveling algorithms.
Old version, no longer maintained: 12.x 11 December 2018[148][149] 31 December 2023
  • The ext2fs(5) filesystem has been updated to support full read/write support for ext4
  • FreeBSD has changed the way graphics drivers are handled on amd64 and i386. Graphics drivers for modern ATI-AMD and Intel graphics cards are now available in the Ports Collection.
  • The UFS/FFS filesystem has been updated to support check hashes to cylinder-group maps.
Older version, yet still maintained: 13.x 13 April 2021[150][151] 31 January 2026
  • The clang, lld, and lldb utilities and compiler-rt, llvm, libunwind, and libc++ libraries have been updated to version 11.0.1.
  • Removed the obsolete binutils 2.17 and gcc(1) 4.2.1 from the tree. All supported architectures now use the LLVM/clang toolchain.
  • The kernel now supports in-kernel framing and encryption of Transport Layer Security (TLS) data on TCP sockets for TLS versions 1.0 through 1.3. Transmit offload via in-kernel crypto drivers is supported for MtE cipher suites using AES-CBC as well as AEAD cipher suites using AES-GCM. Receive offload via in-kernel crypto drivers is supported for AES-GCM cipher suites for TLS 1.2. Using KTLS requires the use of a KTLS-aware userland SSL library. The OpenSSL library included in the base system does not enable KTLS support by default, but support can be enabled by building with the WITH_OPENSSL_KTLS option
  • The 64-bit ARM architecture known as arm64 or AArch64 is promoted to Tier-1 status for FreeBSD 13.
Current stable version: 14.x 20 November 2023[152][153] 30 November 2028
  • OpenSSH has been updated to version 9.5p1.
  • OpenSSL has been updated to version 3.0.12, a major upgrade from OpenSSL 1.1.1t in FreeBSD 13.2-RELEASE.
  • The bhyve hypervisor now supports TPM and GPU passthrough.
  • FreeBSD supports up to 1024 cores on the amd64 and arm64 platforms.
  • ZFS has been upgraded to OpenZFS release 2.2, providing significant performance improvements.
  • It is now possible to perform background filesystem checks on UFS file systems running with journaled soft updates.
  • Experimental ZFS images are now available for AWS and Azure.
  • The default congestion control mechanism for TCP is now CUBIC.
Version Release date Supported until Significant changes
Legend:
Old version
Older version, still maintained
Latest version
Latest preview version
Future release

See also

References

Citations

  1. ^ "FreeBSD 14.0-RELEASE Announcement". FreeBSD.org. 20 November 2023. Retrieved 22 November 2023.
  2. ^ "FreeBSD 13.2-RELEASE Announcement". FreeBSD.org. 11 April 2023. Retrieved 11 April 2023.
  3. ^ "FreeBSD History". people.freebsd.org. Retrieved 24 November 2023.
  4. ^ a b c Chisnall, David (20 January 2006). BSD: The Other Free UNIX Family. informit.com. Retrieved 13 December 2013.
  5. ^ "Chapter 4. Installing Applications: Packages and Ports". FreeBSD Handbook. The FreeBSD Project. Retrieved 16 June 2021.
  6. ^ BSD Usage Survey Report (PDF) (Report). The BSD Certification Group. 31 October 2005. Retrieved 5 December 2010.
  7. ^ a b "Licenses of software used on PlayStation®3 console". Retrieved 11 August 2010.
  8. ^ a b Rosenberg, Alex (17 December 2013). "FreeBSD Handbook and PS3". freebsd-doc (Mailing list). Retrieved 22 January 2016.
  9. ^ "Open Source Software used in PlayStation®4". Sony Interactive Entertainment. Retrieved 4 January 2019.
  10. ^ a b c d "Open Sources: Voices from the Open Source Revolution". O'Reilly Media. 29 March 1999. Retrieved 15 June 2022.
  11. ^ "A Brief History of FreeBSD". Retrieved 13 October 2023.
  12. ^ "June 19 is National FreeBSD Day!". FreeBSD Foundation. 6 June 2017. Retrieved 13 November 2017.
  13. ^ Lucas 2007, pp. 4–5.
  14. ^ "A Brief History of FreeBSD". FreeBSD.org. Retrieved 31 January 2009.
  15. ^ Bruce, Bob. "Company History". FreeBSD Mall. Retrieved 6 August 2014.
  16. ^ Johnson, Dwight. "Report from Comdex—Walnut Creek CDROM, FreeBSD and Slackware". Linux Today. Archived from the original on 13 August 2014. Retrieved 6 August 2014.
  17. ^ a b c Lucas 2007, p. 5.
  18. ^ Pohlmann, Frank (19 July 2005). "Why FreeBSD". IBM DeveloperWorks. Archived from the original on 11 September 2013.
  19. ^ a b "Kernel Programming Guide: BSD Overview". Apple Inc.
  20. ^ a b Michael Larabel (23 June 2013). "Sony's PlayStation 4 Is Running Modified FreeBSD 9". Phoronix. Retrieved 17 August 2013.
  21. ^ a b Long, Scott (5 June 2012). "Netflix's New Peering Appliance Uses FreeBSD". freebsd-stable (Mailing list). Retrieved 5 June 2012.
  22. ^ "FreeBSD Foundation Semi-Annual Newsletter, August 2013". 5 August 2013. WhatsApp, Inc. Testimonial.
  23. ^ "FreeBSD High Capacity Server Performance Tuning ✈ FlightAware". FlightAware.
  24. ^ Lehey 2003, p. 8.
  25. ^ "Release Information". The FreeBSD Project. Retrieved 11 September 2014.
  26. ^ "How to install Wayland?". The FreeBSD Forums. 26 September 2020. Retrieved 2 March 2021.
  27. ^ a b "FreeBSD Platforms". FreeBSD. Retrieved 22 December 2023.
  28. ^ "FreeBSD Downloads". FreeBSD. Retrieved 1 October 2021.
  29. ^ "License to thrill: Ahead of v13.0 article". FreeBSD. Retrieved 1 October 2021.
  30. ^ "Mark mips as unsupported for 14.x." FreeBSD. Retrieved 1 October 2021.
  31. ^ McKusick, Marshall (2005). "Section 2.13". The Design and Implementation of the FreeBSD Operating System. Addison-Wesley. ISBN 0-201-70245-2.
  32. ^ Farrokhi, Babak (16 October 2009). "Network Configuration—IPv6 with FreeBSD". Packt. Archived from the original on 26 December 2013. Retrieved 26 December 2013.
  33. ^ Sam Leffler. "FreeBSD Wireless Networking Support" (PDF). BSDCan. Retrieved 15 June 2022.
  34. ^ "Overview of the KAME Project". KAME project. Retrieved 11 August 2014.
  35. ^ Smirnoff, Gleb (28 October 2013). "[heads up] axing AppleTalk and IPX/SPX". freebsd-stable (Mailing list). Retrieved 12 August 2014.
  36. ^ "CARP(4)". The FreeBSD documentation Project. Retrieved 25 October 2013.
  37. ^ McKusick, Marshall; Neville-Neil, George V. (2005). "8.6. Soft Updates". The Design and Implementation of the FreeBSD Operating System. Addison-Wesley. ISBN 0-201-70245-2.
  38. ^ Lucas 2007, p. 220.
  39. ^ Lucas 2007, 18. DISK TRICKS WITH GEOM.
  40. ^ "geli(8)". The FreeBSD Project. Retrieved 12 August 2014.
  41. ^ Kamp, Poul-Henning. "GBDE—GEOM Based Disk Encryption" (PDF). USENIX. Retrieved 15 June 2022.
  42. ^ Sean Michael Kerner (25 February 2011). "FreeBSD 8.2 Expands ZFS Support -- Without Oracle". Datamation. Retrieved 15 June 2022.
  43. ^ "Releases · openzfs/zfs". GitHub. Retrieved 29 January 2024.
  44. ^ Daniel Harris (14 August 2003). "FreeBSD Access Control Lists". ONLamp. Archived from the original on 19 October 2013. Retrieved 15 December 2013.
  45. ^ "The TrustedBSD MAC Framework: Extensible Kernel Access Control for FreeBSD 5.0". USENIX. Retrieved 12 September 2014.
  46. ^ a b "TrustedBSD: Adding Trusted Operating System Features to FreeBSD" (PDF). Retrieved 12 September 2014.
  47. ^ "TrustedBSD: Adding Trusted Operating System Features to FreeBSD". USENIX. Retrieved 12 September 2014.
  48. ^ "TrustedBSD Project". TrustedBSD Project. Retrieved 9 August 2014.
  49. ^ "OPENPAM(3)". The NetBSD Project. Retrieved 12 September 2014.
  50. ^ "Authentication, Authorization, and Permissions Guide". developer.apple.com. Apple Inc. Retrieved 13 September 2014.
  51. ^ Lucas 2007, p. 273.
  52. ^ Lucas 2007, p. 440.
  53. ^ "Hackers obtained access to FreeBSD servers". H-Online. Retrieved 9 August 2014.
  54. ^ "Hackers break into two FreeBSD Project servers using stolen SSH keys". 19 November 2012. Retrieved 4 February 2024.
  55. ^ "FreeBSD servers hacked". Techeye. Archived from the original on 24 October 2013. Retrieved 9 August 2014.
  56. ^ "21. Support for Multiple Architectures". docs.freebsd.org. Retrieved 4 February 2024.
  57. ^ "Committer's Guide". The FreeBSD Documentation Project.
  58. ^ "arm64 – FreeBSD Wiki". wiki.freebsd.org. Retrieved 2 March 2021.
  59. ^ "FreeBSD – Raspberry Pi"., see also Raspbian#Software build
  60. ^ "Raspberry Pi Software Is Rapidly Maturing". OSNews.
  61. ^ "FreeBSD/arm". Retrieved 30 November 2014.
  62. ^ "FreeBSD 12.1-RELEASE Hardware Notes". The FreeBSD Documentation Project. Retrieved 11 June 2020.
  63. ^ "FreeBSD 12.1: ids of supported devices". BSD Hardware Project. Retrieved 11 June 2020.
  64. ^ "FreeBSD Hardware". BSD Hardware Project. Retrieved 11 June 2020.
  65. ^ "About FreeBSD Ports". freebsd.org. Retrieved 18 January 2021.
  66. ^ a b Lucas 2007, p. 317.
  67. ^ "Chapter 4 Installing Applications: Packages and Ports". FreeBSD.org. Retrieved 30 January 2009.
  68. ^ Asami, Satoshi. "The FreeBSD Ports Collection" (PDF). USENIX. Retrieved 13 December 2013.
  69. ^ Larabel, Michael. "FreeBSD Still Working On Next-Gen Package Manager". Phoronix. Retrieved 9 August 2014.
  70. ^ a b "FreeBSD 4.0 Announcement". www.freebsd.org.
  71. ^ a b "The BSD family, pt. 1: FreeBSD 9.1". OSNews. Retrieved 9 August 2014.
  72. ^ "What's new for FreeBSD 11". wiki.freebsd.org. Retrieved 28 September 2015.
  73. ^ Schenkeveld, Paul. "The BSD Hypervisor" (PDF). FOSDEM. Retrieved 9 August 2014.
  74. ^ Larabel, Michael. "The State Of FreeBSD's Bhyve Virtualization". Phoronix. Retrieved 9 August 2014.
  75. ^ Grehan, Peter. "Introduction to bhyve" (PDF). Retrieved 9 August 2014.
  76. ^ "Xen – FreeBSD Wiki". wiki.freebsd.org.
  77. ^ a b McEwen, Gordon. "Setting up Linux compatibility on FreeBSD 6". Archived from the original on 14 November 2006. Retrieved 15 December 2013.
  78. ^ Lehey 2003, p. 162.
  79. ^ Tiemann, Brian (2006). "How FreeBSD Compares to Other Operating Systems". FreeBSD 6 Unleashed. ISBN 0-672-32875-5.
  80. ^ Michael, Larabel. "FreeBSD: A Faster Platform For Linux Gaming Than Linux?". Phoronix. Retrieved 5 August 2014.
  81. ^ "Linuxulator (Linux Emulation) - FreeBSD Wiki". 22 December 2023. Retrieved 22 December 2023.
  82. ^ "FreeBSD 10.3-RELEASE Announcement". The FreeBSD Project. 4 April 2016. Retrieved 5 April 2016.
  83. ^ Bill Paul (24 January 2004). "Project Evil: The Evil Continues". freebsd-current (Mailing list).
  84. ^ Chisnall, David (15 July 2005). "Project Evil: Windows network drivers on FreeBSD". Ping Wales. Archived from the original on 4 November 2005. Retrieved 23 October 2013.
  85. ^ McKusick & Neville-Neil 2004, Chapter 2. Design Overview of FreeBSD.
  86. ^ Lucas 2007, p. 118.
  87. ^ Roberson, Jeff. "ULE: A Modern Scheduler for FreeBSD" (PDF). USENIX. Retrieved 5 August 2014.
  88. ^ Lemon, Jonathan. "KQueue–A Generic and Scalable Event Notification Facility" (PDF). USENIX. Retrieved 5 August 2014.
  89. ^ "Thread models semantics: Solaris and Linux M:N to 1:1 thread model" (PDF). Department of computer Science and Engineering, Air University Multan Pakistan. Archived from the original (PDF) on 16 September 2014. Retrieved 16 September 2014.
  90. ^ a b Lucas 2007, p. 359.
  91. ^ Lucas 2007, p. 25.
  92. ^ "Various Licenses and Comments about Them". GNU Project. Retrieved 12 August 2014.
  93. ^ Lehey 2003, p. 16.
  94. ^ "BSD: The Other Free UNIX Family". InformIT. 20 January 2006. Retrieved 12 August 2014.
  95. ^ "lists.freebsd.org Mailing Lists". Retrieved 4 February 2024.
  96. ^ Lehey 2003, p. 17.
  97. ^ "dmesgd". dmesgd.nycbug.org. NYC*BUG. Retrieved 16 December 2015.
  98. ^ "SYSINSTALL(8)". FreeBSD Man Pages. Retrieved 11 September 2014.
  99. ^ "2012: a BSD year in retrospective". OSNews. Retrieved 9 August 2014.
  100. ^ "FreeBSD Quickstart Guide for Linux® Users". FreeBSD Documentation Portal. Retrieved 4 February 2024.
  101. ^ "2. Default Shell". www.freebsd.org.
  102. ^ "FreeBSD Quickstart Guide for Linux® Users". FreeBSD Documentation Portal. Retrieved 4 February 2024.
  103. ^ "sh(1)". FreeBSD Manual Pages. The FreeBSD Project. Retrieved 14 March 2024.
  104. ^ Lehey 2003, p. 20.
  105. ^ "EuroBSDcon 2014". EuroBSDcon. Retrieved 9 August 2014.
  106. ^ "AsiaBSDCon 2014". AsiaBSDCon. Retrieved 9 August 2014.
  107. ^ "BSDCan – The BSD Conference". BSDCan. Retrieved 19 February 2015.
  108. ^ a b Lucas 2007, p. 6.
  109. ^ Lucas 2007, pp. 372–375.
  110. ^ "Overview". The FreeBSD Foundation. 16 December 2015. Retrieved 20 May 2016.
  111. ^ "Foundation Announces New Uranium Donor". FreeBSD Foundation. December 2016. Retrieved 29 December 2016.
  112. ^ "Updated! – FreeBSD Foundation Announces Generous Donation and Fundraising Milestone". FreeBSD Foundation. 17 November 2014. Retrieved 20 November 2014.
  113. ^ "Various Licenses and Comments about Them". The GNU Project. Retrieved 9 August 2014.
  114. ^ "The BSD 2-Clause License". Open Source Initiative. 31 October 2006. Retrieved 9 August 2014.
  115. ^ Watson, Robert (22 October 2006). "binary blobs in freebsd". freebsd-questions (Mailing list). Retrieved 20 October 2013.
  116. ^ "Contents of /stable/9/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE". The FreeBSD Project. Retrieved 28 August 2014.[permanent dead link]
  117. ^ "ClangBSD Is Selfhosting, We Need Testers Now". osnews.com. 17 April 2010. Retrieved 23 April 2013.
  118. ^ "USENIX".
  119. ^ "What's that daemon?".
  120. ^ "UNIX Methods and Concepts: Putting the Genie Back in the Bottle, by Salus & Toomey".
  121. ^ "UNIX News, Number 5" (PDF). 30 April 1976.
  122. ^ "USENIX notes" (PDF). ;login:. 30 (1). February 2005.
  123. ^ "login: The UNIX Newsletter Volume 2, Number 7, August 1977" (PDF). ;login:. 40 (6). December 2015.
  124. ^ "Usenix". mckusick.com. Retrieved 15 December 2007.
  125. ^ "Saving UNIX from /dev/null". minnie.tuhs.org. Retrieved 15 December 2007.
  126. ^ "The BSD Daemon". FreeBSD.org. Retrieved 15 December 2007.
  127. ^ a b "FreeBSD logo design competition". OSNews. Retrieved 1 November 2013.
  128. ^ Kuriyama, Jun (22 February 2005). "FreeBSD logo design competition". FreeBSD-Announce (Mailing list). Retrieved 1 November 2013.
  129. ^ "Final result for the FreeBSD logo design competition". FreeBSD.org. 2005. Archived from the original on 16 October 2012. Retrieved 1 March 2007.
  130. ^ Greenman, David. "FreeBSD Archives". The FreeBSD Project. Retrieved 6 August 2014.
  131. ^ "FreeBSD Logo". The FreeBSD Project. Retrieved 6 August 2014.
  132. ^ Dillon, Matthew (16 July 2003). "Announcing DragonFly BSD!". freebsd-current (Mailing list). Retrieved 26 July 2007.
  133. ^ "Porting UNIX/Linux Applications to OS X: Overview of OS X". Apple Inc.
  134. ^ a b "1 million is so 2011". WhatsApp Blog. Retrieved 27 August 2014.
  135. ^ Netflix (29 May 2012). "Open Connect Appliance Deployment Guide" (PDF).
  136. ^ Matthew Humphries (24 June 2013). "PS4 runs modified version of the FreeBSD 9.0 operating system". Archived from the original on 28 June 2013. Retrieved 19 October 2013.
  137. ^ Clark, Jack. "Sony's new PlayStation 4 and open source FreeBSD: The TRUTH". theregister.co.uk. Retrieved 16 November 2013.
  138. ^ Smith, Lyle (8 November 2017). "Panasas Announces Next-Gen ActiveStor Scale-out NAS Solution". Storage Reviews.
  139. ^ FreeBSD Security Officer. "FreeBSD 4.x EoL". freebsd-security (Mailing list).
  140. ^ "FreeBSD 4.0 Release Notes". The FreeBSD Project.
  141. ^ "Using pkgng for Binary Package Management". FreeBSD 9.2 Handbook. FreeBSD Project. Archived from the original on 22 June 2018. Retrieved 22 June 2018.
  142. ^ "FreeBSD Security Information — End of Life". The FreeBSD Project. Archived from the original on 12 October 2017. Retrieved 3 October 2017.
  143. ^ "FreeBSD 10.0-RELEASE Release Notes". The FreeBSD Project.
  144. ^ "FreeBSD 11.0-RELEASE Announcement". The FreeBSD Project. Retrieved 10 October 2016.
  145. ^ "FreeBSD Security Information". The FreeBSD Project.
  146. ^ a b "What's new for FreeBSD 11". The FreeBSD Project. Retrieved 24 March 2015.
  147. ^ "FreeBSD 12.0 Release Process". The FreeBSD Project. 18 September 2017.
  148. ^ "FreeBSD 12.0-RELEASE Release Notes". The FreeBSD Project. 9 October 2019.
  149. ^ "FreeBSD 13.0-RELEASE Release Process". The FreeBSD Project. 21 July 2020. Retrieved 2 August 2020.
  150. ^ "The FreeBSD Project | FreeBSD 13.0-RELEASE Release Notes". www.freebsd.org. Retrieved 13 April 2021.
  151. ^ "FreeBSD 14.0-RELEASE Announcement". The FreeBSD Project. 20 November 2023. Retrieved 20 November 2023.
  152. ^ "The FreeBSD Project | FreeBSD 14.0-RELEASE Release Notes". www.freebsd.org. Retrieved 20 November 2023.

Sources

External links