Schakel verbeterde sessiemodus in voor Arch Linux-gasten in Hyper-V

Schakel verbeterde sessiemodus in voor Arch Linux-gasten in Hyper-V

Het out-of-the-box gebruiken van virtuele Linux-machines in Hyper-V is iets minder comfortabel dan met gast-Windows-machines. De reden hiervoor is dat Hyper-V oorspronkelijk niet bedoeld was voor desktopgebruik; je kunt niet zomaar doorgaan en het gasttoevoegingspakket installeren en werkbare grafische versnelling, klembord, gedeelde mappen en andere geneugten van het leven krijgen, zoals het gebeurt in VirtualBox.

Hyper-V biedt zelf meerdere integratiediensten - gasten kunnen dus gebruik maken van de schaduwkopieservice (VSS) van de host, gasten kunnen een uitschakelsignaal sturen, gasten kunnen de systeemtijd synchroniseren met de virtualisatiehost, bestanden kunnen worden uitgewisseld met de virtuele machine van de host (Copy-VMFile in PowerShell). Voor sommige gastbesturingssystemen, waaronder natuurlijk Windows, in de Virtual Machine Connection-toepassing (vmconnect.exe) Er is een verbeterde sessiemodus beschikbaar, die werkt via het RDP-protocol en waarmee u schijfapparaten en printers kunt doorsturen naar de virtuele machine en het gedeelde klembord kunt gebruiken.

Verbeterde sessiemodus werkt direct na installatie op Windows in Hyper-V. Met gasten op Linux moet u een RDP-server installeren die vsock ondersteunt (een speciale virtuele netwerkadresruimte in Linux die is ontworpen om te communiceren met de hypervisor). Als voor Ubuntu de VMCreate-toepassing die wordt geleverd met Hyper-V op desktopedities van Windows een speciaal voorbereid sjabloon voor virtuele machines heeft waarin een RDP-server draait met vsock xrdp al voorgeïnstalleerd, dan is het bij andere distributies steeds minder duidelijk - bijvoorbeeld de auteur deze post het bleek ESM in Fedora in te schakelen. Hier schakelen we ook de verbeterde sessiemodus in voor de Arch Linux virtuele machine.

Integratieservices installeren

Alles is hier min of meer eenvoudig, we hoeven alleen het pakket te installeren hyperv uit gemeenschapsrepository:

% sudo pacman -S hyperv

VSS-services inschakelen, uitwisselen metagegevens en bestanden:

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

XRDP-installatie

opslagplaats linux-vm-tools op GitHub biedt scripts die het proces van het installeren en configureren van XRDP voor Arch Linux en Ubuntu automatiseren. Installeer Git, als het nog niet is geïnstalleerd, samen met de compiler en andere software voor handmatige builds, en kloon vervolgens de repository:

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

Op het moment van schrijven is dit de meest recente versie van XRDP, die door het script wordt geïnstalleerd makepkg.shvoorgesteld in de repository is 0.9.11, waarin parsing is verbroken vsock://-adressen, dus je moet XRDP handmatig installeren vanuit Git en de Xorg-driver ervoor vanuit AUR. De patch voor XRDP die wordt aangeboden in de AUR is ook enigszins verouderd, dus u zult de PKGBUILD en de patch handmatig moeten bewerken.

We klonen de repositories met PKGBUILD's van de AUR (meestal wordt deze procedure, samen met de montage, geautomatiseerd door programma's zoals yay, maar de auteur heeft deze hele procedure op een schoon systeem uitgevoerd):

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

Laten we eerst XRDP zelf installeren. Laten we het bestand openen PKGBUILD elke tekstverwerker.

Laten we de buildparameters bewerken. De PKGBUILD voor het bouwen van XRDP vanuit Git bevat geen vsock-ondersteuning in de build, dus laten we het zelf inschakelen:

 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
 }

Op een pleister arch-config.diff, dat eenheden en XRDP-opstartscripts bewerkt onder de paden naar bestanden die in Arch Linux worden gebruikt, bevat onder andere een patch voor het script instfiles/xrdp.sh, die op het moment van schrijven was verwijderd van de XRDP-distributie, dus de patch moet handmatig worden bewerkt:

  [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

Bouw en installeer het pakket met de opdracht % makepkg --skipchecksums -si (sleutel --skipchecksums is nodig om controlesomverificatie van bronbestanden uit te schakelen, omdat we ze handmatig hebben bewerkt).

Laten we naar de directory gaan xorgxrdp-devel-git, waarna we het pakket eenvoudig bouwen met het commando % makepkg -si.

Laten we naar de directory gaan linux-vm-tools/arch en voer het script uit install-config.sh, waarmee XRDP-, PolicyKit- en PAM-instellingen worden ingesteld:

% sudo ./install-config.sh

Script installeert verouderde instelling use_vsock, die wordt genegeerd sinds versie 0.9.11, dus laten we het configuratiebestand bewerken /etc/xrdp/xrdp.ini handmatig:

 ;   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

Toevoegen aan bestand ~/.xinitrc het starten van uw favoriete windowmanager/desktopomgeving, die wordt uitgevoerd wanneer de X-server wordt gestart:

% echo "exec i3" > ~/.xinitrc

Laten we de virtuele machine uitschakelen. Schakel het vsock-transport voor de virtuele machine in door de volgende opdracht uit te voeren in PowerShell als beheerder:

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

Laten we de virtuele machine weer inschakelen.

Подключение

Zodra de XRDP-service start nadat het systeem is gestart, zal de vmconnect-applicatie dit bepalen en komt het menu-item beschikbaar. Bekijk -> Uitgebreide sessie. Wanneer u dit item selecteert, wordt ons gevraagd om de schermresolutie in te stellen en op het tabblad Lokale bronnen in het dialoogvenster dat wordt geopend, kunt u de apparaten selecteren die binnen de RDP-sessie worden doorgestuurd.

Schakel verbeterde sessiemodus in voor Arch Linux-gasten in Hyper-V
Schakel verbeterde sessiemodus in voor Arch Linux-gasten in Hyper-V

Laten we verbinding maken. We zullen het XRDP-inlogvenster zien:

Schakel verbeterde sessiemodus in voor Arch Linux-gasten in Hyper-V

Voer uw gebruikersnaam en wachtwoord in.

Gebruiken

De winst van deze manipulaties is merkbaar: de RDP-sessie werkt veel responsiever dan bij het werken met een virtueel beeldscherm zonder Enhanced Session. De schijven die via RDP binnen de VM worden doorgestuurd, zijn beschikbaar in de directory ${HOME}/shared-drives:

Schakel verbeterde sessiemodus in voor Arch Linux-gasten in Hyper-V

Het klembord werkt prima. Je kunt geen printers naar binnen gooien, dit wordt niet alleen niet ondersteund, maar ook verbreekt het doorsturen van schijven. Het geluid werkt ook niet, maar de auteur had het niet nodig. Om sneltoetsen zoals Alt + Tab vast te leggen, moet u vmconnect uitbreiden naar volledig scherm.

Als er om wat voor reden dan ook een wens is om de RDP-client die in Windows is ingebouwd te gebruiken in plaats van de vmconnect-applicatie of om bijvoorbeeld verbinding te maken met deze machine vanaf een andere machine, dan moet u het bestand wijzigen /etc/xrdp/xrdp.ini port op tcp://:3389. Als de virtuele machine is verbonden met de standaardswitch en netwerkinstellingen ontvangt via DHCP, dan kunt u er verbinding mee maken vanaf de host op название_машины.mshome.net. U kunt alleen inloggen op TTY vanuit de vmconnect-toepassing door de Verbeterde modus uit te schakelen.

Gebruikte bronnen:

  1. Hyper-V Arch-wiki
  2. Bugrapporten op GitHub: 1, 2

Bron: www.habr.com

Voeg een reactie