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

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

Verwendung virtueller Maschinen auf Linux Hyper-V bietet standardmäßig ein etwas weniger komfortables Benutzererlebnis als Gastsysteme. WindowsDer Grund dafür ist, dass Hyper-V ursprünglich nicht für die Desktop-Nutzung konzipiert wurde; man kann nicht einfach das Gasterweiterungspaket installieren und funktionierende Grafikbeschleunigung, Zwischenablage, freigegebene Verzeichnisse und andere Vorteile nutzen, wie es beispielsweise bei VirtualBox möglich 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, zu denen natürlich auch gehören Windows, in der Anwendung „Verbindung zur virtuellen Maschine“ (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 dem Auspacken. Windows in Hyper-V unmittelbar nach der Installation. Mit Gästen auf Linux Sie müssen einen RDP-Server installieren, der vsock (einen speziellen virtuellen Netzwerkadressraum in Linux(entwickelt zur Kommunikation mit dem Hypervisor). Ubuntu in der VMCreate-Anwendung, die in den Desktop-Editionen von Hyper-V enthalten ist WindowsEs gibt eine speziell vorbereitete virtuelle Maschinenvorlage, in der ein RDP-Server mit vsock zusammenarbeitet. XRDP bereits vorinstalliert, dann ist es bei anderen Distributionen immer weniger klar - zum Beispiel beim Autor dieser Beitrag Es ist uns gelungen, ESM in Fedora zu aktivieren. Hier aktivieren wir außerdem den erweiterten Sitzungsmodus für die Arch-VM. Linux.

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 bietet Skripte auf GitHub an, die den Installations- und Konfigurationsprozess von XRDP für Arch automatisieren. Linux и UbuntuInstallieren wir Git, falls es noch nicht installiert ist, zusammen mit einem Compiler und weiterer Software für manuelle Builds, und klonen wir 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, regierende Einheiten und XRDP-Startskripte unter den in Arch verwendeten Dateipfaden Linuxenthält 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. Ansehen -> 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 des erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V
Aktivieren des erweiterten Sitzungsmodus für Arch Linux-Gäste in Hyper-V

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

Aktivieren des 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 des 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.

Falls Sie aus irgendeinem Grund die integrierte vmconnect-Anwendung anstelle der Windows Wenn Sie beispielsweise von einem anderen Rechner aus auf diesen Rechner zugreifen möchten (z. B. über einen RDP-Client), 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

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster