「TestDisk」によるブートセクタの修復

パーティションブートセクタの修復

「TestDisk」は、現在使われていないものも含めてブートセクタを検索し、
そこに保存されている情報をもとにパーティションテーブルを書き換え、パーティションを復旧します。
従って、パーティションの情報はブートセクタに依存します

ところが、パーティションに問題がある状況下では、
検出されたブートセクタがすでに上書きされている可能性があります。
この場合、当該ブートセクタの情報は使えません。

ブートセクタに問題があると、そのパーティションにアクセスすることができません。
また、それがアクティブパーティションであった場合、Windowsを起動することもできなくなります。

Boot - TestDisk

「TestDisk」では、ブートセクタを修復することも可能です。
「TestDisk」が自動判別してブートセクタの修復を試みることもありますが、
ユーザーが判断して、いくつかの操作を手動で行わなければならない場合もあります。

ブートセクタの修復

ここでは、下記ページ内容を理解していることが前提で話を進めます。

「TestDisk」の使い方

入手方法から、基本的な操作手順まで書いてあります。
ただし、これは主にパーティションテーブルの修復に関してまとめたものです。
一方、このページでは、パーティションテーブルの修復だけではパーティションが復旧できない場合について
説明していきます。

Advanced - TestDisk

まず、「TestDisk」のメインメニューにおいて、「Advanced」を選択します。

パーティションの選択 - TestDisk

修復対象のパーティションを上下カーソルキーで選び、「Boot」を選択します。

Boot - TestDisk

ここから、選択したパーティションのブートセクタに関する操作ができます
ブートセクタの破損が明らかで、それが「TestDisk」にも認識されているときは、
「Analyse」後に「Write」を選択した時点で、この画面が表示されることもあります。

上の画像の例では、ブートセクタは「Status: Bad」、つまり破損していて、
バックアップブートセクタは「Status: OK」、そして双方が一致していないことを示しています。
バックアップブートセクタとは、まんまブートセクタのコピーで、
NTFSパーティションの場合、各パーティションの最終セクタに存在しています。

ここで、画面の見方について補足しておきます。
「BS」というのは、「Boot Sector」の略、つまり、ブートセクタのことです。
さらに、ここでいうブートセクタとは、PBSのことを指しています。

画面上で確認する限り、バックアップブートセクタは「Status: OK」となっています。
バックアップブートセクタは、めったに書き換えられません。
その存在価値は、ブートセクタの復旧のためだけにあると言っても過言ではないです。
従って、これをブートセクタに書き込んでみます。
「Backup BS」を選択します。

注意点として、ブートセクタが正しくなくても、「TestDisk」は「Status: OK」とみなすことがあります
すると、「TestDisk」は正常終了しますが、復旧には至りません。
ユーザー側でブートセクタを直接確認して判断する必要があります。「Dump」を選択することで確認できます。

「Status: Bad」と表示される場合は、ほぼ間違いなくブートセクタに異常があると考えていいですが、
「Status: OK」という表示は、半信半疑で見ていったほうがいいです。

「Status: OK」という表示について

「TestDisk」が表示する「Status: OK」というのは、ブートセクタとしての体が保たれているというだけであって、
その内容が実際のパーティションに適合することを示しているわけではありません

たとえば、各種パーティション編集ツール(イメージングバックアップソフト含む)を使った場合は、
ブートセクタがバックアップと一致しない状態で、問題なく動作している可能性があります。
※つまり、「Sectors are not identical.」だけど「Status: OK」という状態。
そこでブートセクタに異常が生じ、バックアップが「Status: OK」だからといってバックアップで上書きしても、
パーティションは認識されません。
バックアップされているブートセクタの内容が、現在のパーティションとは異なるからです。

ブートセクタのバックアップが作られるのは、パーティションをフォーマットした時です。
パーティション編集ツールでは、バックアップブートセクタを無視していることがあるため、
パーティションを変更した覚えがあるなら、特に注意が必要です。

「Rebuild BS」について

ブートセクタが破損し、バックアップも使えない状況になってしまった場合は、
「Rebuild BS」を使ってブートセクタを再構築します。

ただし、「Rebuild BS」は最終手段です。
新たに作ったデータで上書きする、不可逆な操作だからです。
もし、「Rebuild BS」を使わなければならないとしたら、
なぜそういう状態になっているのか、今一度よく考えるべきかもしれません。

また、「Rebuild BS」で再構築されるのは、ディスクパラメータだけです。
ブートストラップローダに関しては現在値を引き継ぎ、
しかも再構築したブートセクタでバックアップも上書きします。
起動パーティションのブートセクタに異常がある場合、ブートストラップローダの修復が必要です。
詳細はリンク先ページ参照。

上書き確認 - TestDisk

ブートセクタにバックアップブートセクタを上書きしていいかという、確認画面です。
上書きして問題なければ、「Y」キーを押します。

Status: OK - TestDisk

ブートセクタ、つまりPBSも「Status: OK」となりました。
これで、もうこのメニューを操作する必要はなくなったので、「Quit」を選択します。

再起動、または再接続して、動作確認します。

ブートセクタとディスクジオメトリの関係

ブートセクタに異常があると、「TestDisk」はディスクジオメトリを誤認識することがあります
それは、「TestDisk」実行中にもエラーとなって表示され、
たとえば、「Analyse」中に、

Warning: Bad ending head (CHS and LBA don't match)

というような表示が現れます。
ディスクジオメトリを前提にしたCHSと、連番のLBAとで、パーティションの終了位置が合わなくなるのです。
※「Bad ending cylinder」「Bad ending sector」「Bad sector count」「Bad relative sector」も同類です。

なぜ、「TestDisk」がディスクジオメトリを誤認識してしまうかというと、
ディスクジオメトリに関する情報が、ブートセクタに保存されているからです。※セクタサイズ、セクタ数/トラック、ヘッド数等。
従って、ブートセクタが破損している場合は、ディスクジオメトリが誤認識される可能性が高くなります。

同様に、以下のような表示がなされる場合もあります。

Warning: number of heads/cylinder mismatches 255 (NTFS) != 16 (HD)

左側の数値がブートセクタの情報、右側の数値が「TestDisk」が認識しているもので、
これらが一致しないということです。

「TestDisk」の認識している値が明らかにおかしい場合、これを修正するには、
「TestDisk」メインメニューから「Geometry」を選択し、手動でディスクジオメトリを変更する必要があります
以下、参考ページです。

「TestDisk」の「Geometry」について

「TestDisk」が認識しているディスクジオメトリを正しく変更することも必要ですが、
より重要なのは、なぜ「TestDisk」がディスクジオメトリを誤認識してしまうのか、その原因を探ることです。
それはほとんどの場合、

どちらかだと思います。