デスクトップ ファイルWindows が起動しない

Wes Miller

目次

考えられる問題
便利なツール
オペレーティング システムが見つからない
ブート ローダーが見つからない
システムが起動した後ハングする
Windows セーフ モードと復元ポイント
Windows による読み込みが完了する前にシステムがクラッシュする
前回正常起動時の構成
Windows が起動した後にシステムがクラッシュする

Windows を少しでも使用したことのある皆さんは、おそらく 1 回はシステム障害を経験しているでしょう。Windows の信頼性はリリースごとに強化されていますが、皆さんでも Windows でも制御できないことがあります。それは、ドライバ エラー、停電によるシステム障害、ファイルの破損、ディスクのクラッシュなどです。このようなことが起きると、新しいコンピュータに交換した方がよいのではないかという不安が生じます。このコラムでは、Windows システムで問題が発生する可能性のある部分、およびそれらのトラブルシューティングを行って再度システムを正常に動作させる方法について説明します。

考えられる問題

私は Windows を 20 年近く使用していますが、皆さんと同じように、システムが起動しない状況を経験したことがあります。問題が発生したときのシステムの動作にもよりますが、通常、原因はすぐに見つかります。では、Windows システムで発生する現象を分類し、各シナリオに対応するトラブルシューティングの方法を紹介していきましょう。

  • システムで BIOS POST (Power-On Self Test: 電源投入時の自己テスト) が実行されず、電源を入れてもビープ音が鳴らない。
  • システムで POST が実行されるが、オペレーティング システムが見つからないことを示すメッセージが表示される。
  • システムで POST が実行されるが、NTLDR または BOOTMGR が見つからないことが原因で失敗する。
  • システムの起動が開始されるが、起動中にハングする。
  • システムの起動が開始されるが、Windows デスクトップが表示される前にクラッシュする (ループ処理から抜けられなくなる)。
  • Windows デスクトップが表示されるが、その後 Windows の実行中にクラッシュする (ループ処理から抜けられなくなる)。

これらはまったく異なるシナリオのように思われますが、実はほとんどのシナリオの原因となる問題は共通していて、わずか数種類に限定されます。また、簡単なトラブルシューティングを行うことによって、問題が発生している部分と、その問題の解決方法を特定できます。最も難しい状況の 1 つは、システムでまったく POST が実行されなくなった場合です。

残念ながら、このような状況が発生した場合、その原因はほぼ間違いなくハードウェアにあります。この問題の解決方法は、CMOS バッテリーの交換などの簡単なものから、マザーボードや電源装置の交換などの複雑なものまでさまざまです。ただし、システムで POST が実行されない場合は、自分でそう簡単に解決できる問題ではないので、そのシステムを製造した OEM のサポート電話番号を確認しておいた方がよいでしょう。

便利なツール

システムで POST が実行される場合、そのシステムを回復できる可能性は十分にあります。なぜかと言えば、単にハードウェアが正常に動作しなくなったことが問題の原因ではないからです (ただし、ハードウェアとソフトウェアの両方が原因である可能性も当然残ります)。システムの起動処理がどこまで実行されたかにもよりますが、考えられるさまざまな原因を 1 つずつ検証して、システムを再度正常に動作させることは可能です。

トラブルシューティングを開始する前に、次のような機器やツールを入手することをお勧めします。

  • Debugging Tools for Windows をインストールしてクラッシュの分析に使用できる、もう 1 台のコンピュータ。
  • Microsoft Desktop Optimization Pack (MDOP) に含まれる Microsoft Diagnostics and Recovery Toolset (DaRT)。オンラインで 30 日間限定の評価版を入手できます。また、Windows PE CD を使用することもできます (Windows Vista または Windows Server 2008 システムを回復させる場合は、バージョン 2.1 を用意するのが理想的です)。
  • 問題が発生したシステムのクラッシュ ダンプを格納できるだけの容量を備えた USB フラッシュ ドライブ。
  • 問題が発生したシステムからハードウェアを取り外すための工具。

オペレーティング システムが見つからない

オペレーティング システムが見つからないことを示すエラー メッセージ (この文面は、PC 上で使用している BIOS によって異なります) が表示される場合は、システム上のブート セクタが見つからないことが問題の原因です。ブート セクタは、ブート ローダーの場所を示す、ディスク上のセクションです。私は、この問題を思いがけないタイミングで一度だけ経験したことがあります。それは、停電中に役員のコンピュータの電圧が急上昇したときです。驚くべきことに、その時点で確認できた問題はこれ 1 つのみでした。

残念ながら、より詳しい調査の結果、そのシステムのすべてのパーティションが完全に失われた可能性が高いことがわかりました。皮肉にも、これは Winternals における出来事で、その後私たちは現在の Diagnostics and Recovery Toolset に含まれる Disk Commander (図 1 参照) というツールを作成できました。

fig01.gif

図 1 Disk Commander 回復ツール

Disk Commander を使用すると、削除されたディレクトリ全体を回復できる場合もあります。このときは、まさに望みどおりの機能が Disk Commander によって提供され、ディスクをスキャンして最近削除されたパーティションを検出し、それらを完全に回復できました (図 2 参照)。

fig02.gif

図 2 Disk Commander を使用したディスク パーティションの回復

パーティションの回復は必ず成功するわけではありませんが、最近削除されたか、最近失われたパーティションに Disk Commander のようなツールを使用すれば、高い確率でそれらのパーティションを回復できます。もちろん、このエラーは他の問題 (たいていはハードウェア) が原因で発生することもあります。サポート技術情報の記事「コンピュータ起動時のエラー メッセージ "オペレーティング システムが見つかりません"」に、もう少し詳しい説明が記載されています。BIOS の問題と同様、ディスクが認識されないほど深刻なハードウェアの問題が発生した場合、DaRT やその他のツールを使用してできることはほとんどありません。

ブート ローダーが見つからない

Windows Server 2003 またはそれ以前のバージョンを実行しているシステムで、ブート ローダーが見つからないことを示すエラー メッセージが表示された場合、参照されるブート ローダーは NTLDR です。また、Windows Vista 以降のバージョンにアップグレードしているか、そのバージョンとのデュアル ブートを構成している場合は、BOOTMGR が参照されます。基本的に、このエラー メッセージの内容は、ブート セクタでどちらのブート ローダーが参照されるかによって異なります。

このエラーが発生することはほとんどありませんが、今までに聞いた限りでは、このエラーが発生した場合、先ほどのパーティションの損失に関する例のような状況が発生します。ここで覚えておく必要があるのは、Windows PE を起動し、Windows が格納された CD または共有から NTLDR および NTDetect.com ファイルをコピーして置き換えれば、問題を解決できることです。置き換え元のファイルには、新しい Windows リリースのファイルか、置き換え先のファイルよりも新しい Windows リリースのファイルを使用します (最新のサービス パックに含まれているファイルを使用してください。これらのファイルには下位互換性があります)。Windows Vista または Windows Server 2008 の場合は、BOOTMGR ファイルをコピーし、起動ディレクトリ (既定では表示されません) が存在することを確認する必要があります。

詳細については、「NTLDR または NTDETECT.COM が見つからないことを示すエラーが発生する」を参照してください。マイクロソフト サポート技術情報の多くの記事では、Windows 回復コンソールを使用することが推奨されています。「Windows 回復環境で Bootrec.exe ツールを使用して Windows Vista でのスタートアップの問題をトラブルシューティングして修復する方法」などの記事は、非常に役立ちます。

ただし、このシナリオで私がお勧めするのは、Windows PE を使用することです。Windows PE よりも回復コンソールを使用した方が簡単な操作もいくつかありますが、一般的には、Windows PE を使用した方が簡単に回復作業を行うことができます。

パーティションまたはブート ローダーの回復作業が完了したら、chkdsk を実行して、ディスク内の他の部分で後から問題が発生する可能性があるかどうかを確認します。

