Hyper-V 第 2 世代 VM を使用して Linux で UART/COM を構成する

Hyper-V 第 2 世代 VM を使用して Linux で UART/COM を構成する

Windows 10 デスクトップ上の第 2 世代仮想マシンとして Hyper-V で Linux Mint x64 をセットアップしました。USB-> シリアル コンバータ (FT232RL) を VM に接続して、組み込みハードウェアをプログラムおよびデバッグできるようにしたいと考えています。Windows では、FT232RL は「USB シリアル ポート (COMx)」として表示され、正常に動作しています。VirtualBox を使用している場合は、COM ポートを VM に接続または切断するだけで、すべて正常に動作します。

Hyper-Vの第2世代VMでは、第1世代VMとは異なり、設定にCOMポート/名前付きパイプが表示されないため、適切な設定にアクセスする方法がわかりません。記事があります。ここ詳細はこちら) は、ゲスト OS として Windows ではなく Linux を使用している点を除いて、私が実現したいことを表しています。

では、これをどのように設定すればよいのでしょうか? Linux の setserial はすでに調べましたが、今のところ解決策は見つかっていません。

答え1

つまり、これを機能させるには少なくとも 3 つの方法があるようです。時間をかけて調べてみました。

1 つ目は、Hyper-V ランチャーの代わりにリモート デスクトップを使用して仮想マシンにアクセスするという非常に簡単な方法です。もちろん、ゲスト OS にリモート デスクトップ サーバーとファイアウォールが開かれていて、ホストの範囲内に IP アドレスがある必要があります。RDP を使用する場合は、[オプションの表示] -> [ローカル リソース/ローカル デバイスとリソース] -> [詳細] -> [ポート] を選択します。その後、通常どおり接続します。

このソリューションは、ホストOS上に名前付きパイプ自体を作成しないため、第1世代のVMにのみ適しています。第1世代のVMでは、ユーザーはVM設定メニューから名前付きパイプを作成できます。2番目のソリューションは、コンパイプこれには、Hyper-V 設定を使用して、COM ポートの 1 つに名前付きパイプを設定することが含まれます (例: COM1 の MySerialPort) (名前付きパイプ パス: \.\pipe\MySerialPort を作成します)。次に、ホスト OS で管理者 PS を実行し、次のようなコマンドを発行します。COMpipe.exe -b 115200 -c \\.\COM5 -p \\.\pipe\MySerialPortここで、COM5 は、使用しようとしているホスト OS 上の COM ポートです。すべてが機能する場合は、ゲスト OS で COM1 を使用し、ホスト上の COM5 に直接マップできるはずです。経験上、GLE=5 のエラーは、名前付きパイプがゲスト OS に作成されていないことを意味します。

3番目の解決策ははるかに複雑で、次のように説明されます。ここバックアップリンク)。これには、hub4com を構築し、ゲスト OS とホスト OS の両方で com0com (管理者として) と hub4com プロジェクトを使用した他のいくつかのスクリプトを実行することが含まれます。

ちなみに、COMポートを名前付きパイプ(何らかのアプリで作成する必要があります)にマップするには、次のようにします。VMComPort の設定マッピングを表示するにはVMComPort を取得しますこれは、COMポートがGen 2 Hyper-V VMに必要となるため、見えない(第 2 世代の FAQ の注記を参照) Gen 2 VM を構成するときに設定します。

関連情報