かつて山市良と呼ばれたおじさんのブログ

セイテクエンジニアのブログ  かつて山市良と呼ばれたおじさんのブログ  vol.189 Azureに移行したVMのトラブル解決に役立つシリアルコンソール(その1)|Windows Server 2016 EOSまであと292日

 

 

vol.189 Azureに移行したVMのトラブル解決に役立つシリアルコンソール(その1)|Windows Server 2016 EOSまであと292日

2026年03月26日配信
執筆者:山内 和朗

 Windows Server 2016の製品ライフサイクルとサポート終了日(End of LifeCycle《EOL》、End of Support《EOS》)である2027年1月12日までのカウントダウンが進んでいます。この連載のシーズン2ではこれまで、Azure Migrateを使用して、オンプレミスのHyper-V VMをAzure VMにリフトアンドシフトする手順を説明してきました。Azure VMに移行すると、Azure Backupを始め、関連するサービスで運用管理を強化できることはお話しましたが、今回はAzure VMの標準機能である「シリアルコンソール」について紹介します。

 

Azureシリアルコンソールとは

 

 この連載の以下の回では、オンプレミスのサーバー(VMや物理サーバー)をAzure VMに移行する前に、Azure VMへのリモート管理手段としてリモートデスクトップ(RDP)接続(Windows)やSSH接続(LinuxおよびWindows)のリモートアクセス手段を用意しておく必要があることを説明しました。その理由は、Hyper-Vの「仮想マシン接続」ツールのような、OSのローカルコンソールに対話的にアクセスする手段がAzure VMにはないからだと言いました。

vol.176 Azure MigrateによるVM移行-VMの準備

 実は、ローカルコンソールに対話的にアクセスする手段がAzure VMには存在します。それは、リモート管理用というよりは、トラブルシューティングのためのアウトオブバウンド(帯域外)接続を提供する「Azureシリアルコンソール」です。

 物理サーバーであれば、ネットワークが利用できなくても、ローカルコンソール(キーボード/ディスプレイ/マウス《KVM》)に物理的にアクセスできれば対処可能です。Hyper-V VMの場合は、「仮想マシン接続」ツールがその役割を果たします。AzureシリアルコンソールはAzure VMのネットワーク接続を全く使用しないため、ネットワーク接続異常時の対応や、応答しないVM(シャットダウンや再起動中のハング状態など)への対応などの際に、ローカルKVMの代わりになります。

Azure シリアル コンソール|Azure(Microsoft Learn)

 Azureポータルの「仮想マシン」ブレードにある「ヘルプ > シリアルコンソール」を使用すると、WindowsまたはLinuxを実行するAzure VMのインスタンスのシリアルコンソール(WindowsのCOM1、LinuxのttyS0)に端末(ターミナル)接続することができます。Windows VMの場合は、Windows ServerおよびWindows 10/11が標準で備えている「緊急管理サービス(Emergency Management Services《EMS》)」*1 の「SAC(Serial Administration Console)」を通じてOSに対話的にアクセスすることができます。EMSのSACからはコマンドチャネル(cmd)を作成してOSのコマンドプロンプトに対話的にログオンして作業することができます。コマンドプロンプトからさらにPowerShell(powershell.exeやpwsh.exe)を開始して作業することもできます。Linux VMの場合は、シリアルコンソール(ttyS0)に直接的、対話的にアクセスできます。
*1 EMSはWindows Server 2003以降のWindows Server、Windows 10バージョン2004以降、およびWindows 11に標準搭載されています。bootcfg ems|Windows Server(Microsoft Learn)

 Azure MarketplaceからデプロイされたWindowsおよびLinuxイメージでは、2018年2月以前の古いイメージでない限り、シリアルコンソール用の設定が既定で有効になっており、標準で利用できます(画面1、画面2)。ただし、シリアルコンソールを利用するためには、Azure VMで「ブート診断」機能が有効になっている必要があります。Azure Migrateで移行したVMでは、ブート診断が自動的に有効化されていました。

 

画面1 Windows Serverを実行するAzure VMのシリアルコンソール。EMSのSACに対話的に接続可能
画面1 Windows Serverを実行するAzure VMのシリアルコンソール。EMSのSACに対話的に接続可能

 

画面2 Linuxゲストを実行するAzure VMのシリアルコンソール。Linuxの標準的なシリアルコンソール(ttyS0)に対話的に接続可能
画面2 Linuxゲストを実行するAzure VMのシリアルコンソール。Linuxの標準的なシリアルコンソール(ttyS0)に対話的に接続可能

 シリアルコンソールは、WindowsブートマネージャーやGRUBメニューにアクセスできるように構成することもできるので、Windowsの起動エントリの選択、「セーフモードとネットワーク」や「前回正常起動時の構成」など詳細なブートオプションの選択、Linuxのシングルユーザーモードでのトラブル対応などにも利用できます。また、WindowsのSTOPエラーのエラーモジュールやエラーコードを確認することもできます(確実に確認するにはシステムエラー時の「自動的な再起動」オプションを無効にしてください)。

