仮想マシンで仮想マシン内のCOMポートにアクセスする方法については、すでに時間をかけて説明しました(記事はここで見つかります)Serial to Ethernet ConnectorはHyper-VのシリアルポートパススルーにおけるCOMポート向けの優れたソリューションですが、Hyper-VのシリアルポートにCOMポートを追加するための他のいくつかの選択肢も確認しておく価値があります。これらについては以下で取り上げます。
Hyper-V でシリアルポートにアクセスする方法
仮想マシンのシリアルポートに接続する必要がある場合は、Serial Port Redirector が必要です。以下の手順に従って、このツールの使い方を学び、仮想ポートにアクセスするために使用してください。
1. Serial to Ethernet Connector を入手する(仮想マシンとホストオペレーティングシステムの両方で)
2. まずVMでアプリを開きます。接続」メニューを開き、新しいサーバー接続」を選択します。
3. 共有するポートに関する必要な情報(番号および接続に使用するTCPポートを含む)を入力します。
注:ポートを仮想化するにはチェックボックスにチェックを入れてください。
4. 「作成」を押します。
5. 次に、ホストマシンでSerial to Ethernetに切り替えます。Remote Connections」を開きます。
6. すべてが正しく設定されていれば、仮想マシンのポートがリストに表示されるはずです。それを選択してください。
7. データを受信するために使用されるポートなど、クライアント接続オプションを設定します。
8. もう一度「作成」を押して、これで完了です。
ビデオチュートリアル:
PipeDream を使用してシリアルハードウェアを仮想マシンに接続する方法
Hyper-V のシリアルポートに COM ポートを追加したい仮想マシンユーザーにとって、PipeDream は理想的な選択肢です。この Hyper-V 向けシリアルポートツールは、Hyper-V(仮想化ホスト)をホストしている同じサーバー上で動作し、仮想マシンとシリアルポートの間の橋渡しをします。
PipeDream は、シリアルハードウェア(COM ポートに接続されているもの)から受信したデータを転送して動作し、仮想マシンがそれを認識してアクセスできるようにします(その逆も同様です)
さらに、PipeDream はサーバー上で実行するためのクライアント側要素を必要としないため、Hyper-V のシリアルサポートのパススルーがより便利になります。PipeDream は参加する仮想マシン上に(デバイス、ソフトウェア、その他を含め)いかなるインストールも不要で、これによりレガシー OS/ソフトウェアとの互換性を最大化し、XP(およびそれ以前)のオペレーティングシステムに対して信頼性の高いサポートを提供します。
PipeDream を使用すると、ゲスト仮想マシンが仮想化ホスト(または他のマシン)のシリアルポートを制御できます。このツールは Hyper-V の名前付きパイプ対応により機能するため、通信にネットワーク接続は不要です。Hyper-V でパイプ名を作成するだけで、PipeDream プログラムを起動すると PipeDream がゲスト VM のシリアル デバイスに接続します。
免責事項: Hyper-V ソフトウェアにおける PipeDream シリアルポートは Microsoft の Hyper-V と互換性がありますが、Microsoft とは無関係のサードパーティ製ツールです。Hyper-V」という用語の使用は、Microsoft Corporation を推奨したり提携したりすることを意図したものではありません。
第 1 世代の Hyper-V 仮想マシンをお持ちの方へ
以下のステップバイステップガイドに従って、Hyper-V に COM ポートを追加する方法を学びましょう。
1. Hyper-V マネージャーを起動し、ゲスト マシンの設定(確立したい VM)を開きます。
2. 新しいウィンドウ(左側のハードウェアリストにあります)からCOM1またはCOM2を選択します。
3. これは、仮想マシンが選択したシリアルデバイスにアクセスできるようにするシリアルポートです(別名、VM に表示されるポートはホストの物理シリアルポートとは異なる場合があります)
4. 「PipeDream」という名前のパイプをゲストのシリアルポートに接続します(Named pipe をクリックし、パイプの名前として「PipeDream」と入力してください。参考として以下の画像を参照してください)
5. リモート コンピューター上にシリアル デバイスがある場合は、リモート コンピューター」チェックボックスがオンになっていることを確認し、マシン名を入力します。
6. [OK]をクリックします。
Gen-2 仮想マシンの構成方法
Gen-2 仮想マシンを実行している方の場合、上記に表示されているパイプ設定は GUI では構成できないため、ユーザーは Powershell コマンドを実装する必要があります。
1. Powershell セッションを開く;
2. Get-VM を実行します;
3. 目的のシリアルポートを持つ仮想マシンの名前をコピーします。
4. シリアルポート COM1 または COM2 の場合、Set-VMComPort -Number < 1 または 2 > -Path \.pipePipeDream を実行します
5. Get-VMComPort を使用してパイプの作成を確認します(例として “SillyRabbit” という名前の VM を使用して下に表示されているスクリーンショットを参照してください)
でも、Gen 2 VM には COM ポートがないんですよね…
率直に言うと、答えは「はい」と「いいえ」が混在しています(いいえ」は主に、Hyper-V の既定のシリアルポート・パススルー機能に関する点に集中しています。ただ、朗報です。これは調整可能です!
以下のスクリーンショットは Windows 8 の VM からのものです(具体的には、前のセクションでソフトウェアベースのキーボード用ドライバーを追加した際に作成したメディアを利用しています。
以下の例では、基本的な第2世代(gen-2)仮想マシンの設定に COM ポートのオプションがないことがわかります。
理由は、シリアル ポートが利用可能かどうかに関係なく、Gen-2 Hyper-V マネージャーは COM ポートを決して表示しないためです。
以下では、PowerShell が何と言っているのかを少し覗いてみましょう:
PowerShell が利用可能な COM ポートを 2 つ表示していることに注目してください。しかし、ゲスト マシンのデバイス マネージャーを開いても、VM の COM ポートは一覧に表示されません。
仮想マシンが実行中に COM ポートのパイプ パスを構成する例(COM1 を使用)を以下で確認してください:
前述のとおり、ゲストマシンのデバイス マネージャーを確認すると COM1 は表示されませんが、VM をシャットダウンして再起動すると、目的の COM ポートがリストから利用できるようになります(以下を参照)
カーネルデバッグの経験がある方にとって、残りの手順はかなりシンプルで分かりやすいものです。ただし、Gen-2 VM(さらに具体的には、Secure Boot を使用する UEFI ベースのコンピューター)に固有の小さな例外が 1 つだけあります。
msconfig を使用して、COM1 上の VM のカーネル デバッグを有効にしました。しかし、OK をクリックすると、次のエラーメッセージが表示されます:
なぜ? Windows のポリシーでは、Secure Boot とカーネル デバッグは互換性がないとされています。これは、ユーザーが仮想マシンをシャットダウンし、その後ファームウェア設定内から Secure Boot を無効にする必要があることを意味します。
- msconfig をもう一度使用してカーネル デバッグを有効にします(今回は成功します)
- VM を再起動します。
- 親パーティションの windbg を介してパイプに接続します。
結論
まとめると、Hyper-V は仮想マシンへの物理 COM ポートの直接パススルーを提供していませんが、名前付きパイプ、PowerShell の構成、および専用のリダイレクトツールを使用することで、シリアル通信は依然として実現できます。これらの方法により、レガシーソフトウェアのサポート、ハードウェア統合、またはデバッグなどのタスクにおいて、Gen 1 および Gen 2 VM の両方で作業することが可能になります。
直接のシリアルアクセスが現実的でないシナリオでは、Serial to Ethernet Connector が効果的な代替手段となり得ます。シリアルデータをネットワークトラフィックに変換することで、この種のデバイスは COM ベースの機器を TCP/IP 経由でアクセス可能にし、仮想マシン間で容易に共有できるようにします。シリアルポートリダイレクトソフトウェアと組み合わせることで、このアプローチはより高い柔軟性を提供し、仮想化された Hyper-V 環境における物理シリアルデバイスへのアクセスを簡素化します。