
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.


Verbinden Siehe das 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:

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 :
- Hyper-V - Arch Wiki
- Bagreport auf GitHub: 1 , 2