> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/di-18-zhang-xi-tong-guan-li/di-18.1-jie-xi-tong-mu-lu-jie-gou.md).

# 18.1 系统目录结构

FreeBSD 遵循 hier(7) 规范组织文件系统层次结构。系统启动时首先挂载根目录 **/**，其包含进入多用户模式所需的基本系统。本节逐级解释根目录下各子目录的功能与设计原则。

## 目录结构概览

根目录（**/**）是文件系统的顶层目录，系统启动时首先挂载，包含操作系统进入多用户模式所需的基本系统。根目录还包含其他文件系统的挂载点。挂载点是附加文件系统可以挂载到父文件系统（通常是根文件系统）上的目录。标准挂载点包括 **/usr/**、**/var/**、**/tmp/**、**/mnt/** 和 **/media/**。

## FreeBSD 目录结构的设计原则

FreeBSD 的目录结构设计遵循以下原则：

* **单一根目录原则**：与 Windows 等系统采用多根（多盘符）的设计不同，UNIX 系统采用单一根目录（**/**）作为整个文件系统的起点。所有存储设备、分区和网络文件系统均以挂载的方式接入统一的目录树中。
* **功能分离原则**：将不同功能的文件分配到不同的目录中，各文件系统可独立管理、挂载和备份。例如，将系统二进制文件（**/bin**、**/sbin**）与用户应用程序（**/usr/local**）分离，将配置文件（**/etc**）与日志数据（**/var/log**）分离。**/var** 包含日志目录、假脱机目录和临时文件，可能被填满，因此应与 **/** 分离。
* **基本系统与第三方软件分离原则**：FreeBSD 将基本系统与第三方软件严格分离。基本系统组件安装在 **/bin**、**/sbin**、**/usr/bin**、**/usr/sbin**、**/usr/lib** 等目录中，通过 Ports 或 pkg 安装的第三方软件统一安装到 **/usr/local/** 下的对应子目录中（如 **/usr/local/bin**、**/usr/local/lib**、**/usr/local/etc**）。
* **静态与动态数据分离原则**：静态数据（如二进制文件、库文件、文档）与动态数据（如日志、临时文件、运行时数据）分别存储在不同的目录树中。**/usr** 主要存放静态的只读数据，**/var** 则存放可变的运行时数据，**/tmp** 存放临时文件。

## FreeBSD 目录结构

为便于说明，仅列出前三级目录及重要文件。

