パーティションブートセクタの回復方法

●注意●
 ここで示す操作は上級者向けのものです。初心者向けではありません。ここで書かれた内容を理解できない場合は、絶対に操作しないでください。間違えると取り返しのつかない結果になる恐れがあります。


 Windowsからパーティションは認識されるが、そのパーティションにアクセスすると「フォーマットされていない」というエラーメッセージが表示される場合は、パーティションブートセクタが壊れています。パーティションブートセクタというのは、パーティションの先頭セクタにある512バイトのデータです。
 パーティションを間違って削除した後に、再度同じ場所にパーティションを作成してしまった場合 (フォーマットはしていない) も、パーティションブートセクタがクリアされるため、同様の状態になります。パーティションを削除してしまった後、何も操作をしていないのであれば、「TIPS 削除したパーティションを簡単に復活する方法」で簡単にパーティションを復活することができますが、再度パーティションを作成してしまうと、「TIPS 削除したパーティションを簡単に復活する方法」は使えません。
 このようにパーティションブートセクタが壊れている、あるいはクリアされてしまった場合は、次の方法でパーティションブートセクタを回復することができます。そのパーティションを元どおりに回復したいのであれば、絶対にここでフォーマットを行ってはいけません。フォーマットしてしまうと、元どおりに復元することができなくなります。
 HDDのハードウェア (物理) 障害の場合にも同様の症状になることがありますが、その場合は以下の方法では修復ができませんので、レスキューソフトでデータを取り出してからHDDを交換してください。

●パーティションブートセクタのバックアップから復元する方法
 FAT32、exFATおよびNTFSパーティションの場合は、パーティションブートセクタのバックアップが自動的に作成されています。このバックアップを使って元のパーティションブートセクタを回復することができます。
 FAT16の場合は、バックアップが作成されませんので、この方法は使えません。後で述べる「他のパーティションブートセクタをコピーする方法」を使ってください。また、FAT32、exFAT、NTFSの場合でも、バックアップが壊れている場合は、やはりこの方法が使えませんので、「他のパーティションブートセクタをコピーする方法」を使ってください。特にFAT32の場合は、本来のパーティションブートセクタとバックアップのブートセクタが非常に近い位置にあるため、障害によりパーティションブートセクタが壊れた場合は、バックアップも壊れていることが多く、この方法でパーティションを回復できない可能性が高いと言えます。その点でNTFSは、バックアップのある位置が本来のパーティションブートセクタと離れた位置ですので、回復できる可能性は高くなります。

・FAT32の場合
 FAT32のバックアップブートセクタはパーティションの先頭から6セクタ目にあります。このセクタのデータをパーティションの先頭にある本来のパーティションブートセクタにコピーします。具体的な方法は次のとおりです。
1) DiskProbeを起動して、[Drives] メニューから [Logical Volume...] をクリック。
2) [Logical Volumes] のボックスから対象のドライブをダブルクリック。次に {Handle 0] の [Set Active] をクリックし、[Read Only] のチェックを外し、[OK] をクリックしてウィンドウを閉じる。
3) [Sectors] メニューから [Read] をクリック。
4) [Starting Sector] に6を入力し、[Number of Sectors] に1を入力。[Read] をクリックするとバックアップブートセクタが表示される。これが壊れていなければ、次のような画面になる (Windows NT/2000/XP/2003でフォーマットされた場合とVista/2008/7でフォーマットされた場合で若干の違いがある。また環境によって多少の違いはあるので、これと全く同じではない)。表示された画面がこれと大きく違っているようであれば、そのバックアップは壊れている。


画面1:Windows NT/2000/XP/2003でフォーマットされたFAT32の正常なパーティションブートセクタの例


画面2:Windows Vista/2008/7でフォーマットされたFAT32の正常なパーティションブートセクタの例

5) バックアップが壊れていないことを確認できたら、[Sectors] メニューから [Write] をクリック。
6) [Starting sector to write data] に0を入力。[Write it] をクリックし、次に [はい] をクリック。
 これでパーティションブートセクタが回復できます。

・exFATの場合
 exFATのバックアップブートセクタはパーティションの先頭から12セクタ目にありますので、FAT32の場合と同様にこれを元のパーティションブートセクタにコピーします (方法は上記を参照)。


画面3:exFATの正常なパーティションブートセクタの例

・NTFSの場合
 NTFSの場合は、バックアップがパーティションの中間または最後の位置にあります。Windows NT 3.5xまでの場合はパーティションの中間位置にあります。Windows NT 4.0以降の場合はパーティションの最終セクタにあります。いずれにしても、パーティションブートセクタが壊れている場合は、FAT32やexFATのようには簡単に位置がわかりませんので、DiskProbeの検索機能を使って検索します。具体的な手順は次のとおりです。
1) DiskProbeを起動して、[Drives] メニューから [Physical Drive...] をクリック。
2) [Available Physical Drives] のボックスから対象となるパーティションのあるドライブ (HDD) をダブルクリック。次に [Handle 0] の [Set Active] をクリックし、[OK] をクリックしてウィンドウを閉じる。
3) [Tools] メニューから [Seach Sectors...] をクリック。
4) 検索ダイヤログで、[Exhaustive Seach] と [Ignore case]、それに [ASCII characters] にチェックを付け、[First sector to seach] にバックアップがある付近のセクタ数を指定する。[Last sector to seach] にはFirst sector to seachの値に20000程度を加えた値を入力する。さらに、[Enter characters to seach for] ボックスにNTFSパーティションブートセクタ特有のASCII文字列 (Windows NT/2000/XP/2003でフォーマットしたパーティションであれば "NTLDR is missing" を、Windows Vista/2008/7でフォーマットしたパーティションであれば "BOOTMGR is missing") を入力する。


画面4:"NTLDR is missing" で検索する


画面5:"BOOTMGR is missing" で検索する

 First sector to seachに指定する値は次の方法で、そのパーティションサイズから計算します。例えば3.99GBのパーティションサイズであれば、3.99X1024X1024X1024÷512で、おおよそのセクタ数が8367000と計算できます。回復したいパーティションがHDDの先頭から2番目以降のパーティションであれば、それに前にあるパーティションサイズから同様に計算したセクタ数を加えます。Windows NT 4.0以降であればこの値を [First sector to seach] に入力します。Windows NT 3.5x以前であれば、その半分の値を入力します。
 なお、パーティションを再作成していない場合 (障害などでパーティションブートセクタが壊れた場合) は、基本パーティションの場合はパーティションテーブル、論理パーティションの場合は拡張パーティションテーブルに記述されている先頭セクタの値および総セクタの値から直接に終了セクタを計算することもできます。基本パーティションの場合は次のように計算します。
1) DiskProbeを起動して、[Drives] メニューから [Physical Drive...] をクリック。
2) [Available Physical Drives] のボックスから対象となるパーティションのあるドライブ (HDD) をダブルクリック。次に [Handle 0] の [Set Active] をクリックし、[OK] をクリックしてウィンドウを閉じる。
3) [Sectors] メニューから [Read] をクリック。
4) [Starting Sector] に0を入力し、[Number of Sectors] に1を入力。[Read] をクリック。
5) [View] メニューから [Partition table] をクリック。[Partition table index] で対象のパーティションをダブルクリック。
 「Relative Sector」がそのパーティションの先頭セクタで、「Total Sector」がそのパーティションの総セクタ数なので、両者を足した値から1を引いた値がそのパーティションの最終セクタになる。

画面6:[Relative Sector] + [Total Sector] −1が最終セクタになる

 なお、パーティションを再作成した場合は、再作成したパーティションの終了セクタが元の終了セクタと同じとは限りませんので、注意してください。

5) [seach] ボタンをクリックすると検索が始まり、セクタが見つかると、そのセクタ番号を表示するので、その番号をメモして、[はい] をクリックしてさらに検索を続ける。
6) 検索が終了したら、[Sectors] メニューから [Read] をクリック。
7) [Starting Sector] にメモしたセクタ番号を入力し、[Number of Sectors] に1を入力。[Read] をクリックするとバックアップブートセクタが表示される。これが正しいバックアップブートセクタであれば、次のような画面になる (Windows NT/2000/XP/2003でフォーマットされた場合とVista/2008/7でフォーマットされた場合で若干の違いがある。また環境によって多少の違いはあるので、これと全く同じではない)。表示された画面がこれと大きく違っているようであれば、それはバックアップブートセクタではないので、メモから次のセクタを入力する。


画面7:Windows NT/2000/XP/2003でフォーマットされたNTFSの正常なパーティションブートセクタの例


画面8:Windows Vista/2008/7でフォーマットされたNTFSの正常なパーティションブートセクタの例

 対象となるHDDに複数のパーティションがあると、別のパーティションのブートセクタが検索で見つかるかもしれません。また、過去にパーティションを作成・削除したことがあると、過去のパーティションのブートセクタの残骸が残っている場合があります。このように、回復したいパーティションとは別のブートセクタが検索で引っかかる可能性がありますので、それが本当に回復したいブートセクタのバックアップであることを確認する必要があります。

8) バックアップが正しいことを確認できたら、[File] メニューから [Save as...] をクリック。
9) [名前を付けて保存] ウィンドウが表示されるので、バックアップブートセクタを適当なファイル名で適当な所に保存する。
10) [Drives] メニューから [Logical Volume...] をクリック (Physical Driveではありません。間違えないように注意してください)。
11) [Logical Volumes] のボックスから対象のドライブをダブルクリック。次に [Handle 1] の [Set Active] をクリックし、[Read Only] のチェックを外す。[OK] をクリックしてウィンドウを閉じる。
12) [File] メニューから [Open File...] をクリック。
13) [開く] ウィンドウで 9) で保存したバックアップブートセクタのファイルを指定する。
14) 画面にバックアップブートセクタが表示される。
15) [Sectors] メニューから [Write] をクリック。
16) [Starting sector to write data] に0を入力。[Write it] をクリックし、次に [はい] をクリック。
 これでパーティションブートセクタが回復できます。

●他のパーティションブートセクタをコピーする方法
 FAT16の場合や、バックアップブートセクタが壊れている場合は、上記の方法ではパーティションを回復ができませんので、他のパーティションブートセクタをコピーする方法を試してください。手順は次のとおりです。
1) 別のHDDを用意し、そこに回復したいパーティションと同じ位置、同じサイズ、同じフォーマットの正常なパーティションを作成する。
2) DiskProbeを起動して、[Drives] メニューから [Logical Volume...] をクリック。
3) [Logical Volumes] のボックスからコピー元となる正常なドライブをダブルクリック。次に {Handle 0] の [Set Active] をクリックし、[OK] をクリックしてウィンドウを閉じる。
4) [Sectors] メニューから [Read] をクリック。
5) [Starting Sector] に0を入力し、[Number of Sectors] に1を入力。[Read] をクリックすると正常なパーティションブートセクタが表示される。
6) 再度 [Drives] メニューから [Logical Volume...] をクリック (Physical Driveではありません。間違えないように注意してください)。
7) [Logical Volumes] のボックスからコピー先となる回復したいドライブをダブルクリック。次に {Handle 1] の [Set Active] をクリックし、[Read Only] のチェックを外し、[OK] をクリックしてウィンドウを閉じる。
8) [Sectors] メニューから [Write] をクリック。
9) [Starting sector to write data] に0を入力。[Write it] をクリックし、次に [はい] をクリック。
 これでパーティションブートセクタが回復できます。

 この方法で、回復したいパーティションと全く同じパーティションを別のHDDに作成できないとき、パーティションの位置やサイズが多少違っても何とかなる場合がありますので、試してみる価値はあります。ただし、フォーマットは同じでなければなりません。基本パーティションと論理パーティションの違いは重要ではありません。