FreeBSD
历史
背景
FreeBSD起源于加州大学伯克利分校。该校学生从AT&T获取了Unix的源代码许可证。学生们开始修改和改进AT&T Unix并且为其修改后的版本命名为Berkeley Unix或BSD,它实现了诸如TCP/IP,虚拟内存和Unix文件系统等功能。BSD项目在1976年由Bill Joy发起。但由于BSD含有从AT&T Unix中继承过来的源码,在使用BSD之前,参与者必须得到AT&T Unix的许可证。
1989年六月,“Networking Release 1(网络版1)”或简写为Net-1——BSD的首个公众版本发布了。发布Net-1之后,BSD的开发者 Keith Bostic ( 英语 : Keith Bostic ) ,建议用可自由再发行代码替换掉原始BSD许可证下的所有AT&T的代码。AT&T代码的替换工作开始了,18月后,绝大多数AT&T代码已经替换完毕。然而,内核中仍然留存着六个包含AT&T代码的文件。BSD开发者们决定发布不含有这六个文件的“Networking Release 2(网络版2)”。Net-2在1991年发行。
FreeBSD的诞生
1992年,NET-2发布几个月后,William Jolitz和Lynne Jolitz,为那六个缺失的文件编写了替代品,将BSD移植到英特尔80386微处理器上,并把他们的新操作系统叫做386BSD 。他们通过一个匿名FTP服务器发布了386BSD。386BSD的开发进度缓慢,并且在搁置了一段时间之后,一个386BSD的用户团体自行分支出来创建了FreeBSD,这样他们就可以对系统做出及时更新。FreeBSD的首个版本在1993年11月发布。
在项目开始早期,一家名为Walnut Creek的经营CDROM多公司,在两个FreeBSD开发者的建议下,同意通过CD-ROM的形式发布他们的操作系统。除此之外,这家公司还雇用了Jordan Hubbard和David Greenman,在其服务器上运行FreeBSD,召开FreeBSD会议并出版相关书籍,其中包括Greg Lehey所著的《The Complete FreeBSD》。1997年,FreeBSD被誉为该家公司“最成功产品”。这家公司后来先后更名为The FreeBSD Mall和iXSystems。
现在,FreeBSD被许多诸如IBM,Nokia,Juniper Networks和NetApp等公司用来打造自己的产品。现在苹果的Mac OS操作系统的某些部分就是基于FreeBSD的。PlayStation 3 ,PlayStation 4 和Nintendo Switch 的操作系统也基于FreeBSD开发。Netflix,WhatsApp,和FlightAware这些成功的网络型公司也在使用FreeBSD。
诉讼
386BSD和FreeBSD均被源自1992年的BSD发行版。1992年1月, BSDi发布BSD/386,后更名为BSD / OS,是基于BSD在1992年的发行版的,和FreeBSD相似的操作系统。AT&T声称BSDi违反了AT&T的源代码许可协议,并对其提起诉讼。该场诉讼达成庭外和解,相关细节未被。公众所知的只有BSDi将转换4.4BSD-Lite为新的源码基础。虽然没有参与诉讼,有人建议FreeBSD他们也应该将源码基础转到4.4BSD-精简版。1994年11月,FreeBSD 2.0发布,这是FreeBSD的首个不含任何AT&T代码的版本。
特点
网络
FreeBSD的TCP/IP栈区是基于BSD 4.2来实现的,因为它卓越的协议表现,从而被普遍的接受。FreeBSD还支持IPv6,SCTP,IPSec和无线网络(Wi-Fi)。其IPv6和IPSec栈区是由KAME Project得到的。同样的,FreeBSD支持IPX和AppleTalk协议,但是它们被认为是陈旧的,因此被计划在未来的FreeBSD 11.0上停止支持。
从FreeBSD 5.4开始,共享地址冗余协定(CARP)就从OpenBSD Project中被接受。CARP允许多节点共享IP地址群。所以如果一个节点出现瘫痪,其他的节点仍然能接收请求。
存储
FreeBSD的存储方式,有多种独特的特性。例如 软更新 ( 英语 : Soft updates ) 可以在系统崩溃的时候用来保护Unix文件系统(一种通用于BSD的文件系统)的一致性。而文件系统快照,则可以允许有效率的制作Unix文件系统的瞬时快照。另外通过 GEOM ( 英语 : GEOM ) 这个模块性基础体系,就可以对RAID提供支持(仅限于RAID 0和1,RAID 3目前支持)。除此之外还可以支持 全盘加密 ( 英语 : Disk encryption ) 、日志文件系统、串联机制、高速缓存存储器、以及访问基于网络的系统。 GEOM ( 英语 : GEOM ) 也允许创建复杂的结合(“链接”)机制的存储解决方案。
FreeBSD支持两种数据加密基础体系: GBDE ( 英语 : GBDE ) 和 Geli ( 英语 : Geli (software) ) 。两者操作均在磁盘层级上。 GBDE ( 英语 : GBDE ) 是由 波尔-亨宁 · 坎普 ( 英语 : Poul-Henning Kamp ) 所编写的,并在遵守双BSD许可证(即“简化BSD许可证”和“FreeBSD许可证”二者)的情况下发布的。而 Geli ( 英语 : Geli (software) ) 则是 GBDE ( 英语 : GBDE ) 的替代品,它第一次在FreeBSD 6.0上出现,由帕·雅·戴夫(Pawel Jakub Dawidek)编写。
FreeBSD支持UFS、ZFS等多种文件系统。
安全
移植
第三方软件
兼容Linux
GNU/Linux上的软件的源代码经过编译,大多数也可以在FreeBSD上运行。
开发
管理架构
分支
基金会
许可协议
FreeBSD在BSD许可证下发布 ,允许任何人在保留版权和许可协议信息的前提下随意使用和发行。BSD许可协议并不限制将FreeBSD的源代码在另一个协议下发行,因此任何团体都可以自由地将FreeBSD代码融入它们的产品之中去。
发展团队
FreeBSD发展采用Core Team的方式。Core Team的成员决定整个FreeBSD计划的大方向,对于开发者问的问题有最后的决定权,其他的开发者也可以提交建设或是他们修改过的源代码,但是Core Team保留最终的决定权,决定是否将这功能放进FreeBSD。这种方式与Linux发展大相径庭。
Contributor
也可以说是Submitter,无FreeBSD的CVS的访问权限,但是可以通过其它的方式,例如提交Problem Reports或是在Mailing list上面参与讨论,来对FreeBSD做出贡献。
Committer
有对FreeBSD的Subversion访问的权限,可以将他的源代码或是文件送到版本库里面。一个committer必须要在过去的12个月中有commit的动作。而一个活跃的committer指在每个月至少都有一次以上的commit动作。
虽然说没有必要限制一个有commit权限的人只能在源代码树中可以访问的地方,但是如果一个committer要在他/她没有做出贡献或是不熟悉的地方,他/她必须要读那个地方的历史记录,还有MAINTAINER档案,确认这个部分的维护者对于更改这边的源代码有没有什么特殊的要求。
Core Team
Core Team成员由committer互相推选出来,是整个FreeBSD计划的领导人,他们提升活跃的contributor成为committer,还有可以指派“Hat”(指在计划中负责一些特定工作或领域的人),也是对于决定整个计划的大方向的最后仲裁者。在2004年7月1日,core team有9位成员,而core team选举每两年举行一次。
平台
FreeBSD所支持的平台依照支持程度分成四个等级。 第一线平台(Tier 1,完整支持平台)目前包括i386、AMD64。第二线平台(Tier 2,发展平台)包括ARM、IA-64、PC98、PowerPC、 SPARC64 ( 英语 : SPARC64 ) 。对于第一线与第二线平台,FreeBSD会维持维护及稳定性,同时大多数的新功能也都会被要求在这些平台上能够正常运作。
第三线平台(Tier 3,实验平台)目前包括了MIPS及 S/390 ( 英语 : IBM ESA/390 ) ,这个等级的平台不被FreeBSD正式支持。
其他的平台都被归类到第四线平台。
版本与历史
FreeBSD初期历史
FreeBSD的发展始于1993年,起源于 386BSD ( 英语 : 386BSD ) 。 然而,因为386BSD原始码的合理性受到质疑以及Novell(当时UNIX的版权拥有者)与柏克莱接连而来的诉讼,FreeBSD在1995年1月发布的2.0-RELEASE中以柏克莱加州大学的4.4BSD-Lite Release全面改写。FreeBSD Handbook中有更多FreeBSD的发展历史。
FreeBSD 2.0最值得注意的部分也许是对卡内基美隆大学的Mach Virtual Memory系统翻修以及FreeBSD Ports system的发明。前者对于高负荷的系统优化,后者则是创建了一套简单且强大的机制维护第三方软件。有不少大型站台都使用FreeBSD,像是cdrom.com(一个巨大的软件收集站台),Hotmail以及Yahoo。
FreeBSD 3.0则引入了ELF binary格式,并开始支持多CPU系统(SMP,Symmetric multiprocessing)以及64位Alpha平台。3.x对于系统做了非常多的改革,这些措施在当时并没有带来好处,但却是4.X成功的基石。
FreeBSD 4
4.0-RELEASE于2000年3月发行,最后一个版本4.11-RELEASE于2005年1月发行,并支持到2007年1月 。FreeBSD 4也是FreeBSD最长寿的主版本。在FreeBSD 4所发展出来的kqueue也被移植到各种不同BSD平台。
FreeBSD 5
Free BSD 5的最后一个版本FreeBSD5.5于2006年五月发行。
在FreeBSD 4的SMP架构下,在同一时间内只允许一个CPU进入核心(即Giant Lock),FreeBSD 5最大的改变在于改善底层核心Locking机制,审视并改写核心程序代码,使得不同的CPU可以同时进入系统核心,藉以增加效率。
另外一个重大的改变在于自5.3开始支持m:n线程的KSE(Kernel Scheduled Entities),表示m个用户线程共享n个核心线程的模式。
这个版本的许多贡献是由于商业化版本的BSD OS团队的支持。
FreeBSD 6
FreeBSD 6为一个-STABLE发展版本,FreeBSD 6.3在2008年1月18日发行 ,这个版本主要针对软件的更新,并加入lagg(可以对多张网卡操作)的支持,并引入重新改写的unionfs。FreeBSD 6.4在2008年11月28日发行 。
FreeBSD 7
FreeBSD 7为目前第二个-STABLE发展版本,在2007年6月19日进入发行程序 ,2008年2月27日7.0-RELEASE正式发布。2010年3月23日FreeBSD 7.3-RELEASE正式发布 。新增的功能包括了:
SCTP(实做完成)
日志式UFS文件系统:gjournal(实做完成)
移植升阳所发展的DTrace(实做完成,但还未交付至CVS)
移植升阳所发展的ZFS文件系统(实做完成)
使用GCC4(移植完成,目前为4.2.1)
对ARM与MIPS平台的支持
重写过的USBstack(实做完成,但还未交付至CVS)
Scalable concurrent malloc实做(已经可以使用)
ULE调度表2.0(SCHED_ULE,实做完成) ,并修改加强为SCHED_SMP(实做完成),在交付至CVS时的正式名称为ULE 3.0 ,这个版本在8核心的机器上以sysbenchMySQL测试的结果,速度上比Linux2.6快大约10%(无论是使用Google的tcmalloc或是glibc+cfs)
Linux2.6模拟层(已经可以使用)
Camellia Block Cipher(实做完成)
ZFS的运行
FreeBSD 8
2010年7月24日发布FreeBSD 8.1-RELEASE, 增加如下新特性:
虚拟化方面:Xen DOM-U、VirtualBox guest及host支持、层次式jail。
NFS:对NFSv3 GSSAPI的支持,以及试验性的NFSv4客户端和服务器。
802.1 D3.03 wireless mesh网络,以及虚拟Access Point支持。
ZFS不再是试验性的了。
基于Juniper Networks提供MIPS处理器的实验性支持。
SMP扩展性的增强,显着改善在16核心处理器系统中的性能。
VFS加锁的重新实现,显着改善文件系统的可扩展性。
显着缓解缓冲区溢出和内核空指针问题。
可扩展的内核安全框架(MAC Framework)现已正式可用。
完全更新的USB堆栈改善了性能和设备兼容性,增加了USB target模式。
FreeBSD 9
FreeBSD 9.0于2012年1月发布,该版本是第一个9.x的FreeBSD稳定分支。该版本具有以下特性:
采用了新的安装程序bsdinstall
ZFS和NFS文件系统得到改进
升级了ATA/SATA驱动并支持AHCI
采用LLVM/Clang代替GCC
高效的SSH(HPN-SSH)
PowerPC版支持索尼的PS3
FreeBSD 9.1于2012年11月发布
FreeBSD 9.2于2013年10月发布
FreeBSD 9.3于2014年7月发布
FreeBSD 10
FreeBSD 10.0于2014年1月发布,这一版本包含的重要改进包括:
在支持的平台上,clang(1) 取代GCC成为了默认的系统编译器。
系统中引入了 Unbound 作为本地的缓存DNS服务器。
基本系统中删除了 BIND。
使用来自NetBSD的 bmake(1) 取代了原有的make(1)。
使用了新的 pkg(7) 作为包管理工具。
删去了旧式的包管理工具 pkg_add(1)、 pkg_delete(1), 及其相关工具。
对虚拟化支持进行了大幅强化,新增了 bhyve ( 英语 : Bhyve ) (8) 虚拟机,以及 virtio(4) 和对微软 Hyper-V ( 英语 : Hyper-V ) 的原生半虚拟化支持。
为ZFS添加了用于 SSD 的 TRIM 支持。
为ZFS添加了高性能的LZ4压缩算法支持。
FreeBSD 10.1于2014年11月6日正式发布
FreeBSD 10.2于2015年8月13日正式发布。主要改进包括 :
resolvconf(8) 更新至 3.7.0,改进了DNS隐私保护。
ntp 更新至 4.2.8p3,修正了大量先前版本的问题。
新增了用于支持虚拟化环境的 rc(8) 脚本 growfs,用于在系统首次引导时扩大根文件系统。
对Linux(R) ABI兼容支持进行了更新,以支持Centos(TM) 6 ports.
将 drm 更新至Linux(R) 3.8.13,支持同时运行多个 X server。
针对 FreeBSD/arm 平台的大量更新及改进。
多个ZFS相关性能及可靠性改进,增加了大块(1MB)支持。
GNOME版本更新到了 3.14.2.
KDE版本更新到了 4.14.3.
FreeBSD 10.3于2016年3月25日正式发布
FreeBSD 11
FreeBSD 11.0于2016年9月22日正式发布
时间线
命名规则
A-CURRENT
A.B-STABLE
A.B-BETA 、 A.B-RC
A.B-RELEASE
A.B.C-BETA 、 A.B.C-RC 、 A.B.C-RELEASE
许可证
FreeBSD包含了GNU通用公共许可证、GNU宽通用公共许可证、ISC许可证、通用开发与散布许可证和啤酒软件许可证的程序代码,也有使用三条款和四条款的BSD许可证的程序代码。另外有些驱动程序也包涵了二进制大型对象,像是Atheros公司的硬件抽象层。这使得所有人都可以自由地使用还有再散布FreeBSD。
不过,FreeBSD的核心和新开发的程序代码大多都使用两条款的BSD许可证释出,许多使用GPL的程序代码都必须经过净室工程,以其他授权方式重写,这主要是避免整个核心受到GPL影响。
已知问题
在安装上,一般来说,FreeBSD所支持的硬件较Linux为少。安装前请参考FreeBSD网站上Release Information 里要安装版本的Hardware Notes。
压缩/解压缩工具 /usr/bin/tar丢失的问题,大多数的第三方包的安装都是用tar去解压缩的,有些第三方包会覆盖这个tar,如果新的tar无法正常产生,可能导致之后其它的第三方包都无法安装了。
有些第三方包在安装时并不提供默认的配置文件,因此在安装完后可能无法正常起动它们,需要另外手动去创建它们运行所需的配置文件。
其他已知问题
相关书籍
Absolute BSD, The Ultimate Guide to FreeBSD . Michael Lucas. No Starch Press, July 2002. ISBN 1-886411-74-3.
BSD Hacks, 100 Industrial-Strength tips for BSD users and administrators . Dru Lavigne. O"Reilly, May 2004. ISBN 0-596-00679-9.
The Complete FreeBSD, 4th Edition, Documentation from the Source . Greg Lehey. O"Reilly, April 2003 ISBN 0-596-00516-4.
The Design and Implementation of the FreeBSD Operating System . Marshall Kirk McKusick and George V. Neville-Neil. Pearson Education. ISBN 0-201-70245-2. Expected availability August 2004.
The FreeBSD Corporate Networkers Guide . Ted Mittelstaedt. Addison-Wesley, December 2000. Paperback, book & CD edition, 401 pages. ISBN 0-201-70481-1.
Designing BSD Rootkits: A Introduction to Kernel Hacking . Joseph Kong, No Starch Press, US, March 29 2007. Paperback, 144 pages, ISBN 1-59327-142-5.
IRC
正体中文:
Freenode上的#bsdchat
其他channel可以参考FreeBSD官方wiki的IrcChannels页面。
参见
BSD
386BSD
DragonFly BSD
NetBSD
OpenBSD
BSD小恶魔
FreeSBIE
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
相关资料
- 有价值
- 一般般
- 没价值