第零章:介绍

本书讨论FreeBSD11和12。

FreeBSD是什么

免费提供的类Unix操作系统。起始于1979年的BSD。

BSD:FreeBSD的鼻祖

【略】

BSD许可证

BSD代码可供任何人使用,这可能是软件开发史上最自由的许可证。许可证可以概括如下:

AT&T/CSRG/BSDi 铁笼比赛

【代码版权之争】

FreeBSD的诞生

386BSD和FreeBSD源自1992年BSD版本。

如果一家公司需要提供大量的互联网带宽,它可能正在运行FreeBSD或其BSD相关产品。

FreeBSD 发展

所有FreeBSD开发都是公开进行的。FreeBSD的进展由三组人负责:提交者(committers)、贡献者(contributors)和用户(users)。

Committers

大约500名开发人员或【提交者】。

提交者拥有FreeBSD主源代码的读写权限,可以开发、调试或增强系统的任何部分。

committer一词来自他们commit源代码更改的能力。

提交者承担着沉重的责任。

大多数提交者是志愿者,只有少数人会得到报酬。

Contributors

数千名【贡献者】。提交补丁供提交者参考。

提交者评估贡献者提交的内容,并决定接受和拒绝什么。

积极的贡献者有可能成为提交者。

no good deed goes unpunished——好心没好报

Users

【用户】是运行FreeBSD系统的人。

其他 BSDs

NetBSD

NetBSD和FreeBSD共享开发人员和代码。

NetBSD的主要目标是提供一个安全可靠的操作系统,可以轻松移植到任何硬件平台。

OpenBSD

1996年从NetBSD分支出来,目标是成为最安全的BSD。

第一个支持硬件加速加密的BSD。

默认安装在几年内基本上不受远程攻击。

OpenBSD团队为世界贡献了几款有价值的软件,包括LibreSSL TLS库和OpenSSH套件。

DragonFly BSD

2003年从FreeBSD分支出来。

采用了新的内核消息传递系统(kernel messaging system)。

其HAMMER文件系统支持快照和细粒度历史记录。

macOS

苹果公司持续将大量FreeBSD整合到其macOS中。

界面友好、内核强大稳定。

但包含了许多互联网服务器不需要的东西,而且它只在苹果硬件上运行。所以不建议将其用于廉价的通用服务器。

FreeBSD’s 子系统

其他Unixes

Solaris

最著名的Unix。

gobs是一个技术术语,意思是比你可能需要的更多。

主要在Sun制造的SPARC硬件平台上运行,这使Sun能够支持有趣的功能,如热插拔内存和主板。

甲骨文公司在2009年收购Sun公司时收购了Solaris。2016年停止了Solaris开发。

illumos

在Oracle收购Sun的几年前,Sun开源了Solaris的大部分内容,并赞助了OpenSolaris项目来改进该代码库。后来Oracle关闭源代码访问并收回所有OpenSolaris资源。

OpenSolaris社区讲OpenSolaris分叉为illumos。

FreeBSD包括OpenSolaris的两个重要特性,ZFS和DTrace。

DTrace是一个完整的系统跟踪系统。

AIX

来自IBM,最出名的是日志文件系统,它记录所有发生的磁盘事务,并允许从崩溃中快速恢复。

AIX最初是基于BSD的,但AT&T机会对所有东西都进行了处理,所以今天你不会找到太多的BSD。

Linux

Unix的近亲,从头开始编写的。

在很多方面与FreeBSD相似。

任何分发Linux的用户都必须将其更改提供给最终用户。

Linux developers believe in share-and-share-alike, while BSD developers offer a no-strings-attached gift to everyone.

BSD和Linux阵营之间的所谓冲突多数是存在于菜鸟之间。大多数开发人员都以友好和开放的方式进行沟通和合作。

其他Unixes

曾经的竞争者包括Silicon Graphics(硅谷图形公司)的IRIX、惠普的HP/UX、Tru64 Unix和灾难性的SCO Group的UnixWare。

废弃的产品包括苹果的A/UX和微软的Xenix。

Unix是 The Open Group的商标。

Unix认证不仅要求供应商必须证明该操作系统符合当前版本的单一Unix规范(持续的测试和重新认证需要花费资金),而且要求有人签署一份文件,声明他/她不仅对系统符合单一Unix规范负责,而且他/她将修复未来发现的任何与标准的偏差。FreeBSD的开发模式使这一点变得更困难,没有人能签署一份保证100%符合标准的文件。

FreeBSD的强度

可移植性

FreeBSD项目的目标是提供一个可自由再分发、稳定和安全的操作系统,在人们最有可能访问的计算机硬件上运行。也可以移植到各种不太常见的平台上。

能力

FreeBSD对硬件的基本要求较少,可以将更多的资源用于更上层的软件。

简化软件管理

pkg、ports collection。

第十五章将讨论packages,第十六章将讨论ports。

可定制的构建

FreeBSD提供了一个无痛的升级过程,也允许你为硬件精确定制操作系统。

高级的文件系统

文件系统是信息在物理磁盘上存储的方式。

第十一章讨论UFS,第十二章讨论ZFS。

UFS已经存在了几十年,具有高度的抗损伤性。ZFS更年轻,但包括网络复制和自愈等功能。

谁应该使用FreeBSD?

FreeBSD的历史表明它对网络服务有着强烈的偏好:网络、邮件、文件和辅助应用程序。

它是任何网络服务的底层平台的绝佳选择。

Mac比FreeBSD更适合做桌面系统,除非是为了学习FreeBSD。

谁应该使用其他BSD?

NetBSD适合古老或古怪的硬件。

对安全有极致最求的,可以考虑OpenBSD。

谁应该使用专有操作系统?

如果你需要的软件只能在专有操作系统上运行,你的选择是非常明确的。

如何阅读本书

此书设计是从头到尾阅读一次。每一章都是建立在前面知识的基础上的。

你必须知道什么?

此书针对新的Unix管理员。

三十年前,一般的Unix管理员都有内核编程经验,并且正在攻读计算机科学硕士学位。

即使在十年前,他们已经是一名熟练的Unix用户,拥有真正的编程技能,并且大部分拥有计算机科学学士学位。

今天,类Unix操作系统是免费的,电脑比食物便宜,甚至12岁的孩子也可以运行Unix、阅读源代码,并学习到足以恐吓老鸟的东西。

要充分发挥这本书的潜力,你需要熟悉一些基本任务,例如如何更改目录、列出目录中的文件以及使用用户名和密码登录。建议先阅读《Unix系统管理手册》(UNIX System Administration Handbook)。

还需要了解一些硬件知识。

对于新手

最好的学习方法就是自作自受。

桌面 FreeBSD

建议清除主机上的操作系统,转向FreeBSD。运行原始的FreeBSD,而不是TrueBSD或GhostBSD那样的衍生物。

学习操作系统就像学习一门语言,全身心投入是最快、最有力的学习方式。

如今许多Unix系统管理员都有Windows背景。

Unix不会适应你,你必须适应它。

如何看待Unix

如今大多数Unix系统都自带漂亮的GUI,但它们只是视觉上的糖果。

无论桌面看起来多美观,真正的工作都发生在命令行上。

Unix命令行实际上是Unix的优势之一,它对其无与伦比的灵活性负责。

Unix的基本哲学是许多小工具,每一个都能很好地完成一项工作。

管道

习惯于GUI环境的人可能不熟悉Unix如何处理输入和输出。他们习惯于点击一些东西,然后看到一条OK消息、一个错误、nothing,或者(经常)一个漂亮的蓝屏,上面有漂亮的高科技字母,用极客语言解释系统崩溃的原因。

Unix的做法有点不同,Unix程序有三个通信通道或管道:标准输入、标准输出、标准错误。

了解这些管道中的每一个是如何工作的,有助于你了解整个系统。

标准输入(standard input)是信息的来源。可能的来源有:键盘输入、网络、文件、另一个程序或其他来源的数据。

标准输出(standard output)是显示程序输出的地方。通常是控制台(屏幕)、网络、文件、另一个程序或其他可用的地方。

最后,标准错误(standard error)是程序发送错误消息的地方。控制台程序经常将错误返回到控制台;其他人在文件中记录错误。如果你设置的程序不正确,它可能会丢弃所有错误信息。

这三个管道可以任意排列。例如可以将错误信息重定向到一个文件;如果你不想在命令中重复键入大量信息,可以将信息放在一个文件中,并将该文件转储到命令的标准输入中;或者直接将第一个命令的输出通过管道发送到第二个命令。

小程序、管道和命令行

从逻辑的极端来看,这些输入/输出管道和各种工具似乎势不可挡。

小而简单的程序和管道提供了几乎无限的灵活性。

万物皆文件

Unix没有Windows风格的注册表。程序、账户信息和系统配置都存储在文件中。

更重要的是,系统将系统硬件识别为文件。

Notes on the Third Edition

【略】

章节速览