# 27.1 NetBSD 项目概述

NetBSD 是一个开源、可移植的类 Unix 操作系统，作为 BSD 家族的重要成员，它是最早从 4.4BSD Lite 衍生的操作系统之一，其首个版本 0.8 发布于 1993 年 4 月 20 日。NetBSD 的学术渊源可追溯至加州大学伯克利分校（UC Berkeley）的 Berkeley Software Distribution（BSD）项目，在操作系统可移植性研究领域具有重要地位。本章将系统介绍 NetBSD 的技术特性、生态系统及实践应用。

## 技术特性与生态系统

NetBSD 的[口号](https://www.netbsd.org/about/portability.html) 是“Of course it runs NetBSD”（意为“当然可以运行 NetBSD”），这一口号集中体现了其在跨平台兼容性方面的核心技术追求。

NetBSD 支持[多种架构](https://wiki.netbsd.org/ports/)。其中，一级架构为官方完全支持的平台，二级架构为社区维护的平台。目前 NetBSD 支持 9 个一级架构和 49 个二级架构，其架构支持广度在同类操作系统中处于领先地位。

NetBSD 主要面向技术爱好者和开发者，对于普通用户来说具有一定的学习曲线，开发者构成了该系统的核心用户群体。

NetBSD 开发的 [pkgsrc](https://www.pkgsrc.org/) 包管理器框架也支持 macOS、Linux 等多个操作系统。pkgsrc 通过可移植的构建脚本实现跨平台软件管理，体现了 NetBSD 在可移植性软件工程方面的设计理念。

NetBSD 提供 Linux 兼容层，可运行部分 Linux 二进制程序，主要支持命令行工具和基础图形应用。

在硬件驱动方面，NetBSD 自带 i915 显卡驱动和 AMD 相关驱动，并支持 UEFI 启动和 NVMe 存储设备。

NetBSD 对 NVIDIA 显卡的支持程度相当于 Linux 3.15 内核版本水平，约支持到 2016 年的 Pascal 架构（GeForce GTX 10 系列显卡）。相关信息可参考 [nouveau / NetBSD](https://nouveau.freedesktop.org/NetBSD.html) 和 [nouveau(4) - NetBSD Manual Pages](https://man.netbsd.org/nouveau.4)（具体硬件支持列表）。

## 项目支持渠道

若读者想为 NetBSD 项目提供支持，最简单的方式是通过 [GitHub Sponsors](https://github.com/sponsors/netbsd) 进行捐赠。~~还能获得一个 GitHub 徽章~~ [~~Public Sponsor~~](https://github.com/orgs/community/discussions/19916)~~。~~

> **技巧**
>
> 支付后支付方式将被绑定，如需解除绑定，可联系 GitHub 客服 [提交工单](https://support.github.com/)，通常在一个工作日内即可处理。

此外，还可通过 [Donate using Stripe](https://www.netbsd.org/stripe.html) 进行捐赠，该方式支持中国银联、Google Pay 等多种支付方式。

## NetBSD 上的 ZFS

ZFS（Zettabyte File System，泽字节文件系统）作为一个功能强大的企业级文件系统，在 NetBSD 上也有相应的实现。以下为相关资源：

* 手册页 [zfs(8) - NetBSD Manual Pages](https://man.netbsd.org/zfs.8)，提供 ZFS 文件系统的官方命令参考
* [Finish ZFS](https://wiki.netbsd.org/projects/project/zfs/)，ZFS 移植项目进展报告
* [Google 编程之夏 2007](https://developers.google.com/open-source/gsoc/2007?hl=zh-cn)，记录了 ZFS 引入计划的早期阶段
* [Google Summer of Code zfs-port project](https://blog.netbsd.org/tnf/entry/google_summer_of_code_zfs)，ZFS 移植项目的官方技术报告
* [Root On ZFS](https://wiki.netbsd.org/root_on_zfs/)，提供 ZFS 根分区安装指南
* [NetBSD zfs Wiki](https://wiki.netbsd.org/zfs/)，NetBSD ZFS 维基，记录 NetBSD 从 FreeBSD 引入 ZFS 代码的过程，目前仍基于 illumos ZFS 实现（illumos 是 OpenSolaris 的后继开源项目，与 OpenZFS 存在功能差异），未集成 OpenZFS 新特性

在 NetBSD 源代码中，最早可见的 ZFS 提交为 [Import Opensolaris source code used with zfs port. Zfs code si from date](https://github.com/NetBSD/src/commit/c1cb2cd89c023350f357f813e12b526f6f71002f)。从代码提交量分析，该 ZFS 移植项目长期缺乏维护和更新。

## 课后习题

1. 查找 NetBSD 源码中 ZFS 的实现路径，对比分析其与 OpenZFS 新特性之间的代码差异，并在 QEMU 中尝试构建 Root On ZFS 安装。
2. 选取 NetBSD 的 pkgsrc 包管理器框架，重构其最小实现原型。
3. 修改 NetBSD 对 NVIDIA 显卡支持的策略，验证其与 Linux 3.15 内核版本的行为差异。
