Aktivieren Sie den erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V

Aktivieren Sie den erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V

Die Verwendung virtueller Linux-Maschinen in Hyper-V ist etwas weniger komfortabel als die Verwendung von Windows-Gastmaschinen. Der Grund dafür ist, dass Hyper-V ursprünglich nicht für den Desktop-Einsatz gedacht war; Sie können nicht einfach das Gastzusatzpaket installieren und eine funktionierende Grafikbeschleunigung, Zwischenablage, freigegebene Verzeichnisse und andere Lebensfreuden erhalten, wie es in VirtualBox der Fall ist.

Hyper-V selbst bietet mehrere Integrationsdienste - so können Gäste den Shadow Copy Service (VSS) des Hosts nutzen, Gäste können ein Shutdown-Signal senden, Gäste können die Systemzeit mit dem Virtualisierungshost synchronisieren, Dateien können vom Host aus mit der virtuellen Maschine ausgetauscht werden (Copy-VMFile in PowerShell). Für einige Gastbetriebssysteme, darunter natürlich auch Windows, in der Virtual Machine Connection-Anwendung (vmconnect.exe) Es ist ein erweiterter Sitzungsmodus verfügbar, der über das RDP-Protokoll funktioniert und es Ihnen ermöglicht, Festplattengeräte und Drucker an die virtuelle Maschine weiterzuleiten sowie die freigegebene Zwischenablage zu verwenden.

Der erweiterte Sitzungsmodus funktioniert sofort nach der Installation unter Windows in Hyper-V. Bei Gästen unter Linux müssen Sie einen RDP-Server installieren, der vsock unterstützt (einen speziellen virtuellen Netzwerkadressraum in Linux, der für die Kommunikation mit dem Hypervisor entwickelt wurde). Für Ubuntu verfügt die VMCreate-Anwendung, die mit Hyper-V auf Desktop-Editionen von Windows geliefert wird, über eine speziell vorbereitete Vorlage für virtuelle Maschinen, in der ein RDP-Server mit vsock ausgeführt wird XRDP bereits vorinstalliert, dann ist es bei anderen Distributionen immer weniger klar - zum Beispiel beim Autor dieser Beitrag Es stellte sich heraus, dass ESM in Fedora aktiviert war. Hier aktivieren wir auch den erweiterten Sitzungsmodus für die virtuelle Arch Linux-Maschine.

Integrationsdienste installieren

Hier ist alles mehr oder weniger einfach, wir müssen nur das Paket installieren hyperv aus dem Community-Repository:

% sudo pacman -S hyperv

VSS-Dienste aktivieren, austauschen Metadaten und Dateien:

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

XRDP-Installation

Repository Linux-VM-Tools auf GitHub stellt Skripte bereit, die den Prozess der Installation und Konfiguration von XRDP für Arch Linux und Ubuntu automatisieren. Installieren Sie Git, falls es noch nicht installiert ist, zusammen mit dem Compiler und anderer Software für manuelle Builds und klonen Sie dann das Repository:

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

Zum Zeitpunkt des Verfassens dieses Artikels die neueste Version von XRDP, die vom Skript installiert wird makepkg.shIm Repository vorgeschlagen ist 0.9.11, in dem das Parsen unterbrochen ist vsock://-Adressen, daher müssen Sie XRDP von Git und den Xorg-Treiber dafür von AUR manuell installieren. Auch der im AUR angebotene Patch für XRDP ist leicht veraltet, sodass Sie das PKGBUILD und den Patch manuell bearbeiten müssen.

Wir klonen die Repositorys mit PKGBUILDs aus dem AUR (normalerweise wird dieser Vorgang zusammen mit der Assemblierung durch Programme wie automatisiert). Yay, aber der Autor hat diese ganze Prozedur auf einem sauberen System durchgeführt):

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

Lassen Sie uns zuerst XRDP selbst installieren. Öffnen wir die Datei PKGBUILD irgendein Texteditor.

Lassen Sie uns die Build-Parameter bearbeiten. Das PKGBUILD zum Erstellen von XRDP aus Git beinhaltet keine vsock-Unterstützung im Build, also aktivieren wir es selbst:

 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
 }