```sh
/
├── COPYRIGHT FreeBSD 版权信息文件
├── bin 基本的 BSD 用户工具，参见 intro(1)
├── boot 操作系统引导过程中使用的程序和配置文件，参见 boot(8)
│   ├── defaults 存放默认引导配置文件，参见 loader.conf(5)
│   │   └── loader.conf 引导加载程序配置文件，参见 loader.conf(5)
│   ├── device.hints 用于控制驱动程序的内核变量，参见 device.hints(5)
│   ├── dtb 编译的扁平化设备树（FDT）文件，参见 fdt(4) 和 dtc(1)；x86 架构下通常为空
│   │   └── overlays 编译的 FDT 覆盖层，参见 loader.conf(5) 中的 fdt_overlays
│   ├── efi EFI 系统分区（ESP）挂载点，参见 uefi(8)
│   ├── firmware 可加载的二进制固件内核模块；pkg kmod 会安装至此，以及通过 fwget 下载的固件
│   ├── fonts 二进制位图控制台字体，参见 loader.conf(5) 和 vtfontcvt(8)
│   ├── images beastie 启动菜单图像，参见 loader_lua(8)
│   ├── kernel 内核及内核模块，参见 kldstat(8)
│   ├── kernel.old 备用内核及内核模块
│   ├── loader.conf loader 配置文件，参见 loader.conf(5)
│   ├── loader.conf.d loader 补充配置目录，参见 loader.conf(5)
│   ├── lua 引导加载程序的 Lua 脚本，包含启动时显示的 ASCII 艺术字（图）等，参见 loader_lua(8)
│   ├── modules 第三方可加载内核模块，如通过 pkg(8) 或 ports(7) 安装的模块
│   ├── uboot 空目录
│   └── zfs 存放 ZFS 存储池（Zpool）的缓存文件，参见 zpool(8)
│       └── zpool.cache 硬编码的磁盘驱动器路径，参见 zpool(8)
├── compat 支持与其他操作系统二进制兼容的文件
│   └── linux Linux 兼容层运行时的默认位置，参见 linux(4)
├── dev 设备文件和特殊文件，参见 intro(4) 和 devfs(4)
│   ├── ada0 第一块 ATA 存储设备
│   ├── ada0p1 第一块 ATA 存储设备的第一个分区
│   ├── cd0 第一块光盘驱动器
│   ├── cuaU0 第一个 USB 串口，参见 cu(1)
│   ├── da0 第一块 SCSI 存储设备
│   ├── da0s1 第一块 SCSI 存储设备的第一个分区
│   ├── dri 显卡字符设备节点，参见 drm(7)
│   ├── drm 显卡特殊文件节点，参见 drm(7)
│   ├── fd 文件描述符文件，参见 fd(4)；目录下 0、1、2 对应标准输入、标准输出和标准错误
│   ├── gpt 按 GPT 标签划分的存储分区，参见 gpt(8)
│   ├── input 存放输入设备相关的设备文件
│   ├── iso9660 ISO 9660 文件系统的设备节点，如光盘
│   ├── mmcsd0 第一张 SD 存储卡
│   ├── mmcsd0s1 第一张 SD 存储卡的第一个分区
│   ├── nda0 第一块 NVMe 存储设备（通过 cam(4) 连接）
│   ├── nda0p1 第一块 NVMe 存储设备的第一个分区
│   ├── null 空设备，丢弃所有写入的数据，读取时立即返回 EOF
│   ├── nvd0 nda0 的符号链接（旧版 NVMe 直接驱动兼容名，参见 nda(4)）
│   ├── pts 伪终端设备，参见 pts(4)
│   ├── random 熵设备，加密强度的随机数来源，参见 random(4)
│   ├── reroot reboot -r 使用的重引导设备
│   ├── usb USB 总线
│   ├── vmm 活跃的 bhyve(8) 虚拟机
│   └── zvol ZFS 卷，参见 zfs(8)
├── entropy 为随机数生成器提供初始状态，参见 save-entropy(8)
├── etc 基本系统配置文件和脚本，参见 intro(5)
│   ├── auto_master autofs 配置文件，参见 automount(8)
│   ├── autofs 存放自动挂载相关的配置文件，参见 autofs(4)
│   ├── bluetooth 蓝牙相关配置文件
│   ├── cron.d 存放系统级的定时任务配置文件，参见 crontab(5)
│   ├── crontab root 用户的 crontab 文件
│   ├── defaults 存放了一组默认配置文件，如 rc.conf、periodic.conf，参见 rc(8)
│   ├── devd 存放设备管理器（devd）的配置文件，如监控蓝牙、鼠标插拔，参见 devd(8)
│   ├── devfs.conf 启动时 devfs 设备规则配置，参见 devfs.conf(5)
│   ├── dma DMA 邮件代理相关，参见 dma(8)
│   ├── freebsd-update.conf 基本系统更新工具 freebsd-update 的配置文件，参见 freebsd-update(8)
│   ├── fstab 文件分区表，参见 fstab(5)
│   ├── gss GSSAPI 相关文件、含 Kerberos 5
│   ├── hosts hosts 文件，优先于 DNS 的本地 IP 域名映射表
│   ├── inetd.conf 配置 BSD inetd，参见 inetd(8)
│   ├── jail.conf.d 用于 jail 配置的模块化管理，默认为空（jail.conf(5)）
│   ├── kyua Kyua 测试框架的全局配置目录（kyua(1)、kyua.conf(5)）
│   ├── localtime 本地时区文件，参见 ctime(3)。在测试系统中，localtime 链接至 /usr/share/zoneinfo/Asia/Shanghai
│   ├── login.conf 登录类功能数据库，参见 login.conf(5)
│   ├── machine-id 系统的 UUID，供 D-Bus 使用；FreeBSD 通过 hostid_save 脚本生成（与 /etc/hostid 相同 UUID，去除连字符），D-Bus 端口读取 /usr/local/etc/machine-id
│   ├── mail 邮件系统配置文件（别名、mailer.conf），参见 mailwrapper(8)
│   │   ├── aliases 用于投递系统邮件的地址
│   │   └── mailer.conf mailwrapper(8) 配置文件
│   ├── motd.template TTY 登录后显示的信息，参见 motd(5)
│   ├── mtree 系统初始化与验证，可用于系统审计，参见 mtree(8)
│   ├── newsyslog.conf.d newsyslog 的配置文件，参见 newsyslog.conf(5)
│   ├── ntp NTP 相关，参见 ntp.conf(5)、ntpd(8)
│   ├── ntp.conf NTP 客户端配置文件，参见 ntpd(8)
│   ├── pam.d 可插拔认证模块（PAM）相关的配置文件，参见 pam(3)
│   ├── periodic 存放定期执行的维护脚本，由 cron 调用，参见 periodic(8)
│   ├── pf.conf PF 防火墙配置文件，参见 pf(4)
│   ├── pkg PKG 相关配置文件，参见 pkg(8)
│   ├── profile.d 存放用户登录时可执行的 shell 脚本，不会自动加载
│   ├── rc.conf 系统启动配置文件，参见 rc.conf(5)
│   ├── rc.conf.d 存放特定服务的配置文件，默认为空
│   ├── rc.d 用于启动和管理系统服务的 RC 脚本，参见 rc(8)
│   ├── resolv.conf DNS 解析配置文件，参见 resolv.conf(5)
│   ├── resolvconf.conf DNS 配置管理器配置，通常由 local-unbound 生成，参见 local-unbound(8) 或 resolvconf(8)
│   ├── security OpenBSM 审计配置文件，参见 audit(8)
│   ├── ssh SSH 和 SSHD 相关配置文件，参见 ssh(1)
│   ├── ssl SSL/TLS 证书、密钥等
│   │   ├── cert.pem 系统信任库的捆绑形式，参见 certctl(8)
│   │   ├── certs 系统信任库的 OpenSSL 哈希目录形式，参见 certctl(8)
│   │   ├── openssl.cnf OpenSSL 配置文件，参见 openssl.cnf(5)
│   │   └── untrusted 明确不信任的证书，参见 certctl(8)
│   ├── sysctl.conf 内核状态默认值，参见 sysctl.conf(5)
│   ├── sysctl.kld.d 特定内核模块的配置文件，默认为空，参见：D40886[EB/OL]. [2026-03-26]. <https://reviews.freebsd.org/D40886>.
│   ├── syslog.conf 系统日志配置文件
│   ├── syslog.d syslogd 的配置文件，参见 syslogd(8)
│   ├── ttys 创建 TTY 的规则文件，参见 getty(8)
│   ├── unbound Unbound 配置文件
│   ├── wpa_supplicant.conf 连接 WiFi 的配置文件，参见 wpa_supplicant.conf(5)
│   ├── X11 X11 相关，如 XRDP
│   └── zfs ZFS 相关配置文件，参见 zfs(8)
├── home 普通用户家目录；典型用户 beastie 的家目录为 /home/beastie/
│   └── ykla 普通用户 ykla 的家目录
├── lib /bin、/sbin 所需的关键库文件
│   ├── geom GEOM 库，参见 geom(8)
│   └── nvmecontrol NVMe 相关工具，参见 nvmecontrol(8)
├── libexec 系统辅助程序，供 /bin、/sbin 中的二进制文件调用
│   └── resolvconf 管理 DNS 解析配置的程序，参见 resolvconf.conf(5)
├── media 媒体文件挂载点，如 U 盘、光盘；参见 automount(8)，或使用桌面环境时参见 bsdisks(8)
├── mnt 用作临时挂载点的空目录
├── net NFS 共享挂载点，参见 auto_master(5)
├── nonexistent 不存在的目录；按照惯例，作为不需要家目录的用户账户的家目录；参见 /var/empty/。守护进程账户（如 www、nobody、bind）的家目录通常设为此路径，表示这些账户不需要可写的家目录
├── proc 现代 FreeBSD 默认不使用 procfs，该目录通常为空；参见 procfs(4)
├── rescue 静态链接的系统工具，紧急模式时使用，参见 rescue(8)
├── root root 的家目录
├── sbin 基本的 BSD 系统管理工具，参见 intro(8)
├── tmp 通常在系统重启后仍会保留的临时文件；参见 rc.conf(5) 中的 clear_tmp_enable
├── usr 包含大多数用户实用程序和应用程序
│   ├── bin 用户实用程序、编程工具和应用程序，参见 intro(1)
│   ├── freebsd-dist 发行文件（如 base.txz），参见 release(7) 和 bsdinstall(8)
│   ├── include 标准 C 头文件
│   ├── lib 共享库和 ar(1) 类型库，参见 intro(3)
│   │   ├── clang 系统编译程序 clang(1) 的共享库
│   │   ├── compat 兼容性共享库
│   │   ├── debug 内核和基本系统库及二进制文件的独立调试数据
│   │   ├── dtrace dtrace(1) 库脚本
│   │   ├── engines OpenSSL（加密/SSL 工具包）动态可加载引擎
│   │   ├── flua FreeBSD Lua 共享库
│   │   └── i18n 国际化共享库
│   ├── lib32 32 位兼容库
│   ├── libdata 杂项实用数据文件
│   │   ├── ldscripts 链接器脚本，参见 ld(1)
│   │   └── pkgconfig 编译程序和链接器标志集合，用于 pkgconf(1) 开发工具
│   ├── libexec 由程序执行的系统守护进程和实用程序
│   │   ├── bsdconfig ncurses FreeBSD 配置向导调用的实用程序
│   │   ├── bsdinstall bsdinstall(8) 的实用程序
│   │   ├── dwatch dwatch(1) 的配置文件
│   │   ├── fwget fwget(8) 调用的实用程序
│   │   ├── hyperv 与 Hyper-V 虚拟机管理程序通信的脚本
│   │   ├── sendmail sendmail(8) 二进制文件，参见 mailwrapper(8)
│   │   ├── sm.bin sendmail(8) 的受限 shell，参见 smrsh(8)
│   │   └── zfs Z 文件系统实用程序
│   ├── local 本地可执行文件、库等，由 pkg(7) 或 ports(7) 安装
│   │   ├── bin 本地用户实用程序，参见 intro(1)
│   │   ├── etc 本地程序配置文件
│   │   ├── include 本地库头文件
│   │   ├── lib 本地库文件
│   │   ├── lib32 本地 32 位兼容库
│   │   ├── libdata 本地实用数据文件
│   │   ├── libexec 本地实用程序调用的实用程序
│   │   ├── sbin 本地管理实用程序
│   │   ├── share 本地架构无关文件
│   │   ├── share/doc 本地文档
│   │   ├── share/doc/freebsd/ FreeBSD 项目的文章、书籍、FAQ 和手册
│   │   └── share/man 本地手册页，参见 man(1)
│   ├── obj 架构特定的目标树，用于从源代码构建 FreeBSD，参见 build(7)
│   ├── ports FreeBSD Ports，参见 ports(7)
│   │   └── distfiles 下载的源代码包的存放位置
│   ├── sbin 系统守护进程和面向用户执行的管理实用程序，参见 intro(8)
│   ├── share 架构无关文件
│   │   ├── atf 自动化测试框架脚本，参见 ATF(7)
│   │   ├── bhyve bhyve(8) 键盘映射
│   │   ├── calendar 系统级日历文件，参见 calendar(1)
│   │   ├── certs openssl(1) 的 TLS 证书
│   │   ├── dict 词表，参见 look(1)
│   │   │   ├── freebsd FreeBSD 特有的术语、专有名词和行话
│   │   │   └── web2 韦氏第二版国际词典的词汇
│   │   ├── doc 杂项文档
│   │   ├── dtrace 动态跟踪编译程序脚本，参见 dtrace(1)
│   │   ├── examples 用户和程序员的各种示例
│   │   ├── firmware 用户态程序加载的固件镜像
│   │   ├── games BSD 传统游戏使用的 ASCII 文本文件，参见 intro(6)
│   │   ├── keys 已知可信和已撤销的密钥
│   │   │   └── pkg pkg(7) 和 pkg(8) 的指纹
│   │   ├── locale 本地化文件，参见 setlocale(3)
│   │   ├── man 系统手册页，参见 man(1)
│   │   ├── misc 杂项系统级文件
│   │   │   ├── ascii ASCII 码表
│   │   │   ├── flowers 花语含义
│   │   │   ├── magic file(1) 使用的魔术数字
│   │   │   └── termcap 终端特性数据库，参见 termcap(5)
│   │   ├── mk make 模板，参见 make(1)
│   │   ├── nls 国家语言支持文件
│   │   ├── security 安全策略数据文件，如 mac_lomac(4)
│   │   ├── sendmail sendmail(8) 配置文件
│   │   ├── skel 新账户的示例点文件
│   │   ├── snmp SNMP 守护进程的 MIB、示例文件和树定义
│   │   │   ├── defs 用于 gensnmptree(1) 的树定义文件
│   │   │   └── mibs 管理信息库（MIB）文件
│   │   ├── sysroot -sysroot 编译程序/链接器参数构建非本机二进制文件所需的文件
│   │   │   └── VERSION FreeBSD 发行版 VERSION 的文件；"VERSION" 匹配 uname(1) -r
│   │   │       └── MACHINE.MACHINE_ARCH 表示这些文件的二进制 ABI；"MACHINE" 匹配 uname(1) -m；"MACHINE_ARCH" 匹配 uname(1) -p
│   │   ├── vi vi(1) 编辑器的本地化支持和实用程序
│   │   ├── vt 系统控制台使用的文件，参见 vt(4)
│   │   │   ├── fonts 控制台字体，参见 vidcontrol(1)、vidfont(1) 和 vtfontcvt(8)
│   │   │   └── keymaps 控制台键盘映射，参见 kbdcontrol(1) 和 kbdmap(1)
│   │   └── zoneinfo 时区配置信息，参见 tzfile(5)
│   ├── src FreeBSD 源代码，参见 development(7)；源代码树的布局由顶层 README.md 文件描述
│   └── tests FreeBSD 测试套件，参见 tests(7)
├── var 多种用途的日志、临时、瞬态、缓存文件
│   ├── account 默认为空，系统审计用，参见 accton(8)
│   │   └── acct 执行审计文件，参见 acct(5)
│   ├── at 存放 at 命令调度的任务文件，参见 at(1)
│   │   ├── jobs 作业文件
│   │   └── spool 输出假脱机文件
│   ├── audit 存储安全审计日志文件，属于 audit 组，参见 audit(8)
│   ├── authpf 用于认证网关用户的 shell，参见 authpf(8)，默认为空
│   ├── backups 用于存放系统的备份文件，如用户名和密钥、pkg 数据库。由 /etc/periodic/daily 下的 200、210 等文件生成
│   ├── cache 缓存文件
│   │   ├── cups CUPS 的缓存打印机，参见 cups(1)
│   │   └── pkg pkg(8) 的缓存包
│   ├── crash 存放崩溃转储文件，参见 crash(8) 和 savecore(8)
│   ├── cron 存放 cron 定时任务相关文件，参见 cron(8)
│   │   └── tabs crontab 文件，参见 crontab(5)
│   ├── db 自动生成的系统特定数据库文件
│   │   ├── etcupdate etcupdate(8) 的临时文件和日志
│   │   ├── freebsd-update freebsd-update(8) 的下载和临时文件
│   │   └── pkg 包数据库
│   ├── empty 默认为空，旨在提供一个始终保持为空的目录供特定程序使用①
│   ├── games 存放与游戏相关的数据文件，默认为空
│   ├── heimdal Kerberos 5 用，默认为空，参见 kdc(8)
│   ├── lib 移植的 Linux 应用程序的状态信息
│   ├── log 各种系统日志文件
│   │   ├── Xorg.0.log X 服务器日志（如果安装 X(7)），轮替为 Xorg.0.log.old
│   │   ├── auth.log 系统认证日志
│   │   ├── bsdinstall_log 系统安装日志
│   │   ├── cron 定时任务日志，参见 cron(8)
│   │   ├── cups CUPS 日志，参见 cups(1)
│   │   ├── daemon.log 系统守护进程的默认日志
│   │   ├── debug.log 未丢弃的调试 syslog 消息
│   │   ├── devd.log 设备状态变更守护进程的默认日志
│   │   ├── dmesg.today 系统消息缓冲区日志，轮替为 dmesg.yesterday
│   │   ├── maillog 邮件系统日志，轮替并压缩为 maillog.0.bz2
│   │   ├── messages 通用系统日志，参见 syslogd(8)
│   │   ├── mount.today 当前加载的 fstab(5)，轮替为 mount.yesterday
│   │   ├── pf.today 包过滤防火墙日志，参见 pf(4)
│   │   ├── pflog pflogd(8) 捕获的已保存数据包
│   │   ├── security 安全事件日志
│   │   ├── setuid.today 以提升权限运行的可执行文件列表，轮替为 setuid.yesterday
│   │   ├── userlog 用户或组变更日志
│   │   ├── utx.lastlogin 最后登录日志，参见 getutxent(3)
│   │   └── utx.log 登录/注销日志，参见 getutxent(3)
│   ├── mail 系统邮件，用户邮箱文件
│   ├── msgs 用于存放系统消息文件，参见 msgs(1)
│   ├── quotas UFS 配额信息文件
│   ├── run 用来存放 PID 文件和运行时数据，包含自系统启动以来的操作系统信息
│   │   ├── bhyve bhyve(8) 虚拟机的 unix(4) 域套接字
│   │   ├── utx.active 当前用户数据库，参见 getutxent(3)
│   │   └── wpa_supplicant IEEE 802.11 WiFi 运行时文件
│   ├── spool 存放等待处理的任务文件，如待打印机打印的文件
│   │   ├── clientmqueue 未投递的提交邮件队列，参见 sendmail(8)
│   │   ├── cups CUPS 的打印作业和临时文件，参见 cups(1)
│   │   ├── dma DragonFly 邮件代理的未投递邮件队列，参见 dma(8)
│   │   ├── lock 串行设备锁，参见 uucplock(3)
│   │   └── mqueue sendmail(8) 的未投递邮件队列
│   ├── tmp 通常会在系统重启后保留的临时文件
│   │   └── vi.recover vi(1) 编辑器的恢复文件
│   ├── unbound Unbound 服务器的相关文件和配置，参见 unbound(8)
│   └── yp NIS 的配置等文件，参见 yp(8)
└── zroot 由 ZFS 在创建存储池 "zroot" 时自动生成的挂载点目录；zroot 是 FreeBSD 安装程序默认的根池名称（参见 zpool(8) 和 zfs(8) 的 mountpoint 属性）。该目录自身通常为空，其子文件系统（如 zroot/ROOT、zroot/usr、zroot/var 等）分别挂载到对应路径；仅当直接在 zpool 根数据集下创建文件时，内容才会出现在此目录中
```