Azure VMに移行したWindows VMでEMSを有効にする

 

 Azure VMのWindowsゲストがシリアルコンソール用に構成されていない場合、Azureポータルで「シリアルコンソール」に接続しても大量のテキスト情報(Microsoft Azure VM Health Reportの情報)が表示されるだけで、何もできません(画面3)。

 

画面3 シリアルコンソール用に構成されていないWindows VMのシリアルコンソール
画面3 シリアルコンソール用に構成されていないWindows VMのシリアルコンソール

 Azure VMには、Azure VMのWindowsゲストをシリアルコンソール用に構成する「実行コマンド」として「EnableEMS」が用意されているので、これを実行してVMを再起動すればシリアルコンソールを利用できるようになります(画面4)。なお、この実行コマンドは、Azure Windows VMエージェント(WindowsAzureGuestAgent)経由でWindowsゲスト側で実行されます。Azure Windows VMエージェントは、Azure Migrateで移行したVMでは自動でインストールされます。

 

画面4 Azure VMにリフトアンドシフトしたVMでシリアルコンソールを利用するために、「EnableEMS」を実行してEMSを有効化する
画面4 Azure VMにリフトアンドシフトしたVMでシリアルコンソールを利用するために、「EnableEMS」を実行してEMSを有効化する

 実行コマンド「EnableEMS」は、Windowsゲストで以下のコマンドを実行します。実行後、次回起動時からシリアルコンソールでEMSのSACが利用可能になります。実行コマンド「EnableEMS」を使用しなくても、WindowsゲストにRDP接続してコマンドプロンプトを開き、以下のコマンドを実行後、再起動することでも、EMSを有効化できます(PowerShellで実行する場合は{の扱いに注意が必要です'{current}'など)。

 

bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200

 

 Azure VMのWindowsゲストでEMSを有効化すると、OSの起動時の比較的早い段階からAzureポータルの「シリアルコンソール」を使用して、EMSのSACにアクセスできるようになります。利用可能なコマンドについては、SAC>プロンプト?と入力してください。コマンドチャネルを作成(cmd )して切り替えると(ch -si #)、Windowsのコマンドシェル(cmd.exe)に対話的にログオンすることができます(画面5)。このほか、コマンドシェルにログオンしなくても、プロセス一覧(tlist)、プロセスの強制終了(k <プロセスID>)、ネットワーク情報の取得と設定(i)、再起動(restart)やシャットダウン(shutdown)、クラッシュダンプの作成(crashdump)などをSAC>プロンプトから実行できます。

 

画面5 EMSのSACでコマンドチャネル(cmd)を作成すると、チャネルに切り替えて、Windowsに対話的にログオンできる
画面5 EMSのSACでコマンドチャネル(cmd)を作成すると、チャネルに切り替えて、Windowsに対話的にログオンできる

 実行コマンド「EnableEMS」は、現在のOS(Windowsインスタンス)でEMSを有効化します。EMSはWindowsブートマネージャーでも有効化でき、その場合、WindowsブートマネージャーのCUIメニュー(レガシブートメニュー)にアクセスできるようになります(画面6、画面7)。WindowsブートマネージャーでEMSを有効にするには、上記に加えて次のコマンドを実行します。

 

bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 10
bcdedit /set {bootmgr} bootems yes

 

 なお、Windows回復環境(Windows Recovery Environment《WinRE》)はEMSに対応していないため、シリアルコンソールからWinREにアクセスすることはできません。

 

画面6 WindowsブートマネージャーでEMSを有効にすると、WindowsブートマネージャーのCUIメニューがシリアルコンソールに表示される
画面6 WindowsブートマネージャーでEMSを有効にすると、WindowsブートマネージャーのCUIメニューがシリアルコンソールに表示される。SAC>プロンプトはこの後Windowsの起動直後に利用可能になる

 

画面7 詳細な起動オプション(F8)の選択も可能
画面7 詳細な起動オプション(F8)の選択も可能

 次回は、Azure VMのLinuxゲストでシリアルコンソールを利用可能にする方法、およびオンプレミスのHyper-V環境でシリアルコンソールを事前に構成し、テストする方法を紹介します。

参考:
Windows 用 Azure シリアル コンソール|Azure(Microsoft Learn)

 

シーズン1目次シーズン2(1)・・・(12)(13)(14)(15)(16)(17)(18)(19)(20)(21)|(22)

blog_yamanxworld_subscribe

blog_yamanxworld_comment

blog_yamanxworld_WP_ws2025

最新記事