Windows のブート問題に関する高度なトラブルシューティング

注意

この記事は、サポート担当者と IT 担当者による使用を目的としています。 回復オプションに関する一般的な情報については、「Windows 10 の回復オプション」をご覧ください。

要約

Windows ベースのコンピューターで、起動時に問題が発生する理由はいくつか考えられます。 起動の問題をトラブルシューティングするには、まず、次のどのフェーズでコンピューターが停止しているかを判断します。

フェーズ ブート プロセス BIOS UEFI
1 プリブート MBR/PBR (ブートストラップ コード) UEFI ファームウェア
2 Windows ブート マネージャー %SystemDrive%\bootmgr \EFI\Microsoft\Boot\bootmgfw.efi
3 Windows OS ローダー %SystemRoot%\system32\winload.exe %SystemRoot%\system32\winload.efi
4 Windows NT OS カーネル %SystemRoot%\system32\ntoskrnl.exe

1. プリブート

PC のファームウェアは、Power-On Self Test (POST) を開始し、ファームウェア設定を読み込みます。 このプリブート プロセスは、有効なシステム ディスクが検出されたときに終了します。 ファームウェアがマスター ブート レコード (MBR) を読み取り、Windows ブート マネージャーを起動します。

2. Windows ブート マネージャー

Windows ブート マネージャーは、Windows ブート パーティションで Windows ローダー (Winload.exe) を見つけて起動します。

3. Windows オペレーティング システム ローダー

Windows カーネルを起動するために必要な重要なドライバーが読み込まれ、カーネルの実行が開始されます。

4. Windows NT OS カーネル

カーネルは、システム レジストリ ハイブと、BOOT_START とマークされた追加のドライバーをメモリに読み込みます。

カーネルは、システム セッションを初期化するセッション マネージャー プロセス (Smss.exe) に制御を渡し、BOOT_START とマークされていないデバイスとドライバーを読み込んで起動します。

次に、ブート シーケンスの概要、ディスプレイに表示される内容、シーケンス内のその時点での一般的なブートの問題について説明します。 トラブルシューティングを開始する前に、ブート プロセスの概要と表示状態を理解し、エンゲージメントの開始時に問題が適切に識別されるようにする必要があります。

ブート シーケンスフローチャートのサムネイル。
クリックして拡大

各フェーズでは、トラブルシューティングの方法が異なります。 この記事では、最初の 3 つのフェーズで発生する問題のトラブルシューティング手法について説明します。

注意

コンピューターが回復オプションを繰り返し起動する場合は、コマンド プロンプトで次のコマンドを実行してサイクルを中断します。

Bcdedit /set {default} recoveryenabled no

F8 キーのオプションが機能しない場合は、次のコマンドを実行します。

Bcdedit /set {default} bootmenupolicy legacy

BIOS フェーズ

システムが BIOS フェーズに合格したかどうかを確認するには、次の手順を実行します。

  1. コンピューターに接続されている外部周辺機器がある場合は、それらを取り外します。

  2. 物理コンピューターのハード ディスク ドライブのライトが機能しているかどうかを確認します。 機能していない場合は、起動プロセスが BIOS フェーズで停止していることを示します。

  3. NumLock キーを押して、インジケーター ライトのオンとオフが切り替わるかどうかを確認します。 切り替わらない場合は、起動プロセスが BIOS で停止していることを示します。

    BIOS フェーズでシステムが停止している場合は、ハードウェアに問題がある可能性があります。

ブート ローダー フェーズ

黒い画面にカーソルだけが点滅している場合、または次のいずれかのエラー コードが表示される場合は、ブート プロセスがブート ローダー フェーズで停止していることを示します。

  • ブート構成データ (BCD) が見つからないか破損している
  • ブート ファイルまたは MBR が破損している
  • オペレーティング システムが見つからない
  • ブート セクターが見つからないか破損している
  • Bootmgr が見つからないか破損している
  • システム ハイブが見つからないか破損しているため起動できない

この問題のトラブルシューティングを行うには、Windows インストール メディアを使用してコンピューターを起動し、Shift + F10 キーを押してコマンド プロンプトを表示し、次のいずれかの方法を使用します。

方法 1: スタートアップ修復ツール

スタートアップ修復ツールは、多くの一般的な問題を自動的に修正します。 また、このツールを使用すると、より複雑なスタートアップの問題をすばやく診断して修復できます。 コンピューターでスタートアップの問題が検出されると、スタートアップ修復ツールが起動します。 ツールが起動すると、診断が実行されます。 これらの診断には、スタートアップ ログ ファイルの分析による問題の原因の特定が含まれます。 スタートアップ修復ツールによって原因が特定されると、ツールは自動的に問題の修正を試みます。

これを行うには、次の手順に従います。

注意

WinRE を起動するその他の方法については、「Windows 回復環境 (Windows RE)」を参照してください。

  1. インストールされているバージョンの Windows のインストール メディアでシステムを起動します。 詳しくは、「Windows 用のインストール メディアの作成」を参照してください。

  2. [Windows のインストール] 画面で、[次へ] > [コンピューターの修復] の順に選びます。

  3. [オプションの選択] 画面で、[トラブルシューティング] を選択します。

  4. [詳細設定] 画面で、[スタートアップ修復] を選択します。

  5. スタートアップ修復が終了したら、[シャットダウン] を選び、続いて PC の電源を入れて Windows が正常に起動するかどうかを確認します。

スタートアップ修復ツールを使用すると、起動時の問題と修復を理解するのに役立つログ ファイルが生成されます。 ログ ファイルは、次の場所で確認できます。

%windir%\System32\LogFiles\Srt\Srttrail.txt

詳しくは、「STOP エラーが発生したか、Windows Vista または Windows 7 を起動しようとしたときにコンピューターが応答を停止する」を参照してください

方法 2: ブート コードを修復する

ブート コードを修復するには、次のコマンドを実行します。

BOOTREC /FIXMBR

ブート セクターを修復するには、次のコマンドを実行します。

BOOTREC /FIXBOOT

注意

BOOTRECFixmbr を同時に実行すると、マスター ブート コードだけが上書きされます。 MBR の破損がパーティション テーブルに影響を与える場合、Fixmbr を実行しても問題が解決しない可能性があります。

方法 3: BCD エラーを修正する

BCD 関連のエラーが表示された場合は、次の手順を実行します。

  1. インストール済みのすべてのシステムをスキャンします。 これを行うには、次のコマンドを実行します。

    Bootrec /ScanOS
    
  2. コンピューターを再起動して、問題が修正されているかどうかを確認します。

  3. 問題が解決しない場合は、次のコマンドを実行します。

    Bootrec /rebuildbcd
    
  4. 次のいずれかの出力が表示される場合があります。

    Scanning all disks for Windows installations. Please wait, since this may take a while ...
    Successfully scanned Windows installations. Total identified Windows installations: 0
    The operation completed successfully.
    
    Scanning all disks for Windows installations. Please wait, since this may take a while ...
    Successfully scanned Windows installations. Total identified Windows installations: 1
    D:\Windows  
    Add installation to boot list? Yes/No/All:
    

    出力に "windows installation: 0" と表示される場合は、次のコマンドを実行します。

    bcdedit /export c:\bcdbackup
    
    attrib c:\\boot\\bcd -r –s -h
    
    ren c:\\boot\\bcd bcd.old
    
    bootrec /rebuildbcd
    

    コマンドを実行すると、次の出力が表示されます。

    Scanning all disks for Windows installations. Please wait, since this may take a while ...
    Successfully scanned Windows installations. Total identified Windows installations: 1
    {D}:\Windows
    Add installation to boot list? Yes/No/All: Y
    
  5. システムを再起動してみてください。

方法 4: Bootmgr を置き換える

方法 1、2、3 で問題が解決しない場合は、Bootmgr ファイルを C ドライブからシステム予約されたパーティションに置き換えます。 これを行うには、次の手順を実行します。

  1. コマンド プロンプトで、ディレクトリをシステムで予約済みのパーティションに変更します。

  2. attrib コマンドを実行してファイルを再表示します。

    attrib -r -s -h
    
  3. Windows (システム ドライブ) で同じ attrib コマンドを実行します。

    attrib -r -s -h
    
  4. Bootmgr ファイルの名前を "Bootmgr.old" に変更します。

    ren c:\bootmgr bootmgr.old
    
  5. システム ドライブに移動します。

  6. Bootmgr ファイルをコピーし、システムで予約済みのパーティションに貼り付けます。

  7. コンピューターを再起動します。

方法 5: システム ハイブを復元する

