Linux 的 Macintosh HFS 文件系统

注意

此文件系统没有维护者。

HFS 代表 Hierarchical File System(分层文件系统),是 Mac Plus 和所有后续 Macintosh 型号使用的文件系统。 较早的 Macintosh 型号使用 MFS (Macintosh File System)(Macintosh 文件系统),不受支持。 MacOS 8.1 及更高版本支持一种名为 HFS+ 的文件系统,该文件系统类似于 HFS,但在各个领域都得到了扩展。 使用 hfsplus 文件系统驱动程序从 Linux 访问此类文件系统。

挂载选项

挂载 HFS 文件系统时,接受以下选项

creator=cccc, type=cccc

指定创建者/类型值,如 MacOS Finder 显示的用于创建新文件的值。 默认值:“????”。

uid=n, gid=n

指定文件系统中所有文件的所有者/组。 默认值:挂载进程的用户/组 ID。

dir_umask=n, file_umask=n, umask=n

指定用于所有文件、所有目录或所有文件和目录的 umask。 默认为挂载进程的 umask。

session=n

选择要挂载为 HFS 文件系统的 CDROM 会话。 默认为将该决定留给 CDROM 驱动程序。 此选项对于除 CDROM 之外的任何基础设备都将失败。

part=n

从设备中选择分区号 n。 这仅对 CDROM 有意义,因为它们无法在 Linux 下进行分区。 对于磁盘设备,通用分区解析代码会为我们执行此操作。 默认为根本不解析分区表。

quiet

忽略无效的挂载选项,而不是发出警告。

写入 HFS 文件系统

HFS 不是 UNIX 文件系统,因此它不具有您期望的常用功能

  • 您无法修改 set-uid、set-gid、sticky 或可执行位,也无法修改文件的 uid 和 gid。

  • 您无法创建硬链接或符号链接、设备文件、套接字或 FIFO。

HFS 另一方面具有每个文件的多个分支的概念。 这些非标准分支在普通文件系统命名空间中表示为隐藏的附加文件,这是一种笨拙的方法,并使语义有些奇怪

  • 您无法创建、删除或重命名文件的资源分支或 Finder 的元数据。

  • 但是,它们会随相应的数据分支或目录一起创建(使用默认值)、删除和重命名。

  • 将文件复制到不同的文件系统会丢失 MacOS 正常运行所必需的那些属性。

创建 HFS 文件系统

Robert Leslie 的 hfsutils 包包含一个名为 hformat 的程序,可用于创建 HFS 文件系统。 有关详细信息,请参阅 <https://www.mars.org/home/rob/proj/hfs/>。

鸣谢

HFS 驱动程序由 Paul H. Hargrovea (hargrove@sccm.Stanford.EDU) 编写。 Roman Zippel (roman@ardistech.com) 重写了代码的很大一部分,并引入了源自 Brad Boyer 的 hfsplus 驱动程序的 btree 例程。