我已將 Hyper-V 中的 Linux Mint x64 設定為 Windows 10 桌面上的第二代虛擬機器。我想將 USB-> 串行轉換器 (FT232RL) 連接到 VM,以便我可以對嵌入式硬體進行編程和調試。在 Windows 中,FT232RL 顯示為「USB 序列埠 (COMx)」且運作正常。當我使用 VirtualBox 時,我只需將 COM 連接埠連接到虛擬機器或從虛擬機器上分離即可,一切正常。
Hyper-V 中的第 2 代虛擬機器在其設定中沒有顯示 COM 連接埠/命名管道,這與第 1 代虛擬機器不同,因此我不確定如何存取適當的設定。有一篇文章這裡(更多細節)這顯示了我想要實現的目標,除了我使用 Linux 而不是 Windows 作為我的來賓作業系統。
那麼,我該如何設定呢?我已經看過Linux中的setserial,但到目前為止還沒有找到解決方案。
答案1
因此,似乎至少有三種方法可以使其發揮作用,這是我隨著時間的推移發現的。
第一個方法非常簡單,使用遠端桌面而不是 hyper-v 啟動器來存取虛擬機器。當然,這需要來賓作業系統具有遠端桌面伺服器和開啟的防火牆,並且 IP 位址位於主機的範圍內。使用 RDP,您可以前往顯示選項 -> 本機資源/本機裝置和資源 -> 更多 -> 選擇「連接埠」。然後正常連接。
此解決方案僅適用於第一代虛擬機,因為它本身不會在主機作業系統上建立命名管道。第一代虛擬機器允許使用者透過虛擬機器設定選單建立命名管道。第二個解決方案是使用COM管道。這涉及使用 hyper-v 設定在 COM 連接埠之一上設定命名管道,例如 COM1 上的 MySerialPort(建立命名管道路徑:\.\pipe\MySerialPort)。然後在主機作業系統上執行管理 PS 並發出以下命令:COMpipe.exe -b 115200 -c \\.\COM5 -p \\.\pipe\MySerialPort
其中 COM5 是您嘗試使用的主機作業系統上的 COM 連接埠。如果一切正常,您應該能夠在來賓作業系統中使用 COM1 並將其直接對應到主機上的 COM5。根據經驗,GLE=5 錯誤表示未在來賓作業系統中建立命名管道。
第三種解決方案要複雜得多,並進行了描述這裡(備份連結)。這涉及在來賓和主機作業系統上建立 hub4com 並運行 com0com(也作為管理員)以及 hub4com 專案的一些其他腳本。
順便說一句,您可以使用以下命令將 COM 連接埠對應到命名管道(需要由某些應用程式建立)設定-VMComPort並查看映射取得 VMComPort。這是第二代 Hyper-V VM 所必需的,因為 COM 連接埠不可見(請參閱有關第 2 代常見問題的註釋)在配置第 2 代虛擬機器時的設定中。