Arch LinuxでのHFS +パーティションのマウント


22

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 headerdmesg | tail

回答:


36

HFSパーティションがCoreStorageボリュームにラップされているため、HFSボリュームがマウントされていない可能性があります(OS X 10.10以降のデフォルト)。次の出力でこれが事実かどうかを確認できますfdisk -lfdiskの出力

HFS +は2つのボリュームヘッダーを使用します。1つはデバイスに1024、もう1つはデバイスの最後から1024です。仕様によると、パーティションをマウントするとき、セカンダリヘッダーはパーティションの端からちょうど1024バイトになると予想されますが、CoreStorageはHFSボリュームをラップするため、そうではないため中止されます。に渡し-o sizelimit=Nmount手動でHFSボリュームサイズを指定し、これを修正することができますが、どのようにしてマジック値を取得しNますか?

testdiskユーティリティは、HFSパーティションが本当に終わるところを示唆し、パーティションをスキャンすることができます。注意してください-testdiskで間違ったオプションを選択すると、パーティションテーブルが破損する可能性があります!

  1. TestDiskはを起動testdisk /dev/sdXして、OKドライブを選択します
  2. IntelMBRまたはEFI GPTGPTフォーマットのドライブを選択します
  3. を押しAnalyseてからQuick Search
  4. しばらくすると、見つかったパーティションが出力されます: テストディスクの結果

    示されたパーティションは、fdisk -l以前に報告された623463232セクターの実際のパーティションサイズに非常に近い(ただしわずかに小さい)ように見えます。

    TestDisk出力はセクターを使用するため、ドライブの論理セクターサイズ(通常512または4096バイト)を掛けて、HFSボリュームサイズをバイト単位で取得する必要があります。これは、HFSボリュームをマウントするときにN使用する値です-o sizelimit=N

    ドライブの論理セクターサイズがわからない場合は、下に示す行で報告される2番目の 最初の数値の出力を確認しfdisk -lます。ディスクの論理セクターサイズを見つける

  5. q数回押してプログラムを終了します

  6. ディスクをマウントします。 mount /dev/sdXn -t hfsplus -o ro,sizelimit=N

3
ユーザーedmondeから:このレシピは私にとってはうまく機能しましたが、物理セクターサイズではなく論理セクターサイズ(2つの数値の最初の数値、512と4096)を使用して調整し、合計ボリュームサイズを計算する必要がありました。理由はわかりませんが、うまくいきました。
fixer1234

これで問題が解決しました。他のリソースはoffsetパラメーターを使用することを提案しましたが、これは組み合わせても機能しませんでしたが、バイト数(バイト*セクター)に設定するだけで sizelimit、CoreStorage以外のパーティションでも魅力的に機能しました
cdeszaq

これは私にはうまくいきません。私はmount failed: Unknown error -1何も得ませんdmesghfsplus確実にロードされます。
ダン

+1論理セクタサイズを使用して固定
ジェイク

1
このソリューションは、OSXでの更新によりこの動作が停止するまで、うまく機能していました。他の誰かがこの問題を抱えていましたか?何かアドバイス?
Vik

2

別のオプションは、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」では進行状況がパーセンテージで表示されます。

ArchStorageにCoreStorage以外のHFS +ドライブとパーティションをマウントしても問題はありません。最終的にデータを移動し、ext4としてパーティションを再分割し、データをそれらに戻しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.