Windows がシステム レジストリ ハイブをメモリに読み込めない場合は、システム ハイブを復元する必要があります。 これを行うには、Windows 回復環境を使用するか、システム修復ディスク (ERD) を使用して C:\Windows\System32\config\RegBack から C:\Windows\System32\config にファイルをコピーします。

問題が解決しない場合は、システム状態のバックアップを別の場所に復元してから、置き換えるレジストリ ハイブを取得できます。

注意

Windows 10 バージョン 1803 以降では、Windows はシステム レジストリを RegBack フォルダーに自動的にバックアップしなくなりました。この変更は仕様によるものであり、Windows の全体的なディスク使用量を削減することを目的としています。 レジストリ ハイブが破損しているシステムを回復するには、システムの復元ポイントを使用することをお勧めします。 詳細については、この記事を参照してください。

カーネル フェーズ

システムがカーネル フェーズ中に停止した場合は、複数の現象が発生するか、複数のエラー メッセージが表示されます。 これには以下が含まれますが、これらに限定されるものではありません。

これらの問題のトラブルシューティングを行うには、次の回復ブート オプションを一度に 1 つずつ試してください。

シナリオ 1: セーフ モードまたは前回正常起動時の構成でコンピューターを起動する

[詳細ブート オプション] 画面で、セーフ モード、または セーフ モードとネットワークでコンピューターを起動します。 これらのオプションのどちらかが機能する場合は、イベント ビューアーを使用して、起動の問題の原因を特定して診断します。 イベント ログに記録されているイベントを表示するには、次の手順を実行します。

  1. 次のいずれかの方法を使用して、イベント ビューアーを開きます。

    • [スタート] をクリックし、[管理ツール] をポイントして [イベント ビューアー] をクリックします。

    • Microsoft 管理コンソール (MMC) でイベント ビューアー スナップインを開始します。

  2. コンソール ツリーで、[イベント ビューアー] を展開し、表示するログをクリックします。 たとえば、[システム ログ] または [アプリケーション ログ] をクリックします。

  3. 詳細ウィンドウで、表示するイベントをダブルクリックします。

  4. [編集] メニューの [コピー] をクリックし、イベントを貼り付けるプログラムで新しいドキュメント (Microsoft Word など) を開き、[貼り付け] をクリックします。

  5. 上方向キーまたは下方向キーを使用して、前または次のイベントの説明を表示します。

クリーン ブート

サービスに影響する問題のトラブルシューティングを行うには、システム構成 (msconfig) を使用してクリーン ブートを実行します。 [スタートアップのオプションを選択] を選び、サービスを 1 つずつテストして、問題の原因となっているサービスを特定します。 原因が見つからない場合は、システム サービスを含めて試してください。 ただし、ほとんどの場合、問題のあるサービスはサードパーティです。

エラーが検出されたサービスを無効にし、[通常スタートアップ] を選んでコンピューターを再起動します。

詳しい手順については、「Windows でクリーン ブートを実行する方法」を参照してください。

コンピューターがドライバー署名の無効化モードで起動する場合は、コンピューターを "ドライバー署名の強制を無効にする" モードで起動し、次の記事に記載されている手順に従って、ドライバー署名の強制が必要なドライバーまたはファイルを特定します: 「ドライバー署名がないために発生するブート問題のトラブルシューティング (x64)

注意

コンピューターがドメイン コントローラーの場合は、ディレクトリ サービス復元モード (DSRM) を試してください。

この方法は、STOP エラー "0xC00002E1" または "0xC00002E2" が発生した場合の重要な手順です。

警告

レジストリ エディターなどを使用してレジストリを誤って変更すると、重大な問題が発生する場合があります。 このような問題では、オペレーティング システムの再インストールが必要になることもあります。 Microsoft では、このような問題の解決に関しては保証できません。 レジストリの変更は各自の責任で行ってください。

エラー コード INACCESSIBLE_BOOT_DEVICE (STOP 0x7B)

この STOP エラーのトラブルシューティングを行うには、次の手順に従ってドライバーをフィルター処理します。

  1. システムの ISO Windowsディスクをディスク ドライブに入れて、回復環境 (WinRE) に移動します。 ISO は、同じバージョンの Windows またはそれ以降のバージョンである必要があります。

  2. レジストリを開きます。

  3. システム ハイブを読み込み、"test" という名前を付けます。

  4. 次のレジストリ サブキーで、Microsoft 以外のドライバーの下位フィルター項目と上位フィルター項目を確認します。

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class

  5. 特定したサードパーティのドライバーごとに、上位または下位のフィルターをクリックし、値データを削除します。

  6. レジストリ全体で類似のアイテムを探します。 適切な手順を実行し、レジストリ ハイブをアンロードします。

  7. サーバーを通常モードで再起動します。

