2011/06/21

仮想マシンの COM リダイレクトで EMS (緊急管理サービス) を試してみた

仮想マシンの COM (シリアル) ポートは、ホストの物理 COM ポートにリダイレクトするか、名前付きパイプやテキストファイルへ出力するように構成できます。が、Hyper-V の場合は、名前付きパイプのみがサポートされます。そのため、通常、使うことはないでしょう。WinDbg による Windows ゲスト OS のカーネル デバッグや、シリアル コンソールをサポートするゲスト OS (Linux など) へのアクセスなどで利用可能なようですが、一般の方には関わりのないこと。

Hyper-V  仮想マシンの COM ポート-名前付きパイプの接続を利用して、Windows Server 2003 以降でサポートされた EMS (Emergency Management Services、緊急管理サービス) を試してみるなんてどうでしょう。

仮想マシンの COM ポートに接続される名前付きパイプにコンソール接続するには、名前付きパイプに対応した端末ソフトウェアが必要になります。今回は、Tera Term (http://sourceforge.jp/projects/ttssh2/) と Named Pipe TCP Proxy Utility (http://shvechkov.tripod.com/nptp.html) を組み合わせて利用します。なお、Windows Virtual PC や VMware でも同じ方法で名前付きパイプに接続できます。Named Pipe TCP Proxy Utility が名前付きパイプを TCP ポートにマッピングしてくれるので、Tera Term の代わりに Telnet を使うこともできます。

仮想マシンの COM1 ポートに、名前付きパイプを接続します。「名前付きパイプ」を選択して、「パイプ名」に任意の文字列を入力するだけです。

Named Pipe TCP Proxy を起動し、「Edit」→「New」を選択して、名前付きパイプを TCP ポートにリダイレクトするように構成します。今回は、先ほど設定した仮想マシンの名前付きパイプ「\\.\pipe\demo」を TCP ポート「8080」に設定します。

Tera Term を起動し、「localhost」の TCP ポート「8080」に対して Telnet 接続を開始します。
Windows Server 2008 または Windows Server 2008 R2 の仮想マシンを起動し、ゲスト OS で次の 2 つのコマンドラインを実行し、再起動します。

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

Windows Server 2003 の場合は、bootcfg /ems コマンドを使用します。詳しくは、MSDN Library > Boot Parameters to Enable EMS Redirection を参照のこと。

ゲスト OS を再起動すると、Tera Term の端末画面に、「Computer is booting, SAC started and initialized.」と表示され、「SAC>」というプロンプトが表示されます。これは、Special Administration Console (SAC) と呼ばれるテキスト ベースの管理コンソールです。

利用可能なコマンドは ? で参照できますが、ネットワーク情報の取得 (i) 、OS の情報の取得 (id) 、日時の表示・設定(s)、再起動 (restart)、シャットダウン(shutdown) など、結構、いろんなことができます。へぇ~。

今回は仮想マシンの COM ポート-名前付きパイプ接続で EMS を試しましたが、本来であれば PC 間のシリアル ポート間を ヌル (Null) モデムケーブルで相互接続して、COM ポート経由で端末ソフトウェアを利用することになります。ヌルモデムケーブルで通じる人って、もう少なくなってきたんでしょうね。昔はルータやハブの設定やテストに欠かせませんでしたが。

1 件のコメント:

山市 良 さんのコメント...

いまは PuTTY 使えば、直接名前付きパイプに接続できます(Serialを選択して、スピード選択して、\\.\pipe\パイプ名を指定)。

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html