Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS Windows / Знакомство с Hyper-V.pdf
Скачиваний:
31
Добавлен:
22.07.2019
Размер:
4.26 Mб
Скачать

Примечание. Ядро поддерживаемой гостевой ОС Linux должно поддерживать следующее: Пример :bash

CONFIG_VSOCKET=y

CONFIG_HYPERV_VSOCKETS=y

Возможности и ограничения

Поддержка режима ядра или действий в режиме пользователя

Только поток данных

Нет блочной памяти (не подходит для резервного копирования и видео)

>

Начало работы

Требования:

компилятор C/C++ (если у вас его нет, перейдите в сообщество Visual Studio);

пакет SDK для Windows10 — устанавливается вместе с Visual Studio 2015 с обновлением 3 и более поздними версиями;

компьютер под управлением одной из операционной систем сервера виртуальных машин, указанных выше, по крайней мере с одной виртуальной машиной (необходимо для тестирования приложения).

Примечание. API-интерфейс для сокетов Hyper-V стал общедоступным в обновлении годовщины Windows 10. Приложения, использующие Хвсоккет, будут работать на любом узле Windows 10 и на гостевом компьютере, но его можно разработать только с помощью Windows SDK более поздней версии, чем сборка

14290.

Регистрация нового приложения

Чтобы использовать сокеты Hyper-V, необходимо зарегистрировать приложение в реестре узла Hyper-V.

Зарегистрировав службу в реестре, вы получите:

Управление WMI для включения, отключения и отображения списка доступных служб

Разрешение на прямую связь с виртуальными машинами

Следующая команда PowerShell регистрирует новое приложение с именем HV Socket Demo. Ее необходимо выполнять от имени администратора. Инструкции по регистрации вручную приведены ниже.

Пример :PowerShell

$friendlyName = "HV Socket Demo"

# Create a new random GUID. Add it to the services list $service = New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows

NT\CurrentVersion\Virtualization\GuestCommunicationServices" -Name ((New-Guid).Guid)

# Set a friendly name $service.SetValue("ElementName", $friendlyName)

# Copy GUID to clipboard for later use $service.PSChildName | clip.exe

Расположение и данные реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\GuestCommunicationServices\

В этом разделе реестра есть несколько кодов GUID. Это и есть службы, поставляемые с Windows.

Сведения в реестре для каждой службы:

Service GUID

o ElementName (REG_SZ) — понятное имя службы

Чтобы зарегистрировать свою службу, создайте раздел реестра, используя свой код GUID и понятное имя.

Понятное имя будет связано с новым приложением. Оно будет отображаться в счетчиках производительности и других местах, где невозможно использовать код GUID.

Запись реестра будет выглядеть следующим образом:

Пример :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

NT\CurrentVersion\Virtualization\GuestCommunicationServices\

999E53D4-3D5C-4C3E-8779-BED06EC056E1\

ElementName REG_SZ VM Session Service

YourGUID\

ElementName REG_SZ Your Service Friendly Name

Примечание. Идентификатор GUID службы для гостевой ОС Linux использует протокол VSOCK, который отправляет запросы через svm_cid и svm_port, а не через идентификатор GUID. Для компенсации этого несоответствия в Windows хорошо известный идентификатор GUID используется в качестве шаблона службы на узле, который преобразуется в порт в гостевой ОС. Для настройки идентификатора GUID службы измените первое значение "00000000" на необходимый номер порта. Пример: "00000ac9" обозначает порт 2761.

Пример : C++

// Hyper-V Socket Linux guest VSOCK template GUID

struct __declspec(uuid("00000000-facb-11e6-bd58-64006a7986d3")) VSockTemplate{};

/*

*GUID example = __uuidof(VSockTemplate);

*example.Data1 = 2761; // 0x00000AC9

*/

Совет. Чтобы создать GUID в PowerShell и скопировать его в буфер обмена, используйте следующую команду:

Пример PowerShell : (New-Guid).Guid | clip.exe