VM がセーフ モードで起動するため VM に RDP 接続できない

適用対象: ✔️ Windows VM

まとめ

この記事では、VM がセーフ モードで起動するように構成されているため、Azure Windows Virtual Machines (VM) に接続できない問題を解決する方法について説明します。

症状

VM がセーフ モードで起動するように構成されているため、AZURE内の VM に RDP 接続またはその他の接続 (HTTP など) を行うことはできません。 Azure ポータルの Boot diagnostics でスクリーンショットを確認すると、VM が正常に起動することがわかりますが、ネットワーク インターフェイスは使用できません。

スクリーンショットは、ネットワーク インターフェイスが利用できないことを示しています。

原因

RDP サービスは、セーフ モードでは使用できません。 VM がセーフ モードで起動するときは、基本的なシステム プログラムとサービスだけが読み込まれます。 これは、"最低限のセーフ ブート" および "接続のあるセーフ ブート" という 2 つの異なるバージョンのセーフ モードに適用されます。

ソリューション

これらの手順を実行する前に、バックアップとして、影響を受ける VM の OS ディスクのスナップショットを取得します。 詳細については、ディスクのスナップショットに関する記事を参照してください。

この問題を解決するには、シリアル コントロールを使用して通常モードで起動するように VM を構成するか、または復旧 VM を使用して VM をオフライン修復します。

シリアル コントロールを使用する

  1. シリアル コンソールに接続し、CMD インスタンスを開きます。 VM 上でシリアル コンソールが有効になっていない場合は、「VM をオフライン修復する」をご覧ください。

  2. ブート構成データを確認します。

    bcdedit /enum
    

    VM がセーフ モードで起動するように構成されている場合は、safeboot という名前の Windows ブート ローダー セクションに追加のフラグが表示されます。 [safeboot] フラグが表示されない場合、VM はセーフ モードではありません。 そのシナリオには、この記事の内容は当てはまりません。

    [safeboot] フラグは、次の値と共に表示されることがあります。

    • 最小

    • ネットワーク

      この 2 つのモードのいずれでも、RDP は開始されません。 そのため、修正プログラムは同じままです。

      スクリーンショットは、[safeboot] フラグの値が最小限であることを示しています。

  3. [safemoade] フラグを削除すると、VM が通常モードで起動します。

    bcdedit /deletevalue {current} safeboot
    
  4. ブート構成データをチェックして、 [safeboot] フラグが削除されていることを確認します。

    bcdedit /enum
    
  5. VM を再起動し、問題が解決されているかどうかを確認します。

VM をオフライン修復する

復旧 VM に OS ディスクを接続する

  1. 復旧 VM に OS ディスクを接続します
  2. 復旧 VM へのリモート デスクトップ接続を開始します。
  3. ディスクが [ディスクの管理] コンソールで [オンライン] になっていることを確認します。 接続された OS ディスクに割り当てられたドライブ文字をメモします。

ダンプ ログとシリアル コンソールを有効にする (省略可能)

ダンプ ログとシリアル コンソールは、この記事の解決策では問題を解決できない場合にさらにトラブルシューティングを行うのに役立ちます。

ダンプ ログとシリアル コンソールを有効にするには、次のスクリプトを実行します。

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

  2. 次のスクリプトを実行します。

    このスクリプトでは、接続されている OS ディスクに割り当てられているドライブ文字が F であると想定しています。このドライブ文字を実際の VM の適切な値に置き換えてください。

    reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM
    
    REM Enable Serial Console
    bcdedit /store F:\boot\bcd /set {bootmgr} displaybootmenu yes
    bcdedit /store F:\boot\bcd /set {bootmgr} timeout 5
    bcdedit /store F:\boot\bcd /set {bootmgr} bootems yes
    bcdedit /store F:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON
    bcdedit /store F:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
    
    REM Suggested configuration to enable OS Dump
    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
    
    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
    
    reg unload HKLM\BROKENSYSTEM
    

通常モードで起動するようにWindowsを構成する

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

  2. ブート構成データを確認します。 次のコマンドでは、接続されている OS ディスクに割り当てられているドライブ文字が F であると想定しています。このドライブ文字を実際の VM の適切な値で置き換えてください。

    bcdedit /store F:\boot\bcd /enum
    

    \windows フォルダーが含まれるパーティションの識別子名をメモしておきます。 既定では、識別子名は "Default" です。

    VM がセーフ モードで起動するように構成されている場合は、safeboot という名前の Windows ブート ローダー セクションに追加のフラグが表示されます。 safeboot フラグが表示されない場合、この記事の内容は目的のシナリオに当てはまりません。

    Windows ブート ローダー セクションの下にあるセーフブート フラグのスクリーンショット。

  3. safeboot フラグを削除すると、VM が通常モードで起動します。

    bcdedit /store F:\boot\bcd /deletevalue {Default} safeboot
    
  4. ブート構成データをチェックして、 [safeboot] フラグが削除されていることを確認します。

    bcdedit /store F:\boot\bcd /enum
    
  5. OS ディスクを切断して、VM を再作成します。 その後、問題が解決されているかどうかを確認します。