一部のhfsplusドライブのマウントに問題があります。読み取り専用でマウントする必要があります。 (ジャーナルを無効にすることはオプションではありません)多くの調査を行ったところ、カーネルバージョン2.6.37から2.6.38への変更により、問題が発生していることがわかりました。
このリンクを見てください bugs.launchpad.net 。
そのため、Linuxカーネルバージョン2.6.37以下でテストしましたが、正常に機能しました。
上記のバージョン(私のバージョン3.2.0-54-generic(ubuntu 12.04)を含む)は、hfsplusイメージとディスクのマウントで正常に機能しませんでした。したがって、ubuntu 9の2.6.31-14-genericなどの作業バージョンのhfsplusモジュールが必要です。
この場合、HFS + DDイメージでこれらのコマンドを使用します。しかし、私は他のhfsplus物理ドライブと他のイメージでこれを行いました。これらはすべてカーネル2.6.37以下で動作しますが、新しいバージョンでは動作しません。
Sudo losetup -d /dev/loop0
Sudo losetup /dev/loop0 -o $((512*409640)) /folder/iMac_21.dd
Sudo mount -t hfsplus /dev/loop0 /mnt/hfs
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
dmesg | tail
[84980.380254] hfs: invalid secondary volume header
問題がカーネル2.6.38以降であることを「証明」するために、この情報を追加する必要があります。これを見てください。これは、ParagonのNTFSおよびHFS +ドライバーです。
"What's new in Paragon NTFS & HFS+ for Linux 8.5:
Support for modern Linux Kernels (up to 2.6.38);"
paragon-software.com/home/ntfs-linux-per/features.html
問題を修正するために、私は/lib/modules/2.6.27/kernel/fs/hfsplus.ko
現在の3.2.0-54-genericカーネルに。しかし、それはうまくいきませんでした。現在の3.2.0-54-genericカーネルubuntu 12.04 linuxにhfsplusの機能部分を組み込むにはどうすればよいですか?または、2.6.37のように動作するようにカーネルを修正するにはどうすればよいですか?
私が見た最高のヒントは これ でした。
この質問は少し古いですが、同じ状況でHFS +パーティションをマウントしようとしているときに遭遇し、解決策を見つけました。カーネルのバージョンとどのように関連しているかはよくわかりません。私のものは3.13(3.13.7-1 x86_64、Debian)です。
パーティションのサイズとそのオフセットを指定します。
まず、Partedからパーティションの情報をバイト単位で取得します。開始番号とサイズ番号が必要です。以下は、Partedセッションの例です(ご想像のとおり、私のハードドライブイメージは/mnt/macbook.ddです)。
$ /sbin/parted /mnt/macbook.dd
WARNING: You are not superuser. Watch out for permissions.
GNU Parted 2.3
Using /mnt/macbook.dd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit
Unit? [compact]? b
(parted) p
Model: (file)
Disk /mnt/macbook.dd: 160041885696B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 20480B 209735679B 209715200B fat32 EFI system partition boot
2 209735680B 159907647487B 159697911808B hfs+ Customer
オフセット(開始)のみを指定してパーティションをマウントしようとすると、同じエラーが表示されます。
# mount -v -t hfsplus -o ro,loop,offset=209735680 /mnt/macbook.dd /media/mac
mount: enabling autoclear loopdev flag
mount: going to use the loop device /dev/loop0
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
# dmesg | tail -n2
[117791.463123] hfsplus: invalid secondary volume header
[117791.463132] hfsplus: unable to find HFS+ superblock
ちなみに、losetupを使用する必要はありません。mountが自動的に行います。パーティションのサイズ(sizelimit)を追加すると、完全に機能します。
# mount -v -t hfsplus -o ro,loop,offset=209735680,sizelimit=159697911808 /mnt/macbook.dd /media/mac
mount: enabling autoclear loopdev flag
mount: going to use the loop device /dev/loop0
/mnt/macbook.dd on /media/mac type hfsplus (ro,offset=209735680,sizelimit=159697911808)
同じエラーメッセージを探しているときにこの質問に出くわした他の人にとって、このエラーには別の考えられる原因があることに注意してください。
パーティションが実際にHFS +パーティションである場合、mcyによって提供される回答は機能するはずですが、OSX Yosemite以降、Macのデフォルトのパーティションタイプは、論理ボリュームの処理に使用される「コアストレージ」です。つまり、実際にマウントしたいのは、「Core Storage」パーティション内の論理ボリューム(HFS +ファイルシステムを使用)です。
パーティションのタイプが「Apple Core Storage」であるかどうかを確認するには、gdisk
を使用できます:AF05
は「Apple Core Storage」のコードですが、af00
は「Apple HFS/HFS +」のコードです。
ディスクが「Apple Core Storage」を使用している場合は、 この回答 で提供されているガイドを使用してマウントできます。