FreeBSD

From Wikipedia, the free encyclopedia

Jump to: navigation, search
FreeBSD
Image:FreeBSD-logo.png
Screenshot of FreeBSD terminal
FreeBSD welcome screen
Company / developer The FreeBSD Project
OS family BSD, Unix-like
Working state Current
Source model Free and open source software
Latest stable release 7.1-RELEASE  (January 05, 2009) [+/−]
Latest unstable release 8.0-CURRENT  (N/A) FreeBSD 8 is currently in development. [+/−]
Supported platforms i386, AMD64, SPARC, SPARC64, DEC Alpha, ia64, PC98, PowerPC, ARM architecture
Kernel type Monolithic
License BSD License
Website www.freebsd.org

FreeBSD is a Unix-like free operating system descended from AT&T UNIX via the Berkeley Software Distribution (BSD) branch through the 386BSD and 4.4BSD operating systems. It runs on Intel x86 family (IA-32) IBM PC compatible computers, DEC Alpha, Sun UltraSPARC, IA-64, AMD64, PowerPC, ARM and NEC PC-9801 architectures along with Microsoft's Xbox.[1] Support for other architectures is in varying stages of development. FreeBSD currently has more than 200 active developers[2] and thousands of contributors.

FreeBSD has been characterized as "the unknown giant among free operating systems."[3] It is not a clone of UNIX, but works like UNIX, with UNIX-compliant internals and system APIs.[4] FreeBSD is generally regarded as reliable and robust.[5]

FreeBSD is developed as 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, whereas with Linux distributions, the kernel, userland utilities and applications are developed separately, then packaged together in various ways by others.[6]

Contents

[edit] History and development

FreeBSD's 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. The first official release was FreeBSD 1.0 in December 1993, coordinated by Jordan Hubbard, Nate Williams and Rod 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.[7]

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

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

[edit] Beastie

FreeBSD's mascot is the generic BSD daemon, 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.[9][10][11] Several FreeBSD-specific versions were later drawn by Tatsumi Hosokawa.[12] 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. However drawn, 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.[13] Meanwhile Lasseter's much known take on the BSD daemon carries forth as official mascot of the FreeBSD Project.

[edit] FreeBSD 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.[14] FreeBSD's development model is further described in an article by Niklas Saers.[15]

[edit] Version History

[edit] FreeBSD 4

4.0-RELEASE appeared in March 2000 and the last 4-STABLE branch release was 4.11 in January 2005. FreeBSD 4 was a favorite operating system for ISPs and web provider during the first .com bubble, and is widely regarded as one of the most stable and high performance operating systems of the whole Unix lineage.

[edit] 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 ia64 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.

[edit] FreeBSD 6

FreeBSD 6.0 was released on November 4, 2005. The most recent 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.

[edit] FreeBSD 7

FreeBSD 7.0 was released on 27 February 2008. The most recent FreeBSD 7 release was 7.1, on January 05, 2009. 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[16], which was ported to Firefox 3)[17], and major updates and optimizations relating to network, audio, and SMP performance[18]. Benchmarks have shown significant speed improvements over previous FreeBSD releases as well as Linux[19]. 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 integrated.

[edit] FreeBSD 8

