163

I have a HFS+ journaled external hard-drive and need to be able to write to it on Ubuntu. I don't have access to my Mac, it's thousands of miles away and I won't have access to it for three months.

Can anything be done without losing the data on the HDD?

  • ubuntu-MATE caja users: Whichever solution below you pick, doing a killall caja && caja . will help caja to „get the news , that the folder is now actually writable. – Frank Nocke Jun 10 at 10:27
172

See How to mount a HFS partition in Ubuntu as Read/Write? - Super User

To quote from the second/third answer down:

First, make sure that you have hfsprogs installed. Example installation command:

sudo apt-get install hfsprogs

Next, mount or remount the HFS+ drive; commands need to be as follows:

sudo mount -t hfsplus -o force,rw /dev/sdXY /media/mntpoint

or

sudo mount -t hfsplus -o remount,force,rw /mount/point

...

Finally, if the drive was improperly unmounted or has otherwise become partially corrupted run fsck.hfsplus ... as such:

sudo fsck.hfsplus -f /dev/sdXY

There is a goldmine of other information there regarding the mounting of HFS+ filesystems.

  • thanks, I'll give it a try. The info I'd found pointed out that ubuntu couldn't handle journaled htfs+ drive, and said that it had to be "unjournaled" in OSX. I don't have access to OSX for the next three months and thus can't reverse the journaling. – oppochips Aug 14 '13 at 13:35
  • 1
    I tried and get sudo mount -t hfsplus -o force,rw /dev/sdb2 /media/sdb2 mount: /dev/sdb2 already mounted or /media/sdb2 busy mount: according to mtab, /dev/sdb2 is mounted on /media/1ad12b58-c2f2-39d3-955f-54ea66a96b2b The drive (a hfs+ journaled volume) mounts as read only. is it possible to write to it without having to undo the journaling on mac os? I tried the last command and get ** Checking HFS Plus volume. fsck_hfs: Volume is journaled. No checking performed. fsck_hfs: Use the -f option to force checking. – oppochips Aug 14 '13 at 13:47
  • From the link posted above : "You need to turn off the journaling if you want to write to it from Ubuntu. Ubuntu only has support for writing to non-journaled HFS+ volumes. On your Mac: Open Disk Utility under Applications -> Utilities Select the volume to disable journaling on. Choose Disable Journaling from the File menu. (On later Mac OS versions you'll have to hold down the option button when you click the File menu. Or if you like Apple+J)" I don't have access to a mac,, is it possible to gain read and write access on the drive without losing the data? thanks b – oppochips Aug 14 '13 at 13:56
  • You should try: sudo mount -t hfsplus -o remount,force,rw /dev/sdXY /media/mntpoint (or leave out /dev/sdXY and point it to where it is currently mounted) instead. I will edit this into my answer. – Richard Aug 14 '13 at 14:28
  • 1
    thanks. What do I need to put instead of "mountpoint" ? I tried sdb2 and get sudo mount -t hfsplus -o remount,force,rw /dev/sdb2 /media/dev/sdb2 mount: mount point /media/dev/sdb2 does not exist and then tried sudo mount -t hfsplus -o remount,force,rw /dev/sdb2 and got : – oppochips Aug 14 '13 at 14:37
30

These steps works for me (Ubuntu Studio 14.04):

sudo apt-get install hfsprogs

Check status of drive:

sudo fsck.hfsplus -f /dev/sdXY

Unmount deivce:

sudo umount /media/sebastian/devicename

(create folder to mount the drive)

Mount the drive with HFS+ read/write permissions:

sudo mount -t hfsplus -o force,rw /dev/sdXY /home/sebastian/foldername
  • 3
    this mounts it alright as a folder, but it is still read-only.... :( ... can't seem to find a simple way to get by the hfs+ journal system restrictions – Amphibio Feb 11 '16 at 11:01
  • This works. But why do we need force? – qweruiop Apr 10 '17 at 22:22
  • 3
    I get the following error: mount: wrong fs type, bad option, bad superblock on /dev/sda2, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. – Jamie Hutber Mar 22 '18 at 10:47
25

I had this problem too. I tried fsck.hfsplus, umount, remount with sudo mount -t hfsplus -o remount,force,rw nothing worked for me.

What did work for me was :

  1. unmount with sudo umount /media/myMountPoint
  2. delete the mount point with sudo rmdir
  3. recreate the mount point with sudo mkdir and
  4. remount with sudo mount -t hfsplus -o force,rw /dev/xxxx /media/myMountPoint

Hope this will also work for you guys.

  • you saved my life! – Alex Chan Nov 30 '17 at 15:26
  • This worked for some reason. I've no idea why. The directory was empty and mounting it before deleting the directly mounted it with ro even with force,rw. Removing and recreating the directory did it. – Umar Ahmad Mar 21 at 8:03
  • The reason behind '2.' is probably, that the mount point directory is 'user:user'. (ls -l to verify). In other words: sudo chown -c root:root myMountPoint/` will probably also fix it. (unmount before still necessary) – Frank Nocke Jun 10 at 10:24
  • And by my exerpience: if you don't do your mount points under /media/<username>/ but elsewhere (I like /mnt), a „smart“ Ubuntu MATE for example won't delete and (wrongly) recreate your mount folders time and again. – Easier for a mount script that lasts... – Frank Nocke Jun 10 at 10:24
12

Since I cannot comment (not enough reputation here:). I will post this answer to point out that the answer above appears to be for a hfs+ HD that is not journalled. The 'fsck.hfsplus' command needs to be issued with the '-f' option to work on a journalled volume. To avoid confusion I've copied the command below:

$ sudo fsck.hfsplus /dev/sdXY

** /dev/sdXY
[snip....]
** The volume ########### appears to be OK.

This would only run on a volume that has not been journalled. Even with the '-f' option on a journalled volume this check in itself will not allow the remounted volume to be mounted read/write. I believe journalling must be turned off.

There does not seem to be stable code available to turn off journalling from linux. See the link provided by Richard: http://ubuntuforums.org/showthread.php?t=1420673

If journalling is turned off and the disk initially mounts as read-only unmounting and remounting should allow read/write if the disk is undamaged. If it is damaged then fsck.hfsplus needs to be run.

11

Borrowing from the previous answer, the following steps worked for me. Hopefully this is useful to others:

  1. Plug in the external HDD.

  2. Notice that Ubuntu mounts it automatically but it is read-only.

  3. Unmount the drive (I do this simply by clicking on the eject button in the file explorer).

  4. sudo apt-get install hfsprogs

  5. $ sudo fsck.hfsplus /dev/sdXY 
    
    ** /dev/sdXY
    ** Checking HFS Plus volume.
    ** Detected a case-sensitive catalog.
    ** Checking Extents Overflow file.
    ** Checking Catalog file.
    ** Checking multi-linked files.
    ** Checking Catalog hierarchy.
    ** Checking Extended Attributes file.
    ** Checking volume bitmap.
    ** Checking volume information.
    ** The volume ########### appears to be OK.
    

    (sudo fsck.hfsplus -f /dev/sdXY if filesystem is journaled.)

  6. Remount the drive (I do this simply by clicking on the drive in the file explorer).

  7. The drive is now read-write.

  • 1
    The above is true given disc doesn't have journaling enabled. – akostadinov Dec 22 '14 at 21:54
  • 2
    I followed your steps and everything works as expected up to 6. But on 7 the drive continues to be read only. – Guilherme Salomé Oct 4 '18 at 16:17

protected by Community Sep 12 '16 at 9:12

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.