web-dev-qa-db-ja.com

Arch LinuxにHFS +パーティションをマウントする

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が削除されます

23
ZuluDeltaNiner

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

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

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

  1. testdisk /dev/sdX、次にOKを使用してTestDiskを起動し、ドライブを選択します
  2. MBRの場合はIntelを、GPTフォーマットのドライブの場合はEFI GPTを選択します
  3. Analyseを押してからQuick Searchを押します
  4. しばらくすると、見つかったパーティションが表示されます。 testdisk results

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

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

    ドライブの論理セクターサイズがわからない場合は、 二番目first以下の行でfdisk -lによって報告された番号: finding your disk's logical sector size

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

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

別のオプションは、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として再パーティション化し、データをそれらに戻しました。

2
Cory T