FreeBSD is a free Unix-like operating system descended from AT&T; UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX,” as the direct descendant of BSD UNIX (many of whose original developers became FreeBSD developers), FreeBSD’s internals and system APIs are UNIX-compliant, and thanks to its permissive licensing terms, much of FreeBSD’s code base has become an integral part of other operating systems such as Mac OS X that have subsequently been certified as UNIX-compliant and have formally received UNIX branding. With the exception of the proprietary Mac OS X, FreeBSD is the most widely used BSD-derived operating system in terms of number of installed computers, and is the most widely used freely licensed, open-source BSD distribution, accounting for more than three quarters of all installed systems running free, open-source BSD derivatives.
FreeBSD is a complete operating system; the kernel, device drivers, and all of the userland utilities, such as the shell, are held in the same source code revision tracking tree. (This is in contrast to Linux distributions, for which the kernel, userland utilities, and applications are developed separately, and then packaged together in various ways by others.) Third-party application software may be installed using various software installation systems, the two most common being source installation and package installation, both of which use the FreeBSD Ports system.
FreeBSD has been characterized as “the unknown giant among free operating systems” and is widely regarded as reliable and robust. In a Netcraft survey published 1 March 2011, the top three most reliable Web hosting company sites for the month of February 2011 (the most recent month for which figures are available as of March 2011) were all found to be running FreeBSD on their servers.
History
FreeBSD
development began in 1993 with a quickly growing, unofficial
patchkit maintained by users of the
386BSD operating system. This patchkit
forked from 386BSD and grew into an operating system taken from U.C. Berkeley's 4.3BSD-Lite (Net/2) tape with many 386BSD components and code from the
Free Software Foundation. After two public beta releases via FTP (1.0-GAMMA on September 2, 1993, and 1.0-EPSILON on October 3, 1993), the first official release was FreeBSD 1.0, available via FTP on November 1, 1993 and on CDROM on December 30, 1993. This official release was coordinated by
Jordan Hubbard, Nate Williams and Rodney W. Grimes with a name thought up by David Greenman.
Walnut Creek CDROM agreed to distribute FreeBSD on CD and gave the project a machine to work on along with a fast Internet connection, which Hubbard later said helped stir FreeBSD's rapid growth. A "highly successful" FreeBSD 1.1 release followed in May 1994.
However, there were legal concerns about the BSD Net/2 release source code used in 386BSD. After a lawsuit between UNIX copyright owner at the time Unix System Laboratories and the University of California, Berkeley, the FreeBSD project re-engineered most of the system using the 4.4BSD-Lite release from Berkeley, which, owing to this lawsuit, had none of the AT&T; source code earlier BSD versions had depended upon, making it an unbootable operating system. Following much work, the outcome was released as FreeBSD 2.0 in January 1995. FreeBSD 3.0 brought many more changes, including the switch to the ELF binary format. Support for SMP systems and the 64-bit Alpha platform were also added. The 3-STABLE branch ended with 3.5.1 in June 2000.
FreeBSD also supports IPv6, SCTP, IPSec, IPX, AppleTalk and wireless networking.
Storage
FreeBSD has several unique features related to storage.
Soft updates maintain filesystem integrity in the event of a system crash. The
GEOM framework provides features such as
RAID (levels 0, 1, 3 currently),
full disk encryption, and concatenation of drives. Filesystem snapshots allow an image of a filesystem at an instant in time to be efficiently created. Snapshots allow reliable backup of a live filesystem. FreeBSD also provides the
ZFS filesystem as an alternative to the normal
UFS2 file system.
Security
FreeBSD provides several security-related features including
access control lists (ACLs), security event auditing, extended file system attributes, fine-grained
capabilities and
mandatory access controls (MAC). 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 and many of its extensions have been integrated into FreeBSD.
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 SYN cookies, GEOM and OpenPAM.
While most components of the TrustedBSD project are eventually folded into the main sources for FreeBSD, many features, once fully matured, find their way into other operating systems. For example, OpenPAM and UFS2 have been adopted by NetBSD. Moreover, the TrustedBSD MAC Framework has been adopted by Apple for Mac OS X.
Much of this work was sponsored by DARPA.
Portability
FreeBSD has been ported to a variety of processor architectures. The FreeBSD project organizes architectures into tiers that characterize the level of support provided. Tier 1 architectures are mature and fully supported. Tier 2 architectures are undergoing major development. Tier 3 architectures are experimental or are no longer under active development (as is the case of DEC Alpha) and tier 4 architectures have no support at all.
FreeBSD has been ported to the following architectures:
Third Party Software
,
Firefox, and
GNOME installed from the ports collection.]]
FreeBSD has a
repository of thousands of applications that are developed by third parties outside of the project itself. (Examples include windowing systems, Internet browsers, email programs, 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 (termed the
Ports Collection). Applications may be installed either from source, if its licensing terms allow such redistribution (these are called
ports), or as compiled binaries if allowed (these are called
packages). The
Ports Collection supports the latest release on the
-CURRENT and
-STABLE branches. Older releases are not supported and may or may not work correctly with an up-to-date ports collection.
Ports Collection
Each package in the
Ports Collection is installed from
source. Each port's
Makefile automatically fetches the application
source code, either from a local disk, CD-ROM or via
ftp, unpacks it on the system, applies the patches, and
compiles. This method can be very time consuming as compiling large packages can take hours, but the user is able to install a customized program.
Packages system
For most ports, precompiled binary packages also exist. This method is very quick as the whole compilation process is avoided, but the user is not able to install a program with customized compile time options.
Utilities for managing ports and packages
There are many utilities available for managing ports and packages available in
GUIs and
CLIs. These are some of them:
barry - A KDE frontend to the ports system
bpm - A GUI ports collection manager
kports - A KDE frontend to the ports system
pib - A GUI Ports Collection management tool
portbrowser - A GUI frontend for the ports system
Linux compatibility
Most software that runs on
Linux can run on FreeBSD without the need for any
compatibility layer. FreeBSD nonetheless still provides a
compatibility layer for several other
Unix-like operating systems, including Linux. Hence, most Linux binaries can be run on FreeBSD, including some proprietary applications distributed only in binary form. Examples of applications that can use the Linux compatibility layer are
StarOffice, the Linux version of
Firefox,
Adobe Acrobat,
RealPlayer,
Oracle,
Mathematica,
Maple,
MATLAB,
WordPerfect,
Skype, ,
Doom 3 and
Quake 4 (though some of these applications also have a native version). 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. However, the layer is not altogether seamless, and some Linux binaries are unusable or only partially usable on FreeBSD. This is often because the compatibility layer only supports system calls available in the historical Linux kernel 2.4.2. There is support of Linux 2.6.16 system calls, available since and enabled by default since . However, there is currently no support for running 64-bit Linux binaries.
Development
FreeBSD currently has more than 400 active developers and thousands of contributors.
Governance structure
The FreeBSD Project is run by FreeBSD committers, or developers who have
CVS/
SVN commit access. There are several kinds of committers, including source committers (base operating system), doc committers (documentation and web site authors) and ports (third party application porting and infrastructure). Every two years the FreeBSD committers select a 9-member FreeBSD Core Team who are responsible for overall project direction, setting and enforcing project rules and approving new "commit bits", or the granting of CVS/SVN commit access. A number of responsibilities are officially assigned to other development teams by the FreeBSD Core Team, including responsibility for security advisories (the Security Officer Team),
release engineering (the Release Engineering Team) and managing the ports collection (the Port Manager team). Developers may give up their commit rights to retire or for "safe-keeping" after a period of a year or more of inactivity, although commit rights will generally be restored on request. Under rare circumstances commit rights may be removed by Core Team vote as a result of repeated violation of project rules and standards. The FreeBSD Project is unusual among open source projects in having developers who have worked with its source base for over 25 years, owing to the involvement of a number of past University of California developers who worked on
BSD at the
Computer Systems Research Group.
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 releases are 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. FreeBSD's development model is further described in an article by Niklas Saers.
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.
License
FreeBSD is released under a variety of open source licenses. The kernel code and most newly created code is released under the two-clause
BSD license which allows everyone to use and redistribute FreeBSD as they wish. There are parts released under three- and four-clause BSD licenses, as well as
Beerware license. Some device drivers include a
binary blob, such as the
Atheros HAL of FreeBSD versions before 7.2. Some of the code contributed by other projects is licensed under
GPL,
LGPL,
ISC or
CDDL. 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-licenced
LLVM/
Clang compiler. ClangBSD became self-hosting on April 16, 2010, an important landmark for further independent development.
Logo
, also known as
Beastie.]]
For many years FreeBSD's logo was the generic
BSD daemon, also called
Beastie, a slurred phonetic pronunciation of
BSD. First appearing in 1976 on UNIX T-shirts purchased by
Bell Labs, the more popular versions of the BSD daemon were drawn by animation director
John Lasseter beginning in 1984. Several FreeBSD-specific versions were later drawn by Tatsumi Hosokawa. Through the years Beastie became both beloved and criticized as perhaps inappropriate for corporate and mass market exposure. Moreover it was not unique to FreeBSD. In lithographic terms, the Lasseter graphic is not
line art and often requires a screened, four colour
photo offset printing process for faithful reproduction on physical surfaces such as paper. Moreover, the BSD daemon was thought to be too graphically detailed for smooth size scaling and aesthetically over dependent upon multiple colour gradations, making it hard to reliably reproduce as a simple, standardized logo in only two or three colours, 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 October 8, 2005. Meanwhile Lasseter's much known take on the BSD daemon carries forth as official mascot of the FreeBSD Project.
Derivatives
There are a number of software distributions based on FreeBSD including:
PC-BSD (aimed at home users and workstations)
DesktopBSD (aimed at home users and workstations)
FreeSBIE (live CD)
Frenzy (live CD)
GhostBSD (Gnome-based live CD)
m0n0wall (firewall)
pfSense (firewall)
FreeNAS (for network attached storage)
AuthServ (for network servers & storage)
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 is DragonFly BSD, 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. It does not aim to stay compatible with FreeBSD and has huge differences in the kernel and basic userland.
A wide variety of products are directly or indirectly based on FreeBSD. Examples of embedded devices based on FreeBSD include:
Citrix Netscalers
F5 Networks's 3DNS version 3 global traffic manager and EDGE-FX version 1 web cache (NB These are now end of life with 3DNS functionality being moved to the Linux based BIGIP Platform)
Ironport network security appliances
Juniper Networks routers, switches and security devices
KACE Networks's KBOX 1000 & 2000 Series Appliances and the Virtual KBOX Appliance
nCircle's IP360
NetApp's Data ONTAP GX (only as a loader for proprietary kernel-space module of ONTAP GX and 8.x)
Netasq security appliances
Nokia's firewall operating system
Panasas's and Isilon Systems's cluster storage operating systems
The
PlayStation 3 video game console.
Sophos's Email Appliance
St. Bernard Software iPrism web filtering appliances
Panasonic's 2010 TV models (PDP and LCD)
Blue Coat's ProxySG WAN acceleration appliance is partially derived from FreeBSD
Other operating systems such as Linux and the RTOS VxWorks contain code that originated in FreeBSD. Debian, known primarily for using the Linux kernel, also maintains GNU/kFreeBSD, combining the GNU userspace and C library with the FreeBSD kernel. Darwin, the core of Apple Mac OS X, borrows FreeBSD’s virtual file system, network stack, and components of its userspace. The OpenDarwin project (now defunct), a spin-off of Apple’s Darwin operating system, also included substantial FreeBSD code. Thanks to the permissive FreeBSD License, much of FreeBSD now also forms the basis of Apple Mac OS X and Mac OS X Server.
Originally developed at the University of California, Berkeley, the BSD distribution is the foundation of most UNIX implementations today. Mac OS X Server is based largely on the FreeBSD distribution and includes the latest advances from this development community.|“Apple Mac OS X Server Snow LeopardUNIX: Open source foundation”|http://www.apple.com/server/macosx/technology/unix.html}}
Installers
sysinstall
The
sysinstall utility is the installation application provided by the FreeBSD Project. 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. As of FreeBSD 9, sysinstall has been replaced by a new installer.
finstall
The finstall utility aims to create a user-friendly graphical installer for FreeBSD & FreeBSD-derived systems, however development of finstall has stalled.
Version history
FreeBSD 1
Released in November 1993. 1.1.5.1 was released in July, 1994.
FreeBSD 2
2.0-RELEASE was announced on November 22, 1994. The final release of FreeBSD 2, 2.2.8-RELEASE, was announced on November 29, 1998. FreeBSD 2.0 was the first FreeBSD to be claimed legally free of AT&T; UNIX code with approval of Novell.
FreeBSD 3
FreeBSD 3.0-RELEASE was announced on October 16, 1998. The final release, 3.5-RELEASE, was announced on June 24, 2000. FreeBSD 3.0 was the first branch able to support
symmetric multiprocessing (SMP) systems, using a
Giant lock.
USB support was first introduced with FreeBSD 3.1, and the first
Gigabit network cards were supported in 3.2-RELEASE.
FreeBSD 4
4.0-RELEASE appeared in March 2000 and the last 4-STABLE branch release was 4.11 in January 2005 supported until January 31, 2007. FreeBSD 4 was a favorite operating system for ISPs and
web hosting providers during the first
dot-com bubble, and is widely regarded as one of the most stable and high performance operating systems of the whole Unix lineage.
Among the new features of FreeBSD 4,
kqueue(2)
was introduced (which is now part of other major BSD systems).
FreeBSD 5
After almost three years of development, the first 5.0-RELEASE in January 2003 was widely anticipated, featuring support for advanced multiprocessor and application threading, and for the
UltraSPARC and
IA-64 platforms. The first 5-STABLE release was 5.3 (5.0 through 5.2.1 were cut from
-CURRENT). The last release from the 5-STABLE branch was 5.5 in May 2006.
The largest architectural development in FreeBSD 5 was a major change in the low-level kernel locking mechanisms to enable better symmetric multi-processor (SMP) support. This released much of the kernel from the MP lock, which is sometimes called the Giant lock. More than one process could now execute in kernel mode at the same time. Other major changes included an M:N native threading implementation called Kernel Scheduled Entities. In principle this is similar to Scheduler Activations. Starting with FreeBSD 5.3, KSE was the default threading implementation until it was replaced with a 1:1 implementation in FreeBSD 7.0.
FreeBSD 5 also significantly changed the block I/O layer by implementing the GEOM modular disk I/O request transformation framework contributed by Poul-Henning Kamp. GEOM enables the simple creation of many kinds of functionality, such as mirroring (gmirror) and encryption (GBDE and GELI). This work was supported through sponsorship by DARPA.
The 5.4 and 5.5 releases of FreeBSD confirmed the FreeBSD 5.x branch as a highly stable and high-performing release, although it had a long development period due to the large feature set. Earlier releases on the 5.x branch are not considered stable enough for production deployment.
FreeBSD 6
FreeBSD 6.0 was released on November 4, 2005. The final FreeBSD 6 release was 6.4, on November 11, 2008. These versions continue work on SMP and threading optimization along with more work on advanced
802.11 functionality, TrustedBSD security event auditing, significant network stack performance enhancements, a fully preemptive kernel and support for hardware performance counters (HWPMC). The main accomplishments of these releases include removal of the Giant lock from
VFS, implementation of a better-performing optional libthr library with 1:1 threading and the addition of a Basic Security Module (BSM) audit implementation called
OpenBSM, which was created by the TrustedBSD Project (based on the BSM implementation found in Apple's
open source Darwin) and released under a
BSD-style license.
FreeBSD 7
FreeBSD 7.0 was released on 27 February 2008. The most recent and final FreeBSD 7 release was 7.4, on February 24, 2011. New features include
SCTP,
UFS journaling, an experimental port of
Sun's
ZFS file system,
GCC4, improved support for the
ARM architecture, jemalloc (a
memory allocator optimized for
parallel computation, which was ported to
Firefox 3), and major updates and optimizations relating to network, audio, and
SMP performance. Benchmarks have shown significant speed improvements over previous FreeBSD releases as well as Linux. The new
ULE scheduler has seen much improvement but a decision was made to ship the 7.0 release with the older 4BSD scheduler, leaving ULE as a kernel compile-time tunable. In FreeBSD 7.1 ULE was the default for the i386 and AMD64 architectures.
Starting from version 7.1 DTrace was also integrated and FreeBSD 7.2 brought support for multi-IPv4/IPv6 jails.
Code supporting the DEC Alpha architecture (supported since FreeBSD 4.0) was removed in FreeBSD 7.0.
FreeBSD 8
FreeBSD 8.0 was formally released on November 25, 2009. FreeBSD 8.2 is the latest stable release of FreeBSD, having been
branched from the trunk in December 2010. It features
superpages,
Xen DomU support, network stack virtualization,
stack-smashing protection, TTY layer rewrite, much improved
ZFS support, a new
USB stack with USB 3.0 and xHCI support added in FreeBSD 8.2,
multicast updates including
IGMPv3, and rewritten
NFS client/server introducing
NFSv4, and
AES acceleration on supported Intel CPUs (added in FreeBSD 8.2). Inclusion of improved device mmap() extensions enables implementation of a 64-bit Nvidia display driver for the x86-64 platform. FreeBSD 8.2 was formally released on February 24, 2011.
FreeBSD 9
, "bleeding edge" development occurs on -CURRENT, the
trunk version of the operating system, which will result in a future version named FreeBSD 9. Until FreeBSD 8.0 was released, the trunk was updated with only conservative changes.
Timeline
The timeline shows that the span of a single release generation of FreeBSD lasts around 5 years. Since the FreeBSD project makes effort for binary backward (and limited forward) compatibility within the same release generation, this allows users 5+ years of support, with trivial-to-easy upgrading within the release generation.
See also
BAPP - BSD + Apache + PostgreSQL + Perl/PHP/Python
BSD descendants
Commercial products based on FreeBSD
Comparison of BSD operating systems
Comparison of operating systems
Comparison of operating system kernels
Darwin (operating system) - a UNIX-like computer operating system released by Apple Inc and based largely on BSD.
DragonFly BSD, a fork of FreeBSD.
FreeBSD Documentation License
FreeBSD Jail
FreeBSD Ports
GEOM
Jordan Hubbard
Marshall Kirk McKusick
NetBSD, another major freely licensed, open-source BSD derivative.
OpenBSD, another major freely licensed, open-source BSD derivative (forked from NetBSD).
Poul-Henning Kamp
Robert Watson
Security-focused operating system
ULE scheduler
References
Notes
External links
Official Forums
Official Wiki
Official FreeBSD Handbook
Category:Computing platforms
Category:Operating system security