Enhanced Session Mode für Arch Linux-Gäste in Hyper-V aktivieren

Enhanced Session Mode für Arch Linux-Gäste in Hyper-V aktivieren

Die Nutzung von virtuellen Maschinen unter Linux in Hyper-V ist von Haus aus etwas weniger komfortabel als mit Windows-Gästemaschinen. Der Grund dafür ist, dass Hyper-V ursprünglich nicht für Desktopanwendungen konzipiert wurde; man kann nicht einfach das Paket für die Gastergänzungen installieren und eine funktionierende Grafikbeschleunigung, Zwischenablage, gemeinsame Verzeichnisse und andere Annehmlichkeiten erhalten, wie es bei VirtualBox der Fall ist.

Hyper-V bietet selbst einige Integrationsdienste — so können Gäste den Schattenkopierdienst (VSS) des Hosts nutzen, ein Ausschaltbefehl kann an die Gäste gesendet werden, Gäste können die Systemzeit mit dem Virtualisierungs-Host synchronisieren, und der Dateiaustausch zwischen Host und virtueller Maschine ist möglich (Copy-VMFile in PowerShell). Für einige Gästebetriebssysteme, darunter auch Windows, ist im Virtual Machine Connection-Anwendung (vmconnect.exe) der erweiterte Sitzungsmodus verfügbar, der über das RDP-Protokoll funktioniert und es ermöglicht, Laufwerke und Drucker an die virtuelle Maschine weiterzuleiten sowie die gemeinsame Zwischenablage zu nutzen.

Der Enhanced Session Mode funktioniert nach der Installation direkt in Windows unter Hyper-V. Bei Linux-Gästen muss ein RDP-Server installiert werden, der vsock unterstützt (ein spezieller virtueller Netzwerkadressraum in Linux zur Kommunikation mit dem Hypervisor). Für Ubuntu gibt es in der VMCreate-Anwendung, die mit Hyper-V auf Desktopversionen von Windows geliefert wird, eine spezielle vorbereitete Vorlage für die virtuelle Maschine, die einen RDP-Server verwendet, der mit vsock funktioniert. XRDP ist bereits vorinstalliert, während dies bei anderen Distributionen weniger eindeutig ist – so hat der Autor dieses Beitrags ESM in Fedora aktivieren können. Hier aktivieren wir den Enhanced Session Mode für die virtuelle Maschine mit Arch Linux.

Installation der Integrationsdienste

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

% sudo pacman -S hyperv

Wir aktivieren die VSS- und Austauschdienste für Metadaten und Dateien:

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

Installation von XRDP

Repository linux-vm-tools Auf GitHub finden Sie Skripte, die den Installations- und Konfigurationsprozess von XRDP für Arch Linux und Ubuntu automatisieren. Installieren wir Git, falls es noch nicht vorhanden ist, zusammen mit dem Compiler und anderer Software für manuelle Builds, und klonen anschließend 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 der Erstellung dieses Artikels war die aktuellste Version von XRDP, die durch das Skript installiert wird, makepkg.sh, die im Repository angeboten wird, ist 0.9.11, bei der das Parsen von vsock://-Adressen defekt ist. Daher müssen wir XRDP und den Xorg-Treiber manuell aus dem AUR installieren. Der Patch für XRDP, der im AUR angeboten wird, ist ebenfalls etwas veraltet, weshalb wir PKGBUILD und Patch manuell anpassen müssen.

Klonen Sie die Repositories mit den PKGBUILD-Dateien aus dem AUR (gewöhnlich wird dieser Prozess zusammen mit dem Build durch Programme wie yayautomatisiert, aber der Autor hat diesen gesamten Vorgang 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

Installieren wir zunächst XRDP selbst. Öffnen Sie die Datei PKGBUILD mit einem beliebigen Texteditor.

Passen Sie die Build-Parameter an. Der PKGBUILD für den Build von XRDP aus Git unterstützt vsock nicht, daher müssen wir dies selbst aktivieren:

 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-vsock
   make V=0
 }

Im Patch arch-config.diff, das die Einheiten und Startskripte von XRDP an die Dateipfade anpasst, die in Arch Linux verwendet werden, ist unter anderem ein Patch für das Skript instfiles/xrdp.sh, der zum Zeitpunkt des Schreibens des Artikels entfernt wurde aus der Lieferung von XRDP, 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 @@
- # Beschreibung: startet xrdp
- ### ENDE 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

