適用対象: ✔️ Windows VM
この記事では、Windows ブート マネージャーが原因で Azure 仮想マシン (VM) を起動できない問題を解決するための手順を示します。
症状
VM がユーザー プロンプトで待機していて、手動で指示しない限り起動しない。
次のスクリーンショットのように、ブート診断を使用して VM を確認すると、Windows ブート マネージャーにより "開始するオペレーティング システムを選択するか、TAB キーを押してツールを選択してください:" というメッセージが表示されます。
原因
このエラーの原因は、Windows ブート マネージャーの BCD フラグ displaybootmenu です。 このフラグが有効になっている場合、Windows ブート マネージャーは、起動プロセス中に、実行するローダーを選択するように求めるプロンプトをユーザーに対して表示します。これにより起動が遅延します。 Azure では、この機能によって VM の起動にかかる時間が長くなる場合があります。
ソリューション
ヒント
VM の最新のバックアップがある場合は、そのバックアップから VM の復元を試行して、起動の問題を修正することができます。
プロセスの概要:
- シリアル コンソールを使用して、より短い起動時間を構成します。
- 修復 VM を作成してアクセスします。
- 修復 VM でより短い起動時間を構成します。
- 推奨: VM を再構築する前に、シリアル コンソールとメモリ ダンプの収集を有効にします。
- VM を再構築します。
シリアル コンソールを使用して、より短い起動時間を構成する
シリアル コンソールへのアクセス権がある場合、起動時間を短縮する方法は 2 つあります。 displaybootmenu の待機時間を短縮するか、このフラグを完全に削除します。
指示に従って Windows 用 Azure シリアル コンソールにアクセスし、テキストベースのコンソールにアクセスできるようにします。
Note
シリアル コンソールにアクセスできない場合は、「修復 VM を作成してアクセスする」に進んでください。
オプション A: 待機時間を短縮する
a. 待機時間は既定では 30 秒に設定されていますが、より短い時間 (たとえば 5 秒) に変更できます。
b. シリアル コンソールで次のコマンドを使用してタイムアウト値を調整します。
bcdedit /set {bootmgr} timeout 5
オプション B: BCD フラグを削除する
a. [Display Boot Menu]\(ブート メニューの表示\) プロンプトが表示されないようにするには、次のコマンドを入力します。
bcdedit /deletevalue {bootmgr} displaybootmenu
Note
前の手順でシリアル コンソールを使用してより短いブート時間を構成できなかった場合は、代わりに次の手順に進むことができます。 オフライン モードでトラブルシューティングを行い、この問題を解決します。
修復 VM を作成してアクセスする
- VM 修復コマンドの手順 1 から 3 を使用して、修復 VM を準備します。
- リモート デスクトップ接続を使用して、修復 VM に接続します。
修復 VM でより短い起動時間を構成する
管理者特権でのコマンド プロンプトを開きます。
次のように入力して DisplayBootMenu を有効にします。
第 1 世代 VM の場合、次のコマンドを使用します。
bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /set {bootmgr} displaybootmenu yes
第 2 世代 VM の場合、次のコマンドを使用します。
bcdedit /store <VOLUME LETTER OF EFI SYSTEM PARTITION>:EFI\Microsoft\boot\bcd /set {bootmgr} displaybootmenu yes
">でテキストを<" など、シンボル内のテキストと同様に、大きいまたは小さい記号を置き換えます。
タイムアウト値を 5 秒に変更します。
第 1 世代 VM の場合、次のコマンドを使用します。
bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /set {bootmgr} timeout 5
第 2 世代 VM の場合、次のコマンドを使用します。
bcdedit /store <VOLUME LETTER OF EFI SYSTEM PARTITION>:EFI\Microsoft\boot\bcd /set {bootmgr} timeout 5
">でテキストを<" など、シンボル内のテキストと同様に、大きいまたは小さい記号を置き換えます。
推奨: VM をリビルドする前に、シリアル コンソールとメモリ ダンプの収集を有効にします
メモリ ダンプ収集とシリアル コンソールを有効にするには、次の手順に従います。
管理者として管理者特権でのコマンド プロンプト セッションを開きます。
/ems および /emssettings オプションを使用して、次の BCDEdit コマンドを実行します。
シリアル コンソールを有効にします。
bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /ems {<boot-loader-identifier>} ON bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
OS ディスクの空き領域が、VM のメモリ サイズ (RAM) よりも大きいことを確認します。
OS ディスクに十分な領域がない場合は、メモリ ダンプ ファイルが作成される場所を変更し、その場所を、十分な空き領域がある VM に接続されているデータ ディスクを参照します。 場所を変更するには、次のコマンドで、
%SystemRoot%
をデータ ディスクのドライブ文字 (F:
など) に置き換えます。OS ダンプ ファイルを有効にするには、次の load、 add、および unload コマンドを実行して、 reg ツールを使用して推奨される構成を実装します。
壊れた OS ディスクからレジストリ ハイブを読み込みます。
reg load HKLM\<broken-system> <volume-letter-of-broken-os-disk>:\windows\system32\config\SYSTEM
ControlSet001 での有効化:
reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
ControlSet002 での有効化:
reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
壊れた OS ディスクをアンロードします。
reg unload HKLM\<broken-system>
元の VM を再構築する
VM 修復コマンドの手順 5 を使用して、VM を再構成します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。