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 例程。