De verbeterde sessiemodus inschakelen voor Arch Linux-gasten in Hyper-V

De verbeterde sessiemodus inschakelen voor Arch Linux-gasten in Hyper-V

Het gebruik van virtuele machines op Linux De Hyper-V-ervaring is standaard iets minder comfortabel dan met een gast-ID. Windows-machines. De reden hiervoor is dat Hyper-V oorspronkelijk niet ontworpen was voor desktopgebruik; je kunt niet zomaar het Guest Additions-pakket installeren en werkende grafische versnelling, klembord, gedeelde mappen en andere extra's krijgen, zoals bij VirtualBox.

Hyper-V zelf biedt verschillende integratiediensten — zo kunnen gasten de schaduwkopieerservice (VSS) van de host gebruiken, kunnen gasten een uitschakelsignaal ontvangen, kunnen gasten de systeemtijd synchroniseren met de virtualisatiehost en kan de host bestanden uitwisselen met de virtuele machine (Copy-VMFile in PowerShell). Voor sommige gastbesturingssystemen, waaronder natuurlijk Windows, in de toepassing Virtual Machine Connection (vmconnect.exe) Er is een verbeterde sessiemodus beschikbaar. Deze werkt via het RDP-protocol en stelt u in staat schijfapparaten en printers door te sturen naar de virtuele machine, evenals een gedeeld klembord te gebruiken.

De verbeterde sessiemodus werkt direct na installatie. Windows in Hyper-V direct na installatie. Met gastsystemen op Linux Je moet een RDP-server installeren die vsock ondersteunt (een speciale virtuele netwerkadresruimte in Linux(ontworpen om met de hypervisor te communiceren). Als voor Ubuntu in de VMcreate-applicatie die standaard bij Hyper-V in de desktopversies wordt geleverd. WindowsEr is een speciaal voorbereide virtuele machinetemplate waarin een RDP-server samenwerkt met vsock. XRDP al voorgeïnstalleerd, dan is bij andere distributies alles minder duidelijk - dus voor de auteur van dit bericht We zijn erin geslaagd ESM in Fedora in te schakelen. Hier activeren we ook de Enhanced Session Mode voor de virtuele Arch-machine. Linux.

Integratieservices installeren

Hier is alles min of meer eenvoudig, we hoeven alleen het pakket te installeren hyperv uit de community repository:

% sudo pacman -S hyperv

Laten we VSS- en uitwisselingsservices inschakelen metagegevens en bestanden:

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

XRDP installeren

opslagplaats linux-vm-tools biedt scripts op GitHub die het installatie- en configuratieproces van XRDP voor Arch Linux automatiseren. Linux и UbuntuLaten we Git installeren, als het nog niet geïnstalleerd is, samen met een compiler en andere software voor handmatige builds, en vervolgens de repository klonen:

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

Op het moment dat dit artikel werd geschreven, was de nieuwste versie van XRDP, die door het script werd geïnstalleerd makepkg.sh, voorgesteld in de repository, is 0.9.11, waarin het parsen is verbroken vsock://-adressen, dus je zult XRDP handmatig moeten installeren via Git en de Xorg-driver hiervoor handmatig via AUR. De XRDP-patch in de AUR is enigszins verouderd, dus u zult de PKGBUILD en patch handmatig moeten bewerken.

Laten we repositories klonen met PKGBUILDs van de AUR (meestal wordt deze procedure, samen met de build, 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 teksteditor.

Laten we de buildparameters bewerken. De PKGBUILD voor het bouwen van XRDP vanuit Git bevat geen vsock-ondersteuning tijdens de build, dus we zullen dit 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, besturende eenheden en XRDP-opstartscripts onder de bestandspaden die in Arch worden gebruikt Linux, bevat een patch voor het script instfiles/xrdp.sh, die op het moment van schrijven werd verwijderd vanuit de XRDP-levering, dus de patch zal handmatig moeten 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

Laten we het pakket bouwen en installeren met behulp van de opdracht % makepkg --skipchecksums -si (sleutel --skipchecksums (We moesten de controle van de checksum van de bronbestanden uitschakelen, omdat we deze handmatig hebben bewerkt).

Laten we naar de directory gaan xorgxrdp-devel-git, waarna we het pakket eenvoudig compileren met de opdracht % 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

Het script stelt een verouderde setting in use_vsock, die sinds versie 0.9.11 wordt genegeerd, 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 start uw favoriete vensterbeheerder/desktopomgeving, die wordt uitgevoerd wanneer de X-server start:

% echo "exec i3" > ~/.xinitrc

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

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

Laten we de virtuele machine opnieuw inschakelen.

Подключение

Zodra de XRDP-service start nadat het systeem is opgestart, detecteert de vmconnect-applicatie dit en wordt het menu-item beschikbaar Bekijk -> Verbeterde sessie. Wanneer we dit item selecteren, wordt ons gevraagd de schermresolutie in te stellen en op het tabblad Lokale bronnen In het dialoogvenster dat wordt geopend, kunt u apparaten selecteren die u naar de RDP-sessie wilt doorsturen.

De verbeterde sessiemodus inschakelen voor Arch Linux-gasten in Hyper-V
De verbeterde sessiemodus inschakelen voor Arch Linux-gasten in Hyper-V

Laten we contact opnemen. We zien het XRDP-inlogvenster:

De verbeterde sessiemodus inschakelen voor Arch Linux-gasten in Hyper-V

Voer uw gebruikersnaam en wachtwoord in.

Gebruiken

Het voordeel van deze manipulaties is duidelijk merkbaar: de RDP-sessie reageert veel sneller dan wanneer u werkt met een virtueel beeldscherm zonder verbeterde sessie. Schijven die via RDP in de VM zijn doorgegeven, zijn beschikbaar in de directory ${HOME}/shared-drives:

De verbeterde sessiemodus inschakelen voor Arch Linux-gasten in Hyper-V

Het klembord werkt prima. Je kunt geen printers naar binnen sturen, het wordt niet alleen niet ondersteund, maar breekt schijfdoorvoer. Het geluid werkt ook niet, maar dat had de auteur ook niet nodig. Om toetsencombinaties zoals Alt+Tab te kunnen gebruiken, moet u vmconnect uitvouwen tot het volledige scherm.

Als u om welke reden dan ook de ingebouwde vmconnect-applicatie wilt gebruiken in plaats van de Windows Als u een RDP-client gebruikt of bijvoorbeeld vanaf een andere machine verbinding maakt met deze 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, kunt u er verbinding mee maken vanaf de host op het adres название_машины.mshome.net. U kunt TTY alleen openen vanuit de vmconnect-applicatie door de Verbeterde modus uit te schakelen.

Gebruikte bronnen:

  1. Hyper-V - Arch Wiki
  2. Bug-rapporten op GitHub: 1, 2

Bron: www.habr.com

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster