Windowsの停止エラー 0xC0000102ステータスファイルが破損しています

この記事では、Windows オペレーティング システム (OS) で stop エラー 0xC0000102が発生し、Azure 仮想マシン (VM) の起動が妨がれる問題を解決する手順について説明します。

現象

ブート 診断を使用して VM のスクリーンショットを表示すると、起動時に OS でエラー コードが0xC0000102されたことを示すメッセージが表示されます。

エラー 0xC0000102に関する詳細情報を示すスクリーンショット。

CMD 画面でエラー 0xC0000102。

原因

エラー 0xC0000102はSTATUS_FILE_CORRUPT_ERRORです。つまり、ファイルが破損しているため、VM が正しく起動できません。 このエラー コードには、次の 2 つの原因が考えられます。

  • エラー メッセージに表示されるファイルが破損しています。
  • ディスク構造が破損し、読み取れなくなった。

ソリューション

バックアップから VM を復元してみてください

VM の最近のバックアップがある場合は、バックアップ から VM を復元して 開始の問題を解決してみてください。 バックアップから VM を復元できない場合は、次の手順に従います。

  1. 修復 VM の作成とアクセス
  2. 破損したファイルを修復または交換する
  3. シリアル コンソールとメモリ ダンプの収集を有効にする
  4. VM をリビルドする

注:

このエラーが発生した場合、ゲスト OS は動作しません。 この問題を解決するには、オフライン モードでトラブルシューティングを行います。

手順 1: 修復 VM を作成してアクセスする

  1. VM 修復プロセスの例 の手順 1 から 3 に従って、修復 VM を準備します。
  2. リモート デスクトップ接続を使用して、修復 VM に接続します。

手順 2: 破損したファイルを修復または交換する

  • 破損したファイルを修復する

    管理者特権の CMD プロンプトを開き、ディスクで chkdsk を実行します。

    chkdsk <<DRIVE LETTER>: /F
    
  • 破損したファイルを置き換える

  1. ブート 診断を使用して、VM のスクリーンショットを表示します。 エラーで表示されるファイルをメモします。

  2. 破損したバイナリを置き換えるには、次の手順を実行します。

    1. スクリーンショットに表示されたバイナリの場所を参照します。

    2. ファイルのバージョンに注意してください。 ( [プロパティ ] を右クリックし、[ 詳細 ] タブを選択します)。

      [詳細] タブの情報を示すスクリーンショット。ファイルのバージョンが強調表示されています。

    3. ファイルの名前を FILENAME に <変更します。EXT>。古い。 たとえば、上の図に示したファイルの名前は 、\windows\system32\drivers\cng.sys から \windows\system32\drivers\cng.sys.old に変更されます。

  3. このファイルを内部リポジトリから復元します。

    1. CMD セッションを起動し、Windows ディレクトリを保持しているボリュームを見つけます。

    2. \windows\winsxs を参照し、スクリーンショットに表示されているバイナリを検索します。

      dir <<binary from the screenshot with extension>> /s
      
    3. 次のコマンドは、VM に含まれる指定されたファイルのすべての異なるバージョンを一覧表示し、そのコンポーネントのパス履歴を示します。 一覧から同じバージョンの最新バージョンを選択し、そのファイルをスクリーンショットに記載されているフォルダー パスにコピーします。

      copy
      
      <<drive>>:\Windows\WinSxS\<<directory_where_file_is>>\<<binary_with_extension>> <<drive>>:\Windows\System32\Drivers\ 
      

手順 3: シリアル コンソールとメモリ ダンプの収集を有効にする

VM を再構築する前に、メモリ ダンプ収集とシリアル コンソールを有効にすることをお勧めします。 これを行うには、次のスクリプトを実行します。

  1. 管理者特権のコマンド プロンプト セッション ([管理者として実行]) を開きます。

  2. BCD ストア データを一覧表示し、次の手順で使用するブート ローダー識別子を決定します。

    1. 第 1 世代 VM の場合は、次のコマンドを入力し、一覧表示されている識別子をメモします。

      bcdedit /store <BOOT PARTITON>:\boot\bcd /enum
      

      コマンドで、 を、ブート フォルダーを含むアタッチされたディスク内のパーティションの文字に置き換えます <BOOT PARTITON>

      Windows ブート ローダーの下の識別子番号を一覧表示する第 1 世代 VM の BCD ストアを一覧表示する出力を示すスクリーンショット。

    2. 第 2 世代 VM の場合は、次のコマンドを入力し、一覧表示されている識別子をメモします。

      BCDEDIT /store <LETTER OF THE EFI SYSTEM PARTITION>:EFI\Microsoft\boot\bcd /enum 
      
      • コマンドで、 を EFI システム パーティションの文字に置き換えます <LETTER OF THE EFI SYSTEM PARTITION>
      • ディスク管理コンソールを起動して、 EFI システム パーティションとラベル付けされた適切なシステム パーティションを識別すると便利な場合があります。
      • 識別子は一意の GUID であるか、既定の bootmgr である可能性があります。
  3. シリアル コンソールを有効にするには、次のコマンドを実行します。

    BCDEDIT /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON  
    BCDEDIT /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200 
    
    • コマンドで、 を BCD フォルダーの文字に置き換えます <VOLUME LETTER WHERE THE BCD FOLDER IS>
    • コマンドで、 を前の手順で見つけた識別子に置き換えます <BOOT LOADER IDENTIFIER>
  4. OS ディスクの空き領域が VM のメモリ サイズ (RAM) を超えているかどうかを確認します。

    1. OS ディスクに十分な領域がない場合は、メモリ ダンプ ファイルを作成する場所を変更する必要があります。 OS ディスク上にファイルを作成するのではなく、十分な空き領域を持つ VM に接続されている他のデータ ディスクを参照できます。 場所を変更するには、 %SystemRoot% を、次に示すコマンドのデータ ディスクのドライブ文字 ( F:など) に置き換えます。
    2. 次のコマンドを入力します (推奨されるダンプ構成)。

    壊れた OS ディスクからレジストリ Hive を読み込みます。

    REG LOAD HKLM\BROKENSYSTEM <VOLUME LETTER OF BROKEN OS DISK>:\windows\system32\config\SYSTEM
    

    ControlSet001 で有効にします。

    REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f 
    

    ControlSet002 で有効にします。

    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f 
    

    壊れた OS ディスクをアンロードする:

    REG UNLOAD HKLM\BROKENSYSTEM
    

手順 4: VM をリビルドする

VM 修復コマンドの手順 5 を使用して、VM をリビルドします。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。