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

KDPV


Die sofortige Verwendung von virtuellen Linux-Maschinen in Hyper-V ist etwas weniger komfortabel als auf Windows-Gastmaschinen. Der Grund dafür ist, dass Hyper-V ursprünglich noch nicht für die Desktop-Verwendung vorgesehen war. Sie können nicht einfach ein Paket von Gast-Add-Ons herunterladen und installieren und erhalten eine funktionsfähige Grafikbeschleunigung, Zwischenablage, freigegebene Verzeichnisse und andere Freuden des Lebens, wie dies in VirtualBox der Fall ist.


Hyper-V selbst bietet mehrere Integrationsdienste : Gäste können beispielsweise den Schattenkopiedienst (VSS) des Hosts verwenden, Gäste können ein Abschaltsignal erhalten, Gäste können die Systemzeit mit dem Virtualisierungshost synchronisieren, Dateien können mit der virtuellen Maschine vom Host aus ausgetauscht werden ( Copy-VMFile in) PowerShell). Für einige Gastbetriebssysteme, einschließlich natürlich Windows, bietet die Virtual Machine Connection-Anwendung ( vmconnect.exe ) vmconnect.exe erweiterten Sitzungsmodus, der über das RDP-Protokoll funktioniert und es Ihnen ermöglicht, Plattengeräte und Drucker an die virtuelle Maschine weiterzuleiten sowie die allgemeinen zu verwenden Zwischenablage.


Der erweiterte Sitzungsmodus wird sofort nach der Installation unter Windows in Hyper-V ausgeführt. 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 ausgelegt ist). Wenn für Ubuntu in der VMCreate-Anwendung, die mit Hyper-V auf Desktop-Editionen von Windows geliefert wird, eine speziell vorbereitete Vorlage für virtuelle Maschinen vorhanden ist, in der der XRDP-RDP-Server, der mit vsock arbeitet, bereits vorinstalliert ist, ist bei anderen Distributionen alles immer weniger klar Es stellte sich heraus, dass ESM in Fedora aufgenommen wurde. Hier aktivieren wir den erweiterten Sitzungsmodus für eine virtuelle Maschine mit Arch Linux.


Installieren Sie Integration Services


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


 % sudo pacman -S hyperv 

Aktivieren Sie die VSS-, Metadaten- und Dateifreigabedienste:


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

Installieren Sie XRDP


Das Linux-VM-Tools- Repository auf GitHub bietet Skripts, die die 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 Assemblys 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 dieses Schreibens ist die neueste Version von XRDP, die vom im makepkg.sh vorgeschlagenen makepkg.sh Skript installiert wird, 0.9.11, bei der das Parsen von vsock:// fehlerhaft ist. Daher müssen Sie XRDP von Git und den Xorg-Treiber von AUR darauf installieren von Hand. Der in AUR angebotene XRDP-Patch ist ebenfalls etwas veraltet, sodass Sie PKGBUILD und den Patch manuell bearbeiten müssen.


Wir werden die Repositorys mit PKGBUILDs von AUR klonen (normalerweise wird diese Prozedur zusammen mit der Assembly von Programmen wie yay automatisiert, 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 

Installieren Sie zuerst XRDP selbst. Öffnen Sie die PKGBUILD Datei mit einem beliebigen Texteditor.


Bearbeiten Sie die Baugruppenparameter. PKGBUILD zum Erstellen von XRDP aus Git enthält keine vsock-Unterstützung während des Assemblierens. Aktivieren Sie es also 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 } 

Der Patch arch-config.diff , der arch-config.diff Units und Skripte für die Ausführung von XRDP unter dem Pfad zu den in Arch Linux verwendeten Dateien arch-config.diff , enthält einen Patch für das instfiles/xrdp.sh , der zum Zeitpunkt des Schreibens aus dem XRDP-Paket entfernt wurde , so der Patch muss 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 

Wir werden das Paket mit dem Befehl % makepkg --skipchecksums -si erstellen und installieren (der --skipchecksums benötigt, um die Überprüfung der Prüfsummen der Quelldateien zu deaktivieren, da wir sie manuell bearbeitet haben).


xorgxrdp-devel-git und sammeln Sie das Paket mit dem % makepkg -si .


linux-vm-tools/arch Sie in das linux-vm-tools/arch und führen Sie das Skript install-config.sh , mit dem die Einstellungen für XRDP, PolicyKit und PAM installiert werden:


 % sudo ./install-config.sh 

Das Skript legt die veraltete use_vsock Einstellung fest, die seit Version 0.9.11 ignoriert wurde. Daher 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 

Fügen Sie der ~/.xinitrc Start unserer bevorzugten Window Manager / Desktop-Umgebung hinzu, die ausgeführt wird, wenn der X-Server gestartet wird:


 % echo "exec i3" > ~/.xinitrc 

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


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

Schalten Sie die virtuelle Maschine erneut ein.


Verbindung


Sobald der XRDP-Dienst nach dem Systemstart gestartet wird, ermittelt die vmconnect-Anwendung dies und der Menüpunkt Ansicht -> Erweiterte Sitzung wird verfügbar. Wenn Sie dieses Element auswählen, werden Sie aufgefordert, die Bildschirmauflösung festzulegen. Auf der Registerkarte Lokale Ressourcen des daraufhin geöffneten Dialogfelds können Sie die Geräte auswählen, die innerhalb der RDP-Sitzung weitergeleitet werden.


Bildschirmauflösungsdialog
Dialogfeld zur Auswahl lokaler Ressourcen


Verbinden Siehe das XRDP-Anmeldefenster:


XRDP-Anmeldefenster


Geben Sie Ihren Benutzernamen und Ihr Passwort ein.


Verwenden Sie


Der Vorteil dieser Manipulationen ist spürbar: Die RDP-Sitzung reagiert viel schneller als bei der Arbeit mit einer virtuellen Anzeige ohne erweiterte Sitzung. Die über RDP eingebrachten VMs sind im Verzeichnis ${HOME}/shared-drives verfügbar:


Der Inhalt des Laufwerks C wird in die VM geworfen


Die Zwischenablage funktioniert einwandfrei. Sie können Drucker nicht weiterleiten, es wird nicht nur nicht unterstützt, sondern es unterbricht auch die Festplattenweiterleitung . Sound funktioniert auch nicht, aber der Autor brauchte es nicht. Um Tastenkombinationen wie Alt + Tab zu erfassen, müssen Sie vmconnect im Vollbildmodus bereitstellen.


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 /etc/xrdp/xrdp.ini , müssen Sie die /etc/xrdp/xrdp.ini in tcp://:3389 ändern. tcp://:3389 . Wenn die virtuelle Maschine mit dem Standard-Switch verbunden ist und Netzwerkeinstellungen über DHCP empfängt, können Sie vom Host unter _.mshome.net Verbindung zu ihr _.mshome.net . Sie können TTY nur in der vmconnect-Anwendung eingeben, indem Sie den erweiterten Modus deaktivieren.


Verwendete Quellen :


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

Source: https://habr.com/ru/post/de482372/


All Articles