Az Enhanced Session Mode bekapcsolása Arch Linux vendégeknek Hyper-V-ben

Az Enhanced Session Mode bekapcsolása Arch Linux vendégeknek Hyper-V-ben

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 several integration services — 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 XRDP is already pre-installed, with other distributions, it's less straightforward — for instance, the author of this post 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 hyperv

We will enable the VSS, metadata and file sharing services: % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Installing XRDP

linux-vm-tools

Tárhely on GitHub provides scripts that automate the installation and configuration process for XRDP for Arch Linux and Ubuntu. We will install Git if it is not already installed, along with the compiler and other software for manual builds, after which we will clone the repository: % 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/arch

A 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, amelyben elromlott a parsing 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 yay, 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.git

Első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 eltávolításra került 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 -0600

Buildeljü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.sh

A 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ál

Adjuk 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" > ~/.xinitrc

Kapcsoljuk 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 HvSocket

Indí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.

Az Enhanced Session Mode bekapcsolása Arch Linux vendégeknek Hyper-V-ben
Az Enhanced Session Mode bekapcsolása Arch Linux vendégeknek Hyper-V-ben

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

Az Enhanced Session Mode bekapcsolása Arch Linux vendégeknek Hyper-V-ben

Í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:

Az Enhanced Session Mode bekapcsolása Arch Linux vendégeknek Hyper-V-ben

A vágólap rendben működik. Nyomtatók átadása nem lehetséges, ez nemcsak nem támogatott, hanem megszakítja a lemezek átadását. 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:

  1. Hyper-V — Arch Wiki
  2. Hibajelentések a GitHub-on: 1, 2

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster