FreeBSD is an advanced operating system for x86 compatible (including Pentium and Athlon), amd64 compatible (including Opteron, Athlon 64, and EM64T), IA-64, PC-98, Alpha/AXP and UltraSPARC architectures.
It is derived from BSD, the version of UNIX developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development.
FreeBSD offers advanced networking, performance, security and compatibility features today which are still missing in other operating systems, even some of the best commercial ones.
FreeBSD makes an ideal Internet or Intranet server. It provides robust network services under the heaviest loads and uses memory efficiently to maintain good response times for thousands of simultaneous user processes.
The quality of FreeBSD combined with today's low-cost, high-speed PC hardware makes FreeBSD a very economical alternative to commercial UNIX workstations. It is well-suited for a great number of both desktop and server applications.
FreeBSD can be installed from a variety of media including CD-ROM, DVD-ROM, floppy disk, magnetic tape, an MS-DOS partition, or if you have a network connection, you can install it directly over anonymous FTP or NFS.
While you might expect an operating system with these features to sell for a high price, FreeBSD is available free of charge and comes with full source code.
It is easy to contribute to FreeBSD. All you need to do is find a part of FreeBSD which you think could be improved and make those changes (carefully and cleanly) and submit that back to the Project by means of send-pr or a committer, if you know one. This could be anything from documentation to artwork to source code.
Even if you are not a programmer, there are other ways to contribute to FreeBSD. The FreeBSD Foundation is a non-profit organization for which direct contributions are fully tax deductible.
Product's homepage
Here are some key features of "FreeBSD":
· A merged virtual memory and filesystem buffer cache continuously tunes the amount of memory used for programs and the disk cache. As a result, programs receive both excellent memory management and high performance disk access, and the system administrator is freed from the task of tuning cache sizes.
· Compatibility modules enable programs for other operating systems to run on FreeBSD, including programs for Linux, SCO UNIX, and System V Release 4.
· Soft Updates allows improved filesystem performance without sacrificing safety and reliability. It analyzes meta-data filesystem operations to avoid having to perform all of those operations synchronously. Instead, it maintains internal state about pending meta-data operations and uses this information to cache meta-data, rewrite meta-data operations to combine subsequent operations on the same files, and reorder meta-data operations so that they may be processed more efficiently. Features such as background filesystem checking and file system snapshots are built on the consistency and performance foundations of soft updates.
· File system snapshots, permitting administrators to take atomic file system snapshots for backup purposes using the free space in the file system, as well as facilitating background fsck, which allows the system to reach multiuser mode without waiting on file system cleanup operations following power outages.
· Support for IP Security (IPsec) allows improved security in networks, and support for the next-generation Internet Protocol, IPv6. The FreeBSD IPSEC implementation includes support for a broad range of accelerated crypto hardware.
· Out of the box support for IPv6 via the KAME IPv6 stack allows FreeBSD to be seamlessly integrated into next generation networking environments. FreeBSD even ships with many applications extended to support IPv6!
· Multi-threaded SMP architecture capable of executing the kernel in parallel on multiple processors, and with kernel preemption, allowing high priority kernel tasks to preempt other kernel activity, reducing latency. This includes a multi-threaded network stack and a multi-threaded virtual memory subsystem. With FreeBSD 6.x, support for a fully parallel VFS allows the UFS file system to run on multiple processors simultaneously, permitting load sharing of CPU-intensive I/O optimization.
· M:N application threading via pthreads permitting threads to execute on multiple CPUs in a scaleable manner, mapping many user threads onto a small number of Kernel Schedulable Entities. By adopting the Scheduler Activation model, the threading approach can be adapted to the specific requirements of a broad range of applications.
· Netgraph pluggable network stack allows developers to dynamically and easily extend the network stack through clean layered network abstractions. Netgraph nodes can implement a broad range of new network services, including encapsulation, tunneling, encryption, and performance adaptation. As a result, rapid prototyping and production deployment of enhanced network services can be performed far more easily and with fewer bugs.
· TrustedBSD MAC Framework extensible kernel security, which allows developers to customize the operating system security model for specific environments, from creating hardening policies to deploying mandatory labeled confidentiality of integrity policies. Sample seucrity policies include Multi-Level Security (MLS), and Biba Integrity Protection. Third party modules include SEBSD, a FLASK-based implementation of Type Enforcement.
· GEOM pluggable storage layer, which permits new storage services to be quickly developed and cleanly integrated into the FreeBSD storage subsystem. GEOM provides a consistent and coherrent model for discovering and layering storage services, making it possible to layer services such as RAID and volume management easily.
· FreeBSD's GEOM-Based Disk Encryption (GBDE), provides strong cryptographic protection using the GEOM Framework, and can protect file systems, swap devices, and other use of storage media.
· Kernel Queues allow programs to respond more efficiently to a variety of asynchronous events including file and socket IO, improving application and system performance.
· Accept Filters allow connection-intensive applications, such as web servers, to cleanly push part of their functionality into the operating system kernel, improving performance.
What's New in This Release: [ read full changelog ]
· The FreeBSD kernel now supports Capsicum Capability Mode. Capsicum is a set of features for sandboxing support, using a capability model in which the capabilities are file descriptors. Two new kernel options CAPABILITIES and CAPABILITY_MODE have been added to the GENERIC kernel. For more information about Capsicum, see http://www.cl.cam.ac.uk/research/security/capsicum/.[r219129]
· The hhook(9) (Helper Hook) and khelp(9) (Kernel Helpers) KPIs have been implemented. These are a kind of superset of pfil(9) framework for more general use in the kernel. The hhook(9) KPI provides a way for kernel subsystems to export hook points that khelp(9) modules can hook to provide enhanced or new functionality to the kernel. The khelp(9) KPI provides a framework for managing khelp(9) modules, which indirectly use the hhook(9) KPI to register their hook functions with hook points of interest within the kernel. These allow a structured way to dynamically extend the kernel at runtime in an ABI preserving manner.[r216758, r216615]
· A new resource accounting API has been implemented. It can keep per-process, per-jail, and per-loginclass resource accounting information. Note that this is not built nor installed by default. To build and install them, specify options RACCT in the kernel configuration file and rebuild the base system as described in the FreeBSD Handbook.[r220137]
· A new resource-limiting API has been implemented. It works in conjunction with the RACCT resource accounting implementation and takes user-configurable actions based on the set of rules it maintains and the current resource usage. The rctl(8) utility has been added to manage the rules in userland. Note that this is not built nor installed by default. To build and install them, specify options RCTL in the kernel configuration file and rebuild the base system as described in the FreeBSD Handbook.[r220163]
· [powerpc] FreeBSD/powerpc now supports Sony Playstation 3 using the OtherOS feature available on firmwares 3.15 and earlier.[r217044]
· [amd64, i386] The FreeBSD usb(4) subsystem now supports USB 3.0 by default.[r223098]
· The FreeBSD usb(4) subsystem now supports USB packet filter. This allows to capture packets which go through each USB host controller. The implementation is almost based on bpf(4) code. The userland program usbdump(8) has been added.[r215649]
· A bxe(4) driver for Broadcom NetXtreme II 10GbE controllers (BCM57710, BCM57711, BCM57711E) has been added.[r219647]
· A cxgbe(4) driver for Chelsio T4 (Terminator 4) based 10Gb/1Gb adapters has been added.[r218794]
· The em(4) driver has been updated to version 7.3.2.[r219753]
· The igb(4) driver has been updated to version 2.2.5.[r223350]
· The igb(4) driver now supports Intel I350 PCIe Gigabit Ethernet controllers.[r218530]
· The ixgbe(4) driver has been updated to version 2.3.8.[r217593]
· The re(4) driver now supports RTL8168E/8111E-VL PCIe Gigabit Ethernet controllers and RTL8401E PCIe Fast Ethernet controllers.[r217498, r218760]
· A vte(4) driver for RDC R6040 Fast Ethernet controllers, which are commonly found on the Vortex86 System On a Chip, has been added.[r216829]
· A vxge(4) driver for the Neterion X3100 10GbE Server/Storage adapter has been added.[r221167]
· ipfw(8) now supports IPv6 in the fwd action.[r225044]
· ipfw(8) now supports the call and return actions. Upon the call number action, the current rule number is saved in the internal stack and ruleset processing continues with the first rule numbered number or higher. The return action takes the rule number saved to internal stack by the latest call action and returns ruleset processing to the first rule with number greater than that saved number.[r223666]
· For Infiniband support, OFED (OpenFabrics Enterprise Distribution) version 1.5.3 has been imported into the base system. Note that this is not built nor installed by default. To build and install them, specify WITH_OFED=yes in /etc/src.conf and rebuild the base system as described in the FreeBSD Handbook.[r219820]
· The FreeBSD TCP/IP network stack now supports IPv4 prefixes with /31 as described in RFC 3021, “Using 31-Bit Prefixes on IPv4 Point-to-Point Links”.[r226572]
· The FreeBSD TCP/IP network stack now supports the mod_cc(9) pluggable congestion control framework. This allows TCP congestion control algorithms to be implemented as dynamically loadable kernel modules. The following kernel modules are available as of 9.0-RELEASE: cc_chd(4) for the CAIA-Hamilton-Delay algorithm, cc_cubic(4) for the CUBIC algorithm, cc_hd(4) for the Hamilton-Delay algorithm, cc_htcp(4) for the H-TCP algorithm, cc_newreno(4) for the NewReno algorithm, and cc_vegas(4) for the Vegas algorithm. The default algorithm can be set by a new sysctl(8) variable net.inet.tcp.cc.algorithm. The value must be set to one of the names listed by net.inet.tcp.cc.available, and newreno is the default set at boot time. For more detail, see the mod_cc(4) and mod_cc(9) manual pages.[r216109, r216114, r216115, r218152, r218153, r218155]
· An h_ertt(4) (Enhanced Round Trip Time) khelp(9) module has been added. This module allows per-connection, low noise estimates of the instantaneous RTT in the TCP/IP network stack with a robust implementation even in the face of delayed acknowledgments and/or TSO (TCP Segmentation Offload) being in use for a connection.[r217806]
· A new tcp(4) socket option TCP_CONGESTION has been added. This allows to select or query the congestion control algorithm that the TCP/IP network stack will use for connections on the socket.[r218912]
· The ng_netflow(4) netgraph(4) node now supports NetFlow version 9. A new export9 hook has been added for NetFlow v9 data. Note that data export can be done simultaneously in both version 5 and version 9.[r219183]
· The geom_map(4) GEOM class has been added. This allows to generate multiple geom providers based on a hard-coded layout of a device with no explicit partition table such as embedded flash storage. For more information, see the geom_map(4) manual page.[r220559]
· The graid(8) GEOM class has been added. This is a replacement of the ataraid(4) driver supporting various BIOS-based software RAID.[r219974]
· A tws(4) driver for 3ware 9750 SATA+SAS 6Gb/s RAID controllers has been added.[r226115]
· The FreeBSD Fast File System now supports softupdates journaling. It introduces a intent log into a softupdates-enabled file system which eliminates the need for background fsck(8) even on unclean shutdown. This can be enabled in a per-filesystem basis by using the -j flag of the newfs(8) utility or the -j enable option of the tunefs(8) utility. Note that the 9.0-RELEASE installer automatically enables softupdates journaling for newly-created UFS file systems.[r207141, r218726]
· The FreeBSD Fast File System now supports the TRIM command when freeing data blocks. A new flag -t in the newfs(8) and tunefs(8) utilities sets the TRIM-enable flag for a file system. The TRIM-enable flag makes the file system send a delete request to the underlying device for each freed block. The TRIM command is specified as a Data Set Management Command in the ATA8-ACS2 standard to carry the information related to deleted data blocks to a device, especially for a SSD (Solid-State Drive) for optimization.[r216796]
· The FreeBSD NFS subsystem has been updated. The new implementation supports NFS version 4 in addition to 2 and 3. The kernel options for the NFS server and client are changed from NFSSERVER and NFSCLIENT to NFSD and NFSCL. sysctl(8) variables which start with vfs.nfssrv. have been renamed to vfs.nfsd.. The NFS server now supports vfs.nfsd.server_max_nfsvers and vfs.nfsd.server_min_nfsvers sysctl(8) variables to specify the maximum and the minimum NFS version number which the server accepts. The default value is set to 3 and 2, respectively.[r221124]
· The FreeBSD ZFS subsystem has been updated to the SPA (Storage Pool Allocator, also known as zpool) version 28. It now supports data deduplication, triple parity RAIDZ (raidz3), snapshot holds, log device removal, zfs diff, zpool split, zpool import -F, and read-only zpool import.[r219089]
· An implementation of iconv() API libraries and utilities which are standardized in Single UNIX Specification has been imported. These are based on NetBSD's Citrus implementation. Note that these are not built nor installed by default. To build and install them, specify WITH_ICONV=yes in /etc/src.conf and rebuild the base system as described in the FreeBSD Handbook.[r219019]
· A readline(3) API set has been imported into libedit. This is based on NetBSD's implementation and BSD licensed utilities now use it instead of GNU libreadline.[r220370]
· The rtsold(8) and rtadvd(8) daemons now support the RDNSS and DNSSL options described in RFC 6106, “IPv6 Router Advertisement Options for DNS Configuration”. A rtadvctl(8) utility to control the rtadvd(8) daemon has been added.[r222732, r224006]
· The rtld(1) runtime linker now supports shared objects as filters in ELF shared libraries. Both standard and auxiliary filtering have been supported. The rtld(1) linker's processing of a filter defers loading a filtee until a filter symbol is referenced unless the LD_LOADFLTR environment variable is defined or a -z loadfltr option was specified when the filter was created.[r216695]
· A bug in the tftpd(8) daemon has been fixed. It had an interoperability issue when transferring a large file.[r224536]
· The utmp(5) user accounting database has been replaced by utmpx(3). User accounting utilities will now use utmpx database files exclusively. The wtmpcvt(1) utility can be used to convert wtmp files to the new format, making it possible to read them using the updated utilities.[r202188]
· The zpool(8): utility now supports a zpool labelclear command. This allows to wipe the label data from a drive that is not active in a pool.[r224171]