その他のトラブルシューティング手順については、次の記事を参照してください。

Windows 更新プログラムのインストール後に発生する問題を解決するには、次の手順を実行して、保留中の更新プログラムを確認します。

  1. WinRE でコマンド プロンプト ウィンドウを開きます。

  2. 次のコマンドを実行します。

    DISM /image:C:\ /get-packages
    
  3. 保留中の更新プログラムがある場合は、次のコマンドを実行してアンインストールします。

    DISM /image:C:\ /remove-package /packagename: name of the package
    
    DISM /Image:C:\ /Cleanup-Image /RevertPendingActions
    

    コンピューターを起動してみます。

コンピューターが起動しない場合は、次の手順を実行します。

  1. WinRE でコマンド プロンプト ウィンドウを開き、メモ帳などのテキスト エディターを起動します。

  2. システム ドライブに移動し、windows\winsxs\pending.xml を探します。

  3. Pending.xml ファイルが見つかった場合は、ファイル名を Pending.xml.old に変更します。

  4. レジストリを開き、テストとして HKEY_LOCAL_MACHINE にコンポーネント ハイブを読み込みます。

  5. 読み込まれたテスト ハイブを強調表示し、pendingxmlidentifier 値を探します。

  6. pendingxmlidentifier 値が存在する場合は、値を削除します。

  7. テスト ハイブをアンロードします。

  8. システム ハイブを読み込み、"test" という名前を付けます。

  9. 次のサブキーに移動します。

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TrustedInstaller

  10. 開始値を 1 から 4 に変更します。

  11. ハイブをアンロードします。

  12. コンピューターを起動してみます。

STOP エラーがスタートアップ プロセスの後半で発生した場合、または STOP エラーがまだ生成されている場合は、メモリ ダンプをキャプチャできます。 適切なメモリ ダンプは、STOP エラーの根本原因を特定するのに役立ちます。 詳細については、次の記事を参照してください。

Windows 10 または Windows Server 2016 でのページ ファイルの問題の詳細については、以下を参照してください。

STOP エラーの詳細については、次のサポート技術情報の記事を参照してください。

ドライバーに関連するエラーがダンプ ファイルに表示される場合 (たとえば、windows\system32\drivers\stcvsm.sys が見つからないか破損している場合) は、次のガイドラインに従います。

  • ドライバーによって提供される機能を確認します。 ドライバーがサードパーティのブート ドライバーである場合は、その動作を理解していることを確認してください。

  • ドライバーが重要なものではなく、依存関係がない場合は、システム ハイブを読み込み、ドライバーを無効にします。

  • STOP エラーがシステム ファイルの破損を示している場合は、オフライン モードでシステム ファイル チェックを実行します。

    • これを行うには、WinRE を開き、コマンド プロンプトを開き、次のコマンドを実行します。

      SFC /Scannow /OffBootDir=C:\ /OffWinDir=E:\Windows
      

      詳細については、「システム ファイル チェッカー (SFC) を使って問題を修正する」を参照してください。

    • ディスクが破損している場合は、次のチェック ディスク コマンドを実行します。

      chkdsk /f /r
      
    • STOP エラーが一般的なレジストリの破損を示している場合、または新しいドライバーまたはサービスがインストールされたと思われる場合は、次の手順を実行します。

      1. WinRE を起動し、コマンド プロンプト ウィンドウを開きます。
      2. メモ帳などのテキスト エディターを起動します。
      3. C:\Windows\System32\Config\ に移動します。
      4. 名前に ".old" を追加して、5 つのハイブの名前を変更します。
      5. Regback フォルダーからすべてのハイブをコピーし、Config フォルダーに貼り付け、コンピューターを通常モードで起動します。

注意

Windows 10 バージョン 1803 以降では、Windows はシステム レジストリを RegBack フォルダーに自動的にバックアップしなくなりました。この変更は仕様によるものであり、Windows の全体的なディスク使用量を削減することを目的としています。 レジストリ ハイブが破損しているシステムを回復するには、システムの復元ポイントを使用することをお勧めします。 詳細については、この記事を参照してください。