При развёртывании виртуальной машины Hyper-V с Linux необходимо установить в гостевой ОС Linux службы интеграции со средой виртуализации. Hyper-V LIS (Linux Integration Services) позволяют гостевой ОС взаимодействовать с гипервизором – передавать свое состояние, также нужны для корректной работы резервного копирования через VSS. В этой статье мы рассмотрим, как установить Hyper-V Linux Integration Services в популярных дистрибутивах CentOS, Debian и Ubuntu.
Установка Hyper-V Linux Integration Services в Ubuntu
Перед установкой Hyper-V Linux Integration Services в виртуальную машину с Ubuntu, нужно добавить модули hv_modules в initramfs-tools:
# echo 'hv_vmbus' >> /etc/initramfs-tools/modules
# echo 'hv_storvsc' >> /etc/initramfs-tools/modules
# echo 'hv_blkvsc' >> /etc/initramfs-tools/modules
# echo 'hv_netvsc' >> /etc/initramfs-tools/modules
После этого обновите текущие пакеты:
# apt update && apt -y upgrade
Теперь нужно установить компоненты интеграции с Hyper-V:
# apt -y install linux-virtual linux-cloud-tools-virtual linux-tools-virtual
# update-initramfs -u
# reboot
Проверьте, что компоненты интеграции LIS установлены:
# lsmod | grep hv
Команда выведет список подключенных модулей.
В дистрибутивах Ubuntu 16.04, 18.04, 20.04, 22.04 LTS можно установить драйверы интеграции Hyper-V, которые Microsoft использует для ВМ в Azure:
# apt update
# apt install linux-azure
Проверьте версию модулей ядра Linux Integration Services с помощью команды:
# /sbin/modinfo hv_vmbus
filename: /lib/modules/2.6.32-71.el6.x86_64/extra/microsoft-hyper-v/hv_vmbus.ko version: 4.3.5
Если у вас в Ubuntu установлена более старая версия LIS, вы можете обновить ее с помощью команд:
# wget https://download.microsoft.com/download/6/8/F/68FE11B8-FAA4-4F8D-8C7D-74DA7F2CFC8C/lis-rpms-4.3.5.x86_64.tar.gz
# tar -xzf lis-rpms-4.3.5.x86_64.tar.gz
# cd LISISO/
# ./upgrade.sh
# reboot
Проверьте версию hv_vmbus после обновления:
# /sbin/modinfo hv_vmbus
Установка компонент интеграции LIS Hyper-V в Debian
В версиях Debian 9 и более ранних, вам нужно вручную добавить модули LIS в initramfs:
# nano /etc/initramfs-tools/modules
Добавьте строки:
hv_vmbus hv_storvsc hv_blkvsc hv_netvsc
Установите компоненты интеграции и перезагрузите Debian:# apt-get install -t jessie-backports hyperv-daemons
# update-initramfs -u
# reboot
Linux Integration Services по умолчанию уже включены в дистрибутив Debian 10 (Buster) и вам нужно только установить службы интеграции Hyper-V Debian из официального репозитория Debian:
# apt-get install hyperv-daemons
# reboot
В новом Debian 11 (Bullseye) по умолчанию установлены как LIS так и hyper-v-daemons, поэтому отдельно ничего устанавливать не нужно.
Проверьте, что службы настроены на автоматический запуск:
# systemctl status hyperv-daemons.hv-*
Linux Integration Services в CentOS Linux
В CentOS начиная с версии 6.4, компоненты Linux Integration Services уже включены в базовый образ CentOS и отдельно их устанавливать не нужно. Однако есть несколько дополнительных гостевых служб Hyper-V, которые расширяют взаимодействие Hyper-V и гостевой CentOS:
- VSS daemon (используется для резервного копирования на базе снимков) — пакет hypervvssd;
- File copy daemon (позволяет использовать PowerShell для прямого копирования файлов между ВМ и хостом через шину vmbus) и служба обмена данными KVP (пакет hypervfcopyd).
Установка этих служб выполняется из базовых репозиториев CentOS:
# yum install hyperv-daemons
# yum list installed | grep hyperv
Запустите службу:
# systemctl enable hypervkvpd hypervvssd
# systemctl start hypervkvpd hypervvssd
После установки перезагрузите ВМ и проверьте, что служба Hyper-V VSS daemon работает:
# systemctl status hypervvssd
В старых версия CentOS 6 службы интеграции Hyper-V можно установить с диска Linux Integration Services (LinuxIC). ISO образ LIS 4.3 можно скачать здесь Linux Integration Services v4.3 for Hyper-V and Azure.
Или можно установить компонент интеграции Hyper-V из репозитория EPEL:
# yum install epel-release
# yum install hyperv-daemons
# reboot
Проверьте, что службы интеграции Hyper-V запущены в CentOS 6:
# service --status-all | grep hv_*
hv_fcopy_daemon is stopped hv_kvp_daemon (pid 1121) is running... hv_vss_daemon (pid 1329) is running...
Если попробовать выполнить резервное копирование Linux ВМ с CentOS любым средством с поддержкой VSS, в логе должны быть строки от службы hv_vss_daemon:
# tail -f /var/log/messages | grep Hyper-V
Если VSS не работает, проверьте что запущена служба hypervvssd:
# systemctl status hypervvssd
Управление Linux Integration Services в Hyper-V
После установки компонентов интеграции Hyper-V в виртуальную машину Linux вы можете получить информацию о гостевых ОС с хоста Hyper-V. Чтобы вывести версии компонентов LIS в Linux, выполните команду PowerShell:
Get-VM | Format-Table Name, IntegrationServicesVersion
Можно получить состояние компонентов интеграции Hyper-V на конкретной ВМ:
Get-VMIntegrationService -VMName LinuxVM1
- Guest Service Interface
- Heartbeat
- Key-Value Pair Exchange
- Shutdown
- Time Synchronization
- VSS
В данном примере Key-Value Pair Exchange показывает No Contact. Это может значит, что компонент отключен в гостевой Linux или отключен в настройках ВМ.
Вы можете включить/отключить компонент интеграции для ВМ с помощью команд:
Enable-VMIntegrationService -VMName LinuxVM1 -Name “Key-Value Pair Exchange”
Disable-VMIntegrationService -VMName LinuxVM1 -Name “Key-Value Pair Exchange”
Или вы можете включить компонент в консоли Hyper-V в настройках ВМ на вкладке Integration Services.
Copy-VMFile -Name LinuxVM1 -SourcePath 'C:\pc\ifcfg-eth0' -DestinationPath '/etc/sysconfig/network-scripts/' -FileSource Host -Force
Включить Hyper-V Enhanced Session Mode для виртуальной машины Ubuntu
Вы можете использовать Enhanced session mode для подключения к виртуальной машине Linux на хосте Hyper-V по RDP. В этом режиме вы можете использовать в консоли подключения Hyper-V в Linux все те фичи, которые доступны для виртуальных машин Windows (буфер обмена, перенаправление устройств, поддержка большого разрешения экрана, подключение к изолированной ВМ через шину vmbus и т.д.).
В этом примере мы настроим Enhanced session mode для включая Ubuntu 22.04 LTS:
- Проверьте, что для ВМ выбрано второе поколение виртуальных машин Hyper-V (Generation 2) и в настройках виртуального оборудования включена поддержка Secure Boot для Linux. Для корректной работы Secure Boot нужно изменить шаблон в настройках ВМ с изменить “Microsoft Windows” to “Microsoft UEFI Certificate Authority”. Иначе при загрузке появится ошибка:
The image's hash and certificate are not allowed (DB).
- Установите Hyper-V LIS (Linux Integration Services) в гостевой Ubuntu как описано выше;
- Установите XRDP+XORGXRDP:
$ wget https://raw.githubusercontent.com/Microsoft/linux-vm-tools/master/ubuntu/18.04/install.sh$ sudo chmod +x install.sh
$ sudo ./install.sh - Измените порт подключения в xrdp.ini:
# nano /etc/xrdp/xrdp.ini
port=3389
- Выключите ВМ Ubuntu и включите поддержку режима Enhanced session mode на хосте Hyper-V с помощью команд PowerShell:
Set-VMHost -EnableEnhancedSessionMode $true
Set-VM -VMName yourUbuntuVM -EnhancedSessionTransportType HvSocket - Теперь при подключении к консоли вашей ВМ через Hyper-V Manager будет всегда использоваться расширенный режим.
1 comment
Да нифига. Установилось всё, всё активно, но нет никакого расширенного режима, как и не было.
Честно говоря надоел уже этот линукс с нулевыми возможностями по дизайну, никакой возможности нормально управлять разрешением экрана при виртуализации, как мак, только бесплатный и UI полностью бесполезный.
Для каких-то правдорубов и кому делать нечего.