Windowsの停止エラー 0xC0000102ステータスファイルが破損しています
この記事では、Windows オペレーティング システム (OS) で stop エラー 0xC0000102が発生し、Azure 仮想マシン (VM) の起動が妨がれる問題を解決する手順について説明します。
現象
ブート 診断を使用して VM のスクリーンショットを表示すると、起動時に OS でエラー コードが0xC0000102されたことを示すメッセージが表示されます。
原因
エラー 0xC0000102はSTATUS_FILE_CORRUPT_ERRORです。つまり、ファイルが破損しているため、VM が正しく起動できません。 このエラー コードには、次の 2 つの原因が考えられます。
- エラー メッセージに表示されるファイルが破損しています。
- ディスク構造が破損し、読み取れなくなった。
ソリューション
バックアップから VM を復元してみてください
VM の最近のバックアップがある場合は、バックアップ から VM を復元して 開始の問題を解決してみてください。 バックアップから VM を復元できない場合は、次の手順に従います。
- 修復 VM の作成とアクセス
- 破損したファイルを修復または交換する
- シリアル コンソールとメモリ ダンプの収集を有効にする
- VM をリビルドする
注:
このエラーが発生した場合、ゲスト OS は動作しません。 この問題を解決するには、オフライン モードでトラブルシューティングを行います。
手順 1: 修復 VM を作成してアクセスする
- VM 修復プロセスの例 の手順 1 から 3 に従って、修復 VM を準備します。
- リモート デスクトップ接続を使用して、修復 VM に接続します。
手順 2: 破損したファイルを修復または交換する
破損したファイルを修復する
管理者特権の CMD プロンプトを開き、ディスクで chkdsk を実行します。
chkdsk <<DRIVE LETTER>: /F
破損したファイルを置き換える
ブート 診断を使用して、VM のスクリーンショットを表示します。 エラーで表示されるファイルをメモします。
破損したバイナリを置き換えるには、次の手順を実行します。
スクリーンショットに表示されたバイナリの場所を参照します。
ファイルのバージョンに注意してください。 ( [プロパティ ] を右クリックし、[ 詳細 ] タブを選択します)。
ファイルの名前を FILENAME に <変更します。EXT>。古い。 たとえば、上の図に示したファイルの名前は 、\windows\system32\drivers\cng.sys から \windows\system32\drivers\cng.sys.old に変更されます。
このファイルを内部リポジトリから復元します。
CMD セッションを起動し、Windows ディレクトリを保持しているボリュームを見つけます。
\windows\winsxs を参照し、スクリーンショットに表示されているバイナリを検索します。
dir <<binary from the screenshot with extension>> /s
次のコマンドは、VM に含まれる指定されたファイルのすべての異なるバージョンを一覧表示し、そのコンポーネントのパス履歴を示します。 一覧から同じバージョンの最新バージョンを選択し、そのファイルをスクリーンショットに記載されているフォルダー パスにコピーします。
copy <<drive>>:\Windows\WinSxS\<<directory_where_file_is>>\<<binary_with_extension>> <<drive>>:\Windows\System32\Drivers\
手順 3: シリアル コンソールとメモリ ダンプの収集を有効にする
VM を再構築する前に、メモリ ダンプ収集とシリアル コンソールを有効にすることをお勧めします。 これを行うには、次のスクリプトを実行します。
管理者特権のコマンド プロンプト セッション ([管理者として実行]) を開きます。
BCD ストア データを一覧表示し、次の手順で使用するブート ローダー識別子を決定します。
第 1 世代 VM の場合は、次のコマンドを入力し、一覧表示されている識別子をメモします。
bcdedit /store <BOOT PARTITON>:\boot\bcd /enum
コマンドで、 を、ブート フォルダーを含むアタッチされたディスク内のパーティションの文字に置き換えます
<BOOT PARTITON>
。第 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 である可能性があります。
- コマンドで、 を EFI システム パーティションの文字に置き換えます
シリアル コンソールを有効にするには、次のコマンドを実行します。
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>
。
- コマンドで、 を BCD フォルダーの文字に置き換えます
OS ディスクの空き領域が VM のメモリ サイズ (RAM) を超えているかどうかを確認します。
- OS ディスクに十分な領域がない場合は、メモリ ダンプ ファイルを作成する場所を変更する必要があります。 OS ディスク上にファイルを作成するのではなく、十分な空き領域を持つ VM に接続されている他のデータ ディスクを参照できます。 場所を変更するには、 %SystemRoot% を、次に示すコマンドのデータ ディスクのドライブ文字 ( F:など) に置き換えます。
- 次のコマンドを入力します (推奨されるダンプ構成)。
壊れた 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 フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示