28.3 macOS 文件系统
FreeBSD 提供了对 macOS 文件系统的支持,包括 HFS/HFS+、APFS,可用于访问为 Apple 系统格式化的存储设备。
28.3.1 APFS 文件系统
Apple 文件系统(APFS)是 Apple 开发的新一代文件系统,自 macOS High Sierra 起成为 macOS 的默认文件系统。在 FreeBSD 上,可通过 libfsapfs 实现对 APFS 分区的只读访问。
28.3.1.1 安装 libfsapfs
使用 pkg 安装 libfsapfs 软件包:
# pkg install libfsapfs使用 Ports 安装:
# cd /usr/ports/filesystems/libfsapfs/
# make install clean28.3.1.2 加载 fusefs 内核模块
在使用 FUSE 文件系统前,需加载 fusefs(4) 内核模块:
# kldload fusefs使用 sysrc(8) 设置开机自动加载该模块:
# sysrc kld_list+=fusefs28.3.1.3 识别 APFS 卷
将包含 APFS 卷的磁盘连接到计算机后,可使用 gpart 查看分区信息。APFS 卷通常显示为 apple-apfs 类型:
# gpart show -p nda1
=> 34 195286 nda1 GPT (95M)
34 6 - free - (3K)
40 195280 nda1p1 apple-apfs (95M)可以使用 file 命令更精确地判断文件系统类型:
# file -s /dev/nda1p1
/dev/nda1p1: Apple File System (APFS), blocksize 409628.3.1.4 挂载 APFS 卷
使用 libfsapfs 挂载 APFS 卷。将 APFS 卷 /dev/nda1p1 挂载到 /mnt:
# fsapfsmount /dev/nda1p1 /mnt验证挂载情况并查看内容:
# ls /mnt/
/mnt/.DS_Store /mnt/.Trashes/ /mnt/evidence.json /mnt/README.md
/mnt/.fseventsd/ /mnt/container/ /mnt/image/注意
当前
libfsapfs仅提供只读支持,无法进行写入操作。
28.3.2 HFS/HFS+ 文件系统
注意
HFS/HFS+ 是 macOS 在 APFS 问世前的主要文件系统。自 macOS High Sierra(2017)起,APFS 已取代 HFS+ 成为默认文件系统;自 macOS Catalina 起,系统卷必须使用 APFS。HFS+ 现仅存在于老旧 Mac 设备和以 HFS+ 格式化的外置存储中,仅适用于需要访问此类老旧存储的场景。
FreeBSD 通过 filesystems/hfsfuse 软件包提供对 HFS/HFS+ 的只读支持。
要在 FreeBSD 上使用 HFS/HFS+,需安装 filesystems/hfsfuse 软件包,加载 FUSE 内核模块,并按如下方式挂载文件系统:
28.3.2.1 安装 HFS/HFS+ 软件包
使用 pkg 安装:
# pkg install fusefs-hfsfuse使用 Ports 安装:
# cd /usr/ports/filesystems/hfsfuse/
# make install clean28.3.2.2 加载 fusefs 内核模块
在使用 FUSE 文件系统前,需加载 fusefs(4) 内核模块:
# kldload fusefs使用 sysrc(8) 设置开机自动加载该模块:
# sysrc kld_list+=fusefs28.3.2.3 识别 HFS/HFS+ 卷
可以使用 file 命令判断文件系统类型:
# file -s /dev/ada0
/dev/ada0: Apple HFS Plus version 4 data (mounted) last mounted by: 'HFSJ', created: Thu Jan 29 17:33:30 2009, last modified: Thu Jan 29 17:33:36 2009, last checked: Thu Jan 29 17:33:30 2009, block size: 4096, number of blocks: 2560, free blocks: 44428.3.2.4 挂载 HFS/HFS+ 卷
通过指定其 FreeBSD 分区名和挂载点(需已存在)来挂载 HFS/HFS+ 卷。以下示例将 /dev/ada0 挂载到 /mnt:
# hfsfuse /dev/ada0 /mnt验证挂载情况
# mount
/dev/ada0 on /mnt (fusefs.hfs, read-only)
……省略无关输出……
# df -hl
/dev/ada0 10M 8.3M 1.7M 83% /mnt查看内容:
# ls /mnt
.Trashes .fseventsd file1.txt file2.txt
# cat file1.txt
This is file 1 - snarf注意
当前
fusefs-hfsfuse仅提供只读支持,无法进行写入操作,且目前无写入支持计划。
28.3.3 参考文献
- Apple. Apple File System Reference[EB/OL]. [2026-03-25]. https://developer.apple.com/support/downloads/Apple-File-System-Reference.pdf. Apple 官方 APFS 技术文档。
- FreeBSD Forums. Mounting APFS partition[EB/OL]. [2026-03-25]. https://forums.freebsd.org/threads/mounting-apfs-partition.69094/. FreeBSD 论坛关于 APFS 挂载支持的讨论。
- libfsapfs Project. GitHub Repository[EB/OL]. [2026-03-25]. https://github.com/libyal/libfsapfs. libfsapfs 开源项目仓库。