As of 2008, FreeBSD 8.0 is the "bleeding edge" development version, called -CURRENT in FreeBSD development terminology. It will feature the ability for jails to have more than one IP (and also have IPv6 IP's), superpages, Xen DomU support, network stack virtualization, stack-smashing protection, much improved ZFS support and a new USB stack. FreeBSD 8.0 is planned to be released in the 3rd quarter of 2009. [20][21][22]

[edit] Installing Applications: Ports and Packages

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

[edit] 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 the compilation time for large packages can take hours but the user is able to install a customized program.[24]

[edit] 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.[25]

[edit] FreeBSD Installers

[edit] sysinstall

The sysinstall utility is the installation application provided by the FreeBSD Project. It is TUI-based and is divided into a number of menus and screens that you can use to configure and control the installation process. It can also be used to install Ports and Packages as an alternative to CLI.[26]

[edit] finstall

The finstall utility aims to create a user-friendly graphical installer for FreeBSD & FreeBSD-derived systems[27], however development of finstall has stalled.[28]

[edit] Linux compatibility

Most software that runs on Linux can run on FreeBSD without the need for any compatibility layer. FreeBSD nonetheless also provides binary compatibility with several other Unix-like operating systems, including Linux. Hence, most Linux binaries can be run on FreeBSD, including some commercial 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, Matlab, WordPerfect, Skype, Wolfenstein: Enemy Territory, Doom 3 and Quake 4[29] (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.[30] 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 syscalls, enabled by default in 8-CURRENT and available in 7.0+.

[edit] License

FreeBSD is released under a variety of 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 the GPL, LGPL, ISC, CDDL and Beerware licenses. Some device drivers include a binary blob, such as the Atheros HAL.[31]

[edit] Derivatives

A wide variety of products are directly or indirectly based on FreeBSD. These range from embedded devices such as Juniper Networks routers, Ironport network security appliances, nCircle's IP360, Nokia's firewall operating system, NetApp's Data ONTAP GX, Panasas's and Isilon Systems's cluster storage operating systems, NetASQ security appliances, St Bernard iPrism web filtering appliances and F5 Networks's 3DNS version 3 global traffic manager and EDGE-FX version 1 web cache, to portions of other operating systems including Linux and the RTOS VxWorks. Darwin, the core of Apple's Mac OS X, borrows heavily from FreeBSD, including its virtual file system, network stack and components of its userspace. Apple continues to integrate new code from and contribute changes back to FreeBSD. The now-defunct OpenDarwin project, which was based on Apple's Darwin operating system, also included substantial FreeBSD code. In addition, there are a number of operating systems originally forked from or based on FreeBSD including PC-BSD and DesktopBSD, which include enhancements aimed at home users and workstations, FreeSBIE and Frenzy live CD distributions, the m0n0wall and pfSense firewalls, FreeNAS network attached storage, AskoziaPBX, an embedded PBX and 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.

[edit] TrustedBSD

The TrustedBSD project provides a set of trusted operating system extensions to FreeBSD. It was begun primarily 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 main focuses of the TrustedBSD project are access control lists (ACLs), security event auditing, extended file system attributes, fine-grained capabilities and mandatory access controls (MAC). 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.

[edit] 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 CSRG.[32]

[edit] See also

[edit] References

  1. ^ "FreeBSD/xbox Project". freebsd.org. http://www.freebsd.org/platforms/xbox.html. Retrieved on 2007-03-01. 
  2. ^ "List of FreeBSD developers". freebsd.org. http://wiki.freebsd.org/DevelopersGroup. Retrieved on 2008-11-13. 
  3. ^ "Why FreeBSD". ibm.org. http://www.ibm.com/developerworks/opensource/library/os-freebsd/. Retrieved on 2008-01-28. 
  4. ^ Pohlmann, Frank. "Why FreeBSD". ibm.com. http://www-128.ibm.com/developerworks/opensource/library/os-freebsd/. Retrieved on 2007-12-16. 
  5. ^ Lavigne, Dru (2004). BSD Hacks. O'Reilly Media. pp. 309. ISBN 9780596006792. 
  6. ^ "FreeBSD". spreadbsd.org. http://www.spreadbsd.org/?q=freebsd. Retrieved on 2009-01-31. 
  7. ^ a b c "A Brief History of FreeBSD". freebsd.org. http://www.freebsd.org/doc/en/books/handbook/history.html. Retrieved on 2009-01-31. 
  8. ^ Hubbard, Jordan. "A Brief History of FreeBSD". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/history.html. Retrieved on 2007-12-16. 
  9. ^ "Usenix". mckusick.com. http://www.mckusick.com/beastie/shirts/usenix.html. Retrieved on 2007-12-15. 
  10. ^ "Saving UNIX from /dev/null". minnie.tuhs.org. http://minnie.tuhs.org/Seminars/Saving_Unix/. Retrieved on 2007-12-15. 
  11. ^ "Chuck's Corner". frbsd.org. http://www.frbsd.org/fr/chuck.html. Retrieved on 2007-12-19. 
  12. ^ "The BSD Daemon". freebsd.org. http://www.freebsd.org/copyright/daemon.html. Retrieved on 2007-12-15. 
  13. ^ "Final result for the FreeBSD logo design competition". freebsd.org. 2005. http://logo-contest.freebsd.org/result/. Retrieved on 2007-03-01. 
  14. ^ "FAQ Chapter 1 Introduction". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/introduction.html. Retrieved on 2009-01-30. 
  15. ^ Saers, Niklas (2002). "A project model for the FreeBSD Project". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/dev-model/. Retrieved on 2007-03-03. 
  16. ^ Evans, Jason (2006-04-16). "A Scalable Concurrent malloc(3) Implementation for FreeBSD" (PDF). http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf. Retrieved on 2008-02-13. 
  17. ^ "FreeBSD 7.0-RELEASE Announcement". freebsd.org. http://www.freebsd.org/releases/7.0R/announce.html. Retrieved on 2009-01-31. 
  18. ^ Biancuzzi, Federico (2008-02-26). "What's New in FreeBSD 7.0". onlamp.com. http://www.onlamp.com/pub/a/bsd/2008/02/26/whats-new-in-freebsd-70.html?page=1. Retrieved on 2008-02-26. 
  19. ^ "Introducing FreeBSD 7.0". freebsd.org. http://people.freebsd.org/~kris/scaling/7.0%20Preview.pdf. Retrieved on 2009-01-31. 
  20. ^ Ken Smith (2007-10-11). "cvs commit: src UPDATING src/release Makefile src/sys/conf newvers.sh src/sys/sys param.h src/usr.sbin/pkg_install/add main.c src/share/examples/cvsup stable-supfile". gmane.os.freebsd.devel.cvs.src. (Web link). Retrieved on 2007-10-11.
  21. ^ Ken Smith (2007-10-13). "Re: Version 8.0?!!???". gmane.os.freebsd.current. (Web link). Retrieved on 2007-10-13.
  22. ^ "What's cooking for FreeBSD 8?". sharanet.org. http://ivoras.sharanet.org/freebsd/freebsd8.html. Retrieved on 2009-01-31. 
  23. ^ "Chapter 4 Installing Applications: Packages and Ports". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html. Retrieved on 2009-01-30. 
  24. ^ "4.5 Using the Ports Collection". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html. Retrieved on 2009-01-30. 
  25. ^ "4.4 Using the Packages System". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/packages-using.html. Retrieved on 2009-01-30. 
  26. ^ "2.5 Introducing Sysinstall". freebsd.org. http://www.freebsd.org/doc/en/books/handbook/using-sysinstall.html. Retrieved on 2009-01-30. 
  27. ^ "The finstall project". freebsd.org. http://wiki.freebsd.org/finstall. Retrieved on 2009-01-30. 
  28. ^ "What happened to finstall?". Ivan Voras. http://ivoras.sharanet.org/blog/tree/2009-02-19.what-happened-to-finstall.html. Retrieved on 2009-03-17. 
  29. ^ "Chapter 10 Linux Binary Compatibility". freebsd.org. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html. Retrieved on 2007-03-29. 
  30. ^ Tiemann, Brian (2006). "How FreeBSD Compares to Other Operating Systems". FreeBSD 6 Unleashed. ISBN 0672328755. 
  31. ^ "FreeBSD Copyright and Legal Information". freebsd.org. http://www.freebsd.org/copyright/copyright.html. Retrieved on 2009-01-30. 
  32. ^ "FreeBSD Project Administration and Management". freebsd.org. http://www.freebsd.org/administration.html. Retrieved on 2009-01-30. 

[edit] Further reading

[edit] External links

Personal tools