Aktivering af forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Aktivering af forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Brug af virtuelle maskiner på Linux i Hyper-V er out-of-the-box en lidt mindre behagelig oplevelse end med gæstebrugere Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Hyper-V selv giver flere integrationstjenester - så gæster kan bruge værtens skyggekopitjeneste (VSS), gæster kan sende et nedlukningssignal, gæster kan synkronisere systemtiden med virtualiseringsværten, filer kan udveksles med den virtuelle maskine fra værten (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Enhanced Session Mode er tilgængelig, som fungerer via RDP-protokollen og giver dig mulighed for at videresende diskenheder og printere til den virtuelle maskine, samt bruge det delte udklipsholder.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP allerede forudinstalleret, så med andre distributioner er det mindre og mindre klart - for eksempel forfatteren dette indlæg получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.

Installation af integrationstjenester

Alt er mere eller mindre enkelt her, vi skal bare installere pakken hyperv fra community repository:

% sudo pacman -S hyperv

Aktiver VSS-tjenester, udveksling metadata og filer:

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

XRDP installation

depot linux-vm-værktøjer на 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

På tidspunktet for dette skrivende, den seneste udgivelse af XRDP, som er installeret af scriptet makepkg.shforeslået i depotet er 0.9.11, hvor parsing er brudt vsock://-adresser, så du skal installere XRDP fra Git og Xorg-driveren til det fra AUR manuelt. Patchen til XRDP, der tilbydes i AUR, er også lidt forældet, så du bliver nødt til at redigere PKGBUILD og patchen manuelt.

Vi kloner lagrene med PKGBUILD'er fra AUR'en (normalt er denne procedure sammen med samlingen automatiseret af programmer som f.eks. yay, men forfatteren udførte hele denne procedure på et rent system):

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

Lad os installere XRDP selv først. Lad os åbne filen PKGBUILD enhver teksteditor.

Lad os redigere byggeparametrene. PKGBUILD til at bygge XRDP fra Git inkluderer ikke vsock-understøttelse i build, så lad os aktivere det selv:

 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
 }

I et plaster arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, som i skrivende stund blev fjernet fra XRDP-distributionen, så patchen skal redigeres manuelt:

  [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

Byg og installer pakken med kommandoen % makepkg --skipchecksums -si (nøgle --skipchecksums er nødvendig for at deaktivere kontrolsumverifikation af kildefiler, da vi har redigeret dem manuelt).

Lad os gå til biblioteket xorgxrdp-devel-git, hvorefter vi blot bygger pakken med kommandoen % makepkg -si.

Lad os gå til biblioteket linux-vm-tools/arch og kør scriptet install-config.sh, som indstiller XRDP, PolicyKit og PAM-indstillinger:

% sudo ./install-config.sh

Script installerer ældre indstillinger use_vsock, som er ignoreret siden version 0.9.11, så lad os redigere konfigurationsfilen /etc/xrdp/xrdp.ini manuelt:

 ;   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

Tilføj til fil ~/.xinitrc lancering af dit foretrukne vindueshåndterings-/skrivebordsmiljø, som vil blive udført, når X-serveren startes:

% echo "exec i3" > ~/.xinitrc

Lad os slukke den virtuelle maskine. Aktiver vsock-transporten for VM'en ved at køre følgende kommando i PowerShell som administrator:

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

Lad os tænde den virtuelle maskine igen.

Подключение

Så snart XRDP-tjenesten starter, efter at systemet er startet, vil vmconnect-applikationen bestemme dette, og menupunktet bliver tilgængeligt. Se -> Forbedret session. Når du vælger dette punkt, bliver vi bedt om at indstille skærmopløsningen og på fanen Lokale ressourcer i dialogboksen, der åbnes, kan du vælge de enheder, der videresendes i RDP-sessionen.

Aktivering af forbedret sessionstilstand for Arch Linux-gæster i Hyper-V
Aktivering af forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Lad os forbinde. Vi vil se XRDP-loginvinduet:

Aktivering af forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Indtast dit brugernavn og adgangskode.

Brug

Fortjenesten fra disse manipulationer er mærkbar: RDP-sessionen fungerer meget mere responsivt, end når du arbejder med en virtuel skærm uden Enhanced Session. Diske videresendt inde i VM'en via RDP er tilgængelige i biblioteket ${HOME}/shared-drives:

Aktivering af forbedret sessionstilstand for Arch Linux-gæster i Hyper-V

Udklipsholderen fungerer fint. Du kan ikke smide printere inde, dette er ikke kun ikke understøttet, men også afbryder diskvideresendelse. Lyden virker heller ikke, men det havde forfatteren ikke brug for. For at fange tastaturgenveje som Alt + Tab, skal du udvide vmconnect til fuld skærm.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini porttcp://:3389. Hvis den virtuelle maskine er forbundet til standardswitchen og modtager netværksindstillinger via DHCP, kan du oprette forbindelse til den fra værten på название_машины.mshome.net. Du kan kun logge ind på TTY fra vmconnect-applikationen ved at slå Udvidet tilstand fra.

Brugte kilder:

  1. Hyper-V Arch Wiki
  2. Fejlrapporter på GitHub: 1, 2

Kilde: www.habr.com

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster