> For the complete documentation index, see [llms.txt](https://freebsd-journal-cn.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://freebsd-journal-cn.bsdcn.org/2018-1112-freebsd-12/the-daemons-dozen-introducing-freebsd-12-0.md).

# The Daemon’s Dozen——FreeBSD 12.0 简介

作者：**Michael W Lucas**

自 FreeBSD 11.0 发布大约两小时后，我们就一直在急切等待 FreeBSD 12.0。这里我将查看一些新功能、移除的功能以及即将到来的变化，先从存储开始。

ZFS 用户可能熟悉 **beadm(8)** 软件包，这个启动环境管理程序。我们之前在 FreeBSD 期刊上介绍过它。FreeBSD 现在包含 **bectl(8)**，一个启动环境控制程序。它保留了大部分 **beadm(8)** 语法，让你可以创建、激活、列出和销毁启动环境。此外，它允许你挂载未使用的启动环境，并从这些启动环境创建 jail。我用 jail 排查过有问题的启动环境，因此这是对基本系统的有益补充。

许多人使用 GELI 加密磁盘。正确进行硬盘加密很棘手，但 GELI 在笔记本被盗时大大降低了暴露机密数据的风险。不过，GELI 在拥有许多硬盘的系统上使用起来很痛苦。每个磁盘需要单独配置。在 FreeBSD 12.0 中，GELI 现在可以同时配置多个磁盘，只要它们使用相同的加密密钥，缓解了管理此类机器的系统管理员的烦恼。另外，在 GELI 领域，安装程序现在可以在从 UEFI 启动的主机上加密磁盘。

FreeBSD 的 GEOM 系统让你完全按照应用程序、硬件和环境所需的方式将存储变换堆叠在一起。如果你想要一个单独的大型条带化和加密存储阵列，你可以将磁盘条带化然后加密——或者你可以单独加密每个磁盘然后条带化。GEOM 赋予你力量。当然，问题出在你试图弄清楚自己用这种力量做了什么的时候。新的 `geom -t` 命令显示主机的 GEOM 堆栈。

```sh
geom -t
Geom                 Class       Provider
ada0                 DISK        ada0
ada0                 DEV
ada0                 PART        ada0p1
ada0p1               DEV
ada0p1               LABEL       gpt/gptboot0
gpt/gptboot0         DEV
ada0                 PART        ada0p2
ada0p2               DEV
swap                 SWAP
ada0                 PART        ada0p3
ada0p3               DEV
zfs::vdev            ZFS::VDEV
```

你可以轻松看到提供者和消费者如何堆叠在一起，什么放在哪里，以及应用于一切的标签。

类似地，如果你想查看特定 GEOM 容器的所有信息，使用新的 `geom -p` 命令。这里我告诉 GEOM 倾吐关于 da2p1 的一切。

```sh
geom -p da2p1
```

一些存储变化不那么明显。TRIM 请求用于告诉 SSD 或内存文件系统某个块不再使用。FreeBSD 12.0 批处理和合并这些请求，减少磁盘 I/O。你会在整个版本中看到数十个这样的小幅性能增强。

不过，FreeBSD 12.0 有一个主要的存储新功能：并行 NFS（pNFS）服务器。并行 NFS 可以大幅提升 NFS 性能，但需要支持 pNFS 的客户端。FreeBSD 的 NFS 客户端支持 pNFS。不过，这是一个全新功能，与其告诉你立即部署，我更鼓励你在自己的环境中彻底测试它。pNFS 还需要 NFSv4，因此如果你仍在使用旧版 NFS，是时候考虑升级了。

NFS 涉及网络，接下来让我们谈谈网络。

FreeBSD 12.0 内核默认启用虚拟网络栈 VIMAGE，允许你使用多个路由表。你现在可以让主机使用其标准路由表，但仅为在该主机上运行的 jail 创建新的路由表。此外，你现在可以在 jail 中使用 PF，PF 的 HFSC 流量整形现在可以处理高达 100 Gbs。

八位 10Mbs 网卡已不再足够流行，FreeBSD 不再支持，它们在内核中的存在阻碍了当前功能的开发。纯 10Mbs 网卡的驱动程序，如 lmc、ixgb 和 nxge，都已从当前内核中移除。许多 10/100 Mbs 网卡驱动程序，如 ed、ep、pcn 等，已弃用，并计划在 FreeBSD 13.0 中移除。二十年前，我是 NE2000 兼容网卡的忠实粉丝。它们基本上坚不可摧。问题是那是二十年前的事了。是时候买一块新网卡了。

FreeBSD 长期以来一直存在视频驱动程序问题。显卡的推出频率高于 FreeBSD 版本。用户明智地希望使用新显卡的所有花哨功能，当两个月的 FreeBSD 不支持那些驱动程序时会感到沮丧。FreeBSD 通过从基本操作系统中移除高级视频驱动程序并将其改为 Ports 解决了这个问题。Ports 比基本系统组件更容易更新，这意味着用户可以获得加速视频和 3D 支持以及他们想要的所有其他花哨功能。安装 drm-kmod 软件包以获取最新视频驱动程序，并查看 <https://wiki.freebsd.org/Graphics> 上的 FreeBSD Graphics Wiki 了解如何使用它。

如果需要从 **last(1)** 和 **lastlogin(8)** 提取信息，这些程序现在支持 libxo。尝试 `last --libxo xml` 获取输出示例，并使用你组织的标准 XML 工具收集所需信息。

还有许多其他新功能和细节。引导加载程序现在包含 Lua 而不是 Forth，因此所有 Lua 黑客都可以自定义启动过程。一些较旧的标准设备驱动程序经过改进。虽然控制台以前能以比我阅读更快的速度显示文本，但 **vt(4)** 驱动程序现在运行速度比 FreeBSD 11.0 中快四倍。**ntpd(8)** 和 **mandoc(1)** 等贡献程序已升级。随机数生成器 **random(4)** 经过现代化改造，集成的 OpenSSL 将获得数年支持。默认分页器现在是 **less(1)**，**newsyslogd(8)** 忽略 setuid 和可执行日志文件——理应如此。

FreeBSD 12.0 有许多较小的增强、改进和调整。真的，看到所有这些的最好方式是安装它，看看会发生什么。我一直很满意。我想你也会的。

***

**Michael W Lucas** 自 1980 年代起使用 BSD。他最近的书是《Absolute FreeBSD》第三版。在 <https://mwl.io> 了解更多。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/2018-1112-freebsd-12/the-daemons-dozen-introducing-freebsd-12-0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
