前のページで、OSが起動するまでのステップについて説明しました。
エラーが出て起動しない場合、どこの段階に障害があるのかを突き止めることが必要です。基本的な姿勢として、起動しない場合に何らかのエラーメッセージが出た場合には、そのエラーメッセージをGoogleなどで検索して調べることが大切です。なぜ起動しないかを考えずに闇雲にいじくり回すのは、更なる破壊をもたらしかねません。
お手持ちのパソコンが壊れた1台のみで、インターネットを使って検索できない場合には、近所のネットカフェや知人のパソコンを借りて調べましょう。あるいは【KNOPPIX】があれば、壊れたPCでWEBブラウジングすると言う手もあります。ただし修復するということになると、当然それなりのツールが必要になります。修復用ツールを未製作の方で、壊れたパソコン1台しかないために今から修復用ツールを作ることもできない場合には、残念ながらこのページで紹介する方法での修復はあきらめてください。逆に言えば、エラーが起こる前にこのページを読んでいる人は、今のうちから万が一のときに備えて修復用ツールを作っておきましょう。
最初に、修復に使うツールを紹介します。常に全部が必要なわけではありません。症状によって、必要なツールが異なります。
約100種類もの有用な無料アプリケーションを含んだ、絶対に持っていて損のないプラチナディスクです。
ULTIMATE BOOT CD のページからダウンロードページに回り、ダウンロードしてください。EXE形式のものは自己解凍ファイルで、実行すると解凍されてISOファイルが出てきます。zip形式のものはお手持ちのアーカイバで解凍するとISOファイルが出てきます。最初からISOファイルを選んでダウンロードしても良いでしょう。どれも中身は一緒です。いずれにしてもISOファイルをイメージ焼きでCD-Rに焼いてください。そのディスクがブータブルCDになります。
改めて説明する必要もない、1CD起動型のLinuxです。Windowsが立ち上がらないときに、Linuxを使って修復するのに使います。また、ブラウザを使ってインターネットから情報を集めることも可能で、心強い味方です。
KNOPPIX 日本語版のページから CD[ISO]ファイルをダウンロードして、イメージ焼きでCD-Rに焼いてください。(V4.0以降はDVD版もあります。)
当サイトの緊急起動ディスクのコーナーをご覧下さい。
当サイトの回復コンソール用ディスクのコーナーをご覧下さい。ただしCD版回復コンソールディスクは、他の手段で回復インストールを起動できる環境の方は、わざわざ作る必要はありません。
前のページでは【Disk Probe】を使って、実際のハードディスク上にどのようなデータが書き込まれているかを確認してきました。これは、ファイルという形式を取らないMBRやブートセクタの仕組みを確認するためには、Sector
Editor が必要だったからからです。
Sector Editor と言うのは、起動不能時の状態を把握し、原因を究明するための最も基本的なツールです。内科医にとっての聴診器みたいなものです。また、Sector Editor 自体を使って修復を行えることもあります。
ところで、Windowsが起動しないということは、当然【Disk Probe】も使えないことになります。そこで、Windowsが起動しなくても使用できる
Sector Editor を用意しなければなりません。
私がいくつか使ってみて、比較的使いやすかったのが、【PTS DiskEditor】です。このソフトは特定のOSによらず単独で動きます。操作感はマウスも使えて【Disk Probe】に近いです。特定のセクタに直接ジャンプする機能もあります。(下図参照) また、表示するだけでなく、バイナリデータを書き換えることもできます。
随分良いソフトだなぁと思って調べてみたら、現在はこのソフトの使用権はAcronisに買収されて、【Disk Director Suite】の中の【Disk
Editor】になっているそうです。なるほど、さもあらんというところです。もちろん、このページで紹介する ULTIMATE BOOT CD に含まれるバージョンはフリーで使用可能なバージョン1.04で、ライセンス上の問題はありません。 ただし良い所ばかりかと思ったら、ジャンプ指定で32GBを超えたセクタに直接は移動できないという、32GBの壁?がありました。こんなところで32GBの壁に出会うとは・・・。上記理由から、今後のバージョンアップでの改良が期待できないのが辛いところです。 |
使い方ですが、【ULTIMATE BOOT CD】をCDドライブに入れて起動すると、メニューが出ます。[F2]キーでHard Disk Tools
を選びます。また幾つかのソフト名が並びますが、あまりに搭載ソフトが多いので1画面で表示し切れません。スペースキーで候補を切り替えます。何回目かで【PTS DiskEditor】が見つかると思いますので、その番号のキーを押してください。これで【PTS DiskEditor】が起動します。
終了の仕方にはコツがあります。CDを抜かずに【PTS DiskEditor】をCtrl+Alt+Del で終了し、ここでCDを抜いてCtrl+Alt+Del
で再起動してください。×印などで終了しようとすると、終了できずにしつこく起動してくるので非常に焦ります(笑)。
もう1度、起動のステップを示した図を載せます。上から順にステップを追って考えてみましょう。
BIOSにエラーがある場合は、このページの範疇から外れるのですが、軽く説明しておきます。
BIOSが壊れるとしたら、BIOSアップデートに失敗した場合がほとんどだと思います。マザーボードによっては予備のBIOS-ROMを備えているものもありますが、そうでない場合、(CMOSクリアは試してみるでしょうが)回復は無理でしょう。 修理に出すか、マザーボード買い替えをすることになるでしょう。
あと、ありがちなのが、HDDを増設したりしたあと、オーナーが意図していないほうのHDDから起動するようにBIOS設定してしまっている場合があります。この場合は設定を正しく直せば起動します。
ブートストラップローダが壊れると、BIOSのPower On Self Test (POST) が終了した後、黒い画面で応答を停止すると思われます。BIOSによっては「システムディスクが見つからない」などのエラーを表示するかもしれません。
ブートストラップローダを修復するには、回復コンソールの FIXMBR を使います。9Xの起動ディスクなどで FDISK /MBR を実行しても良いですが、XP/2Kの場合でオリジナルどおりに戻すには FIXMBR のほうが望ましいです。
なお誤解のないように書いておきますが、FIXMBRは一般にMBRを修復するコマンドだと理解されていますが、パーティションテーブルは書き換えません。ブートストラップローダだけです。(下図の黄色い所だけ)
前のページで説明したように、パーティションテーブルの記載内容は、そのパソコン固有のデータです。ブートストラップローダのように、XP/2Kならほぼ同一というようなものではありません。それだけに修復するのには基礎的な知識が必要になります。
さて、パーティションテーブルの壊れ方ですが、各先頭の1バイトすなわちブートインディケータが壊れる場合があります。80はアクティブな基本領域であることを意味しており、4つのテーブルのうち必ず1箇所に存在します。0箇所でも2箇所以上でもエラーになります。それ以外の3個のテーブルは必ず00で始まらなければなりません。80や00以外の数字が1つでもある場合もエラーになります。
上図の右側のASCHII表示を見ていただくと意味のある文章の部分があり、色付けしておきました。各種エラーメッセージです。ブートインディケータに上記エラーがある場合には、水色に塗ったメッセージ
Invalid partition table が表示されます。
ところで、本来1番目のテーブルが80なのに00になってしまい、2番目のテーブルが80になってしまうと、ブートストラップローダの立場からみると、パーティションテーブルにはエラーがないように見えます。しかしその後の流れで第2パーティションの先頭セクタがロードされ、そこに適切なブートセクタがなかったり、そのセクタの末尾が正規シグニチャの55AA(本当はAA55)でなかったりした場合には、Error loading operating system や Missing operating system が表示されます。今回の例では、カーソルが点滅してメッセージも出ず、ず〜っと起動しないままになるかもしれません。第2パーティションが「アクティブでない基本領域」で、そこにもNT-IPLがあったりしたら、NTLDR is missing が表示されるでしょう。(このページの下のほうで説明してあります)
修復方法ですが、【PTS DiskEditor】でMBRのセクタを表示してください。(Physical Devices にチェックして開けば、第0セクタが開くので、そこがMBRです。) 見た目こそ少々違うものの、すぐ上の図と同じようなバイナリデータが表示されます。01BE・01CE・01DE・01EE 番地(赤青橙緑の帯の先頭の所です。ただし本物には色なんか付いていないので間違わないように探してください。)に注目し、アクティブな領域が1つだけ80になっており、他の3つが00になっていることを確認します。もし狂っていたら、マウスとキーボードを使って、アクティブな領域を80、その他を00に直してください。直接Hexダンプ表示を変更する自信がないのならば、F6キーを押してパーティションテーブル表示に変え、BOOT欄の下のYesとかNoとかをクリックして反転表示にし、スペースキーでアクティブのYes/Noをトグル式に切り替えることもできます。変更して【PTS DiskEditor】を閉じようとすると、変更を確定するか聞いてくるのでOKします。これだけで修復完了です。
次に、パーティションテーブルの2バイト目以降が狂った場合を考えます。アクティブな領域のテーブル損傷の場合、ブートストラップローダは、とんでもないセクタをブートセクタの場所だと判断してしまいます。その結果ブートセクタが見つからず、Error loading operating system になるでしょう。
一方、アクティブな領域以外のパーティションテーブルが壊れている場合、OSは起動しますが当該領域を認識しなくなります。
修復方法は、【TestDisk】というソフトを使います。この説明は長くなるので、別のページにまとめてあります。
拡張領域の先頭セクタにある、拡張パーティションブートレコードが壊れている場合、アクティブな基本領域には問題がないのでOSは起動しますが、当該パーティションにアクセスしようとすると、全くドライブとして認識されないか、あるいは「フォーマットしますか?」というエラーが出てアプローチできなくなります。この場合には絶対にフォーマットしてはいけません。
修復方法は、【TestDisk】を使います。こちらのページをお読み下さい。
ブートセクタの図を見てみましょう。
この図の赤い部分、すなわちNT-IPLが壊れている場合、エラーメッセージは Error loading operating system か何もメッセージを出さずに止まるかだと思います。
修復方法は、回復コンソールで FIXBOOT を実行します。なお、FIXBOOTも(FIXMBR同様に)上図の青い領域(ディスクパラメータ)は書き換えません。
上図の青い部分、すなわちディスクパラメータが壊れた場合、それがアクティブな領域のものならば、エラーメッセージ NTLDR is missing を出して起動しなくなります。
一方、前のページでも確認したように、他のパーティションにもブートセクタがあります。こちらのセクタのディスクパラメータ損傷の場合にはOSは起動しますが、当該パーティションにアクセスしようとすると、全くドライブとして認識されないか、あるいは「フォーマットしますか?」というエラーが出てアプローチできなくなります。この場合には絶対にフォーマットしてはいけません。
修復方法は、【TestDisk】を使うのが便利です。こちらのページをお読み下さい。
上の図を見ると、NTLDR is missing と NTLDR is compressed というエラーメッセージがありますね。その上と下の水色に塗られたメッセージは、それに付随して表示されるものです。つまり、A disk read error occurred NTLDR is missing Press Ctrl+Alt+Del to restart という様に表示されます。
このメッセージは文字通り、NT-IPLがNTLDRを探したがNTLDRが消失していたり壊れていた場合に(も)表示されます。
この場合の最も簡単な修復方法は緊急起動ディスクです。回復コンソールでもいけますが、緊急起動ディスクでやったほうが、windows上で操作できるので直感的に修復できます。
緊急起動ディスクを使うと、HDD上のNTLDRが壊れていようと消失していようと、普通にWindowsが起動します。下の図をご覧下さい。
緊急起動ディスクで起動する場合は、使われるのは緊急起動ディスクのNTLDRであって、HDDのNTLDRではないからです。
修復方法は、緊急起動ディスクのNTLDRらを、HDD上にコピーしてやるだけです。ただし、HDD上のNTLDRは壊れているくせに自分にはシステムファイル特性があるんだと主張して生意気にも居座ろうとします。そこで、コマンドプロンプトから
attrib -s -h -r NTLDR
などと実行して、特権を剥奪してから、正しいNTLDRなどで上書きしてやります。
なお誤解のないように付け加えておきます。上の図を見ると、MBR・ブートセクタ・NTLDRなどのブートファイル群の部分にいかなるエラーがあろうとも、緊急起動ディスクを使えば起動するように思えますが、そうではありません。 BOOT.INIにはARCパスでNTOSKRNL.EXEなどが存在するシステムフォルダが記載されており、NTDETECT.COMはそこを探しにいきますが、その際にMBRのパーティションテーブルやブートセクタのディスクパラメータの情報が必要なのです。それがないと実際のシステムフォルダの位置が分からないからです。したがって、パーティションテーブルなどにエラーがあった場合には、緊急起動ディスクでは起動することができません。 |
ただしこの NTLDR is missing というエラーがでる場合の大半は、NTLDRそのものの損傷・消失とは違う原因で起こると思われます。一例として下の図をご覧下さい。
本来、MBRのパーティションテーブルにおいて、基本領域1がアクティブであるべきところを、基本領域2がアクティブに入れ替わってしまった。基本領域の先頭なので運良く(?)適正なブートセクタもあり、NT-IPLはNTLDRを同一領域ルート内に探しに行くが、そこにはNTLDRは存在しない。NTLDR is missing というメッセージからは連想しにくい原因ですよね。『NTLDR is missing というエラーメッセージはNT-IPLによって表示されるものだから、少なくてもMBRの段階ではエラーがなく、ブートセクタのエラーに違いない。』という思い込みをしていると、原因にたどり着けません。この場合の修復方法は、MBRのパーティションテーブルのアクティブを切り替える修復方法になるのです。
また、マイクロソフトによると、このページのような原因もあるとの事です。ルートに何でもかんでもファイルを置いてはいけないということですね。
NTLDR is missing は、このページの中でも何回も出てきていますね。この理由は、本当にNTLDRそのものが損傷したり消失したりする以外にも、NTLDR自体には問題がないのにNTLDRの場所を見つけられなくなることが多いからです。ですから、このエラーメッセージが出たときには、NTLDRそのものの問題を疑うとともに、『なぜ迷子になっているのか?』をブートのステップを考えながら探ると、真の原因が見つかると思います。 |
BOOT.INIの記載内容に齟齬があると、NTDETECT.COMは間違えた場所にNTOSKRNL.EXEを探しに行くため、結局見つからず起動不能になります。
この場合のエラーメッセージは、無効なBOOT.INIファイルです あるいは 次のファイルが存在しないかまたは壊れているため、Windows を起動できませんでした: Windows\System32\Hal.dll または 次のファイルが存在しないかまたは壊れているため、Windows を起動できませんでした: Windows\System32\Ntoskrnl.exe などになります。
対処法は、緊急起動ディスクで起動して、直接BOOT.INIをテキストエディタで書き換えれば良いでしょう。BOOT.INIは隠しファイル&読み取り専用ファイルなので、その属性をはずして書き換えてください。
なお、回復コンソールをつかった直し方はこちらのページに詳しいですが、緊急起動ディスクのほうがずっとやりやすいと思います。
なお、【ULTIMATE BOOT CD】の中にある【EDITBINI】を使うと、(NTFS領域であろうとも)簡単に修復できます。これが一番手軽な修復方法かもしれません。⇒解説ページ
もうここまで来るとキリがないのですが、NTOSKRNL.EXEが壊れていると起動しないので、最後にこれにも触れておきます。
NTOSKRNL.EXEが壊れているとすれば、ほとんどの場合、オーナーがカスタマイズのため、意図的にNTOSKRNL.EXEを置き換えた場合だと思います。インターネット上でも、カスタマイズ用のNTOSKRNL.EXEが数多く配布されています。このNTOSKRNL.EXEはSP2用だとSP1が起動しない場合があるなど、かなり神経質なので、起動不能トラブルも多いかもしれません。カスタマイズが好きな方は、オリジナルのファイルを上書きして消してしまわずにリネームして同じフォルダに保存しておいて欲しいと思います。
さて修復方法ですが、回復コンソールを使います。オリジナルがリネームして保存してある場合には、不正なNTOSKRNL.EXEをdelコマンドで削除して、renコマンドでオリジナルのものの名前を戻せば完了です。
不幸にしてオリジナルが保存していない場合には、状況によって解決策がいくつかあります。
インストールディスクをお持ちの方の方法はこちらになります。ただし、修復対象のOSとインストールディスクのOSでサービスパックのバージョンが異なると、この方法でも上手くいかないかもしれません。
また、メーカー製パソコンならI386フォルダの中にNTOSKRNL.EXEがあるかもしれず、回復コンソールでそのフォルダにアプローチできるのならば、copyコマンドでI386からsystem32へコピーすることで修復できます。一般に回復コンソールは、HDDではルートフォルダやシステムフォルダ傘下しかアプローチできないので、I386フォルダをPCメーカーがどこに置いているか、あるいはそのフォルダ内にどんなファイルを置いているかで可否が決まってきます。
上のどちらにも当てはまらない場合、それこそThemeXPなどのサイトから別のカスタマイズ用のNTOSKRNL.EXEをダウンロードしてくるか、純正品が良ければサービスパックネットワークインストール用のファイルの中から探してきます。この場合、NTOSKRNL.EXEはフロッピーには入らないサイズなので、CD-R版の回復コンソールディスクを使います。このディスクを作るときに、【SuperウルトラISO】でISOイメージにNTOSKRNL.EXEを追加しておけば良いでしょう。なにせCD-R版には600MB以上の空きがありますから、大抵のものは入ります。これがこのディスクを作る最大の美点です。このディスクで立ち上げて、copyコマンドでNTOSKRNL.EXEをCD-Rからsystem32フォルダ内にコピーすればOKです。
お疲れ様でした。
起動エラーの修復は一般に難易度が高いと思いますが、ブートの仕組みを理解しているかいないかで、問題に対応する能力に大きな差が出ると思います。このページを読むときは、前のページとこのページを何回も行ったり来たりして、なぜこのエラーにこの対処法なのかということを、暗記でなく理屈で理解して欲しいと思います。
しかし、このコーナーで解説したのは、Windows XP/2000をシングルブートで使うという限られた状況の、ほんの初級レベルの話です。興味のある方は、さらに研究してみて下さい。
ところで、このコーナーを読んで、MBRやブートセクタ・拡張パーティションブートレコードなどのバックアップが事前に取ってあれば、実は修復に掛かる労力は数分の一で済むし、修復できる確実性もぐ〜んと上がるということにお気づきでしょうか?1セクタのバックアップは、512バイトでしかありません。512KBじゃないですよ。512バイトです。実に小さい。これは【Disk
Probe】で簡単に保存しておくことができます。なおかつ、このファイルは、純粋に512バイト分の数字が並んでいるバイナリデータに過ぎないので、【Disk
Probe】だろうが【PTS DiskEditor】だろうがLinuxのddコマンドだろうが、互換性があります。dskなどという拡張子に惑わされてはいけません。幸いにも、起動不能トラブルが起こる前にこのページを読んだ方は、ぜひセクタのバックアップを取っておきましょう。それからツールを作っておきましょう。
最後にぜひ言っておきたいことがあります。自分自身の明確なミス操作によって起動不能になった場合は別として、不意に起動不能エラーが出現した場合には、HDDに不良クラスタがあるなど、何らかなハードウェア的な故障を疑うべきです。たとえば、デフラグしたあとに起動不能になったというような症例は、ほとんどの場合デフラグが悪いのではなく、不良セクタがあるのにデフラグしたため、大事なデータがたまたま不良セクタ上へ移動してしまったとか、連続稼動の負荷でHDDが壊れてしまったなどの可能性が高いと思います。そういった意味では、デフラグというのはある程度のリスクを背負ったプログラムであるともいえます。
もし幸運にして、このページの方法で回復できたとしたら、大事なファイルなどを別メディアにバックアップしたあとに、完全なセクタ単位のチェックディスクを行ったり、メモリーテストをなさることを強くお勧めします。
また、ウイルスに感染したことが原因で起動不能になる場合もあります。復旧後にアンチウイルスソフトで確認しておきましょう。