TestDisk は頻繁にアップデートし、また媒体別バージョンにより細かい点が異なるため、このページの解説画面どおりにならない場合があります。しかし、基本的な流れは共通しているので、十分参考になるはずです。英語のソフトですが中学生レベルの英語なので、TestDisk が表示するメッセージをよく読んで、画面の指示に従いながら使用してください。なお、より詳しい情報を必要とする方は、TestDisk非公式ヘルプのコーナーもお読み下さい。

【TestDisk】で失われたパーティションをリカバリする

【TestDisk】は、MBR(マスターブートレコード)にあるパーティションテーブルが損傷した事が原因で、パーティションを認識できなくなってしまったときのリカバリソフトです。ハードディスク上に点々と散在する残骸から、パーティションの位置・サイズ・種類などを拾い出す能力は、フリーソフトでありながら、市販のソフトを上回るものを持っています。

また、ブートセクタが壊れてしまったときに、バックアップブートセクタを使って復旧する機能を持っています。セクタのバックアップ作業は意外と手間がかかり、なおかつ、ある程度の専門知識を必要とするので、このような機能は貴重です。さらに、オリジナル&バックアップの両ブートセクタともに壊れている場合でも、ブートセクタを新規作成する機能があるので、これで窮地を脱せる可能性があります。

このようにすばらしいソフトなのですが、日本ではあまり紹介されていないようなので、解説を載せておこうと思います。

ただし、このソフトの性格上、使い方を誤れば完全にOSが立ち上がらなくなるので、ブートの原理をよく理解したうえでお使い下さい。突然このページを訪れた方は、ぜひ当サイトの関連ページをお読みになってから、こちらのページをお読み下さい。

入手法

【TestDisk】は、様々なOS上で動くバージョンが、公式ページで配布されています。

ここでは、Windowsが起動しない場合のリカバリを考えますから、起動ディスク型のものを用意しましょう。実は既に紹介した【ULTIMATE BOOT CD】には、このソフトが含まれています。また【KNOPPIX】にもLinux版が入っています。ですから新たに起動ディスクを作る必要はありません。DOSの起動フロッピーディスクで起動できる方は、DOS用のバージョンを使うのも良いでしょう。

また、アクティブな基本領域は壊れていないが、それ以外の領域のパーティションテーブルの情報が壊れている場合があります。もっと簡単に言うと、Cドライブは大丈夫なのでWindowsは起動するが、Dドライブにアクセスできない場合などです。このような場合には Vista/XP/2KではWindows版を使ってWindows上で修復することもできます。

基本的な使い方はすべてのバージョンで共通なので、自分のケースにあったバージョンを用意してください。

(以下の説明では、解説図は都合上、Windows版の画面を使っています。)

【TestDisk】を使ってパーティションテーブルを回復

MBRのパーティションテーブルが壊れた場合、一般的には、修復するための専門的な知識と技術と根気が必要です。なぜならば、そのHDDに存在するパーティションの各種情報を、あちこちのセクタを回って拾い集めてこなければならないからです。

ところが、【TestDisk】を使えば、面倒な検索から修復までを全てこのソフトが代わりに行ってくれます。

【TestDisk】はイマイチ使い方が分かりにくく、日本語解説サイトもないので、実際に私がこのソフトを使ってリカバリー実験した様子をお見せします。

【ULTIMATE BOOT CD】から起動する場合は、CDを入れて起動し、メニューから Filesystem Tools を選び、Partition Tools 経由で【TestDisk】を起動します。途中何回かダイアログが出ますが、全てOK、あるいはそのまま放っておいても起動します。

【KNOPPIX】では、タスクバーのモニタ型のアイコンからシェルを起動します。

モニタ型のアイコンをクリックしてセルを起動

表示されたシェルにおいて、青い文字が表示されプロンプトが点滅するので sudo -s と打ち込んで管理者権限を得たのち、testdisk と打ち込み、Enter で起動します。

KNOPPIX版のTestDiskは、「25行表示できるエリアが必要だよ」というエラーを出して起動しない事があります。この場合はあらかじめシェルのウインドウを大きくしておいてからTestDiskを起動してください。それでもまだエラーが出る場合は、シェルのメニューの「設定」→「フォント」→「フォントサイズを小さく」で、列×行の表示が一瞬出るので、行が25以上になるまでフォントサイズを小さくしてください。
25行エラー画面

また、KNOPPIX 4.02.CD版および5.1CD版ではTestDiskを起動できないバグがあります。
4.02CD版では
ln -s /usr/lib/libntfs.so.7 /usr/lib/libntfs.so.5
5.1CD版では
ln -s /usr/lib/libntfs.so.10.0.0 /usr/lib/libntfs.so.9
を打ち込んでEnterしてから、TestDiskを起動してください。
シェルでのコマンド操作

Windows版では、winフォルダの中の testdisk_win.exeを実行します。

起動するとまずログファイルを新規作成するか、追記するか、作らないかという確認画面が出ます。お好きなものをキーボードの上下キーで選んでEnterしてください。ただしログファイルを書き込む場所が無い場合(CD-Rなどの読み取り専用媒体から起動した場合など)は、No Logを選んでください。基本的にNo Logを選んでおいて良いと思います。それから今後の操作で一切マウスは使用出来ません。すべてキーボードでの操作になります。

ログ作成確認画面

すると図1のような初期画面になります。物理的に存在するHDDの台数分だけ、列が表示されます。(図1の例では2台) 誤解のないように確認しておきますが、物理的なHDDの数であって、パーティションの数ではありません。(新しいバージョンのTestDiskでは、HDDの機種名も表示されます。)

分析・復旧したいHDDを上下矢印キーで選択し、左右キーで[Proceed]を反転表示させてEnterキーを押します。(以下面倒なので、単に[Proceed]を選ぶと書きます。)

 画面での注意書きのように、この段階でHDDのサイズが間違って表示されているようならば、今後の作業が正しく行われる可能性はありません。[Quit]でTestDiskを終了させてください。
(3.5インチのIDE接続HDDの場合)ジャンパー設定が間違っていないか、BIOSの設定はどうか、最新のOSパッチやドライバが当ててあるかなどを確かめてください。また、物理的にHDDが壊れている場合でも、ここの表示が正しくならない場合があるでしょう。このような場合は、TestDiskを含めてソフトウェアでの修復は不可能であると考えられます。

図1testdisk起動画面

すると図2のようになります。今回はWindowsのパソコンなので[Intel]を選びます。(たとえCPUがIntelではなくAMDだという場合でもIntelです。)

図2Intel

図3の画面では、[Analyse]を選びます。

図3Analyse

[Analyse]/[Advaced]/[Quit] 以外は、専門的知識のある人のみの選択肢です。素人は選ばないようにしましょう。([Geometry]に関しては、Incorrect number of heads/cylinder 255(NTFS) != 240(HDD) のようなエラーが出た場合は、選んで設定する必要があります。TestDisk非公式ヘルプ参照)

[Geometry]:HDDのCylinder/Head/Sectorの各々の最大値を設定する。
[Options]:このソフトのオプション設定。
[MBR Code]:ブートストラップローダを書き込む。(XP/2Kを使っているならFIXMBRの方が望ましいと思います)
[Delete]:パーティションテーブルの消去。
これらの選択肢は、知識のない人が安易に行うときわめて危険です。
[Quit]:何もせずに前の画面に戻る。(この選択肢は頻繁に使います。操作に迷ったらこれで戻りましょう。
     またTestDiskを終了したい時も、Quitを繰り返し選ぶことで終了させます。)

今回の目的のためには[Analyse]を選びます。 すると即座に図4のような分析結果が出ます。

図4分析画面

1番が*マークなのでアクティブな基本領域、2番の領域はEなので拡張領域、5番はLで、 Start End の値が2番の領域に含まれている点からして、2番の拡張領域の中の論理領域であることが分かります。またファイルシステムがNTFSであることも分かります。これらの情報は全て、パーティションテーブルおよび拡張パーティションブートレコードに記載されている情報でしたね。すなわち、壊れている/壊れていないに関わらず、現在のパーティションテーブルおよび拡張パーティションブートレコードから読み取れるパーティション情報を表示しているわけです。

それから、Start も End も3つずつの数字で表されていますが、これはCHS形式の表現です。

ここでCHSについて説明しておきます。CHSとは、HDDのセクタの位置を、Cylinder/Head/Sector の3つの物理的構造を使ってあらわす方法です。それぞれの意味は言葉で説明するよりも、リンク先の図を見て理解してください。

CHSと並ぶもう1つのセクタ位置の表現方法がLBAで、これは単純に0から始まる整数値で全てのセクタに番号を付けていく方法です。絶対セクタ番号などとも呼ばれます。

上の図の1行目を見てください。CHS 10337 240 63 と書いてありますね。これは、Cylinderが0〜10336の10337個の整数で、Headが0〜239の240個の整数で、Sectorが1〜63の63個の整数で表すことができる量のセクタが、このHDD上に存在することを示しています。1セクタが512バイトで、1KB=1024バイト、1MB=1024KBですから、このHDDの総容量は、

10337×240×63×512÷1024÷1024=76316(MB)

になるわけですね。CylinderとHeadは0から数え始めるのに対し、Sectorは1から数え始める習慣を覚えておきましょう。なお私の今回の例に使ったHDDはHeadが240ですが、大多数の人がHeadが255(0〜254)になっていると思います。

ここで多くの方が、CylinderやSectorはともかく、Headが240というのはどういうことだ?と疑問を感じることでしょう。Headが240ということは、表裏を使えるとは言え、120枚ものプラッタ(磁気ディスク)が厚さ数cmのHDDの中に収納されていなければなりません。そんなHDDが現実に存在するわけはありません。

実際には、CHSは
仮想的に考えて与えられた数値で、過去の方式との互換性を保つために使われている方式なのです。ですから、プラッタが1枚のHDDなのに255Headと言う場合も当たり前のように存在しています。

むしろCHSとは時刻の表現のようなものだと考えてください。60秒で1分になり、60分で1時間になり、24時間で1日になりますよね。したがって1日の時刻は、真夜中の零時を起点にして、h時m分s秒で表すことができます。この場合のhは0〜23、mとsは0〜59の整数になります。

CHSでは、Cが時、Hが分、Sが秒と考えてください。時刻と同じように、下のほうが最大値を超えると上の位が繰り上がる方式で増加していきます。

図4は正常なパーティションテーブルがある場合でしたが、パーティションテーブルが壊れていて、アクティブな領域がない場合には、図5のようなメッセージが出ます。

図5アクティブな領域がない場合

また、MBR末尾のブートシグニチャが壊れている場合には、図6のようなメッセージになります。

図6シグニチャがない

とにかく、図4〜6のいずれの状態であっても[Quick Search]を選びます。

すると調べようとしているHDDのパーティションが、Windows Vista を使って作られたものかどうかを訊かれます。Vistaを使ったならばキーボードのYキーを、違うならばNキーを押します。

 この段階で確認を求められる理由は、Vistaで作られたパーティションは、シリンダの変わり目でパーティションを区切るという境界ルールが当てはまらないためで、これ以降のTestDiskでのSearchのやり方が変わってくるためです。Vistaの場合には2048セクタ(1MByte)を1単位として、その単位の境界で区切ります。 このページでのこれ以後の解説は、従来の境界ルールで作られた例なので、Nキーを押した場合となっています。
 もしも自分ではどちらか分からない場合には、Yキーを押せと画面にはあります。私個人としては、わからなければ1回Nキーでやってみて、適切な候補が出なかったときにYキーでやり直すのが良いように思います。

確認画面Vistaの確認

次に図7のような画面になります。この段階では Enter キーでこの画面をスキップします。

 *補足
今回の例では、正常なHDDを例にしているので、Quick Searchで正しい情報が得られています。パーティションの区切り方に矛盾がない場合には緑色の表示になります。この画面において、パーティションの領域は正しいのだが種類が違うというエラー(たとえばPrimary bootableのはずなのにただのPrimaryになってしまっているなど)が見つかった場合には、当該行を反転させておいて、キーボードの左右キーで種類を切り替え、次画面で
[Write]すれば、その後のDeeper Searchへ進まなくても修復完了になるようなトラブルケースもあります。

図7経過画面

すると図8のようになります。(図5図6経由の場合は、このような整然とした情報は表示されません) 一見、図4と同じ画面に見えますが、よく見ると選択肢が変わっています。

ここからが【TestDisk】の真骨頂です。図8[Deeper Search]というのは、HDDのセクタをスキャンして紛失したパーティションを検索する命令です。実際に試してみましょう。[Deeper Search]を選びます。

図8Search!

図9は検索中の画面です。

図9Search中

【TestDisk】が探しているものは、各領域のブートセクタやそのバックアップセクタの残骸です。それらのセクタから見失ったパーティションの情報が得られるからです。

(Vistaで作られたパーティション以外では)パーティションの境界は必ずシリンダの変わり目に設置されるというルールがあるため、Start の値はヘッドが必ず0、セクタは必ず1になります。但し第1パーティションは、MBRが0,0,1に存在するため 0,1,1になります。0,0,2ではなく、0,1,1になるのは、シリンダの境界がダメならば、せめてヘッドの変わり目に境界を作ろうというトラック境界ルールがあるためです。また論理領域も拡張領域のEPBRがn,0,1に存在するため、n,1,1になります。(nは0または正の整数) 以上のことを考えると、Start の値は必ずn,0,1 ないし n,1,1 になることになります。そしてブートセクタは、そのようなセクタ上に存在するはずです。このルールは重要なので覚えておいてください

一方、バックアップセクタはNTFSの場合には各領域の最終セクタにあり、FAT32ではオリジナルブートセクタの6セクタ後方にあるので、そのセクタも【TestDisk】はチェックしています。一連の検索作業には数分から数十分掛かるかもしれません。(HDDの容量やパソコンの能力によって変わってきます) Stopを選ばずに、お待ちください。

図9をもう少し良く見て見ましょう。この図の段階でほぼ99%検索が終わっています。(10336セクタ中の10219セクタ目) 12個情報が見つかっていますが、全く同じものが2行あるものがいくつかありますね。(1&7/2&3/9&10/11&12)  これは、オリジナルとバックアップの両方ともブートセクタが見つかったものです。また、End値がシリンダ境界にないものもあります。こういうものは候補からはずしても良い可能性が高いです。過去にDisk geometry が変更されていたりすると、こういうことが起こりえます。逆に言うと、Disk geometryを変更してからは使っていないパーティションだと言う可能性が高いと言えるわけです。あと、ラベル名がついているものがありますね。FAT32のディスクパラメータにはラベル名の情報も記載されるので、それを参考情報として表示しているわけです。なかなか親切な機能ですね。

さて、検索が終わると自動的に図10の画面になります。ダブった情報は1つにまとめられ、パーティション修復の候補となる情報が、ずら〜っと表示されました。私のHDDは市販ソフトでパーティションを広げたりくっつけたり、OSを入れ変えたり、今まで色々なことをしているので候補が多いですが、一般の人は、もう少し分かりやすい情報になると思います。(何も問題がない方ならば図7のように正しい候補が緑色表示されるだけになるはずです。)

ただし、今の場合は例題としてはこれくらいの複雑さがちょうど良いので、順次説明していきます。ここからは人間の頭脳を使って矛盾のないような候補を選ぶ仕事です。

まず基本情報として、私のパソコンは、75GBのHDDをCドライブ(45GB)とDドライブ(30GB)の2つの領域に区切っています。どちらもNTFSです。皆さんも自分のHDDがどうなっているのか、このくらいの情報は覚えていると思います。まあ、覚えていなくても回復操作はできますから安心してください。今は忘れてしまったと仮定しましょう。

まず、図10の1つ目と2つ目の候補を見て、どちらも0/1/1から始まっていますから、どちらかが本物で、どちらかが偽者(つまり過去に使っていたパーティション情報)だと考えられます。

上下矢印キーで、候補を反転表示にして選択できますが、その際に、最下段にその候補に関するコメントが出ます。1番目の候補は、バックアップセクタによって見つかったものだと言うことと、領域のサイズが分かります。(Cドライブのサイズを覚えていた人は、この段階でこれは違うと判るわけです。)

ここで、図の中にも書いてありますが、Pキーを押してみると、この領域のルートにある、ファイルやフォルダ名を見ることができるので、1つの判断材料になります。Pキーを押します

図10検索結果1

すると、図11のようにエラーが出て、リストが表示されませんでした。このことによって、1番目の候補がほぼ偽者であることが分かりました。[Quit]図10に戻ります。

(*注:ファイルなどのリストが出たからと言って本物とは限りません。ですが出なかったら偽者かあるいは復旧不能なほど破壊が進んでいるかと考えられます。つまり必要十分条件ではないが必要条件であるということです。)

図11エラー表示

続いて下矢印キーを使って、図12のように2番目の候補を反転表示させます。今度の最下段の表示は、オリジナル&バックアップの両ブートセクタが存在していることを示しています。図10の時のメッセージと比べてみてください。ここでもPキーを押します

図12検索結果2

今度は、フォルダ名やファイル名が表示されました。(図13は途中までで省略してあります) これでこっちが本物と分かりました。[Quit]図12に戻ります。

図13ルートフォルダやファイルの表示

さて、2番目の候補が正しい事が判ったので、6176/239/63 セクタまでは第1領域となります。よって、第3〜5の候補は領域が重なってしまいますから、選択候補から落ちます。6番目の候補は、1番目のすぐ後ろからスタートしていますから理想的な候補です。そしてそのまま 10336/239/63 というHDD末尾のセクタまで行っていますから、これ以降の第7&8候補も落選です。(ごくまれに第1領域の後に不確定領域があり、第2領域と離れているという環境もありえるので、2&7とか2&8という組み合わせの可能性も捨て切れません。しかしまずは常識的なものを選んでおいて、もしトラブルが直らないようならば組み合わせを変えれば良いでしょう。)

さて、2番目と6番目が正しい候補だと分かりました。図12で選んだ候補を反転しておいて、左右の矢印キーで各行左端の記号を変更していきます。各記号の意味は以下のとおりです。

*:アクティブな基本領域
P:アクティブではない基本領域
L:論理領域
E:拡張領域
D:パーティションとして取り扱わない

ここでは2番目を*にし、6番目をLにします。2番目の*に疑問を感じる人は少ないでしょうが、6番目がなぜLなのか?と思う人も多いでしょう。それは 6177/0/1 ではなく、6177/1/1 だからです。基本領域や拡張領域では、Headが0になるはずです。論理領域は拡張ブートパーティションレコードの1トラック後ろ(+1Head)から始まるので、ここは論理領域だと考えるのが自然です。ちなみに、Eはこの場合選べませんでした。

2番目の候補だって基本領域なのにHeadが0じゃなく1じゃないかですって? 0/0/1にはMBRがあるんですよ。それで1シリンダ目に限って、一般の領域は 0/1/1 から始まるのです。
 最近のTestDiskのバージョンでは、矛盾のある設定をすると赤字で警告が出ます。下図は、第2基本領域が完全に第1基本領域の中にあると言うムチャクチャな設定で進めようとしたときの警告画面です。赤字でStructure: Bad. と表示されています。
矛盾設定の警告画面

図14のように、左右矢印キーで適切な設定が済んだら、Enter キーです。

図14パーティションの種類の指定

すると、図15の画面になります。自動的に拡張領域の情報が加わりましたね。左端がD表示の行は画面から消えてスッキリします。どこにも矛盾はないようです。それではいよいよ、この設定をHDDに書き込みます。この操作によって、MBRのパーティションテーブルおよび拡張領域を含んでいれば拡張パーティションブートレコードも書き換えられます[Write]を選びます。

図15設定済み画面

以下のようなメッセージが出るので、最後の決断をして、Yキーを押します。

確認メッセージ

以上で修復が無事完了しました。再起動して、無事Windowsが起動できるようになったかを確認してください。

ところで、私が人柱になってパーティションテーブルを全部0で埋めて破壊し、その後TestDiskで修復をした結果を見てみましょう。図16-前が故意に破壊実験する前、図16-後が破壊後にTestDiskで修復した後の状態です。

図16-前書き換え前

図16-後書き換え後

第1領域は完璧に回復していますが、第2領域が少し変わってしまいました。もちろん通常のパソコン使用には何の支障もありません。これについて説明します。

相違点は、CHSの開始セクタの項目(青い領域の最初から数えて2〜4バイト目)が 00 C1 FF から EF FF FF になっています。

パーティションテーブルにおけるCHSの表現方法ですが、3バイトのうち、最初の1バイトが、そのままヘッド値。真ん中の1バイトを2進数に直して、下位6ビットがセクタ値。最後の1バイトを2進数に直し、頭に先程の真ん中の1バイトの上位2ビットをくっつけた10ビットがシリンダ値になります。

すなわち00 C1 FF はヘッド値0、C1・FFはそれぞれ2進数で11000001・11111111なので、セクタ値は1、シリンダ値は2進数で1111111111なので10進数で1023になります。まとめると CHS=1023/0/1です。

同様にEF FF FFはヘッド値EFは10進数で239、FFは2進数で11111111なので、セクタ値は2進数で111111なので10進数で63、シリンダ値は2進数で1111111111で10進数で1023になります。まとめると CHS=1023/239/63です。

せっかく計算しておいてなんですが、今回の例では第2領域は先頭から8GB以上離れた位置にあり、3バイト表現のCHSではどっちみち正しく表現できません。実際に使われているのはLBAの方なんです。ぶっちゃけなんだっていいのです。