In einem Patch arch-config.diff, das Units und XRDP-Startskripte unter den in Arch Linux verwendeten Dateipfaden bearbeitet, enthält unter anderem einen Patch für das Skript instfiles/xrdp.sh, was zum Zeitpunkt des Schreibens wurde gelöscht aus der XRDP-Distribution, daher muss der Patch manuell bearbeitet werden:

  [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

Erstellen und installieren Sie das Paket mit dem Befehl % makepkg --skipchecksums -si (Taste --skipchecksums ist erforderlich, um die Prüfsummenüberprüfung der Quelldateien zu deaktivieren, da wir sie manuell bearbeitet haben.

Gehen wir ins Verzeichnis xorgxrdp-devel-git, danach erstellen wir einfach das Paket mit dem Befehl % makepkg -si.

Gehen wir ins Verzeichnis linux-vm-tools/arch und führen Sie das Skript aus install-config.sh, das die XRDP-, PolicyKit- und PAM-Einstellungen festlegt:

% sudo ./install-config.sh

Das Skript installiert die Legacy-Einstellung use_vsock, was seit Version 0.9.11 ignoriert wird, also bearbeiten wir die Konfigurationsdatei /etc/xrdp/xrdp.ini manuell:

 ;   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

Zur Datei hinzufügen ~/.xinitrc Starten Ihrer bevorzugten Fenstermanager-/Desktopumgebung, die beim Starten des X-Servers ausgeführt wird:

% echo "exec i3" > ~/.xinitrc

Lassen Sie uns die virtuelle Maschine ausschalten. Aktivieren Sie den vsock-Transport für die VM, indem Sie den folgenden Befehl in PowerShell als Administrator ausführen:

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

Lassen Sie uns die virtuelle Maschine wieder einschalten.

Verbindung

Sobald der XRDP-Dienst nach dem Systemstart startet, erkennt die vmconnect-Anwendung dies und der Menüpunkt wird verfügbar. Anzeigen -> Erweiterte Sitzung. Wenn Sie dieses Element auswählen, werden wir aufgefordert, die Bildschirmauflösung einzustellen, und zwar auf der Registerkarte Lokale Ressourcen Im sich öffnenden Dialog können Sie die innerhalb der RDP-Sitzung weitergeleiteten Geräte auswählen.

Aktivieren Sie den erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V
Aktivieren Sie den erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V

Lassen Sie uns verbinden. Wir sehen das XRDP-Anmeldefenster:

Aktivieren Sie den erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V

Geben Sie Ihren Benutzernamen und Ihr Passwort ein.

Verwenden

Der Gewinn dieser Manipulationen ist spürbar: Die RDP-Sitzung arbeitet deutlich reaktionsschneller als bei der Arbeit mit einer virtuellen Anzeige ohne Enhanced Session. Die innerhalb der VM per RDP weitergeleiteten Festplatten stehen im Verzeichnis zur Verfügung ${HOME}/shared-drives:

Aktivieren Sie den erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V

Die Zwischenablage funktioniert einwandfrei. Sie können keine Drucker hineinwerfen, das wird nicht nur nicht unterstützt, sondern auch unterbricht die Festplattenweiterleitung. Der Ton funktioniert auch nicht, aber der Autor brauchte ihn nicht. Um Tastaturkürzel wie Alt + Tab zu erfassen, müssen Sie vmconnect auf den Vollbildmodus erweitern.

Wenn Sie aus irgendeinem Grund den in Windows integrierten RDP-Client anstelle der vmconnect-Anwendung verwenden oder beispielsweise von einem anderen Computer aus eine Verbindung zu diesem Computer herstellen möchten, müssen Sie die Datei ändern /etc/xrdp/xrdp.ini port auf tcp://:3389. Wenn die virtuelle Maschine mit dem Standard-Switch verbunden ist und Netzwerkeinstellungen über DHCP erhält, können Sie vom Host aus eine Verbindung zu ihr herstellen название_машины.mshome.net. Sie können sich nur über die vmconnect-Anwendung bei TTY anmelden, indem Sie den erweiterten Modus deaktivieren.

Verwendete Quellen:

  1. Hyper-V-Arch-Wiki
  2. Fehlerberichte auf GitHub: 1, 2

Source: habr.com

Kommentar hinzufügen