Lassen Sie uns das Paket mit dem Befehl erstellen und installieren % makepkg --skipchecksums -si (Schlüssel --skipchecksums wird benötigt, um die Überprüfung der Prüfziffern der Quell-Dateien zu deaktivieren, da wir diese manuell bearbeitet haben).

Wechseln wir in das Verzeichnis xorgxrdp-devel-git, dann sammeln wir einfach das Paket mit dem Befehl % makepkg -si.

Wechseln wir in das Verzeichnis linux-vm-tools/arch und führen das Skript aus install-config.sh, das die Einstellungen für XRDP, PolicyKit und PAM installiert:

% sudo ./install-config.sh

Das Skript installiert eine veraltete Einstellung use_vsock, die ab Version 0.9.11 ignoriert wird, deshalb bearbeiten wir die Konfigurationsdatei /etc/xrdp/xrdp.ini manuell:

 ;   port=vsock://:
-port=3389
+port=vsock://-1:3389

 ; 'port' oben sollte mit vsock anstelle von tcp verbunden werden
 ; verwenden Sie dies nur mit einer Nummer allein im obigen Port
 ; ziehen Sie vor, vsock://: oben zu verwenden
-use_vsock=true
+;use_vsock=true

 ; regeln, ob der lauschen Socket die Socket-Option tcp_nodelay verwendet

Fügen wir in die Datei ein ~/.xinitrc zum Starten Ihres bevorzugten Fenstermanagers/Desktop-Umgebung, die beim Start des X-Servers ausgeführt wird:

% echo "exec i3" > ~/.xinitrc

Schalten Sie die virtuelle Maschine aus. Aktivieren Sie den Transport vsock für die virtuelle Maschine, indem Sie den folgenden Befehl in PowerShell als Administrator ausführen:

PS Admin > Set-VM -VMName MASCHINENNAME -EnhancedSessionTransportType HvSocket

Schalten Sie die virtuelle Maschine wieder ein.

Domain-Anbindung

Sobald der XRDP-Dienst nach dem Start des Systems gestartet wird, wird die Anwendung vmconnect dies erkennen und der Punkt wird im Menü verfügbar sein View -> Enhanced Session. Wenn wir diesen Punkt auswählen, werden wir aufgefordert, die Bildschirmauflösung einzustellen, und auf dem Tab Local Resources Im sich öffnenden Dialog können die Geräte ausgewählt werden, die in die RDP-Sitzung weitergeleitet werden.

Enhanced Session Mode für Arch Linux-Gäste in Hyper-V aktivieren
Enhanced Session Mode für Arch Linux-Gäste in Hyper-V aktivieren

Wir verbinden uns. Wir sehen das Anmeldefenster von XRDP:

Enhanced Session Mode für Arch Linux-Gäste in Hyper-V aktivieren

Geben wir unseren Benutzernamen und das Passwort ein.

Nutzung

Die Vorteile dieser Maßnahmen sind deutlich: Die RDP-Sitzung funktioniert viel reaktionsschneller als bei der Nutzung eines virtuellen Bildschirms ohne Enhanced Session. Die über RDP in die VM weitergeleiteten Laufwerke sind im Verzeichnis verfügbar ${HOME}/shared-drives:

Enhanced Session Mode für Arch Linux-Gäste in Hyper-V aktivieren

Die Zwischenablage funktioniert einwandfrei. Drucker können nicht weitergeleitet werden, da dies nicht nur nicht unterstützt wird, sondern auch die Laufwerksweiterleitung stört.Auch der Ton funktioniert nicht, was für den Autor allerdings nicht erforderlich war. Damit Tastenkombinationen wie Alt+Tab erfasst werden, muss vmconnect im Vollbildmodus gestartet werden.

Falls aus irgendwelchen Gründen der Wunsch besteht, anstelle der Anwendung vmconnect den integrierten RDP-Client von Windows zu verwenden oder beispielsweise von einem anderen Computer aus auf diese Maschine zuzugreifen, muss im Datei /etc/xrdp/xrdp.ini port findet man tcp://:3389geändert werden. Wenn die virtuelle Maschine mit dem Default Switch verbunden ist und die Netzwerkeinstellungen per DHCP erhält, kann von der Host-Maschine aus auf sie unter der Adresse zugegriffen werden maschinen_name.mshome.net.Der Zugang zu TTY kann nur über die Anwendung vmconnect erfolgen, indem der Enhanced Mode deaktiviert wird.

Verwendete Quellen:

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

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster