第 1.2 节 FreeBSD 与哲学家 George Berkeley
什么是 FreeBSD?
问:如何定义 FreeBSD?答:一款开源的类 UNIX 操作系统。
BSD 最初是由加州大学伯克利分校(University of California, Berkeley)所开发的,意为 Berkeley Software Distribution
(伯克利软件套件)。
FreeBSD 不是 Linux,亦不是 UNIX,是类 UNIX
UNIX -> Networking Release 1->Networking Release 2 ->386BSD -> FreeBSD 1.0
386BSD -> 诉讼(1991-1994) -> 4.4 BSD-Lite -> FreeBSD 2.0
“I have never even checked 386BSD out; when I started on Linux it wast available”——Linus
BSD 与哲学家 George Berkeley
值得注意地是,Berkeley 伯克利之名来自著名的近代伟大的英国(爱尔兰)经验论哲学家乔治·贝克莱(George Berkeley,1685-1753,在中文音译上虽然存在不同写法,但“Berkeley”的拼写在英文中是统一的,但是美音和英音发音亦不同),伯克利市和伯克利大学都是来源他的名字。由于政治正确(黑奴问题)和翻译习惯(曾译为巴克莱等等)的影响,这一关联在汉语世界中鲜有人知。
贝克莱主教以其形而上学思想,特别是对牛顿绝对时空观的反对,启发了包括爱因斯坦在内的许多 20 世纪科学家,在某种意义上引领了现代科技革命。他的著作还引发了数学史上关于无穷小量的数学哲学讨论(即贝克莱悖论,参见 1734,《分析学家;或一篇致一位不信神数学家的论文,其中审查一下近代分析学的对象、原则及论断是不是比宗教的神秘、信仰的要点有更清晰的表达,或更明显的推理》)。
esse est percipi, to be is to be perceived(存在就是被感知)。——【英】George Berkeley
需要注意,上述命题并不代表贝克莱主张主观唯心主义,也绝不代表他否认客观物质的存在。以上都是典型的错误认识。
参见《人类知识原理》等著作里是承认且论证过上帝必然存在的。在贝克莱哲学中,物质存在的客观性与上帝存在并不冲突。这很好理解:不存在任何独立且不依赖于人的思想与知觉的客观物质(我们所理解的客观物质必然是我们的思想和知觉所能理解的,否则没有意义),如果有,那是不可知的,则等同于不存在,也就没有设定其存在的意义(另外,如果承认物质的不可知性,那将不是纯粹的唯物主义,和贝克莱哲学亦无太大分别)。故,我们认为的流俗的客观存在必定是要靠我们的知觉才能感知,即——存在就是被感知。除此以外的客观存在,是不可知的,也没有意义。所以,贝克莱认为,物质存在依赖于心灵的感知,没有正在被感知却存在着的物质,是不可设想的。但是众所周知,我们的世界是存在的(如果你否认此处,和贝克莱哲学亦无太大分别)。故,为了确保这一点,上帝(或神)是必然存在的。
思考题
有关他的思想,最著名的一则哲学实验是:“假如一棵树在森林里倒下而没有人在附近听见,它有没有发出声音?”
如果你认为没有。恭喜你,你现在是贝克莱者了。
如果你认为有,并给出了物理学(或其他科学上)的证明。恭喜你,你现在是贝克莱者了。
如果你认为有没有不一定或者不可知或者别的什么情况。恭喜你,你现在是贝克莱者了。
以上,为什么?你怎么看。
George Berkeley 乔治·贝克莱生平简介
George Berkeley(1685.3.12—1753.1.14),2023 年是他逝世 270 周年。
1685.3.12 出生于爱尔兰的基尔肯尼,乡绅家庭,是家中长子
1696 年,11 岁时进入基尔肯尼学院
1700 年,15 岁时进入都柏林圣三一学院
1704 年,19 岁时被授予文学学士学位
1707 年,22 岁时被授予文学硕士学位,同年留校任特别研究员,讲授希腊语
1709 年,24 岁时任爱尔兰教会执事(为满足学院规定)。同年发表第一篇著作《视觉新论》,哲学思想基本成形
1710 年,25 岁时任爱尔兰教会牧师。同年发表《人类知识原理》
1713 年,28 岁时发表《海拉斯与斐洛诺斯对话三篇》
1717 年,32 岁时被任命为圣三一学院高级研究员,但他选择离开学院,旅欧 4 年
1721 年,36 岁时被授予神学博士学位,同年(或次年)任爱尔兰教会德罗莫尔教区座堂主任牧师(Dean);并再次选择留在都柏林圣三一学院,讲授神学和希伯来语
1723 年,37 岁时获得了一笔来自朋友的巨额遗产
1724 年,39 岁时任爱尔兰教会德里教区座堂主任牧师(Dean),但从未到职
1725 年,40 岁时准备在百慕大筹建一所神学院,但他一生从未去过百慕大。同年为筹款放弃了先前的座堂主任牧师职位
1728 年,43 岁时与 Anne Forster 结婚。6 周后前往美洲,希望获得赞助办学。他们在罗德岛度过了几年,买下了一座种植园,又买了几名非洲黑奴在种植园里工作(存在争议)
1729 年,44 岁时有了自己的第一个孩子
1731 年,46 岁时因建学无望,返回伦敦。后将罗德岛的地产和图书馆捐赠给了耶鲁大学。在日后,他将大部分财产和用于筹备学校的物资都捐赠给了相关大学
1734.1.18 49 岁时被任命为克洛因主教(Bishop),同年 5 月 19 日祝胜;发表《分析家》一文。后专注于基督事业,淡出人们的视野
1739 伦敦育婴堂医院成立,他积极参与其中
1744 年,59 岁时出版《西利斯:关于焦油水的功效以及与之有关的、相互引发的其他课题的哲学反思和探讨之链》,他在书中主张将松焦油作为治疗疾病的万金油。该书是他生前销量最高的一本。但是很神奇,据记载,同他的书籍销量一样,他使用这种疗法为患者治疗也取得了同样显著的疗效(来源请求)
1752 年,67 岁时放弃克洛因主教职位,移居牛津
1753.1.14 67 岁时,在妻子 Anne Forster 诵读《圣经》的陪伴下,他在牛津安息,归于主怀,永享天国安宁
1786 年,妻子 Anne Forster 离世
FreeBSD 时间表
1962 年 分时操作系统(Timesharing OS)
在 20 世纪 60 年代初出现了分时操作系统,其中最早的一个分时系统出现英国曼彻斯特项目(Manchester Project in England)设计的 Atlas 品牌计算机上,即 Atlas 监控程序。在那个时代,分时共享系统意味着两个人共用同一台计算机,通常需要安排一张小时时间表来规划他们使用计算机的时间。
1964 年 MULTICS(多任务信息与计算系统)
Multics 的最初规划和开发始于 1964 年的马萨诸塞州的剑桥市。最初,Multics 是由麻省理工学院(Fernando Corbató 领导的 MAC 项目)与通用电气公司和贝尔实验室合作的项目。它是在专为操作系统设计的通用电气 645 计算机上开发的;首个完整系统于 1967 年 1 月交付给麻省理工学院。
1969 年 UNIX(UNIX 操作系统)
在贝尔实验室退出 Multics 项目前,Dennis Ritchie 和 Ken Thompson 已经感受到了 Multics 的潜力。他们从贝尔实验室法务部门获得了资金,购买了一台更强大的 PDP-11/20 机器。在 1969 年,Ken Thompson、Dennis Ritchie 等人开始着手开发一款新程序,以充分利用这台功能更强大的计算机。这个程序被称为 Unics(Uniplexed Information and Computing Service,非复用信息和计算机服务)。
1972 年 UNIX 代码迁移到 C 语言
Dennis Ritchie 决定为 UNIX 开发一种高级汇编语言,其中的语句可以翻译成两到三条指令。这促使他开发了 C 编程语言。第四版研究 UNIX(Research Unix)使用 C 语言重写。这使得 UNIX 具备了可移植性,从而改写了操作系统的历史。
1974 年 UNIX 被引入加州大学伯克利分校
1974 年,加州大学伯克利分校的 Bob Fabry 教授从 AT&T 获得了 UNIX 的源代码许可。Bob Fabry 此前在 1973 年的 ACM 操作系统原理研讨会(Association for Computing Machinery)上见过 UNIX 4,并有意将其引入该大学。计算机系统研究小组(CSRG)开始修改和改进 AT&T Research Unix。他们将这个修改后的版本称为“BSD Unix”或“BSD”。
1978 年 3 月 9 日 1BSD 发布
基于 UNIX 创建的伯克利软件发行版(1BSD)是 UNIX 第六版的一个附加组件,而非独立的完整操作系统。此版本发行了大约 30 份副本。
1979 年 5 月 10 日 2BSD 发布
第二款伯克利软件发行版(2BSD)于 1979 年 5 月发布,涉及 1BSD 软件的更新,以及由 Bill Joy 新开发的两个至今仍在 Unix 系统上使用的程序:vi 文本编辑器(ex 的可视化版本)和 Csh。2BSD 是 Bill Joy 参与 PDP-11 工作的最后一个 BSD 版本。发行了大约 75 份副本。
1980 年 6 月 DARPA 的赞助
在 1980 年初,DARPA(Defense Advanced Research Projects Agency,美国国防高级研究计划局)当时正在寻找一种有助于军事项目的操作系统。Bill Joy 关于 UNIX 系统(特别是 BSD)功能的一篇论文引起了他们的注意。他们在 1980 年 6 月开始赞助伯克利进行相关工作。
1983 年 8 月 4.2BSD 发布
4.2BSD 正式发布于 1983 年 8 月。值得注意的是,这是在 Bill Joy 离开(伯克利),并与他人创建了 Sun Microsystems(太阳计算机系统公司)后(1982 年)的第一个版本。它也标志着 BSD 的吉祥物的首次问世,出现在 John Lasseter 的画作中,即 USENIX 发行的纸质手册的封面上。这次发布了 1000 余个副本,意味着大量的计算机都在使用。
1988 年 6 月 4.3BSD-Tahoe
随着开发人员逐渐淘汰老旧的 VAX 平台,4.3BSD-Tahoe 发布了针对 Power 6/32 平台(TAHOE)的版本。这个发布相当有价值,因为它将 BSD 中的机器相关代码与机器无关代码分离开来,从而提高了系统的后期可移植性。
1991 年 386BSD 和 Net/2
Keith Bostic 发起了一个项目,旨在不使用 AT&T 的代码的前提下,重新实现大多数独立的 Unix 软件。最终发布了 Networking Release 2(Net/2)——一款几乎完整的可自由分发的操作系统。在 Net/2 的基础上,BSD 向英特尔 80386 架构分别移植了两个版本:由 William Jolitz 开发的免费的 386BSD、由 Berkeley Software Design(BSDi)开发的专有 BSD/386(后来更名为 BSD/OS)。386BSD 本身昙花一现,但成为随后不久开始的 NetBSD 和 FreeBSD 项目的原初代码基础。
1992 年 USL 诉讼案
BSDi 很快就陷入了与 AT&T 的 Unix System Laboratories(USL,Unix 系统实验室)子公司的法律纠纷中,当时 USL 是 System V 版权和 Unix 商标的所有者。USL 对 BSDi 的诉讼于 1992 年提起,并导致对 Net/2 的分发禁令。该诉讼于 1994 年 1 月达成和解。在 BSD 的 18,000 个文件中,仅须删除三个文件;并对 70 个文件进行修改,用以展示 USL 版权声明。本次和解为首个 FreeBSD RELEASE 的发布铺平了道路。
1993 年 6 月 FreeBSD 的创建
386BSD 的开发进展缓慢。在经过一段时间的搁置后,为了能够使操作系统保持最新状态,一群 386BSD 用户决定自力更生,创建了 FreeBSD。1993 年 6 月 19 日,这个项目选择了 FreeBSD 这个名字。首个 FreeBSD RELEASE 发布于 1993 年 11 月。
1994 年 8 月 FreeBSD Ports
FreeBSD 的 Ports 和软件包为用户和管理员提供了一种简单的安装应用程序的方式。Ports 现在提供了多达 34,000 个 port。它们首次现身于 1994 年,当时 Jordan Hubbard 将“port make macros”提交到 FreeBSD 的 CVS 存储库中,目的是给他的软件包安装套件“Makefile”打补丁。
1994 年 11 月 22 日 IPFW
ipfirewall 是在 FreeBSD 2.0-RELEASE 中被引入的,这种“先入为主(First Match)”防火墙自此成为操作系统的重要组成部分。ipfw 曾作为 Mac OS X 的内置防火墙而广泛使用。
1996 年 8 月 FreeBSD 2.1.5
FreeBSD 2.1.5 于 1996 年 8 月发布,迅速在互联网服务提供商(ISP)和商业社区中广受欢迎。该版本对于 FreeBSD 来说是一个巨大的成功。
1998 年 5 月 软更新(Soft Updates)
软更新依赖跟踪系统于 1998 年 5 月被 FreeBSD 采用。软更新旨在通过跟踪和执行更新之间的依赖关系,保持文件系统元数据的完整性,以防发生崩溃、停电。
1998 年 10 月 16 日 FreeBSD 3.0-RELEASE
FreeBSD 3.0-RELEASE 于 1998 年 10 月 16 日宣布发布,为 i386 带来了最原始的对称多处理(SMP)支持。3.0-RELEASE 还默认使用了 SCSI 通用访问方法(CAM)。
1998 年 11 月 29 日 FreeBSD 2.2.8-RELEASE
FreeBSD 2.2.8-RELEASE 于 1998 年 11 月 29 日发布(在 FreeBSD 3 发布后一个月)。FreeBSD 2 的最终分支涉及 sendfile 和 dummynet 两个关键特性,这些特性在后续的 FreeBSD 版本中得到了进一步的发展。
1999 年 10 月 17 日 首届 BSD 大会
首届 FreeBSD 大会(FreeBSDCon'99)在加利福尼亚州伯克利举行。来自世界各地的 300 多名开发者和用户参加了此次活动,标志着这个操作系统在受欢迎度和影响力上一个的重要里程碑。
2000 年 3 月 14 日 FreeBSD 4.0-RELEASE
于 2000 年 3 月 14 日宣布发布的 FreeBSD 4.0-RELEASE 带来了大量的新功能和工具。该版本包括原始的 IPv6 支持和 IPsec 支持,两者都依赖于 KAME 代码;还有 OpenSSH、过滤器 accept()
以及带有基本支持的 802.11b WiFi 的 wi(4)。
2000 年 3 月 14 日 FreeBSD Jail
FreeBSD Jail 是在 2000 年初发布的 FreeBSD 4.0 中被引入的。Jail 机制是操作系统级别的虚拟化实现,能让系统管理员将一个 FreeBSD 系统分割为多个独立的小系统("Jail")。这使得系统管理员能够更好地保护和优化他们的 FreeBSD 系统。
2000 年 3 月 15 日 FreeBSD 基金会成立
FreeBSD 基金会是一个总部位于美国的非营利组织,注册为 501(c)(3) 机构,致力于支持 FreeBSD 项目、其开发和社区。资金来自个人和企业的捐款,用于赞助开发人员进行特定活动、购买硬件和网络基础设施,并提供开发者峰会的差旅津贴。该基金会由 Justin Gibbs 于 2000 年 3 月 15 日创立。
2000 年 7 月 27 日 kqueue(2)
kqueue(2) 是取代 select/poll 的创新解决方案,于 2000 年 7 月 27 日随着 FreeBSD 4.1-RELEASE 引入。这个可扩展的事件通知接口启发了 Linux 的 epoll() 机制。
2000 年 10 月 17 日 首次核心团队选举
尽管此前已经存在一个自我推选的核心团队,但首次核心团队选举是在 2000 年 9 月举行的。当时任命了由 9 名成员组成的一个团队,自此以后每两年举行一次选举。
2001 年 9 月 EuroBSDCon
EuroBSDCon 2001 于 2001 年末在英国布莱顿举行。随着全球社区的不断扩大,EuroBSDCon 的目标是聚集在 BSD 操作系统家族及相关项目上工作的用户和开发者。
2003 年 1 月 19 日 FreeBSD 5.0-RELEASE
FreeBSD 5.0-RELEASE 经历了近 3 年的开发,由于引入了先进的多线程内核,提供更好的 SMP 支持,因此备受期待。
2004 年 1 月 9 日 AMD64 磁盘镜像
在版本 5.1 实验性地支持 amd64 后,5.2-RELEASE 正式支持了 amd64。amd64 成为了第一个一级 64 位平台。
2004 年 3 月 12 日 首届 AsiaBSDCon 和 BSDCan
在 EuroBSDCon 获得成功之后,首届 AsiaBSDCon 于 2004 年 3 月 12 日发起,紧随其后的是 BSDCan——于 5 月 13 日举行。随着 FreeBSD 社区的不断发展壮大,全球范围内对于以 BSD 为重点的会议的需求也随之增长。
2004 年 5 月 1 日 谷歌代码之夏
FreeBSD 基金会在首年度的谷歌编程之夏就参与其中。谷歌编程之夏为新的开发者提供了一个机会,让他们参与当前的开源编程项目。在项目结束后,许多参与该项目的学生成为了 FreeBSD 的贡献者。
2004 年 11 月 3 日 移植 PF
在 2006 年,原本设计用于 OpenBSD 的 Packet Filter(简称 PF)被移植到了 FreeBSD,与 5.3-RELEASE 一同分发。
2004 年 11 月 17 日 Libarchive
Libarchive 最初是为 FreeBSD 5.3 开发的,该发行版于 2004 年末发布。它是一个用 C 语言编写的程序库,提供对多种不同存档格式的流式访问功能。
2005 年 8 月 首位执行董事
Deb Goodkin 于 2005 年加入基金会,成为首位执行董事。她之前在数据存储设备的市场营销、销售和开发领域有超过 20 年的工作经验。
2005 年 10 月 8 日 新的 FreeBSD Logo
举行了一项 Logo 设计竞赛,由 Anton K. Gural 设计的 Logo 获胜(当前仍在使用)。
2005 年 11 月 4 日 FREEBSD 6.0-RELEASE
FreeBSD 6.0-RELEASE 于 2005 年 11 月 4 日发布。FreeBSD 6.0 首次提交了支持 32 位 Arm 的 sys/arm/arm,丰富了 802.11 WiFi 支持,扩展了高级功能,并通过 libthr(3) 和进一步的内核修改增加了 1:1 用户级线程。
2007 年 JEMALLOC
Jason Evans 于 2005 年开发了 jemalloc,这是一款内存分配器。与此同时,FreeBSD 需要一个可扩展的多处理器内存分配器,因此 Evans 将 jemalloc 集成到了 FreeBSD 的 libc 中,并改进了其可扩展性和碎片化行为。
2008 年 2 月 27 日 FREEBSD 7.0-RELEASE
因为担心 ULE 调度器的就绪状态,在发布时, FreeBSD 7.0-RELEASE 将其作为内核可选参数搭载,它在下一个稳定版本中成为了默认的调度程序。FreeBSD 7.0 还添加了 SCTP 协议以及与网络、音频和多处理器性能相关的重大更新。
2008 年 3 月 ZFS
在 2005 年,Sun Microsystems 开发了一种新型文件系统,最终产物是 ZFS。ZFS 一款集成了文件系统和逻辑卷管理器的系统。该系统具有可扩展性,并提供了广泛的数据完整性保护和高效的数据压缩功能。ZFS 于 2008 年初添加到 FreeBSD 系统中。
2009 年 1 月 6 日 DTrace
Sun Microsystems 开发了 DTrace,DTrace 可用于实时调试生产系统中的内核和应用程序问题。尽管该程序最初是为 Solaris 开发的,但它成为 FreeBSD 的标准组成部分,并为 DTrace 提供了全面支持。
2009 年 11 月 25 日 FreeBSD 8.0-RELEASE
FreeBSD 8.0-RELEASE 于 2009 年 11 月 25 日宣布发布,其中包含了 XEN domU 支持、VNET、透明超级页、改进的 ZFS 支持以及新的 USB 堆栈,涉及 USB 3.0 支持。
2010 年 8 月 Capsicum
Capsicum 是一个轻量级的操作系统能力和沙盒框架。它可以用于应用程序分隔、将较大的软件体系分解为隔离的组件,并限制软件漏洞的影响。Capsicum 最初由剑桥大学开发,并首次作为可选功能在 FreeBSD 9.0 中发布,后来成为 FreeBSD 10.0 中的默认功能。
2012 年 CHERI
在 2012 年,剑桥大学开始开发了 Capability Hardware Enhanced RISC Instructions (CHERI),这是基于之前的 Capsicum 项目的发展而来的。CHERI 将 Capsicum 的混合能力模型转移到 CPU 架构领域,实现在进程地址空间内的细粒度隔离,并支持当前软件设计。
2012 年 POUDRIERE
Poudriere 是一个利用 jail 来测试 port 并后续构建 FreeBSD 镜像的工具,它被添加到了 Ports 中。
2012 年 1 月 12 日 FREEBSD 9.0-RELEASE
FreeBSD 9.0-RELEASE 于 2012 年 1 月 12 日发布,其中包括了全新的安装程序——bsdinstall。其他主要特性包括软更新日志(SUJ)、NFS 版本 4 和模块化拥塞控制。FreeBSD 9 是索尼用于开发 PlayStation 4 操作系统(Obris OS)所使用的版本。
2012 年 4 月 12 日 CLANG/LLVM
LLVM 项目是一组模块化和可重用的编译器和工具链技术。Clang 项目为 LLVM 项目提供了 C 语言前端和工具基础设施。这些程序目前是 FreeBSD 的编译基础设施。
2013 年 2 月 28 日 从 CVS 迁移到 Subversion
由于大多数 port 已经在 Subversion 中进行开发,于 2013 年 2 月 28 日正式完成了从 CVS 到 Subversion 的迁移。在此之后,FreeBSD Ports 不再使用 CVS。
2013 年 9 月 17 日 开源 ZFS 项目启动
ZFS 开源项目衍生于 OpenSolaris 项目。在 2013 年 9 月 17 日,ZFS 开源项目宣布 OpenZFS 成为 ZFS 的继任者,并创建了一个正式的社区来维持开发和支持。
2014 年 1 月 20 日 FreeBSD 10.0-RELEASE
于 2014 年 1 月 20 日宣布发布 FreeBSD 10.0-RELEASE,带来了大量的新功能和工具。10.0 版本搭载了 pkg(7)(并切换到 pkgng),这个新的软件包管理工具能让用户不再需要手动编译 Port。该发布还包括 FUSE 实现、高级 iSCSI 支持(包括目标(服务器)和发起者(客户端))、VirtIO 驱动程序、bhyve 虚拟化技术和 amd64 架构上的 UEFI 支持。
2016 年 10 月 10 日 FREEBSD 11.0-RELEASE
于 2016 年 10 月 10 日宣布发布 FreeBSD 11.0-RELEASE。该版本包含了对无线网络的多项改进以及集成 UDP-lite。最重要的是,FreeBSD 11 还涉及对 aarch64(arm64)的支持,aarch64 最初被分类为二级架构。
2017 年 6 月 19 日 首个"FreeBSD Day"
国际 FreeBSD 日是每年一度的庆祝活动,旨在赞扬 FreeBSD 对技术的开创性和持续影响,并纪念其传承的价值。
2018 年 12 月 11 日 FREEBSD 12.0-RELEASE
2018 年 12 月 11 日发布的 FreeBSD 12.0 版本增强了对 AMD CPU 的支持,并显著提升了对现代显卡的支持。此外,还新增了开放指令集架构(ISA)RISC-V 的支持。
2021 年 4 月 6 日 Git 迁移完成
于 2021 年 4 月 6 日 完成了从 Subversion 到 Git 的迁移。此过程始于 2019 年 5 月的 DevSummit,当时成立了一个 Git 工作小组。
2021 年 4 月 13 日 FREEBSD 13.0-RELEASE
FreeBSD 13.0-RELEASE 于 2021 年 4 月 13 日发布。尽管 aarch64 从 FreeBSD 11 开始就得到了支持,但它在 FreeBSD 13.0-RELEASE 中才被提升为一级平台,成为首个非 x86 架构的一级平台。13.0 还涉及内核 TLS 卸载、升级了 clang 和 LLVM,移除了弃用的库、工具。
最后更新于