- Как передавать файлы используя буфер обмена в Hyper V
- Передача файлов в Hyper V через публичную папку
- Копирование файлов в Hyper V через виртуальный диск
- Копирование в Hyper V используя буфер обмена с RDP
- Включаем Enhanced Session Mode для Arch Linux-гостей в Hyper-V
- Установка сервисов интеграции
- Установка XRDP
- Подключение
- Использование
- Расширенный сеанс Hyper-V
Как передавать файлы используя буфер обмена в Hyper V
25 сентября 2019
Для передачи файлов через буфер обмена в Hyper V виртуальную машину есть несколько способов. Каждый из них отличается от версии операционной системы и условий в которых вы его хотите использовать, но любой из них позволяет копировать файлы в виртуальную машину с хоста и обратно.
Первый вариант работает с версий ВМ Windows Server 2012 R2 и Windows 8.1 и называется Enhanced Session Mode (ESM). Эта возможность работает по тому же принципу, что и RDP, то есть мы можем использовать не только буфер обмена, но и USB устройства, принтеры и так далее. Отличия от RDP в том, что мы не используем сеть в данном случае, но если у вас настроены политики ограничивающие RDP подключения они могут быть причиной ошибок.
По умолчанию Enhanced Session Mode включен. Мы можем проверить ее если зайдем в настройки Hyper V:
Или выполнить аналогичное через Powershell:
Настройка расширенного сеанса Hyper V (ESM) устанавливается только на уровне сервера, но что бы у нас работала возможность копирования нужно включить и пакет интеграции Hyper V, который по умолчанию отключен. Эта служба интеграции называется Guest services (Гостевая служба), и она включается у каждой виртуально машины отдельно. Для ее включения зайдем в настройки виртуально машины:
И включить гостевую службу:
Аналогичную настройку через Powershell можно сделать так:
Последнее что нужно сделать — это включить службу «Remote Desktop Services»:
Можно установить и в консоли PS:
Теперь включим виртуальную машину и подключимся к ней:
О том что у нас включен режим расширенного сеанса можно увидеть по следующему окну. Если мы хотим проверить, что возможность использования буфера у нас включена нужно зайти в дополнительные настройки:
На второй закладке стоит галочка под Clipboard (Буфер обмена) — это то что нам нужно:
После этого у нас будет работать в Hyper V буфер обмена путем копирования/вставки, а перетаскивание файлов в виртуальную машину работать не будет, так как такого функционала нет.
Мы так же можем использовать Powershell:
Microsoft описывает проблему, при которой копирование так же не будет работать и оно связано с политиками. По следующему пути нужно изменить политику с «Do not allow drive redirection» на «Disabled» или «Not Configured»:
Такого пути в групповых политиках я у себя не нашел.
Передача файлов в Hyper V через публичную папку
Второй вариант это создать в Hyper V виртуальную сеть через внутренний коммутатор. Внутренний или Internal коммутатор не использует физический сетевой адаптер и разрешает пользоваться таким типом соединения хосту Hyper V и виртуальным машинам. Таким образом затрачиваемые ресурсы, при копировании в Hyper V большого объема данных, не будут сильно отличаться от первого способа.
Для создания внутреннего коммутатора нужно зайти в окно управления свичами:
В новом окне выбрать «Internal» или «Частный»:
Ввести имя коммутатора и подтвердить создание:
Это делается в Powershell одной командой:
После этого для каждой виртуальной машины, с которой мы хотим обмениваться данными, нужно подключить адаптер к этому коммутатору. Для этого зайдем в настройки виртуальной машины:
Теперь создадим виртуальный сетевой адаптер:
Теперь подключим адаптер к коммутатору:
В случае с Powershell это так же одна команда:
В виртуальных машинах отобразится новое подключение и возможно потребуется настроить IP адрес, так как скорее всего у нас не будет доступ к DHCP серверу. Далее можно подключаться к машинам по сетевому пути.
Копирование файлов в Hyper V через виртуальный диск
Этот способ заключается в подключении виртуального диска отключенной ВМ. Мы можем создать новый диск или использовать системный диск операционной системы. Я крайне не рекомендую использовать этот способ, так как в случае существования чекпоинтов/снэпшотов на этой ВМ или если вы забудете размонтировать диск, это может привести к необратимым последствиям.
Вы можете создать диск воспользовавшись статьей «Создание виртуальных дисков в Hyper V». Папку, где лежит виртуальный диск можно увидеть через настройки виртуальной машины:
Если путь заканчивается на avhdx, то вы используете контрольную точку. Для монтирования диска нужно перейти по пути и выбрать Mount у vhd/vhdx файла:
В моем случае появилось два раздела, так как это системный диск. Для размонтирования дисков нужно кликнуть по разделу и нажать Eject.
Если хотите выполнить команду через Powershell, то это можно сделать так:
Командлет выше подразумевает, что у вас подключен один диск. В случае нескольких дисков запустите:
Копирование в Hyper V используя буфер обмена с RDP
Последний способ подключения работает через «Подключению к удаленному рабочему столу» или RDP. Для такой возможности копирования, кроме открытых портов и включенной возможности в свойствах компьютера дополнительных требований нет. Так же стоит проверить галочку в свойствах подключения RDP:
Вы так же можете почитать как настроить RDP в Powershell.
Источник
Включаем Enhanced Session Mode для Arch Linux-гостей в Hyper-V
Пользование виртуальными машинами на Linux в Hyper-V из коробки — несколько менее комфортное занятие, чем с гостевыми Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.
Hyper-V сам предоставляет несколько сервисов интеграции — так, гости могут пользоваться службой теневого копирования (VSS) хоста, гостям можно послать сигнал выключения, гости могут синхронизировать системное время с хостом виртуализации, с хоста возможен обмен файлами с виртуальной машиной ( Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection ( vmconnect.exe ) доступен Enhanced Session Mode, работающий по протоколу RDP и позволяющий пробрасывать в виртуальную машину дисковые устройства и принтеры, а также пользоваться общим буфером обмена.
Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP уже предустановлен, то с другими дистрибутивами все менее однозначно — так, у автора этого поста получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.
Установка сервисов интеграции
Здесь все более или менее просто, нам достаточно установить пакет hyperv из репозитория community:
Включим сервисы VSS, обмена метаданными и файлами:
Установка XRDP
Репозиторий linux-vm-tools на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим Git, если он еще не установлен, вместе с компилятором и другим софтом для ручных сборок, после чего склонируем репозиторий:
На момент написания этой статьи самым свежим выпуском XRDP, который устанавливается скриптом makepkg.sh , предложенным в репозитории, является 0.9.11, в котором сломан парсинг vsock:// -адресов, поэтому придется установить XRDP из Git и драйвер Xorg к нему из AUR вручную. Патч к XRDP, предлагаемый в AUR, также слегка устарел, поэтому придется отредактировать PKGBUILD и патч вручную.
Склонируем репозитории с PKGBUILD-ами из AUR (обычно эту процедуру вместе со сборкой автоматизируют программами вроде yay, но автор проделывал всю эту процедуру на чистой системе):
Установим сначала сам XRDP. Откроем файл PKGBUILD любым текстовым редактором.
Отредактируем параметры сборки. PKGBUILD для сборки XRDP из Git не включает поддержку vsock при сборке, поэтому включим ее самостоятельно:
В патче arch-config.diff , правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh , который на момент написания статьи был удален из поставки XRDP, поэтому патч придется отредактировать вручную (примечание от 15-03-2020: патч актуализирован, редактировать его более не требуется):
Соберем и установим пакет командой % makepkg —skipchecksums -si (ключ —skipchecksums нужен для отключения проверки контрольных сумм исходных файлов, поскольку мы редактировали их вручную).
Перейдем в директорию xorgxrdp-devel-git , после чего просто соберем пакет командой % makepkg -si .
Перейдем в директорию linux-vm-tools/arch и запустим скрипт install-config.sh , устанавливающий настройки XRDP, PolicyKit и PAM:
Скрипт устанавливает устаревшую настройку use_vsock , которая игнорируется с версии 0.9.11, поэтому отредактируем файл конфигурации /etc/xrdp/xrdp.ini вручную (примечание от 15-03-2020: скрипт обновили, редактировать конфигурацию более не нужно):
/.xinitrc запуск своего предпочитаемого оконного менеджера / среды рабочего стола, который будет выполняться при запуске X-сервера:
Выключим виртуальную машину. Активируем транспорт vsock для виртуальной машины, выполнив следующую команду в PowerShell от администратора:
Включим виртуальную машину снова.
Подключение
Как только после запуска системы запустится сервис XRDP, приложение vmconnect это определит и в меню станет доступен пункт View -> Enhanced Session. При выборе этого пункта нам предложат установить разрешение экрана, а на вкладке Local Resources открывшегося диалога можно будет выбрать устройства, пробрасываемые внутрь RDP-сессии.
Подключимся. Увидим окно входа XRDP:
Введем свои имя пользователя и пароль.
Использование
Профит от этих манипуляций заметен: сессия RDP работает намного отзывчивее, чем при работе с виртуальным дисплеем без Enhanced Session. Проброшенные внутрь VM через RDP диски доступны в директории $
Буфер обмена работает нормально. Пробрасывать принтеры внутрь нельзя, это не только не поддерживается, но и ломает проброс дисков. Также не работает звук, но автору это и не требовалось. Для того, чтобы захватывались сочетания клавиш вроде Alt+Tab, нужно разворачивать vmconnect на весь экран.
Источник
Расширенный сеанс Hyper-V
Расширенный сеанс Hyper-V или как его еще называют английские товарищи Enhanced Session Mode. В большинстве случаев для управления виртуальными машинами мы используем средства удаленного доступа. В Windows — это RDP, Powershell, MMC и т.д., в Linux — SSH. Бывают ситуации в которых нельзя, или крайне нежелательно открывать удаленный доступ к виртуальной машине. Например сервера доступные из интернета. Виртуальные машины с другой подсетью, либо защищенные.
Причины могут быть разные. Решение почти всегда одно — подключиться с помощью Диспетчера Hyper-V. Используя прямое подключение к виртуальной машине можно, например, выключить её «жестко» по питанию. Зайти без настройки каких-либо средств удаленного администрирования на самой виртуальной машине.
Используя расширенный сеанс Hyper-V Enhanced Session Mode у нас появляется возможность взаимодействовать с виртуальной машиной по RDP. Т.е. нет необходимости настраивать консоль управления виртуальными машинами. Перечислим основные преимущества ESM.
- поддержка большого разрешения экрана
- общий буфер обмена
- общий доступ к файлам и папкам с возможностью использования перетаскивания (Drag&Drop)
- доступ к локальным USB-устройствам (мультимедиа, внешние диски, флешки, принтеры и т.п.)
- использование смарт-карт и прочих plug-and-play устройств
Вообще говоря, использовать RDP протокол для подключения к виртуальной машине отличная идея. Трансляция рабочего стола значительно быстрее, чем при подключении из Hyper-V Manager. Понять что расширенный сеанс Hyper-V включен можно взглянув на значок с изображением мониторов.
Нажав на данную кнопочку можно изменить режим подключения к виртуальной машине с базового на расширенный. Если ESM не активен на сервере, давайте его включим.
Включение Enhanced Session Mode
Включить использование ESM на сервере Hyper-V можно через Powershell либо Диспетчер Hyper-V. Рассмотрим оба варианта.
Включение Enhanced Session Mode из Powershell
Данный командлет необходимо выполнить на сервере Hyper-V. После его выполнения расширенный режим Hyper-V будет включен по умолчанию.
Включение Enhanced Session Mode из Диспетчера Hyper-V
В запущенном Диспетчер Hyper-V выбираем необходимый сервер, затем Параметры Hyper-V. Находим Политика режима расширенного сеанса. Ставим галочку Разрешить режим расширенного сеанса.
Расширенный сеанс Hyper-V работает не на всех клиентах. Минимально необходимые требования Microsoft указывает такие:
- Windows Server 2012 R2 и выше
- Windows 8.1 и выше
- Remote Desktop Services включен и запущен
- Виртуальная машина второй генерации (generation 2)
Также есть возможность использовать расширенный сеанс Hyper-V на некоторых дистрибутивах Linux. Далее в статье мы рассмотрим процесс настройки ESM на ОС Ubuntu. Для работы расширенного режима при соблюдении указанных мер рекомендую установить все обновления. Только после этого можно надеяться на стабильную работу.
Подключение к виртуальной машине
Рассмотрим два варианта подключения к виртуальной машине не Hyper-V сервере. Первый вариант с использованием Диспетчер Hyper-V, второй вариант при помощи RDP.
Подключение к ВМ из Диспетчера Hyper-V
Запустим оснастку Диспетчер Hyper-V и подключимся к нужной виртуальной машине. При подключении откроется окошко с настройками разрешения экрана.
Данное окно будет открывать каждый раз при подключении если не нажать галочку Сохранить параметры для подключения к этой вирт. машине. Перейдя во вкладку Локальные ресурсы можно выбрать какие локальные устройства подключать к данной виртуальной машине.
В параметрах звука можно выбрать что именно пробрасывать на ВМ (микрофон, колонки)
В локальных устройствах и ресурсах можно выбрать проброс дисков с локальной машины, и прочих Plug&Play устройств.
Единожды выбрав настройки проброса устройств можно сохранить их и далее при открытии окна ВМ они будут подключаться автоматически. Файл с сохраненными настройками будет находиться по пути:
Для каждой ВМ настройки сохраняются в файле формата: vmconnect.rdp.
Подключение к ВМ по RDP
Настройка первоначального подключения к виртуальной машине по RDP чуть сложнее чем из диспетчера Hyper-V. Создадим файл RDP подключения и назовем его wm.rdp и добавим следующие строки
- full address:s: — имя Hyper-V сервера. У меня это whs19
- pcb:s: — идентификатор виртуальной машины. В моем случае: 94471c5d-4d66-416a-a9b2-b80e3a2bfd21
- server port:i: — порт используемый для подключения 2179 должен быть открыт в брендмауере. Его не меняем.
Указываете свои данные и сохраняете файл.
Узнать идентификатор ВМ можно так
Готово. Можно использовать данный файл для подключения по RDP из любого места где есть доступ к серверу.
Расширенный сеанс Hyper-V на Linux
Официально Microsoft не заявляет о поддержке расширенного сеанса на Linux. Но есть пакеты настройки позволяющие включить данный режим на некоторых ОС. Настройку буду делать на Ubuntu 20.04, работать должно и на более ранних версиях. Обязательное требование: виртуальная машина должна быть второй генерации (generation 2).
Устанавливаем виртуальную машину, в настройках ставим generation 2
После создания виртуальной машины с Ubuntu заходим Параметры -> Безопасность и снимаем галочку Включить безопасную загрузку
При установке операционной системы необходимо выбрать Require my password to Log in. Если выбрать вход без пароля расширенный режим Hyper-V работать не будет.
После окончания установки поставьте все последние обновления на операционную систему. Приступим к установке необходимого софта. Запустим терминал и скачаем файл установки в домашнюю директорию пользователя.
Установим права на запуск для скачанного скрипта
Запустим скрипт install.sh
Повторно запустим скрипт install.sh
Если по окончанию работы скрипта у вас вылезла ошибка также как у меня
Необходимо вручную изменить настройки в файле /etc/xrdp/xrdp.ini
Меняем настройки на указанные ниже
Сохраняем и выключаем виртуальную машину. Если указанной выше ошибки нет, все равно рекомендую проверить указанные параметры.
Заходим на сервер Hyper-V и выполняем командлет
где ubuntu — название виртуальной машины на Hyper-V сервере
Включаем виртуальную машину. После подключения к ней появится окошко выбора разрешения. Верный знак что расширенный режим включен.
Раскрыв меню Показать параметры можно выбрать что подключить при входе (диск, флеш, буфер и т.п.).
При полной загрузке машины появится окно входа в систему от xrdp. Вводим свой логин и пароль. Если все настроено верно, откроется рабочий стол.
Пример настройки можно посмотреть на видео
С использованием расширенного режима Hyper-V работать с Linux намного удобнее. Полноценный буфер обмена, подключение жестких дисков, флеш и прочих устройств.
Источник