Омогућавање побољшаног режима сесије за Arch Linux-гости у Hyper-V-у

Омогућавање побољшаног режима сесије за Arch Linux-гости у Hyper-V-у

Коришћење виртуелних машина на Linux У Hyper-V режиму одмах по инсталацији је нешто мање удобно искуство него са гостом. Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Сам Хипер-В обезбеђује неколико сервиса за интеграцију - тако, гости могу да користе хостов сервис сенке копирања (ВСС), гости могу да пошаљу сигнал за искључење, гости могу да синхронизују системско време са хостом виртуелизације, фајлови могу да се размењују са хоста са виртуелном машином (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Доступан је побољшани режим сесије, који ради преко РДП протокола и омогућава вам да пренесете диск уређаје и штампаче на виртуелну машину, као и да користите дељени међуспремник.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер КСРДП већ унапред инсталиран, онда је са другим дистрибуцијама све мање јасно - на пример, аутор овај пост получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.

Инсталирање услуга интеграције

Овде је све мање-више једноставно, само треба да инсталирамо пакет hyperv из складишта заједнице:

% sudo pacman -S hyperv

Омогућимо ВСС и сервисе размене метаподаци и датотеке:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Инсталирање КСРДП

репозиторијум линук-вм-тоолс на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим Git, если он еще не установлен, вместе с компилятором и другим софтом для ручных сборок, после чего склонируем репозиторий:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

У време писања овог чланка, најновије издање КСРДП-а, које је инсталирано помоћу скрипте makepkg.shонај који је предложен у спремишту је 0.9.11, у којој је рашчлањивање прекинуто vsock://-адресе, тако да ћете морати ручно да инсталирате КСРДП из Гита и Ксорг драјвер за њега из АУР-а. КСРДП закрпа која се нуди у АУР-у је такође мало застарела, тако да ћете морати ручно да уредите ПКГБУИЛД и закрпу.

Хајде да клонимо ризнице са ПКГБУИЛД-овима из АУР-а (обично ову процедуру, заједно са изградњом, аутоматизују програми попут То, бре, али је аутор урадио целу ову процедуру на чистом систему):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Хајде да прво инсталирамо сам КСРДП. Хајде да отворимо датотеку PKGBUILD било који уређивач текста.

Хајде да уредимо параметре изградње. ПКГБУИЛД за прављење КСРДП-а из Гита не укључује всоцк подршку приликом изградње, па хајде да га сами омогућимо:

 build() {
   cd $pkgname
   ./configure --prefix=/usr 
               --sysconfdir=/etc 
               --localstatedir=/var 
               --sbindir=/usr/bin 
               --with-systemdsystemdunitdir=/usr/lib/systemd/system 
               --enable-jpeg 
               --enable-tjpeg 
               --enable-fuse 
               --enable-opus 
               --enable-rfxcodec 
               --enable-mp3lame 
-              --enable-pixman
+              --enable-pixman 
+              --enable-vsock
   make V=0
 }

У закрпи arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, који у време писања је уклоњен из КСРДП дистрибуције, тако да ће закрпа морати да се уреди ручно:

  [Install]
  WantedBy=multi-user.target
-diff -up src/xrdp-devel-git/instfiles/xrdp.sh.orig src/xrdp-devel-git/instfiles/xrdp.sh
---- src/xrdp-devel-git/instfiles/xrdp.sh.orig  2017-08-30 00:27:28.000000000 -0600
-+++ src/xrdp-devel-git/instfiles/xrdp.sh   2017-08-30 00:28:00.000000000 -0600
-@@ -17,7 +17,7 @@
- # Description: starts xrdp
- ### END INIT INFO
- 
--SBINDIR=/usr/local/sbin
-+SBINDIR=/usr/bin
- LOG=/dev/null
- CFGDIR=/etc/xrdp
- 
 diff -up src/xrdp-devel-git/sesman/startwm.sh.orig src/xrdp-devel-git/sesman/startwm.sh
 --- src/xrdp-devel-git/sesman/startwm.sh.orig  2017-08-30 00:27:30.000000000 -0600

Хајде да компајлирамо и инсталирамо пакет са командом % makepkg --skipchecksums -si (кључ --skipchecksums потребно да се онемогући провера контролне суме изворних датотека, пошто смо их ручно уређивали).

Идемо у именик xorgxrdp-devel-git, након чега једноставно састављамо пакет командом % makepkg -si.

Идемо у именик linux-vm-tools/arch и покрените скрипту install-config.sh, који поставља КСРДП, ПолициКит и ПАМ подешавања:

% sudo ./install-config.sh

Скрипта инсталира застарело подешавање use_vsock, који је игнорисан од верзије 0.9.11, па хајде да уредимо конфигурациону датотеку /etc/xrdp/xrdp.ini ручно:

 ;   port=vsock://<cid>:<port>
-port=3389
+port=vsock://-1:3389

 ; 'port' above should be connected to with vsock instead of tcp
 ; use this only with number alone in port above
 ; prefer use vsock://<cid>:<port> above
-use_vsock=true
+;use_vsock=true

 ; regulate if the listening socket use socket option tcp_nodelay

Додај у датотеку ~/.xinitrc покретање вашег жељеног менаџера прозора/десктоп окружења, које ће бити извршено када се Кс сервер покрене:

% echo "exec i3" > ~/.xinitrc

Хајде да искључимо виртуелну машину. Активирамо всоцк транспорт за виртуелну машину покретањем следеће команде у ПоверСхелл-у као администратор:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Хајде да поново укључимо виртуелну машину.

Подклучение

Чим се КСРДП сервис покрене након покретања система, апликација вмцоннецт ће то открити и ставка ће постати доступна у менију Поглед -> Енханцед Сессион. Када изаберете ову ставку, од нас ће бити затражено да подесимо резолуцију екрана и на картици Локални ресурси У дијалогу који се отвори, можете изабрати уређаје који ће бити прослеђени у РДП сесију.

Омогућавање побољшаног режима сесије за Arch Linux-гости у Hyper-V-у
Омогућавање побољшаног режима сесије за Arch Linux-гости у Hyper-V-у

Хајде да се повежемо. Видећемо прозор за пријаву на КСРДП:

Омогућавање побољшаног режима сесије за Arch Linux-гости у Hyper-V-у

Унесите своје корисничко име и лозинку.

Коришћење

Корист од ових манипулација је приметна: РДП сесија ради много брже него када радите са виртуелним екраном без Енханцед Сессион. Дискови убачени у ВМ преко РДП-а доступни су у директоријуму ${HOME}/shared-drives:

Омогућавање побољшаног режима сесије за Arch Linux-гости у Hyper-V-у

Клипборд ради добро. Не можете да прослеђујете штампаче унутра; прекида прослеђивање диска. Звук такође не ради, али аутору ово није требало. Да бисте снимили пречице на тастатури као што су Алт+Таб, морате да проширите вмцоннецт на цео екран.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port на tcp://:3389. Ако је виртуелна машина повезана са подразумеваним прекидачем и прима мрежна подешавања преко ДХЦП-а, онда се на њу можете повезати са хоста на адреси название_машины.mshome.net. Можете се пријавити на ТТИ само из апликације вмцоннецт тако што ћете искључити побољшани режим.

Коришћени извори:

  1. Хипер-В - Арцх Вики
  2. Извештаји о грешкама на ГитХуб-у: 1, 2

Извор: ввв.хабр.цом

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster