Hyper-V 가상 머신에서 직렬 포트(Serial Port, COM Port) 사용
이 방법에 대해서는 다음의 글에 자세하게 나옵니다.
Hyper-V generation 2 virtual machines ? part 5
; https://learn.microsoft.com/en-us/archive/blogs/jhoward/hyper-v-generation-2-virtual-machines-part-5
그러니까, Hyper-V 가상 머신에는 기본적으로 COM 포트가 별도의 설정 없이도 그냥 2개씩 있습니다.
문제는, 저 COM 포트를 외부에서 연결할 방법이 없는 건데요. Generation 1의 VM에서는 Hyper-V 관리 화면에서 제공을 했지만,
Generation 2에 해당하는 VM들은 더 이상 관리 화면을 제공하지 않고 있습니다. 대신 PowerShell을 이용해 관리할 수 있는데 일례로 다음과 같이 COM 포트를 확인하고,
PS C:\WINDOWS\system32> Get-VMComPort -VMName win10en
VMName Name Path
------ ---- ----
win10en COM 1
win10en COM 2
이 중에 외부에서도 접근할 수 있게 연결을 하려면 명시적으로 Set_VMComPort 명령어를 사용해 파이프를 할당할 수 있습니다.
PS C:\WINDOWS\system32> Set-VMComPort -VMName win10en -Path \\.\pipe\myPipe -Number 1
PS C:\WINDOWS\system32> Get-VMComPort -VMName win10en
VMName Name Path
------ ---- ----
win10en COM 1 \\.\pipe\myPipe
win10en COM 2
혹시 Linux VM도 가능할까요? 확인을 위해 docker 설치 시 기본 생성되는 MobyLinuxVM의 경우,
간단하게 살펴 보는 Docker for Windows
; https://www.sysnet.pe.kr/2/0/11204
윈도우와 마찬가지로 2개의 COM 포트를 가지고 있고 docker와의 통신 용으로 이미 COM 1을 할당한 상태입니다.
PS C:\WINDOWS\system32> Get-VMComPort -VMName MobyLinuxVM
VMName Name Path
------ ---- ----
MobyLinuxVM COM 1 \\.\pipe\dockerMobyLinuxVM-com1
MobyLinuxVM COM 2
즉, 가능하다는 것인데 남은 COM 2 포트도 다음과 같이 할당할 수 있습니다.
PS C:\WINDOWS\system32> Set-VMComPort -VMName MobyLinuxVM -Path \\.\pipe\myPipe -Number 2
PS C:\WINDOWS\system32> Get-VMComPort -VMName MobyLinuxVM
VMName Name Path
------ ---- ----
MobyLinuxVM COM 1 \\.\pipe\dockerMobyLinuxVM-com1
MobyLinuxVM COM 2 \\.\pipe\myPipe
이쯤에서 궁금한 점이 하나 있습니다. 그렇다면 3개 이상도 가능할까요? 아쉽게도 다음의 질문이 있는 것을 보면,
Adding additional Serial Com Ports
; https://social.technet.microsoft.com/Forums/en-US/4ee50898-4f23-47bd-ac11-25eba8a7a2ee/adding-additional-serial-com-ports?forum=winserverhyperv
2개까지로 고정된 것 같고 3개 이상 설치하려면 다음과 같은 제품 등을 구매해야 하는 듯합니다.
COM Port in Virtual Machine (Hyper-V, VMware, VirtualBox)
; https://www.eltima.com/com-port-in-virtual-machine/
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]