①：目录 **/var/empty** 设置了 schg 标志，即系统不可变标志。

```sh
# ls -lod /var/empty
dr-xr-xr-x   2 root    wheel   schg  2 Apr 13 12:38 /var/empty
```

参数解释：在长格式（`-l`）输出中包含文件标志（`-o`），且将目录视为普通文件列出而不递归（`-d`）。

> **技巧**
>
> OpenSSH 使用特权分离（privilege separation）架构，预认证阶段的 chroot 目录为 **/var/empty**，该目录必须为空且仅 root 可写。

## 设备与设备节点

设备是系统中与硬件活动相关的主要概念，包括磁盘、打印机、显卡和键盘。

每个设备都有一个设备名称和编号。例如，`ada0` 是第一块 SATA 硬盘，而 `kbd0` 代表键盘。

FreeBSD 中的大多数设备通过称为设备节点的特殊文件访问，这些文件位于 **/dev** 目录中。

在 FreeBSD 中，设备节点由 devfs(4) 文件系统自动管理。devfs 是一个虚拟文件系统，在系统启动时由内核自动挂载到 **/dev**，并根据当前系统中存在的硬件设备动态创建和删除设备节点。这与传统 UNIX 系统需要手动使用 `mknod` 命令创建设备节点的做法不同。devfs 确保了 **/dev** 目录中只包含当前系统实际存在的设备节点。

传统 UNIX 中，设备节点分为字符设备（character device）和块设备（block device）两种类型。字符设备以字节流方式访问数据，如终端（**/dev/ttyv0**）和串口；块设备以固定大小的块为单位访问数据，通过操作系统的缓冲缓存访问。然而，在现代 FreeBSD 中，块设备已移除，所有设备节点均为字符设备。

在 `ls -l /dev/` 的输出中，所有设备均显示为 `c`（字符设备），不会出现 `b`（块设备）标识。

例如，磁盘 **/dev/ada0** 在现代 FreeBSD 上是字符设备，而非块设备。

```sh
crw-r-----  1 root operator 0x69 May 10 09:49 ada0
```

设备命名遵循一定的约定：

| 设备类型              | 前缀    | 示例            | 说明       |
| ----------------- | ----- | ------------- | -------- |
| SATA 硬盘           | `ada` | `ada0`、`ada1` | 编号从 0 开始 |
| SCSI 硬盘和 USB 存储设备 | `da`  | `da0`         | 编号从 0 开始 |
| NVMe 存储（CAM 框架）   | `nda` | `nda0`        | 默认       |
| NVMe 存储（非 CAM）    | `nvd` | `nvd0`        | 旧版兼容别名   |
| CD-ROM 驱动器        | `cd`  | `cd0`         | 编号从 0 开始 |

GPT 分区在设备名后附加 `p` 加分区号（如 `ada0p1`），MBR 切片附加 `s` 加切片号（如 `ada0s1`）。

如下所示：

```sh
crw-r-----  1 root operator 0x69 May 10 09:49 ada0	# SATA 硬盘
crw-r-----  1 root operator 0x7c May 10 09:56 ada0s1	# SATA 硬盘 MBR 分区的首个切片
crw-r-----  1 root operator 0x6b May 10 09:49 da0	# SCSI 硬盘
crw-r-----  1 root operator 0x60 May 10 09:49 nda0	# NVMe 硬盘
crw-r-----  1 root operator 0x62 May 10 09:49 nda0p1	# GPT 分区的首个分区
lrwxr-xr-x  1 root wheel       4 May 10 09:49 nvd0 -> nda0	# nda0 的兼容性别名（旧版 NVMe 直接驱动兼容名）
lrwxr-xr-x  1 root wheel       6 May 10 09:49 nvd0p1 -> nda0p1	# nda0p1 的兼容性别名
crw-r-----  1 root operator 0x68 May 10 09:49 cd0	# 光学介质
```

## 参考文献

* Linux Foundation. Filesystem Hierarchy Standard 3.0\[EB/OL]. (2015-06-03)\[2026-04-23]. <https://refspecs.linuxfoundation.org/fhs.shtml>.
* FreeBSD Project. hier(7)\[EB/OL]. \[2026-03-26]. <https://man.freebsd.org/cgi/man.cgi?query=hier&sektion=7>. 系统阐述 FreeBSD 文件系统层次结构。
* FreeBSD Project. chflags(1)\[EB/OL]. \[2026-04-17]. <https://man.freebsd.org/cgi/man.cgi?query=chflags&sektion=1>.
* FreeBSD Project. ls(1)\[EB/OL]. \[2026-04-17]. <https://man.freebsd.org/cgi/man.cgi?query=ls&sektion=1>.

## 课后习题

1. 查阅 FreeBSD 源代码中 hier(7) 的定义，分析其目录结构设计所遵循的层次化原则。
2. 修改 **/tmp** 目录的默认权限配置（如将权限从 `1777` 改为 `1755`），记录修改后对临时文件创建和系统服务运行的影响。


---

# 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://book.bsdcn.org/di-18-zhang-xi-tong-guan-li/di-18.1-jie-xi-tong-mu-lu-jie-gou.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.
