14.14 Live 镜像与系统恢复
14.14.1 系统恢复方法概述
FreeBSD 系统恢复可根据故障严重程度选择不同的方法,按侵入性从低到高排列如下:
单用户模式(Single-User Mode):系统启动至单用户模式(single-user mode),仅挂载根文件系统(/),不启动网络服务和多用户环境,以 root 权限运行。开机按 2 进入
single user模式,默认无需输入密码,可使用passwd命令重置密码。Live 镜像启动:从安装介质(U 盘或光盘)启动完整的 FreeBSD 运行环境,不依赖硬盘上的系统。适用于无法从硬盘启动的场景,如引导加载器损坏、根文件系统严重损坏、磁盘分区表丢失等。Live 环境提供了完整的工具链,可执行文件系统检查(
fsck)、ZFS 池导入(zpool import)、数据备份等操作。灾难恢复:整个存储子系统不可用时,需要依赖预先创建的备份(如 ZFS 快照的远程复制、
dump/restore备份)重建系统。此场景超出本节范围。
14.14.2 UFS 文件系统下的系统恢复操作
将根 UFS 文件系统挂载为可写:
# mount -u /挂载所有 UFS 文件系统:
# mount -a -t ufs14.14.3 ZFS 文件系统
技巧
在某些情况下,FreeBSD Live 镜像对 ZFS 磁盘的操作可能受限,例如无法创建挂载点或修改为可写模式。此类限制通常与 Live 镜像的默认配置有关。
如遇此类问题,可尝试使用 Ubuntu 24.04 或更高版本的 Live 模式对 ZFS 磁盘进行操作,例如还原快照等。
将根文件系统挂载为可写:
# mount -u /挂载所有 ZFS 文件系统:
# zfs mount -a挂载 ZFS 根文件系统:
# zpool import -fR /mnt zroot参数说明:
-f:强制导入(force)。-R:指定备用根目录(altroot)。
组合使用 zpool import -fR /mnt zroot 表示强制将 zroot 池导入到 /mnt 作为备用根目录。
14.14.3.1 故障排除与未竟事宜
14.14.3.1.1 passwd: pam_chauthtok(): Error in service module
请检查 ZFS 文件系统是否处于只读状态:
# zfs get all | grep readonly解除 ZFS 文件系统只读属性:
# zfs set readonly=off zroot14.14.3.1.2 参考文献
- OpenZFS. one ZFS file system always starts with readonly=on temporary on boot[EB/OL]. [2026-03-26]. https://github.com/openzfs/zfs/issues/2133. 报告 ZFS 文件系统启动时临时以只读模式挂载的问题及社区讨论。
14.14.4 使用 U 盘设备
将指定 U 盘分区挂载到 /mnt 并以读写模式访问:
# mount -o rw /dev/adaXpN /mnt参数说明:
- 可通过
dmesg命令查看设备信息以确定ada后的具体编号。 X、N的参数取决于具体设备编号。
14.14.5 课后习题
- 进入单用户模式后,分别对 UFS 和 ZFS 文件系统执行 root 密码重置操作,比较两种文件系统在只读挂载与读写重新挂载方面的差异。
- 分析 FreeBSD Live 镜像生成脚本(
release/),评估使其支持持久化挂载所需的修改范围与技术难度。 - 单用户模式通过绕过认证直接授予 root Shell 权限,这是一种有意为之的安全“后门”。比较这种恢复机制与 Linux 的
init=/bin/bash内核参数在安全设计上的差异,并分析系统恢复便捷性与物理安全防护之间的不可调和矛盾。
