
A Linux virtual machine using Hyper-V out of the box is slightly less comfortable than working with guest Windows machines. The reason for this is that Hyper-V was not originally designed for desktop use; you cannot simply install the guest additions package and get working graphics acceleration, clipboard sharing, shared directories, and other conveniences of life as you would in VirtualBox.
Hyper-V itself provides — for example, guests can use the host's volume shadow copy (VSS), guests can be sent a shutdown signal, guests can synchronize their system time with the virtualization host, and file transfer between the host and the virtual machine is possible (Copy-VMFile in PowerShell). For some guest operating systems, including of course Windows, the Virtual Machine Connection application (vmconnect.exe) offers Enhanced Session Mode, which operates over RDP and allows the redirection of disk devices and printers into the virtual machine, as well as using a shared clipboard.
Enhanced Session Mode works out of the box in Windows in Hyper-V immediately after installation. For Linux guests, you need to install an RDP server that supports vsock (a special virtual network address space in Linux designed for communication with the hypervisor). If for Ubuntu there is a special prepared virtual machine template in the VMCreate application that comes with Hyper-V on desktop editions of Windows where the vsock RDP server is already pre-installed, with other distributions, it's less straightforward — for instance, the author of managed to enable ESM in Fedora. Here, we will activate Enhanced Session Mode for a virtual machine with Arch Linux.
Installing integration services
Here, everything is more or less simple; we just need to install the package hyperv from the community repository:
% sudo pacman -S hypervWe will enable the VSS, metadata % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
Installing XRDPlinux-vm-tools
Tárhely % sudo pacman -S git base-devel % git clone https://github.com/microsoft/linux-vm-tools.git % cd linux-vm-tools/arch
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archA cikk írásakor a legfrissebb XRDP kiadás, amely a script által telepíthető makepkg.sh, amely a repóban elérhető, 0.9.11, vsock://-címek, ezért az XRDP-t a Gitből, és az Xorg drivert kézzel kell telepíteni az AUR-ból. Az AUR-ban elérhető XRDP patch szintén kissé elavult, így a PKGBUILD-t és a patch-et kézzel kell szerkeszteni.
Klónozzuk a PKGBUILD-t tartalmazó repókat az AUR-ból (ezt a folyamatot általában automatizálják olyan programokkal, mint a , de a szerző ezt a folyamatot egy tiszta rendszeren hajtotta végre):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitElsőként telepítsük magát az XRDP-t. Nyissuk meg a fájlt fájlok a források automatikus fordításához bármely szövegszerkesztővel.
Szerkesszük meg a build paramétereit. A Gitből való XRDP build PKGBUILD-ja nem tartalmazza a vsock támogatást, így ezt nekünk kell manuálisan bekapcsolnunk:
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
}A patchban arch-config.diff, amely a XRDP indító egységeit és scriptjeit az Arch Linux-szal kompatibilis fájlútvonalakra állítja be, található egy patch a instfiles/xrdp.sh, amely a cikk írásakor az XRDP disztribúcióból, így a patch-et kézzel kell szerkeszteni:
[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 -0600Buildeljük és telepítsük a csomagot a következő parancs használatával % makepkg --skipchecksums -si (a --skipchecksums kulcs a forrásfájlok ellenőrző összegeinek letiltásához szükséges, mivel ezeket manuálisan szerkesztettük).
Lépjünk át a xorgxrdp-devel-git, majd egyszerűen buildeljük a csomagot a következő paranccsal % makepkg -si.
Lépjünk át a linux-vm-tools/arch és futtassuk a scriptet install-config.sh, amely beállítja az XRDP, PolicyKit és PAM konfigurációt:
% sudo ./install-config.shA script egy elavult beállítást telepít use_vsock, amelyet a 0.9.11-es verzió óta figyelmen kívül hagynak, így a konfigurációs fájlt /etc/xrdp/xrdp.ini kézzel kell szerkesztenünk:
; port=vsock://:
-port=3389
+port=vsock://-1:3389
; 'port' felül van, amit vsock-nal kell csatlakoztatni tcp helyett
; ezt csak a számot használva a fent említett portban
; előnyben részesítjük a vsock://: használatát
-use_vsock=true
+;use_vsock=true
; állítsuk be, ha a hallgató socket tcp_nodelay socket opciót használAdjuk hozzá a fájlhoz a következő kódot: ~/.xinitrc a preferált ablakkezelő / asztali környezet indítása, amely az X-szerver indításakor futni fog:
% echo "exec i3" > ~/.xinitrcKapcsoljuk ki a virtuális gépet. Aktiváljuk a vsock átvitelét a virtuális géphez a következő parancs végrehajtásával PowerShell-ben rendszergazdai jogosultságokkal:
PS Admin > Set-VM -VMName GÉPNÉV -EnhancedSessionTransportType HvSocketIndítsuk újra a virtuális gépet.
Csatlakozás
Amint a rendszer indítása után elindul az XRDP szolgáltatás, a vmconnect alkalmazás ezt felismeri, és a menüben elérhetővé válik a Nézet -> Kibővített Session. E pont választásakor felajánlják, hogy állítsuk be a képernyő felbontását, és a megnyíló párbeszédpanelen a Helyi Erőforrások fájlok kiválasztásához, amelyek az RDP-munkamenetbe kerülnek.


Csatlakozzunk. Meglátjuk az XRDP bejelentkezési ablakot:

Írjuk be a felhasználónevünket és a jelszavunkat.
Használat
Ezekből a lépésekből nyert profit nyilvánvaló: az RDP munkamenet sokkal reagálóbb, mint amikor a virtuális képernyőn Enhanced Session nélkül dolgozunk. Az RDP-n keresztül a VM belső terének átadott lemezek elérhetők a következő könyvtárban: ${HOME}/shared-drives:

A vágólap rendben működik. Nyomtatók átadása nem lehetséges, ez nemcsak nem támogatott, hanem . A hang sem működik, de a szerző ezt nem is igényelte. Ahhoz, hogy az Alt+Tab szerű billentyűkombinációkat rögzítsük, a vmconnectet teljes képernyőre kell terjeszteni.
Ha bármilyen okból szeretnénk a vmconnect alkalmazás helyett a Windows beépített RDP-klientjét használni, vagy például egy másik gépről csatlakozni ehhez a géphez, akkor módosítani kell a fájlban /etc/xrdp/xrdp.ini port Gyorsan emlékezzünk vissza, hogyan működik a moduláris aritmetika. Az óra már egy ismert koncepció. Az órák használata tcp://:3389. Ha a virtuális gép a Default Switch-hez csatlakozik, és DHCP-n kapja a hálózati beállításokat, a hostról a cím használatával csatlakozhatunk hozzá: gépneve.mshome.net. A TTY-be csak a vmconnect alkalmazásból lehet belépni, ha letiltjuk a Kibővített Módot.
Felhasznált források:
- Hibajelentések a GitHub-on: ,
Forrás: habr.com