図16-前の 1023/0/1というのは、どうせ正しく表現できないのなら、シリンダ境界から領域が始まるという規則だけは守ろう、シリンダ値はCHSで表現できる最大値である1023を使おうという習慣に則ったものです。図16-後の1023/239/63と言うのは、このHDDのGeometryとCHSの限界を考え合わせた極限値です。一応、両方とも理屈の通った数値になっています。

もう1つ、システムIDが05から0Fに変わりました。ちょうど【TestDisk】でもTキーで図17のようにタイプを確認できるので確認してみましょう。

図17システムID

05も0fのどちらも拡張領域を表すもので、現実問題として差がないということのようです。どちらかというと、8GBを超えてLBAを使っているので、より望ましいシステムIDである0Fに変えてくれたと思えば良いのでしょう。

【TestDisk】を使って拡張パーティションブートレコードを回復

今度は、MBRのパーティションテーブルではなく、拡張パーティションブートレコード(EPBR)のテーブルが壊れた例を考えます。

Windowsは起動するものの、Dドライブにアプローチしようとすると、Dドライブの存在を認識していないか、図18のように「フォーマットしますか?」と聞かれてしまい、どちらにせよこのドライブにアプローチできません。

*注:図18の場合、決して『はい』を選ばないで下さい。修復が一段と困難になります。

図18フォーマットしますか?

【TestDisk】で[Analyse]すると、図19のように訳がわからない結果が出ます。ブートシグニチャまで壊れると、図20のように、AA55がないというメッセージになります。

図19結果表示

図20署名がない!

修復法は上の項目の、MBRのパーティションテーブルの回復方法と全く同じです。正しく行えば簡単に直ります。しかし、生半可な知識でやると、(MBRのPTも一緒に書き換えることから)最悪の場合Windowsまで立ち上がらなくなります。きちんとこのコーナーの内容を理解した上で、実行してください。

【TestDisk】を使ってブートセクタ(ディスクパラメータ)を回復

【TestDisk】のもう1つの花形機能が、ブートセクタの回復です。

既に説明したように、ブートセクタは、IPLとディスクパラメータから成り立っています。末尾には例のブートシグニチャがあります。

このうちのIPLの回復は簡単で、XP/2Kの場合、回復コンソールから FIXBOOT を実行するだけです。Dドライブを指定したいのならば FIXBOOT D: のようにします。

一方、ディスクパラメータを回復するのはかなり難しいのです。それは、ディスクパラメータにはその環境固有のデータが含まれるからです。もしも同じOSを使っているのならば、あなたと私のIPLは全く同じですが、ディスクパラメータは全然違ったもののはずなのです。

ところが幸いなことに、NTFSやFAT32では、あなたのオリジナルのブートセクタを丸ごとバックアップしたセクタが自動的に作られています。【TestDisk】はそのバックアップセクタを見つけ、損傷したブートセクタをセクタごと上書きすることで修復する機能を持っています。

まず実験のために、故意にDドライブのブートセクタのディスクパラメータを全て0で埋めて破壊してみました。【TestDisk】を起動し、[Analyse]すると、図21のようになります。(もしブートシグニチャまで破壊されていると、上の図20のようになります。) 

図21不正なブートセクタ

それでは、【TestDisk】を使った回復方法を説明します。ログを残すかどうか、HDDの選択、Partition Tableのタイプの選択(Intelを選ぶところ)までは、上記のパーティションを回復する時と同様です。メニュー選択画面(図22)になったら、ブートセクタのバックアップに特化した選択肢である、[Advanced]を選びます。

図22Advanced

図23の画面になります。ここで、直したいブートセクタのあるパーティションを選んで[Boot]を選びます。

図23Boot

図24のように結果が出ます。オリジナルブートセクタが、Bad になっていますね。一方、バックアップの方はOKです。そこで、バックアップでオリジナルを上書きすることにします。[Backup BS]を選びます。
この段階で、すぐにこの操作に入らずに、[Dump]画面で分析することを強くお奨めします。詳しくは図28以降を参照してください。)

図24Backup BS

図25のように確認が出ます。Yキーを押します。これで修復完了です。

図25確認メッセージ

図26は、あらためて結果を確認した画面です。両方ともOKになりましたね。Sectors are identical. というのは、2つのセクタに差異がないということです。まぁ、上書きしたのだから当たり前ですね。

図26Dump

ところで、このブートセクタの結果表示画面では、図27のように、いろいろな選択肢があらわれます。(時と場合に応じて選択可能なものだけが表示されます。) このうち、ブートセクタに関するものには以下の項目があります。

図27選択肢

[Quit]:前の画面に戻る
[Org.BS]:オリジナルでバックアップを上書きする
[Backup.BS]:バックアップでオリジナルを上書きする
[Rebuild BS]:ブートセクタを作り直す
[Dump]:ダンプ表示にする

[Dump]という選択肢を選ぶと図28のように、オリジナルとバックアップの16進ダンプ表示になります。

図28ダンプ画面

オリジナルとバックアップが左右に並んで表示されますので、2つの差が比べやすいです。画面に表示しきれない部分は[Page UP/Down]キーで確認できます。できれば、図24の段階でダンプ画面に入り、どこがどう違うのか確認しておいた方がよいです。大前提として、本当にブートセクタが壊れていて、バックアップセクタが正しいということを見極めることが必要です。オリジナルのブートセクタは一部のデータが壊れていても、一部の残った正しいデータの中にかけがえのない情報があるかもしれません。あるいはバックアップセクタにも、一部不正な情報がある場合もありえます。最悪の場合、不正なバックアップで上書きしてしまい、更に泥沼にはまり込むこともありえます。【TestDisk】のOK/Bad と言う表示を100%信じてはいけません

そのためには、ディスクパラメータの構造を理解する必要があります。「正常なブートの仕組み」のページで、ディスクパラメータの詳細は覚えなくても良いと書きましたが、この部分が壊れていて修復しようと言う人に限っては、この構造を理解する必要がありますディスクパラメータの解説ページをお読み下さい。

確認するのは、ディスクパラメータの部分だけで構いません。IPLの領域はFIXBOOTで、あとからでも直せますから。

バックアップを決断したときには、ディスクパラメータの部分だけでも、上書きされてしまう方のデータをメモ用紙に書き取っておくのが良いでしょう。電子データで残したい人は、【KNOPPIX】を使ったセクタのバックアップ方法をお読み下さい。

ところで、オリジナルもバックアップも壊れてしまっている時は、どうしたら良いのでしょうか?これもまた実験として、オリジナル&バックアップともにディスクパラメータを0で埋めてやってみました。現実的には、ここまで壊れていたらあきらめてOS再インストールや、データ領域ならばフォーマットを考えざるを得ないかもしれませんが、【TestDisk】にはブートセクタをオリジナル・バックアップともに作り直す選択肢があるので、最後の手段として一応試してみるべきです。図29の両ブートセクタともBad状態から[Rebuild BS]を選択します。

図292つともbad

すると、図30のようになります。

少し見にくいですが、スペースを挟んで左が新しく書き込む値、右が今の値(全部0)です。なんと破壊前の正しい値をはじき出しました。[List]で当該パーティションのルートに存在するファイルが確認できるようになっていれば成功です。[Write]でHDDに書き込みます。

図30Write

1クラスタあたりのセクタ数、1ファイルレコードセグメントあたりのクラスタ数、1インデックスレコードあたりのクラスタ数は、一般的な値が代入されるようです。。
MFTとMFTミラーの開始クラスタ番号は、MFTに特徴的なパターンを基にスキャンして範囲を決めるようです。下の図はMFTの範囲をスキャンしている途中の図です。
MFTのスキャン

結局、実験の結果、ディスクパラメータのボリュームシリアルナンバー以外は回復しました。ボリュームシリアルナンバーの部分は変更しないようになっているようです。ボリュームシリアルナンバーが違うと今後問題がでるのかどうか分かりません。また、私の環境では正しかったものの、いつも正しい数字をはじき出すとは限らないでしょう。そういった意味では、[Rebuild BS]は完全にブートセクタが壊れてしまったときのみに使う選択肢です。

書き換えられるセクタのバックアップを取っておく

【TestDisk】は強力なツールで、MBRやブートセクタなどを、バシバシ修正します。そして、このソフトの性格上、バックアップを作ってアンドゥができるなどということは不可能です。

修正する前の状態を保存しておきたければ、ご自分で重要なセクタのバックアップを取っておく必要があります。

バックアップしたい人は、こちらのページをお読みください。


<ホームへ>  <起動トラブルの目次ページへ>  <エラー修復のページへ>