Arch Linuxにhfs +パーティションをマウントする際にいくつか問題があります。
Sudo mount -t hfsplus /dev/sda2 /mnt/mac
を実行すると、次のエラーが発生します。
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.
dmesg | tail
を実行すると、次のようになります。
[ 6645.183965] cfg80211: Calling CRDA to update world regulatory domain
[ 6648.331525] cfg80211: Calling CRDA to update world regulatory domain
[ 6651.479107] cfg80211: Calling CRDA to update world regulatory domain
[ 6654.626663] cfg80211: Calling CRDA to update world regulatory domain
[ 6657.774207] cfg80211: Calling CRDA to update world regulatory domain
[ 6660.889864] cfg80211: Calling CRDA to update world regulatory domain
[ 6664.007521] cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
[ 6857.870580] perf interrupt took too long (2503 > 2495), lowering kernel.perf_event_max_sample_rate to 50100
[11199.621246] hfsplus: invalid secondary volume header
[11199.621251] hfsplus: unable to find HFS+ superblock
このパーティションをマウントする方法はありますか?
[〜#〜]編集[〜#〜]:
Sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/mac
を使用すると、hfsplus: invalid secondary volume header
のdmesg | tail
が削除されます
HFSパーティションがCoreStorageボリューム(OS X 10.10以降のデフォルト)でラップされているため、HFSボリュームがマウントされていない可能性があります。これがfdisk -l
の出力に当てはまるかどうかを確認できます:
HFS +は2つのボリュームヘッダーを使用します。1つはデバイスへの1024で、 デバイスの最後から2番目の1024 です。仕様によると、パーティションをマウントするとき、セカンダリヘッダーはパーティションの端から正確に1024バイトであると予想されますが、CoreStorageがHFSボリュームをラップしているため、現在はそうではなく、中止されます。 -o sizelimit=N
をmount
に渡して手動でHFSボリュームサイズを指定し、これを修正できますが、N
のマジック値を取得するにはどうすればよいですか?
testdisk
ユーティリティはパーティションをスキャンして、HFSパーティションが実際に終了する場所を示唆できます。 注意してください-testdiskで間違ったオプションを選択すると、パーティションテーブルが損傷する可能性があります!
testdisk /dev/sdX
、次にOK
を使用してTestDiskを起動し、ドライブを選択しますIntel
を、GPTフォーマットのドライブの場合はEFI GPT
を選択しますAnalyse
を押してからQuick Search
を押します示されているパーティションは、以前にfdisk -l
によって報告された623463232セクターの実際のパーティションサイズにかなり近い(しかし少し小さい)ように見えます。
TestDisk出力はセクターを使用するため、ドライブの論理セクターサイズ(通常は512または4096バイト)を掛けて、HFSボリュームサイズをバイト単位で取得する必要があります。これは、HFSボリュームをマウントするときに-o sizelimit=N
に使用するN
の値です。
q
を数回押してプログラムを終了します
mount /dev/sdXn -t hfsplus -o ro,sizelimit=N
別のオプションは、OS Xマシンが利用可能な場合にCoreStorageを取り除くことです。これを使用している場合は、解読も解除され、解読が完了するまで待つ必要があります(電源に接続し、OS Xで起動し、リカバリも)。
念頭に置いていないディスクから起動する必要があります。できればインターネット回復(可能な場合は、再起動時にcommand-option-r)を実行してください。ターミナルを開いて、以下を実行します。
diskutil cs list
出力にはCoreStorageボリュームとすべてが表示されるはずです。そのうちの1つはその復元可能なステータスです。 「はい」と表示されている場合は、続行するのに適切な状態です。次に実行します:
diskutil cs revert /dev/ diskXsY
(Xはディスク番号、Yはパーティション番号です)。
その後、同じ「diskutil cs list」コマンドでそのステータスを確認できます。暗号化されていなかった場合は、すでに標準のGPTパーティションレイアウトに戻っているはずなので、もう一度Archにマウントしてみてください。ディスクユーティリティで切り替えることができるように切り替えたい場合は、引き続きジャーナルされ、読み取り専用になります。
暗号化されている場合、処理にはしばらく時間がかかりますが、「diskutil cs list」で進行状況がパーセンテージで表示されます。
CoreStorage以外のHFS +ドライブとパーティションをArchにマウントしても問題はありませんでした。私は最終的にデータを移動し、ext4として再パーティション化し、データをそれらに戻しました。