FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • FreeBSD 从入门到追忆(第三版:草稿)
  • 编辑日志
  • 贡献指南与开放任务
  • 目录
  • 前言
    • 致读者
    • 致谢
    • 初版序言:好望角与塔吊
    • 再版序言:回到复制粘贴,面向教程本身
    • 三版序言:且有大觉而后知此其大梦也(草稿)
    • 本书的组织结构
    • 本书中使用的一些约定
  • 第 1 章 FreeBSD 初见
    • 第 1.1 节 操作系统的历程:UNIX、BSD、Linux 的演化
    • 第 1.2 节 欢迎来到 FreeBSD
    • 第 1.3 节 关于 FreeBSD 项目
    • 第 1.4 节 George Berkeley(乔治·贝克莱)与 BSD 命名的文化背景
    • 第 1.5 节 加州大学伯克利分校与“Fiat Lux”(要有光)
  • 第 2 章 安装 FreeBSD
    • 第 2.1 节 安装前的准备工作
    • 第 2.2 节 使用 bsdinstall 开始安装
    • 第 2.3 节 键盘布局和主机名
    • 第 2.4 节 选择安装组件
    • 第 2.5 节 分配磁盘空间
    • 第 2.6 节 设置 root 密码
    • 第 2.7 节 网络设置
    • 第 2.8 节 时区、服务、安全、固件和账户
    • 第 2.9 节 完成安装
    • 第 2.10 节 故障排除
  • 第 3 章 FreeBSD 基础
    • 第 3.1 节 Windows 用户迁移指南
    • 第 3.2 节 Linux 用户迁移指南
    • 第 3.3 节 虚拟控制台和终端
    • 第 3.4 节 认识 shell
    • 第 3.5 节 命令行基础
    • 第 3.6 节 文本编辑器
    • 第 3.7 节 用户和基本账户管理
    • 第 3.8 节 权限
    • 第 3.9 节 sudo 与 doas
    • 第 3.10 节 文件系统的挂载与卸载
    • 第 3.11 节 磁盘结构
    • 第 3.12 节 目录结构
  • 第 4 章 软件管理与系统升级
    • 第 4.1 节 FreeBSD 镜像站现状
    • 第 4.2 节 更换 FreeBSD 软件源
    • 第 4.3 节 gitup 的用法
    • 第 4.4 节 使用 pkg 管理二进制包
    • 第 4.5 节 使用 Ports 以源代码方式安装软件
    • 第 4.6 节 使用 DVD 安装软件
    • 第 4.7 节 使用 freebsd-update 更新 FreeBSD
    • 第 4.8 节 使用源代码更新 FreeBSD
    • 第 4.9 节 使用 pkgbase 更新 FreeBSD
  • 第 5 章 桌面环境
    • 第 5.1 节 Intel 与 AMD 显卡驱动
    • 第 5.2 节 NVIDIA 显卡驱动
    • 第 5.3 节 KDE6
    • 第 5.4 节 GNOME
    • 第 5.5 节 Mate
    • 第 5.6 节 Xfce
    • 第 5.7 节 Cinnamon
    • 第 5.8 节 Lumina
    • 第 5.9 节 LXQt
    • 第 5.10 节 Budgie
    • 第 5.11 节 CDE
    • 第 5.12 节 LXDE
    • 第 5.13 节 主题美化
    • 第 5.14 节 远程桌面
    • 第 5.15 节 启用 root 桌面登录
  • 第 6 章 本地化——i18n/L10n
    • 第 6.1 节 本地化环境变量
    • 第 6.2 节 Fcitx 输入法框架
    • 第 6.3 节 IBus 输入法框架
    • 第 6.4 节 五笔输入法
    • 第 6.5 节 网络浏览器
    • 第 6.6 节 QQ(Linux 版)
    • 第 6.7 节 更换字体
    • 第 6.8 节 金山 WPS(Linux 版)
    • 第 6.9 节 压缩与解压
    • 第 6.10 节 微信(Linux 版)
  • 第 7 章 多媒体与外部设备
    • 第 7.1 节 音频设备配置
    • 第 7.2 节 蓝牙
    • 第 7.3 节 打印机
    • 第 7.4 节 触摸板
    • 第 7.5 节 音频播放器
    • 第 7.6 节 视频播放器
    • 第 7.7 节 多媒体处理工具
  • 第 8 章 代理服务器
    • 第 8.1 节 HTTP 代理
    • 第 8.2 节 V2ray
    • 第 8.3 节 Mihomo(原 Clash)
    • 第 8.4 节 OpenVPN
  • 第 9 章 Jail
    • 第 9.1 节 配置 Jail
    • 第 9.2 节 更新 jail
    • 第 9.3 节 使用 Qjail 管理 Jail
    • 第 9.4 节 Linux Jail
  • 第 10 章 虚拟化与容器
    • 第 10.1 节 通过 BVCP 以网页管理 BHyve
    • 第 10.2 节 使用 bhyve 安装 Windows 11(vm-bhyve)
    • 第 10.3 节 Podman
    • 第 10.4 节 在 FreeBSD 上安装 VirtualBox
  • 第 11 章 FreeBSD 安装实践
    • 第 11.1 节 使用 Hyper-V 安装 FreeBSD
    • 第 11.2 节 使用 VMware Workstation Pro 安装 FreeBSD
    • 第 11.3 节 使用 Virtual Box 安装 FreeBSD
    • 第 11.4 节 手动安装双系统(先安装 FreeBSD)
    • 第 11.5 节 手动安装双系统(后安装 FreeBSD)
    • 第 11.6 节 基于 Apple M1 & Parallels Desktop 20 安装 FreeBSD
    • 第 11.7 节 基于 Apple M1 & VMware Fusion Pro 安装 FreeBSD
    • 第 11.8 节 使用 Qemu 安装 RISC-V FreeBSD(基于 x86 Windows)
    • 第 11.9 节 云服务器安装 FreeBSD(基于腾讯云轻量云)
    • 第 11.10 节 配置 rEFInd(双系统用)
  • 第 12 章 窗口管理器
    • 第 12.1 节 bspwm
    • 第 12.2 节 IceWM
    • 第 12.3 节 i3wm
    • 第 12.4 节 Hyprland
    • 第 12.5 节 Window Maker
    • 第 12.6 节 Fluxbox
  • 第 13 章 FreeBSD 系统管理
    • 第 13.1 节 引导界面与虚拟控制台
    • 第 13.2 节 管理 FreeBSD 中的服务
    • 第 13.3 节 bsdconfig 系统配置工具
    • 第 13.4 节 SSH 配置与相关工具
    • 第 13.5 节 单用户模式与密码重置
    • 第 13.6 节 Grub & UEFI 与 efibootmgr
  • 第 14 章 网络管理
    • 第 14.1 节 设置网络
    • 第 14.2 节 无线网络
    • 第 14.3 节 USB 网络共享(USB tethering)
    • 第 14.4 节 TCP 堆栈
  • 第 15 章 FreeBSD 防火墙
    • 第 15.1 节 Fail2Ban(基于 IPFW、PF、IPF)
    • 第 15.2 节 Packet Filter(PF)
    • 第 15.3 节 IPFilter(IPF)
    • 第 15.4 节 ipfirewall(IPFW)
  • 第 16 章 服务器
    • 第 16.1 节 FTP 服务器
    • 第 16.2 节 MinIO 对象存储服务
    • 第 16.3 节 Gitlab-EE
    • 第 16.4 节 时间服务
    • 第 16.5 节 WildFly
    • 第 16.6 节 Rsync 同步服务
    • 第 16.7 节 Samba 服务器
    • 第 16.8 节 NFS 服务器
    • 第 16.9 节 Webmin
  • 第 17 章 Web 服务器与监控平台
    • 第 17.1 节 Apache
    • 第 17.2 节 Nginx
    • 第 17.3 节 PHP 8.X
    • 第 17.4 节 Zabbix 监控(基于 PostgreSQL)
    • 第 17.5 节 NextCloud——基于 PostgreSQL
    • 第 17.6 节 Telegraf+InfluxDB+Grafana 监控平台
    • 第 17.7 节 AList
    • 第 17.8 节 Prometheus 监控部署
    • 第 17.9 节 Tomcat
    • 第 17.10 节 Caddy
    • 第 17.11 节 OnlyOffice(基于 PostgreSQL)
  • 第 18 章 嵌入式平台
    • 第 18.1 节 树莓派简介与配件选用
    • 第 18.2 节 树莓派安装 FreeBSD
    • 第 18.3 节 树莓派 FreeBSD 配置
    • 第 18.4 节 树莓派与 Linux 兼容层
    • 第 18.5 节 Radxa X4(x86)
  • 第 19 章 数据库管理
    • 第 19.1 节 PostgreSQL
    • 第 19.2 节 pgAdmin4
    • 第 19.3 节 MySQL 5.X
    • 第 19.4 节 MySQL 8.X
    • 第 19.5 节 MongoDB 8.0
  • 第 20 章 游戏、科学计算与专业工具
    • 第 20.1 节 游戏
    • 第 20.2 节 我的世界(Minecraft)
    • 第 20.3 节 科研与专业工具
  • 第 21 章 Linux 二进制兼容层
    • 第 21.1 节 Linux 兼容层实现
    • 第 21.2 节 RockyLinux 兼容层(FreeBSD Port)
    • 第 21.3 节 Ubuntu/Debian 兼容层
    • 第 21.4 节 ArchLinux 兼容层(基于 ArchLinux bootstrap)
    • 第 21.5 节 ArchLinux 兼容层(基于 archlinux-pacman)
    • 第 21.6 节 OpenSUSE 兼容层
    • 第 21.7 节 Gentoo Linux 兼容层
    • 第 21.8 节 Rocky Linux 兼容层
    • 第 21.9 节 Slackware Linux 兼容层
    • 第 21.10 节 Deepin 兼容层
    • 第 21.11 节 故障排除与未竟事宜
  • 第 22 章 开发生态与贡献社区
    • 第 22.1 节 如何报告 Bug
    • 第 22.2 节 如何开发一个 Port
    • 第 22.3 节 如何参与 FreeBSD 开发
    • 第 22.4 节 C/C++ 环境的配置
    • 第 22.5 节 Java 环境的配置
    • 第 22.6 节 QT 环境的配置
    • 第 22.7 节 Python 与 VS Code
    • 第 22.8 节 Rust/Go 环境的配置
    • 第 22.9 节 配置 Shell
    • 第 22.10 节 通过 IDA 7 调试 FreeBSD
    • 第 22.11 节 如何订阅 FreeBSD 的邮件列表
    • 第 22.12 节 code-server 和 clangd
    • 第 22.13 节 Node.js
    • 第 22.14 节 利用脚本自动生成 BSDlibc 库文本
  • 第 23 章 存储管理与文件系统
    • 第 23.1 节 自动挂载文件系统
    • 第 23.2 节 ZFS 文件系统
    • 第 23.3 节 磁盘扩容与分区调整
    • 第 23.4 节 Windows 文件系统
    • 第 23.5 节 Swap 交换分区的设置
    • 第 23.6 节 Linux 文件系统
  • 第 24 章 DragonFly BSD 入门
    • 第 24.1 节 DragonFly BSD 概述
    • 第 24.2 节 安装 DragonFly BSD
    • 第 24.3 节 配置 DragonFly BSD
  • 第 25 章 TwinCAT/BSD 入门
    • 第 25.1 节 TwinCAT/BSD 系统安装与基本配置
    • 第 25.2 节 TwinCAT/BSD 开发环境配置
  • 第 26 章 OpenBSD 入门
    • 第 26.1 节 OpenBSD 概述
    • 第 26.2 节 安装 OpenBSD
    • 第 26.3 节 配置 OpenBSD
    • 第 26.4 节 OpenBSD 包管理器
    • 第 26.5 节 桌面与其他软件
    • 第 26.6 节 在 RISC-V 开发板上安装 OpenBSD
    • 第 26.7 节 树莓派与 OpenBSD
  • 第 27 章 NetBSD 入门
    • 第 27.1 节 NetBSD 概述
    • 第 27.2 节 NetBSD 安装图解
    • 第 27.3 节 NetBSD 换源与包管理器
    • 第 27.4 节 桌面与中文环境常用软件
  • 附录 Ⅰ 计算机概论
    • 存储卡参数简介与测试
    • 总线接口与协议
    • 网络基础
    • 操作系统
    • MySQL 数据库
  • 附录 Ⅱ 工具与资源
    • 适用于 FreeBSD 的以太网卡、USB 以太网卡和 USB 无线网卡
    • BSD 许可证概览
    • FreeBSD 桌面发行版评述
  • 附录 Ⅲ 文学故事
    • 我与 FreeBSD 的故事
    • 两次告别
    • 小说:大教堂与集市
    • 小说:吾乡何处
    • 小说:你与暗
    • 诗歌选
    • 杂记
  • 附录 Ⅳ 参考文献与术语
    • 参考书目
    • 术语表
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
在GitHub上编辑
导出为 PDF
  1. 附录 Ⅰ 计算机概论

总线接口与协议

我们知道 M.2 只是一个物理接口,它本质上是一种迷你的 PCIe 接口,可以直接连接物理引脚而无需额外的芯片。

根据 M.2 规范和 PCIe 规范,M.2 接口最大支持 3.3V 3A,约为 10W。

总线、接口与协议

我们首先需要区分三个概念:物理接口、总线协议/总线通道和通道/协议。实际上,这些概念可以简化为两个,因为在本质上,通道/协议等同于总线协议/总线通道和物理总线(例如 PCIe、RJ45、Type-C 之类的物理接口、连接器、连接线等)相加——通道/协议是一个泛指,既可以指二者之和,也可以指二者之一,还可以同时指二者。

  • 通道 = 协议;

  • 物理总线 = 物理接口;

  • 物理接口:代指实际的物理连接和传输介质,例如 M.2、Type-C 口、SATA、以太网线、USB 数据线等;

  • 总线协议/总线通道:指的是用于数据传输的规则和标准,例如 PCIe 协议、USB 协议、SATA 协议、TCP/IP 协议;

  • 总线/通道:总线/通道 = 物理总线/物理介质 + 总线协议/总线通道。

注意

总线是指整个数据传输路径,是物理总线(即物理连接和传输介质)和总线协议(即数据传输的规则和标准)的组合。

例如,可以使用以太网线来传输 HDMI 数字信号。这展示了物理总线的可复用性。

参考绿联(UGREEN)HDMI 延长器 50 米 HDMI 转 RJ45 网传网口转换器 单网线网络高清 1080P 视频传输信号放大器 一对装 90811。它使用以太网线来延长 HDMI 信号,其传输的物理介质是以太网线,接头是 RJ45。

从设计上讲,以太网线通常使用以太网协议传输数据,物理介质是以太网线,接头是 RJ45。然而,该产品的存在表明,物理总线可以承载不同的信号类型。以太网线作为物理介质,既可以用于传输以太网协议下的 TCP/IP 数据,也可以通过不同的信号编码和转换器传输 HDMI 的数据。

并且该产品在实际传输 HDMI 数据时,并不是使用以太网协议,而是通过 HDMI 协议下的信号编码(TMDS)传输。

参考文献:

  • 将 HDMI 信号通过单条网线传输的方法

物理接口在理论上决定了其承载的上限和电气性能,如能够承受的电压、电流和功率,IP 等级,以及尺寸规格如多少 X 多少。常见的物理接口包括 M.2、U.2、SATA、USB(包括 Type-C)、HDMI、DP 和 RJ45。

在大多数情况下,我们通常讨论的是物理接口,但严格来说,将物理接口和其承载的协议混为一谈是不准确的。因为任何物理接口在理论上都可以通过适配器相互转换。

例如,Type-C 接口可以支持 USB2.0、USB3.0、DP、HDMI、Thunderbolt 和 USB PD 等多种协议。因此,M.2 接口在理论上既可以连接 NVMe 硬盘,也可以连接 SATA 硬盘,还可以连接显卡、声卡以及主板上的 PCIe 设备,而无需任何驱动,但可能需要额外的 12V 电源供应。

总线协议(我们将直接连接到 CPU 的通道称为总线,总线本质上也是通道)。现代 x86 计算机通常只有三种总线:USB、SATA、PCIe。

例如,现代消费者型号的英特尔处理器通常仅直接支持这三种总线。

SATA 协议或 SATA 硬盘之所以慢,是由于协议设计问题造成的,与 SATA 这个物理接口本身关系不大。并且 SATA 协会已经摆烂了,他们认为与其设计更多不兼容传统 SATA 设备的新协议,去改造 SATA 这个总线协议,还不如让用户去用使用 PCIe 硬盘或者直接把 SATA 硬盘接到 PCIe。SATA 目前也兼容了 PCIe 总线。

因为直接连接到 CPU 的通道我们称之为总线协议,因此其他通道则被称为普通协议或通道。对于现代处理器而言,只有 USB、SATA 和 PCIe 这三种总线直接连接到 CPU。而大多数其他设备,如网卡、显卡、声卡、摄像头通常连接到 PCIe 接口。

需要注意的是,尽管这些设备连接到了 PCIe 总线,但并非所有设备都是直接连接到了 CPU(通常是通过主板上的 DMI 通道转接的)。

我们需要先来介绍一下 2010 以前的大部分 X86 计算机(即三代酷睿以前)的架构:

  • CPU——> 前端总线 FSB—> 北桥—> PCI—> 南桥—> PCI—> 其他设备。

以上 PCI 也可以替换为 PCIe。

但是在 PCIe 和新一代酷睿大规模使用后北桥在主板上就消失了。曾经的北桥负责高速设备(比如内存、集显),南桥负责低速设备(网卡、声卡、摄像头等)。南北桥之前通过 PCI 总线连接。

在某种意义上,以前的 PS/2 鼠标、PS/2 键盘相当于直连 CPU(北桥)。

但是现在仍然有直连 CPU 的 USB 总线,一样可以接入键盘和鼠标。所以,用是否直连 CPU 来论证 PS/2 接口的优越性是毫无道理可言的。

在现代 x86 CPU 中,已经在主板上看不见北桥了,但是北桥并未真正消失,他只是被集成到了 CPU 而已,并且由若干 CPU 核心负责处理这些,PCIe 总线也从这些核心上面引出。

我们所说的直连到 CPU 的 PCIe,本质上就是之前直连北桥的 PCI。现代 CPU 通过引脚连接到主板,CPU 和主板之间的 PCIe 被英特尔称为 DMI(Direct Media Interface,直接媒体接口),而 AMD 则称之为 PCIe。DMI 3.0x4 相当于 PCIe 3.0x4。

在主板上的设备要么直连到 CPU,要么通过主板上的 DMI 总线转接到 CPU。

由于北桥已经集成到了 CPU 中,看上去就有了两种方式连接 CPU:

  • ① CPU -> PCIe(处理器上的 PCIe) -> 设备(任何设备),我们称之为直连 CPU 的 PCIe;

  • ② CPU -> PCIe(DMI,芯片组/PCH 上的 PCIe) -> 主板 -> PCIe(或转换成其他接口,如 SATA、USB、M.2) -> 设备。

因此,理论上要获得最大速度,需要使用 ①,但可能会影响 CPU 和设备的稳定性。

同时需要注意,PCIe 并不是无限多的,这由 CPU 的规格决定,一般情况下,英特尔 CPU 可能只有 20 条 PCIe,例如 PCIe 3.0x20,其中的 3.0 表示 PCIe 的版本号,20 表示通道数。

因此,DMI 的上限也不是无穷大的,如果在主板上安装了很多 PCIe x16 插槽,由于 DMI 通道的限制,这只是看上去很好,但实际上不能达到预期效果(如果插满,肯定不会符合预期)。

除了直连到 CPU 的设备外,所有其他设备都共享主板上的 DMI 总线。

其实从根本上说无论是否将北桥进行集成没有任何区别。在本质上都是相同的。这是由冯·诺依曼架构所决定的。但在性能和效率有所提升。

一般来说,任何设备要进行转换,不仅需要在物理上连接(将线连接在一起),还需要在软件层面(即驱动程序)进行适配。例如,所谓 NVMe 转 USB 的正确说法应该是 USB 3.1 Gen 2 到 PCIe Gen3 x2 桥接控制器。这种转换并不是将 NVMe 转换为 USB,而是将 PCIe 转换为 USB。

并不是因为不需要安装驱动就意味着设备内部没有芯片,因为大多数这类驱动程序都是内置在操作系统中的。

事实上,总线、接口与协议这三者在严格意义上应该是分开的。因此,当我们谈论 M.2 转换为 PCIe 时,只是物理上将它们连接起来,不需要额外的芯片(因此也不需要驱动程序)。但是,如果要将 M.2 支持 SATA,就需要进行协议转换。

例如,虽然 M.2 物理接口相同,但如果要连接 SATA 硬盘,就必须通过转换芯片进行连接。

同样,严格来说并不是 SATA 转换为 M.2,而是 SATA 转换为 PCIe,即使用的是 PCIe Gen3 x1 转 2xSATA 桥接控制器。

因此,当我们提及 M.2 NVMe SSD 时,应该明确它是一种 PCIe 硬盘,NVMe 则是基于 PCIe 的应用层协议。就像英特尔连接主板与 CPU 的通道的 DMI 在本质上也是 PCIe 一样。

首先,任何 M.2 在物理上都完全等于 PCIe。无需任何芯片或电平转换。M.2 接口 = mini PCIe,并且在历史上也的确如此。但是 M.2 没有 12V(U.2 接口支持,可以视为增强型的 M.2)。

标准的 PCIe 接口同时供电 3.3V、12V,最大支持 75W。而标准的 M.2 最高支持 3.3V 3A,即 10W。

总线就是协议的一种,无非总线是公用通道,大家都直接或间接兼容而已。真正存在的东西只有两种,物理的接口和软件的协议。与协议分层实际上无关。只要是硬件就可以随便转(硬件本质也是电压电流,电信号随便转)。

上一页存储卡参数简介与测试下一页网络基础

最后更新于1天前