停電などの問題が原因でファイルが破損した場合は、S.M.A.R.T. (Self-Monitoring Analysis and Reporting Technology: ハード ディスクの障害事前検知機能) のディスク監視エラーがイベント ログに記録されていないかどうかも確認します。パーティションやファイル全体が失われるほど大量のデータ損失が発生した場合、その後非常に高い確率で、より深刻な問題が発生します。

システムが起動した後ハングする

このシナリオでは、多くのユーザーが特定の現象を経験しますが、その現象が実際の原因を反映していることはほとんどありません。ほとんどの場合、システムでは agp440.sys というファイルがハングの原因として挙げられますが、そのドライバは知らず知らずのうちに犠牲者になっています。図 3 からわかるとおり、このドライバは単に最後に読み込まれているだけです。この図は、Windows が起動する直前に Windows セーフ モードでシステムが起動されたことを示しています。

fig03.gif

図 3 Windows セーフ モードで読み込まれるドライバ

私が読んだいくつかの記事 (サポート技術情報を含みます) では、システムを再度正常に動作させるための最も適切な方法として、このドライバの無効化が推奨されていましたが、これは正しい説明ではありません。システムを再度正常に動作させるには、次の作業を行うことをお勧めします。

  • まず、最近新しく取り付けたすべてのハードウェアを取り外します。どのハードウェアからでもかまいませんが、1 つ取り外すたびに、システムが起動するかどうかを確認します。
  • Windows セーフ モードでシステムが正常に起動するかどうかを確認します。正常に起動する場合、問題の原因はサードパーティ製のドライバと考えてほぼ間違いありません (サードパーティ製のドライバは、セーフ モードでの実行時には起動されないからです)。
  • Windows PE または ERD Commander (DaRT に含まれています) を使用して、新しくインストールしたすべてのドライバを無効にします。詳細については、補足記事「ドライバまたはサービスを無効にする」を参照してください。
  • 前回正常起動時の構成 (この後説明します) を使用して、最近のドライバの変更時に、その変更が前回正常に機能した一連の構成に反映されなかったことが問題の原因であるかどうかを確認します。

上記の 4 つの方法を使用してもシステムが回復しない場合は、Windows の修復インストール (動作しない Windows とサービス パックのバージョンが一致する CD から起動します) か、Windows の再インストールを実行する必要が生じる可能性があります。

ドライバまたはサービスを無効にする

ERD Commander または Windows PE を使用すると、Windows の起動時にハングを引き起こすドライバまたはサービスを無効にすることができます (ただし、難易度はそれぞれ異なります)。

Windows PE を使用して、問題のあるサービスを有効または無効にするには、まず Windows PE を起動します (起動するシステムの記憶域コントローラによって使用されるドライバを含めるようにしてください)。Windows レジストリ エディタ (regedit.exe) を起動し、HKEY_LOCAL_MACHINE ハイブを選択します。

[ファイル] メニューの [ハイブの読み込み] をクリックし、C:\Windows\System32\Config\system (環境によって Windows のパスは異なります) に移動した後、編集に使用するハイブ名を指定します (どのような名前でもかまいません)。新しいキーの CurrentControlSet\Services\<サービス名> に移動し、Start の値をメモします。この値は 0 ~ 4 です。

0: ブート開始。オペレーティング システム ローダーによって最初に開始されます。

1: システム開始。カーネルを起動するとき、ブート開始ドライバの後に読み込まれます。

2: 自動開始。システム開始ドライバの次に、サービス コントロール マネージャ (SCM) によって開始されます。

3: 要求による開始。要求されたときに SCM によって開始されます。

4: 無効。読み込まれません。

無効にするサービスまたはドライバの値を 4 に設定します。いくつかのドライバは依存し合っているので、これらのドライバの一部を無効にした場合、引き続き有効になっているドライバが原因で、システムがハングするだけでなく、クラッシュする可能性もあります。変更が完了したら、レジストリ ハイブをアンロードし、システムを再起動します。これで、ドライバやサービスが原因で起動処理が中断されることはなくなります。

MDOP の DaRT を使用すると、この作業を非常に簡単に行うことができます。DaRT を起動して Windows に接続し、[Services and Drivers] (サービスとドライバ) の非常に単純な UI を使用してサービスやドライバを有効または無効にすることができます (図 A 参照)。

figsidebar.gif

図 A 簡単にドライバやサービスを無効にする方法

Windows セーフ モードと復元ポイント

もちろん、システムが起動時にハングまたはクラッシュする場合はセーフ モードが役立ちます。特に Windows PE のコピーが手元になく、システムをセーフ モードで起動できる場合は、この方法が有効です。Windows のクライアント バージョンでは、復元ポイントを使用してシステムを回復できることもあります。これを行うには、復元ポイントが有効になっていて、復元するファイルがそれらの復元ポイントによって保護されている必要があります (復元ポイントによって Windows XP 上のすべてのファイルが保護されるわけではありません)。

Windows PE を使用して Windows Vista システムを回復させる場合は、必ず Windows PE 2.0 以降のバージョンを起動する必要があります。それ以前のバージョンを起動した場合、復元ポイントが破損し、使用できなくなります (これは、Windows Vista のシステム復元ポイントによる、ディスク書き込みの監視方法が原因です。Windows PE 1.x は、復元ポイントを破損させることなく書き込みを行ってシステムとデータをやり取りすることができません)。

Windows による読み込みが完了する前にシステムがクラッシュする

Windows による読み込みが完了する前にシステムがクラッシュする場合は、2 つの問題のいずれかが原因であることがほとんどです。1 つ目はレジストリの破損です。この問題は、Windows の以前のバージョンや、突然再起動したことのあるシステムで最もよく見られます。一般に、レジストリの破損が原因でシステムが起動しない場合、問題となるのはそのレジストリのほんの一部です。Windows Vista では、\windows\system32\config\regback フォルダ内にレジストリのコピーが 2 つ格納されます。ほとんどの場合、どちらのコピーも作成されてから 24 時間以上経過していません。問題のレジストリ ファイルをこれらのコピーと置き換えれば、作業は完了です。

先ほど説明した、Windows PE によってオフラインでレジストリを読み込む方法を使用しても、問題が解決する場合があります。Windows レジストリ エディタには、破損したレジストリを検出したときにその修復を試みるロジックが組み込まれています。Windows XP でも優れた破損修復機能が提供されますが、Windows Vista と Windows Server 2008 ではこの機能がさらに強化されています。

Windows PE 1.6 を使用しても問題を解決できない場合は、Windows PE 2.x を使用するか、レジストリを Windows Vista システムにコピーし、先ほど説明した方法を使用して修復してから、そのレジストリを問題のシステムにコピーして戻します。残念ながら、この方法を使用してもシステムを回復できない場合、他に使用できる方法はほとんどありません。Windows の以前のバージョンの修復インストールを実行することもできますが、通常は再インストールを実行した方がよいでしょう。繰り返しになりますが、chkdsk を実行して、他に問題が発生していないかどうかを確認することをお勧めします。

おそらく、Windows が起動する前にシステムのクラッシュ (ブルー スクリーン) が発生する原因として最も可能性が高いのは、ドライバの問題です。私がお勧めするのは、DaRT CD を準備し、Crash Analyzer (図 4 参照) を使用する方法です。Crash Analyzer は、Windows のクラッシュ ダンプを (起動できないシステム上でも) 簡単に分析できるメカニズムです。

fig04.gif

図 4 Crash Analyzer を使用したダンプ ファイルの分析

DaRT が手元にない場合は、Windows PE と Debugging Tools for Windows を使用して、問題が発生している部分を大まかに特定することもできます。クラッシュ ダンプには誤ったデータや信頼できないデータが含まれることもありますが、クラッシュ ダンプのデータから問題を正確に特定できることも非常によくあります。この特定手順を次に示します。

  1. Windows PE を使用して、クラッシュしたシステムから最新の *.dmp ファイルをコピーします。これらのファイルは %windir%\minidump\ にあります。完全ダンプが有効になっている場合、それらのダンプは Windows ディレクトリ自体に格納され、システムのメモリ以上のサイズになります (このため、かなり大きくなる可能性があります)。

  2. Debugging Tools for Windows を起動し、[File] (ファイル) の [Open Crash Dump] (クラッシュ ダンプを開く) で、コピーしたダンプ ファイルを選択します。

  3. シンボルのパスを設定して、診断する Windows バイナリのデバッグ情報を提供します。次のコードを入力します。

    .sympath= SRV*C:\SYMBOLS\*http://
    msdl.microsoft.com/download/symbols
    

    Enter キーを押します。

  4. 「.reload」と入力し、Enter キーを押します。

  5. 「!analyze –v」と入力し、Enter キーを押します。

  6. 返された結果から、問題に関連するドライバを非常に高い確率で特定できます。

特定のドライバが問題の原因であるにもかかわらず、誤って別のドライバが原因として挙げられることがよくあります。このため、Web 上で簡単に検索を行い、自分のシナリオに関連する他のユーザーの意見を確認した方がよいでしょう。多くの場合、他のユーザーが過去に同じ問題を経験しています。先ほど説明した手順を使用してドライバを無効にするか、セーフ モードでシステムを起動し、動作に変化が見られるかどうかを確認することもできます。

前回正常起動時の構成

システムで問題が発生した場合、前回正常起動時の構成 (図 5 参照) を使用してその問題を解決できることがよくあります。この構成には、前回正常に開始された一連のサービスと、正常に起動したドライバのコピーが含まれます。ただし、レジストリが破損している場合、回復は保証されないので、この構成は使用できません。また、この構成を使用して動作に変化が見られるのは、Win32 が起動する前 (Windows デスクトップが最初に初期化される前) に Windows がクラッシュした場合のみです。この場合、起動は "正常" と見なされますが、それ以降に Windows がクラッシュした場合、この方法を使用してもシステムは回復できません。

図 5 システムを起動できる可能性のある前回正常起動時の構成

Windows が起動した後にシステムがクラッシュする

Windows が起動した後にシステムがクラッシュする場合、原因はおそらくドライバにありますが、単にハードウェアが故障している可能性もあります。診断を行うには、先ほど説明した方法で .dmp ファイルを取得し、そのファイル内の情報から手がかりを得ます。

Windbg から得られた情報によっては、サービスやドライバを無効にしたり、新しく追加したハードウェアを調べたりしてもよいでしょう。ディスクが正常に動作しない原因として可能性が高いのは、メモリ (特に新しく追加されたメモリ) の問題です。OEM やソフトウェアの ISV に問い合わせて、同様の現象が報告されているかどうかを確認したり、Web で他のユーザーがこのような状況を経験しているかどうかを確認したりする必要が生じる可能性もあります。

メモリが問題の原因と思われる場合は、Windows Memory Diagnostic (Windows Vista と Windows Server 2008 に含まれています) を試してみてください。クラッシュを引き起こす問題が発生している可能性がある場合、このメモリ診断ツールを使用すると、非常にさまざまな方法でシステムの RAM をテストできます。

Windows が正しく起動しないと確かにイライラしますが、一般にその原因は、非常に狭い範囲の問題に限定できます。このような問題が発生したときに、どこをどのように確認すればよいかを理解しておけば、たいていの場合は、イメージを基にシステムを再構築する必要なく Windows を回復できます。

Wes Miller は、テキサス州オースティンにある CoreTrace 社 (CoreTrace.com) のシニア テクニカル プロダクト マネージャです。以前は Winternals Software 社に勤務し、その後はマイクロソフトでプログラム マネージャとして働いていました。Wes の連絡先は、technet@getwired.com (英語のみ) です。