To be specific, that means volumes formatted as HFS+ (case-sensitive) without journaling on a drive that is GUID Partition Table (GPT) partitioned. Journaled HFS+ will not be writable in Linux at all, ever, with current Linux drivers.
How do we make an un-journaled HFS+ volume writable in Ubuntu?
In Ubuntu, make sure you have hfsprogs and hfsplus installed. A terminal command like
sudo apt-get install hfsprogsshould do it. It might even already be pre-installed by Ubuntu.
Next, plugging in the drive showed me that Ubuntu enables reading from the drive automatically. Nothing hard about it. But it won't let me write to the drive. It needs to be mounted as rw for that.
In the GNOME Disks utility in the Preference menu, click on the disk in question from the list on the left side of the Disks window. It should show you the volumes on that disk on the right side now. Click on the volume in that disk that is to be mounted as rw. Click on the little gears "More actions..." icon underneath, then select "Edit Mount Options...".
It should currently be set to have "Automatic Mount Options" as ON. Set it to "OFF" so that you can edit its "Mount Options" (it's the unlabelled field above the "Mount Point" field - hover your mouse over the fields to get more info).
The correct Mount Options are
rw,defaults. Note that the "x-gvfs-show" and the "x-gvfs-name" mount options do not work — including those options will make the drive fail to mount; that totally wasted a lot of my time to figure out.
The "Filesystem Type" should be set to
You can set the "Mount Point" to pretty much any path, but if you want it to show up automatically in the Nautilus file manager automatically, it seems you have to have it mounted in a particular place. Namely, in
/media/$username/$mountPointNamewhere "$username" is your username, and where "$mountPointName" is what you want the volume to be named when mounted.
Wait, I still can't write to it - because the permissions are all wrong...
This small problem wasted plenty of my time too, making me think I didn't mount the volume as writable. It is writable, but I just didn't have the permissions to.
It turns out Macs will set all files and folders on external media to an "Unknown" user (uid 99) that is treated specially. More information at this Google Mac blog post.
It'd be nice if the driver would automatically set all files and folders to have your user and group id, but the old HFS "uid=" and "gid=" mount options are not recognized by the hfsplus drivers.
Instead, just go to the terminal and do a command like
sudo chown -R $username /media/$username/$mountPointName. Now you'll own all the files and folders on that drive.
What if my HFS+ volume is Journaled?
If you have an existing HFS+ volume that is journaled, but you need to write to it from Ubuntu Linux, then go to a Mac and disable the volume's journal by using Disk Utility. Follow the instructions from this Ask Ubuntu answer.
What if my HFS+ volume gets corrupted?
First, hope that the corruption is small.
Second, if you have a Mac, use Disk Utility on the Mac to repair it. I'd trust the Apple provided tools more than the Linux one in such a situation.
Lastly, if you don't have a Mac, then in Linux, run in the terminal
sudo fsck.hfsplus /dev/$deviceName. You can find the "$deviceName" from the aforementioned GNOME Disks utility. Click on the disk in question and look under its name in the top center part of the window.
You should probably check the unjournaled HFS+ volumes using Disk Utility or fsck.hfsplus once every so often since it isn't journaled. That used to be a pretty standard regular disk maintenance thing to do with the old HFS formatted volumes until HFS+ gave us a properly journaled file system.