FreeBSD welcome screen |
|
Company / developer | The FreeBSD Project |
OS family | Unix-like (BSD) |
Working state | Current |
Source model | Open source |
Latest stable release | 8.2-RELEASE (February 24, 2011 ) [+/−] |
Latest unstable release | 9.0-RC3 in developement. (December 20, 2011 ) [+/−] |
Supported platforms | IA-32, x86-64, SPARC, SPARC64, IA-64, NEC PC98, PowerPC, ARM, MIPS |
Kernel type | Monolithic |
Userland | BSD |
License | FreeBSD License, FreeBSD Documentation License |
Official website | www.freebsd.org |
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",[1] as the direct descendant of BSD UNIX (many of whose original developers became FreeBSD developers), FreeBSD's internals and system APIs are UNIX-compliant. 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.[2] 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.[3]
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.[4] (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"[5] and is widely regarded as reliable and robust.[6] 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.[7]
Contents |
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 the 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.[8]
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 unencumbered outcome was released as FreeBSD 2.0 in January 1995.[8]
FreeBSD 2.0 featured a revamp of the original Carnegie Mellon University Mach virtual memory system, which was optimized for performance under high loads. This release also introduced the FreeBSD Ports system, which made downloading, building and installing third party software very easy. By 1996 FreeBSD had become popular among commercial and ISP users, powering extremely successful sites like Walnut Creek CD-ROM (a huge repository of software that broke several throughput records on the Internet), Yahoo! and Hotmail. The last release along the 2-STABLE branch was 2.2.8 in November 1998.[9] 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.[8]
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.[10] FreeBSD also supports IPv6, SCTP, IPSec, IPX, AppleTalk and wireless networking.
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.
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.
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:[11]
Architecture | Support Level | Notes |
---|---|---|
x86 (IA-32) | Tier 1 | referred to as "i386" |
x86-64 | Tier 1 | referred to as "amd64" |
NEC PC-9801 | Tier 1 | referred to as "pc98" |
Sun SPARC | Tier 2 | Only support 64-bit (V9) architecture |
Itanium (IA-64) | Tier 2 | |
PowerPC and PowerPC/64 | Tier 2 | |
ARM | Tier 2 | |
MIPS | Tier 2 | |
Microsoft's Xbox | Tier 3 | |
DEC Alpha | Tier 3 | Support discontinued from FreeBSD 7.0 on |
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.[12]
Each application 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.[13]
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.[14]
There are many utilities available for managing ports and packages available in GUIs and CLIs. These are some of them:[15]
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, Wolfenstein: Enemy Territory, Doom 3 and Quake 4 [18] (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.[19] 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 for Linux 2.6.16 system calls, available since FreeBSD 7.0 and enabled by default since FreeBSD 8.0. However, there is currently no support for running 64-bit Linux binaries.[20]
FreeBSD currently has more than 400 active developers[21] and thousands of contributors.
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.[22]
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 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.[23] FreeBSD's development model is further described in an article by Niklas Saers.[24]
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.[25]
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.[26] 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,[27] an important landmark for further independent development.
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.[28][29][30] Several FreeBSD-specific versions were later drawn by Tatsumi Hosokawa.[31] 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.[32] Meanwhile Lasseter's much known take on the BSD daemon carries forth as the official mascot of the FreeBSD Project.
There are a number of software distributions based on FreeBSD including:
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:
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.[37] 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.
Mac OS X Server includes the latest technological advances from the open source BSD community. 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 Leopard — UNIX: Open source foundation", [38]
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.[39] As of FreeBSD 9, sysinstall has been replaced by bsdinstall.
The bsdinstall utility is a "a lightweight replacement for sysinstall",[40] and is intended to replace the sysinstall utility in FreeBSD 9.0.[41] bsdinstall is intended to be scriptable and extendable, with no dependencies outside the base system.
The finstall utility aims to create a user-friendly graphical installer for FreeBSD & FreeBSD-derived systems,[42] however development of finstall has stalled.[43]
Released in November 1993. 1.1.5.1 was released in July, 1994.
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. It was the first version to be widely used at the beginnings of the spread of Internet servers.
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.
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.[44] FreeBSD 4 was lauded for its stability and 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).
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.
While the early versions from the 5.x were not much more than developer previews, with pronounced instability, the 5.4 and 5.5 releases of FreeBSD confirmed the technologies introduced in the FreeBSD 5.x branch had a future in highly stable and high-performing releases.
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.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,[45] which was ported to Firefox 3),[46] and major updates and optimizations relating to network, audio, and SMP performance.[47] Benchmarks have shown significant speed improvements over previous FreeBSD releases as well as Linux.[48] 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.[49]
Code supporting the DEC Alpha architecture (supported since FreeBSD 4.0) was removed in FreeBSD 7.0.[50]
FreeBSD 8.0 was formally released on November 25, 2009.[51] 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.[52]
As of 2009[update], "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.[53][54][55]
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,[56] this allows users 5+ years of support, with trivial-to-easy upgrading within the release generation.
|
|