紛失したNTFSパーティションを回復するには?


1

私は2012年半ばのMacBook pro 13 "モデル番号A1278(EMC 2554 *)を持っている。私は750GBのディスク上でMacOS Sierra 10.12とWindows 10 Build 10240を動かしている。

私はMacOSとWindowsの両方が読み書きできるようにしたいので、適切な調査をせずに、ディスクユーティリティを使ってMacOSとBootcampがある同じディスクに139GBの新しいパーティションを追加し、ファイルシステムをExFatにしました。

ブートキャンプはもはや機能していませんでした。 Mac OSはまだ起動していますが、Boot CampパーティションはDisk UtlilityとMacOSデスクトップにはありましたが、Startup起動オプションメニューに表示されなくなりました。 bootcampから直接起動しようとすると、次のメッセージが表示されました。 起動可能なデバイスがありません---起動ディスクを挿入して任意のキーを押します

だから私はこのチュートリアルに従った: http://nerdr.com/bootcamp-partition-lost-repairing-mac-partitions/

私はそのチュートリアルと他のフォーラム投稿からの回答を使っていたので、私は間違いを犯したかもしれないことをすでに知っています。 https://discussions.apple.com/message/19071422#19071422 & 私のbootcampパーティションのサイズを変更した後、私はもはやmacOSを起動することはできません )上のリンクのnerdrチュートリアルはgptfdiskを使うように言っています、そして私はフォーラムの答えに基づいてターミナルアプリのgdiskを使っていました。

gdiskを正確に使用してNerdrの手順を実行した後は、メニューオプションがすべて同じなので、違いがあるかどうかわかりませんでした。私が終わった後、Bootcampは完全に消去されました。これが、gdiskが私の新しいパーティションテーブルとして表示するものです。

Command (? for help): p
Disk /dev/disk0: 1465149168 sectors, 698.6 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): DC08A243-0BDF-4D84-870F-044744CBFD1A
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1465149134
Partitions will be aligned on 8-sector boundaries
Total free space is 70891845 sectors (33.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   EF00  EFI System Partition
   2          409640      1100019007   524.3 GiB   AF00  
   3      1100019008      1101288543   619.9 MiB   AB00  
   4      1101288544      1392987759   139.1 GiB   0700  
   5      1392987760      1394257295   619.9 MiB   AB00  Recovery HD

これらの端末出力も役立ちます。

diskutil list:

   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS 750GB HD                563.0 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:       Microsoft Basic Data TD                      149.4 GB   disk0s4
   5:                 Apple_Boot                         650.0 MB   disk0s5

diskutil cs list:
No CoreStorage logical volume groups found

私はデータがまだそこにあると思います、それは今パーティションテーブルにちょうど足りません。ご覧のとおり、Recovery HDディスクはセクター1394257295で終わり、最後に使用可能なセクターは1465149134です。これは33.8 GBの空き容量があることを示しています。

何もバックアップされていないし、タイムマシンが動作していません。

元のパーティションに戻したパーティションを復元することで解決する可能性があると思いました。 ExFatパーティションを750GBのハードドライブに復元することができませんでした。 「Restore Process Has Failed」というメッセージと、次のコマンドリストが表示されます。 ターゲットを検証しています... ソースを検証しています... ターゲットデバイスを再パーティションしています... ソースボリュームは読み書き可能でアンマウントできないため、ブロックコピーできません。 操作に失敗しました…

マウント解除した後でも、MacOSがジャーナル処理したようにファイルシステムを再フォーマットした後でも、上記のメッセージが何度も表示されます。最後に、ブートキャンプがMBRとGPTのどちらを使って起動しているのか私にはわかりませんが、それが助けになればディスクにはwindowsフォルダがありました。

失われたNTFSパーティションを回復する方法

編集:デビッドアンダーソンの出力

enter image description here

"dd if = / dev / disk0 bs = 512 skip = 1394257296 count = 50000000 | fgrep -o -a -b" BOOTMGRが圧縮されている "の場合、出力はありません。


BootCampパーティションがどれも上書きされていない場合、短い答えはYesです。あなたは本当に複数の質問を抱えています。おそらくいくつかの別々の質問をするべきです、それぞれ前の質問が答えられた後。たとえば、「失われたNTFSパーティションを回復する方法」を尋ねることをお勧めします。おそらく次の質問:macOSとWindowsの両方で読み書きできる共有ボリュームを追加するにはどうすればいいですか? "また、あなたのMacのモデル/年を含めるべきです。
David Anderson

1. GPT fdisk == gdisk 2. 2つのリカバリhdパーティション(3&5)があります。私見それはあなたのパーティションテーブルを回復するためにあなたが以前に何をしたか完全に不明瞭です。あなたの以前のNTFSボリュームの一部はおそらく上書きされているので、私は短い答え「いいえ」にしがちです。
klanomath

@klanomath、ポストで述べたように、私はgDiskを使用してパーティションテーブルを回復することを試みるためにNerdrチュートリアルに従った。
Mutant_Bunny

@ DavidAndersonわかりました。あなたは私が失われたNTFSパーティションを回復するのを助けてください。
Mutant_Bunny

@Mutant_Bunny nerdrチュートリアルは、2つ目のRecovery HDについては触れていません。そのため、いつ、どのように作成されたのかは不明です。
klanomath

回答:


1

あなたが以下に与えられるステップのより良い説明を必要とするならば、コメントを投稿してください。

下記の答えは512バイトのセクターサイズを仮定します。より大きなセクターサイズの場合は、適切な調整を行う必要があります。下記は紛失したWindows Boot Campパーティションを見つけて復元するために必要な基本手順です。ステップのどれも 要求する 第三者のソフトウェアの使用

  1. 該当する場合は、System Integrity Protection(SIP)を無効にします。にアクセスするにはこれを行う必要があります /dev/disk0。つまり、起動したディスクに保存されているデータを読み込める必要があります。

    SIPを無効にするコマンドを以下に示します。いくつかあるうちの1つで起動する必要があります。 macOSの回復モード または 外付けMac起動ディスク ターミナルアプリケーションからコマンドを実行する前に。

    csrutil  disable
    

    実際には、SIPを完全に無効にする必要はありません。次の文書化されていないバージョンの csrutil commandを使用して、少なくともSIPのファイルシステム保護を無効にすることができます。

    csrutil  enable  --without  fs
    

    注:High Sierra(macOS 10.13.1)を実行している間に上記のコマンドをテストしただけです。

    SIPを部分的または完全に無効にした後、macOS(OS X)に戻って起動してください。

    注意: 削除 SIPを選択的に無効/有効にするためにも使用できます。

  2. ターミナルアプリケーションを起動し、以下のコマンドを入力してください。

    sudo  chmod  a+w  /dev/disk0
    

    これを読むことができます(書くことはできません) /dev/disk0 コマンドの前に sudo

    注意:この読み取りアクセスは、コンピュータを再起動すると自動的に削除されます。

  3. 次に、不足しているNTFSパーティションをどのセクターに含めることができるかを判断する必要があります。これは、下記のコマンドを入力することで実現できます。

    gpt  -r  show  /dev/disk0
    

    以下は私のコンピューターからの出力です。私のコンピュータは Fedora (Linux)と 削除 インストールされている場合、以下の出力は一般的なものとは異なります。ただし、2011 iMacで予想されるとおり、Windows NTFSボリュームはまだパーティション4にあります。

    Marlin:~ davidanderson$ gpt -r show /dev/disk0
    gpt show: /dev/disk0: Suspicious MBR at sector 0
          start       size  index  contents
              0          1         MBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  585937496      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      586347136    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      587616672  193097312      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
      780713984     409600      5  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      781123584    1024000      6  GPT part - 0FC63DAF-8483-4772-8E79-3D69D8477DE4
      782147584  192528384      7  GPT part - E6D6D379-F507-44C2-A23C-238F2A3DF928
      974675968          8         
      974675976    1835008      8  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      976510984     262144      9  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      976773128          7         
      976773135         32         Sec GPT table
      976773167          1         Sec GPT header
    

    あなたのケースでは、あなたはあなたの出力をから置き換えることができます gdisk。あなたが探す必要があるのは、大量の空き容量です。あなたの出力はセクタから始まる空き容量を示しています 1394257296 そしてセクターを終わらせる 1465149134。これは 70891839 約36 GBの空き容量のあるセクター。

  4. 不足しているNTFSパーティションの検索を開始する準備が整いました。私のWindows NTFS Boot Campパーティションの最初のセクタを16進ダンプするために、私は下記のコマンドを入力しました。

    hexdump  -C  -v  -n  512  -s  587616672b  /dev/disk0
    

    注:上記のコマンドでは、 587616672b です 587616672 手紙が続く b。それは ではない 5876166726

    下記は上記のコマンドからの出力です。

    Marlin:~ davidanderson$ hexdump -C -v -n 512 -s 587616672b /dev/disk0
    460ca34000  eb 52 90 4e 54 46 53 20  20 20 20 00 02 08 00 00  |.R.NTFS    .....|
    460ca34010  00 00 00 00 00 f8 00 00  3f 00 33 00 a0 51 06 23  |........?.3..Q.#|
    460ca34020  00 00 00 00 80 00 80 00  5f 6e 82 0b 00 00 00 00  |........_n......|
    460ca34030  00 00 0c 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
    460ca34040  f6 00 00 00 01 00 00 00  f8 1a 1d 9e f0 ed 53 24  |..............S$|
    460ca34050  00 00 00 00 fa 33 c0 8e  d0 bc 00 7c fb 68 c0 07  |.....3.....|.h..|
    460ca34060  1f 1e 68 66 00 cb 88 16  0e 00 66 81 3e 03 00 4e  |..hf......f.>..N|
    460ca34070  54 46 53 75 15 b4 41 bb  aa 55 cd 13 72 0c 81 fb  |TFSu..A..U..r...|
    460ca34080  55 aa 75 06 f7 c1 01 00  75 03 e9 dd 00 1e 83 ec  |U.u.....u.......|
    460ca34090  18 68 1a 00 b4 48 8a 16  0e 00 8b f4 16 1f cd 13  |.h...H..........|
    460ca340a0  9f 83 c4 18 9e 58 1f 72  e1 3b 06 0b 00 75 db a3  |.....X.r.;...u..|
    460ca340b0  0f 00 c1 2e 0f 00 04 1e  5a 33 db b9 00 20 2b c8  |........Z3... +.|
    460ca340c0  66 ff 06 11 00 03 16 0f  00 8e c2 ff 06 16 00 e8  |f...............|
    460ca340d0  4b 00 2b c8 77 ef b8 00  bb cd 1a 66 23 c0 75 2d  |K.+.w......f#.u-|
    460ca340e0  66 81 fb 54 43 50 41 75  24 81 f9 02 01 72 1e 16  |f..TCPAu$....r..|
    460ca340f0  68 07 bb 16 68 52 11 16  68 09 00 66 53 66 53 66  |h...hR..h..fSfSf|
    460ca34100  55 16 16 16 68 b8 01 66  61 0e 07 cd 1a 33 c0 bf  |U...h..fa....3..|
    460ca34110  0a 13 b9 f6 0c fc f3 aa  e9 fe 01 90 90 66 60 1e  |.............f`.|
    460ca34120  06 66 a1 11 00 66 03 06  1c 00 1e 66 68 00 00 00  |.f...f.....fh...|
    460ca34130  00 66 50 06 53 68 01 00  68 10 00 b4 42 8a 16 0e  |.fP.Sh..h...B...|
    460ca34140  00 16 1f 8b f4 cd 13 66  59 5b 5a 66 59 66 59 1f  |.......fY[ZfYfY.|
    460ca34150  0f 82 16 00 66 ff 06 11  00 03 16 0f 00 8e c2 ff  |....f...........|
    460ca34160  0e 16 00 75 bc 07 1f 66  61 c3 a1 f6 01 e8 09 00  |...u...fa.......|
    460ca34170  a1 fa 01 e8 03 00 f4 eb  fd 8b f0 ac 3c 00 74 09  |............<.t.|
    460ca34180  b4 0e bb 07 00 cd 10 eb  f2 c3 0d 0a 41 20 64 69  |............A di|
    460ca34190  73 6b 20 72 65 61 64 20  65 72 72 6f 72 20 6f 63  |sk read error oc|
    460ca341a0  63 75 72 72 65 64 00 0d  0a 42 4f 4f 54 4d 47 52  |curred...BOOTMGR|
    460ca341b0  20 69 73 20 63 6f 6d 70  72 65 73 73 65 64 00 0d  | is compressed..|
    460ca341c0  0a 50 72 65 73 73 20 43  74 72 6c 2b 41 6c 74 2b  |.Press Ctrl+Alt+|
    460ca341d0  44 65 6c 20 74 6f 20 72  65 73 74 61 72 74 0d 0a  |Del to restart..|
    460ca341e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    460ca341f0  00 00 00 00 00 00 8a 01  a7 01 bf 01 00 00 55 aa  |..............U.|
    460ca34200
    

    上記の出力の説明は、次のいずれかにあります。 マイクロソフト:NTFS物理構造 または ウィキペディア:NTFS Internals

    この分野には、いくつかの文字列が埋め込まれています。 NTFSパーティションを見つけるには、これらの文字列のいずれかを検索する必要があります。ランダムに文字列を選びます BOOTMGR is compressed。私のNTFSパーティションがどこにあるか私は知っているので、この文字列を検索するために以下のコマンドを入力することができます。

    dd  if=/dev/disk0  bs=512  skip=587616672  count=50000000  |  fgrep  -o  -a  -b  "BOOTMGR is compressed"
    

    最大 count 私のコンピューターが許容する価値は約 50000000。この値はコンピュータによって異なる場合があります。したがって、NTFSパーティション全体を検索したい場合は、このコマンドを4回入力する必要があります。毎回 skip 値が増加した 50000000。もちろん、これらのコマンドを繰り返すためのループ付きのシェルスクリプトを書くこともできますが、ここでそのようなスクリプトを追加することはこの回答の範囲を超えていると思います。

    私のコンピュータで上記のコマンドを入力した結果の出力は以下のとおりです。

    Marlin:~ davidanderson$ dd if=/dev/disk0 bs=512 skip=587616672 count=50000000 | fgrep -o -a -b "BOOTMGR is compressed"
    425:BOOTMGR is compressed
    338433776:BOOTMGR is compressed
    790493856:BOOTMGR is compressed
    1095625536:BOOTMGR is compressed
    1405559232:BOOTMGR is compressed
    3533975792:BOOTMGR is compressed
    3534741744:BOOTMGR is compressed
    4601366880:BOOTMGR is compressed
    6145609496:BOOTMGR is compressed
    6146292528:BOOTMGR is compressed
    6146951928:BOOTMGR is compressed
    6951738816:BOOTMGR is compressed
    8739643840:BOOTMGR is compressed
    8846594496:BOOTMGR is compressed
    9138315712:BOOTMGR is compressed
    9241170368:BOOTMGR is compressed
    21212440040:BOOTMGR is compressed
    50000000+0 records in
    50000000+0 records out
    25600000000 bytes transferred in 874.399247 secs (29277244 bytes/sec)
    

    予想通り、文字列は検索された最初のセクターの内側に見つかりました。残りの一致は無視できます。

    あなたのケースでは、あなたは私が仮定したところで、以下に与えられたコマンドを入力するでしょう count の値 50000000 有効でしょう。

    dd  if=/dev/disk0  bs=512  skip=1394257296  count=50000000  |  fgrep  -o  -a  -b  "BOOTMGR is compressed"
    

    注:あなたは「コントロールT」を入力することができます dd コマンドが実行中です。これにより、 dd 進行状況を表示するコマンド。

    このコマンドが一致しない場合は、NTFSパーティションが完全に損なわれていないと考えることができます。

  5. 一致が有効なパーティションブートセクタにあることを確認します。最初に一致値を次の値で割ることによって、任意の一致値をパーティションブートセクタの開始値に変換できます。 bs 値。残りはすべて破棄できます。次に、 skip 結果への価値。これは、以下の私の最初の一致値について以下で計算されます 425

    425 / 512 + 587616672 = 587616672
    

    次に、計算セクターを16進ダンプするコマンドを入力します。私のコンピューターでは、コマンドと出力はステップ4に示されています。 -s オプションでは、あなたはあなたの開始セクター価値を代用する必要があるでしょう。手紙を追加することを忘れないでください b あなたの価値に。

    最低でも、セクターは16進数で始めるべきです eb 52 90 4e 54 46 53 20 20 20 20 00 そして16進数で終わる 55 aa。確認するための他の値は、ステップ4に示されている参照で見つけることができます。

  6. NTFSパーティションの開始とサイズの値を決定します。パーティション開始値は、パーティションブートセクタ開始値と同じです。サイズを決定するには、パーティションブートセクタに格納されている41番目の値から始まる8つの16進バイト値を取得する必要があります。ステップ4に示した私のPartition Boot Sectorの場合、これらの値は以下のとおりです。

    5f 6e 82 0b 00 00 00 00
    

    次に、次に示すように、バイトの順序を逆にして、リトルエンディアンからビッグエンディアンに変換する必要があります。

    00 00 00 00 0b 82 6e 5f
    

    これらの値を、スペースと先行するゼロを除去してから追加して、単一の16進値に変換してください。 0x 結果の始まりそうすると、上記の値に対して、以下に示す単一の値になります。

    0xb826e5f
    

    以下に示すコマンドを使用して、10進数に相当するものを判別してください。

    Marlin:~ davidanderson$ echo $((0xb826e5f))
    193097311
    

    最後に、この値を8で割り切れる最も近い整数に切り上げます。この場合、 193097311 したがって、この値はの値に切り上げる必要があります。 193097312

    知らない人たちにとって、最後の3桁が8で割り切れるならば、値は8で割り切れる。 311/8=38.875 そして 312/8=39、 そう 193097311 は割り切れない8 193097312 です。

  7. 見つかったパーティションをGUIDパーティションテーブル(GPT)に追加します。このパーティションがまだコンピュータに存在しない場合は、以下のコマンドを入力して追加できます。あなたの場合は、インデックスオプションを使用します -i 6 代わりに -i 4。また、あなたの最初の部門 -b とサイズ -s オプション値は異なります。

    sudo  gpt  -f  add  -i  4  -b  587616672  -s  193097312  -t  windows  /dev/disk0
    

    私のコンピュータはmacOS 10.13.1を実行しています。 OS Xまたはそれ以前のバージョンのmacOSを実行している場合、このコマンドは実行されない可能性があります。もしそうなら、あなたは最初から起動する必要があります インターネット上のmacOSの回復 または 外付けMac起動ディスク その後、ターミナルアプリケーションから下記の代替コマンドを実行します。繰り返しますが、あなたの -i-b そして -s オプションの値は、次に示すものとは異なります。

    gpt  add  -i  4  -b  587616672  -s  193097312  -t  windows  /dev/disk0
    

    もう一つの選択肢は使用することです gdisk GPTにパーティションを追加します。

    注:GPTを編集した後、コンピューターの再起動が必要になる場合があります。

  8. 必要に応じて、SIPを有効にしてください。 SIPを有効にするコマンドが以下に示されていることを除いて、これはステップ1と同じ手順を必要とします。

    csrutil  enable
    

@Mutant_Bunny:私の指示では、コマンドを入力するように求められます dd if=/dev/disk0 bs=512 skip=1394257296 count=50000000 | fgrep -o -a -b "BOOTMGR is compressed"
David Anderson

こんにちは、David Anderson、私はこの命令を試し始めました。私はステップ5で立ち往生しました。数字の意味やそこに表示されている数学の実行方法がわからないため、処理方法がわかりません。私はあなたがリンクしたWindows NTFSパーティションとウィキペディアのページを読んでみましたが、それでも理解できません。前のステップからの私の出力での編集のために私の元の記事を見てください....
Mutant_Bunny

"dd if = / dev / disk0 bs = 512 skip = 1394257296 count = 50000000 | fgrep -o -a -b" BOOTMGRは圧縮されています。
Mutant_Bunny

@ Mutant_Bunny:ステップ4で述べたように、 このコマンドが一致しない場合は、NTFSパーティションが完全に損なわれていないと考えることができます。 少なくともNTFSボリュームの先頭が上書きされています。あなたはボリュームを回復することはできません。ファイルの回復は非常に困難です。
David Anderson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.