HFS stands for the Hierarchical File System which was a filesystem designed by Apple Inc. in the mid 80's for Mac OS. It became part of Openstep, and has become ubiquitous with the success of the OS X and related devices like iPods and iPads.

HFS was known for its revolutionary design, introducing "resource forks" (somewhat like Extended Attributes) and specific features required for their GUI-oriented OS. As time has passed, new requirements have been added to the OS and the filesystem evolved: many new features like journalling and delayed allocation were added to the point of renaming it "HFS Plus". HFS Plus includes most of the capabilities one can find in UFS or Berkeley FFS: long file names, hard and soft links, special nodes, owner and group information and access permissions to name prominent features.

The HFS and HFS Plus source code has been released under APSL as part of Apple Darwin's XNU kernel and userland utilities. In 2004, an initial port to FreeBSD 5.3 was made but the port was left unattended and eventually abandoned. It would be a good reference for a renewed port.

Because of this lack of support for HFS in FreeBSD, transferring files off of an HFS volume is easiest done booting into a Mac OS X system. Barring network file transfer, the ExFAT filesystem might be a suitable escrow filesystem since it supports large files and is mountable under both Mac OS X and FreeBSD (# kldload fusefs && pkg install -y fusefs-exfat && mount.exfat-fuse /dev/adaNs1 mountpoint/). ExFAT through FUSE, however, seems to munge file permissions.

NetBSD had a GSoC project that resulted in limited HFS support under a BSD license.

For good or bad, Apple has replaced HFS with its own Apple File System (APFS) in recent versions of macOS and iOS.


This page is a dumping ground for HFS related information.


HFS (last edited 2023-08-24T17:05:01+0000 by JonathanFrech)