Ми вже знайшли час, щоб розглянути способи доступу до COM-портів у віртуальній машині (ви можете знайти статтю тут.) Хоча Serial to Ethernet Connector є чудовим рішенням для COM у разі пробросу послідовного порту в Hyper-V, варто також ознайомитися з кількома іншими варіантами додавання COM-порту до послідовного порту Hyper-V — про які ми розповімо нижче.
Як отримати доступ до послідовного порту в Hyper-V
Якщо вам потрібно підключитися до послідовного порту віртуальної машини, вам знадобиться Serial Port Redirector. Виконайте ці кроки, щоб дізнатися, як користуватися цим інструментом і використовувати його для доступу до віртуального порту:
1. Отримайте Serial to Ethernet Connector як на віртуальній машині, так і на хостовій операційній системі.
2. Почніть із відкриття застосунку у VM. Відкрийте меню “Connections” і виберіть “New Server Connection”.
3. Заповніть необхідну інформацію про порт, яким ви збираєтеся поділитися, включно з його номером і TCP-портом, що використовується для підключення до нього.
Примітка: поставте прапорець, щоб зробити порт віртуальним.
4. Натисніть «Створити».
5. Тепер на головній машині перемкніться на Serial to Ethernet. Відкрийте «Віддалені підключення».
6. Якщо все було налаштовано правильно, порт віртуальної машини має з’явитися у списку. Виберіть його.
7. Налаштуйте параметри підключення клієнта, такі як порт, який буде використовуватися для отримання даних.
8. Натисніть «Створити» ще раз — і все готово.
Відеоурок:
Як підключити послідовне обладнання до віртуальної машини за допомогою PipeDream
Для користувачів Virtual Machine, які хочуть додати COM-порт до послідовних портів Hyper-V, PipeDream є ідеальним варіантом. Цей інструмент послідовного порту в Hyper-V працює через той самий сервер, на якому розміщено Hyper-V (який є хостом віртуалізації), заповнюючи прогалину між віртуальними машинами та послідовними портами.
PipeDream працює шляхом передавання даних, отриманих від послідовного обладнання (будь-чого, що підключено до COM-порту), і допомагає Virtual Machine розпізнавати та отримувати до нього доступ (і навпаки).
Крім того, PipeDream не потребує клієнтського компонента для роботи на сервері, що робить passthrough підтримки послідовних портів Hyper-V ще зручнішим. PipeDream не вимагає жодного встановлення (пристрою, програмного забезпечення чи іншого) на віртуальній(их) машині(ах), що беруть участь — таким чином максимально підвищуючи сумісність із застарілими ОС/ПЗ та забезпечуючи надійну підтримку операційних систем XP (і старіших).
PipeDream дозволяє гостьовим віртуальним машинам керувати послідовними портами на хості віртуалізації (або інших машинах). Цей інструмент працює завдяки підтримці іменованих каналів Hyper-V, а це означає, що мережеве підключення для зв’язку не потрібне. Просто створіть назву каналу в Hyper-V, і PipeDream під’єднається до послідовного пристрою гостьової ВМ після запуску програми PipeDream.
Відмова від відповідальності: Програмне забезпечення PipeDream для послідовного порту в Hyper-V сумісне з Microsoft Hyper-V, але є інструментом стороннього розробника і не має жодного відношення до Microsoft. Наше використання терміна «Hyper-V» не має на меті схвалення або афіліацію з Microsoft Corporation.
Для тих, у кого віртуальна машина Hyper-V покоління 1
Дотримуйтесь покрокового посібника нижче, щоб дізнатися, як додати COM-порт до Hyper-V.
1. Запустіть диспетчер Hyper-V і відкрийте параметри гостьової машини (віртуальної машини, яку ви хочете налаштувати);
2. Виберіть COM1 або COM2 у новому вікні (розташованому в лівому списку обладнання);
3. Це послідовний порт, який дозволяє віртуальній машині отримувати доступ до вибраного вами послідовного пристрою (тобто порт, який відображається у ВМ, може відрізнятися від фізичного послідовного порту хоста);
4. Підключіть канал із назвою “PipeDream” до послідовного порту гостьової системи (зробіть це, натиснувши на Named pipe, і введіть “PipeDream” як назву каналу — див. зображення нижче для довідки);
5. Для тих, у кого серійний пристрій знаходиться на віддаленому комп’ютері, переконайтеся, що встановлено прапорець «Віддалений комп’ютер», і введіть назву машини;
6. Натисніть OK;
Як налаштувати для віртуальних машин Gen-2
Для тих, хто використовує віртуальні машини Gen-2, налаштування pipe, показані вище, не можна налаштувати за допомогою GUI, тому користувачі повинні застосовувати команди Powershell.
1. Відкрийте сеанс Powershell;
2. Виконайте Get-VM;
3. Скопіюйте назву віртуальної машини з потрібним послідовним портом;
4. Виконайте Set-VMComPort -Number < 1 або 2, для послідовного порту COM1 або COM2 > -Path \.pipePipeDream
5. Використайте Get-VMComPort, щоб підтвердити створення каналу (див. знімок екрана, показаний нижче, використовуючи ВМ з назвою “SillyRabbit” як приклад).
Але ж для ВМ Gen 2 немає COM-портів, так...?
Відверто кажучи, відповідь — це суміш «так» і «ні» (де «ні» переважно стосується можливостей стандартного пробросу послідовного порту Hyper-V.) Захоплива новина полягає в тому, що це можна налаштувати!
Наведені нижче знімки екрана зроблено з ВМ Windows 8 (зокрема з використанням носія, створеного в попередньому розділі, де було додано драйвер для програмної клавіатури.)
У наведеному нижче прикладі ви побачите, що налаштування для базової віртуальної машини покоління 2 не мають параметрів COM-порту.
Причина полягає в тому, що незалежно від того, чи доступні послідовні порти, чи ні, Диспетчер Hyper-V Gen-2 ніколи не відображає COM-порти.
Нижче ми зазирнемо всередину того, що може сказати PowerShell:
Зверніть увагу, як PowerShell показує два доступні COM-порти? Однак, якщо ви відкриєте Диспетчер пристроїв гостьової машини, для ВМ не буде показано жодних COM-портів.
Перегляньте приклад нижче (із використанням COM1), щоб налаштувати шлях каналу для COM-портів, поки віртуальна машина працює:
Як згадувалося раніше, під час перевірки «Диспетчера пристроїв» гостьової машини COM1 не відображається — але щойно віртуальну машину буде вимкнено та перезапущено, потрібний COM-порт стане доступним у списку (див. нижче).
Для тих, хто має досвід із налагодженням ядра, решта процесу досить проста й зрозуміла — з лише одним незначним винятком, специфічним для віртуальних машин Gen-2 (ще більш конкретно — комп’ютерів на основі UEFI, що використовують Secure Boot.)
Через msconfig ми ввімкнули налагодження ядра для VM на COM1. Однак після того, як ми натиснули OK, з’являється таке повідомлення про помилку:
Чому? Тому що політика Windows стверджує, що Secure Boot і налагодження ядра несумісні. Це означає, що користувачам слід вимкнути віртуальну машину, а потім вимкнути Secure Boot у налаштуваннях мікропрограми.
- Знову скористайтеся msconfig, щоб увімкнути налагодження ядра (цього разу буде успішно);
- Перезапустіть віртуальну машину;
- Підключіться до каналу через windbg батьківського розділу;
Висновок
Підсумовуючи, хоча Hyper-V не забезпечує прямої передачі фізичного COM-порту у віртуальні машини, послідовний зв’язок усе ж можна організувати за допомогою іменованих каналів, налаштування PowerShell і спеціалізованих інструментів перенаправлення. Ці методи дають змогу працювати як із VM Gen 1, так і Gen 2 для таких завдань, як підтримка застарілого програмного забезпечення, інтеграція з апаратним забезпеченням або налагодження.
У сценаріях, коли прямий доступ до послідовного порту є непрактичним, ефективною альтернативою може бути Serial to Ethernet Connector. Перетворюючи послідовні дані на мережевий трафік, такі пристрої дають змогу отримувати доступ до обладнання на базі COM через TCP/IP і легко надавати його у спільне користування віртуальним машинам. У поєднанні з програмним забезпеченням для перенаправлення послідовних портів цей підхід забезпечує більшу гнучкість і спрощує доступ до фізичних послідовних пристроїв у віртуалізованих середовищах Hyper-V.