Ferbettere sesjemodus ynskeakelje foar Arch Linux-gasten yn Hyper-V

Ferbettere sesjemodus ynskeakelje foar Arch Linux-gasten yn Hyper-V

It brûken fan firtuele masines op Linux yn Hyper-V out-of-the-box is in wat minder noflike ûnderfining as mei gast Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Hyper-V sels leveret ferskate yntegraasje tsjinsten - dus kinne gasten de skaadkopietsjinst fan 'e host (VSS) brûke, gasten kinne in shutdown-sinjaal stjoere, gasten kinne de systeemtiid syngronisearje mei de virtualisaasjehost, bestannen kinne wurde útwiksele fan 'e host mei de firtuele masine (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Ferbettere sesjemodus is beskikber, wurket fia it RDP-protokol en wêrtroch jo skiifapparaten en printers kinne oerdrage nei de firtuele masine, en ek in dielde klamboerd brûke.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP al foarynstallearre, dan is it mei oare distribúsjes minder en minder dúdlik - bygelyks de skriuwer dizze post получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.

Ynstallaasje fan yntegraasje tsjinsten

Alles is hjir min of mear ienfâldich, wy moatte gewoan it pakket ynstallearje hyperv út it mienskipsrepository:

% sudo pacman -S hyperv

Litte wy VSS ynskeakelje en tsjinsten útwikselje metadata en triemmen:

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

Ynstallearje XRDP

repository linux-vm-ark на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим Git, если он еще не установлен, вместе с компилятором и другим софтом для ручных сборок, после чего склонируем репозиторий:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

Op it momint fan it skriuwen fan dit artikel, de lêste release fan XRDP, dy't is ynstalleare troch it skript makepkg.shde foarstelde yn 'e repository is 0.9.11, wêryn parsing is brutsen vsock://-adressen, dus jo moatte XRDP fan Git en de Xorg-bestjoerder foar it fan AUR manuell ynstallearje. De XRDP-patch oanbean yn 'e AUR is ek in bytsje ferâldere, dus jo moatte de PKGBUILD en patch manuell bewurkje.

Litte wy repositories klonearje mei PKGBUILD's fan AUR (meastentiids wurdt dizze proseduere, tegearre mei de bou, automatisearre troch programma's lykas bôge, mar de skriuwer die dizze hiele proseduere op in skjin systeem):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Litte wy XRDP sels earst ynstallearje. Litte wy it bestân iepenje PKGBUILD eltse tekst bewurker.

Litte wy de bouparameters bewurkje. PKGBUILD foar it bouwen fan XRDP fan Git omfettet gjin vsock-stipe by it bouwen, dus litte wy it sels ynskeakelje:

 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
 }

Yn de patch arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, dy't op it momint fan skriuwen waard fuorthelle fan 'e XRDP-distribúsje, sadat de patch mei de hân bewurke wurde moat:

  [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

Litte wy it pakket kompilearje en ynstallearje mei it kommando % makepkg --skipchecksums -si (kaai --skipchecksums nedich om kontrôlesumferifikaasje fan boarnebestannen út te skeakeljen, om't wy se mei de hân bewurke hawwe).

Litte wy nei de map gean xorgxrdp-devel-git, wêrnei't wy it pakket gewoan gearstalle mei it kommando % makepkg -si.

Litte wy nei de map gean linux-vm-tools/arch en rinne it skript install-config.sh, dy't XRDP, PolicyKit en PAM-ynstellingen ynstelle:

% sudo ./install-config.sh

Skript ynstallearret legacy ynstelling use_vsock, dat is negearre sûnt ferzje 0.9.11, dus litte wy it konfiguraasjetriem bewurkje /etc/xrdp/xrdp.ini hânmjittich:

 ;   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

Tafoegje oan triem ~/.xinitrc it starten fan jo foarkar finsterbehearder / buroblêdomjouwing, dy't sil wurde útfierd as de X-tsjinner begjint:

% echo "exec i3" > ~/.xinitrc

Litte wy de firtuele masine útsette. Wy aktivearje it vsock-transport foar de firtuele masine troch it folgjende kommando út te fieren yn PowerShell as behearder:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Litte wy de firtuele masine wer ynskeakelje.

Konnektiviteit

Sadree't de XRDP-tsjinst begjint nei't it systeem begjint, sil de vmconnect-applikaasje dit ûntdekke en it item sil beskikber wêze yn it menu Fisy -> Ferbettere sesje. As jo ​​​​dit item selektearje, sille wy wurde frege om de skermresolúsje yn te stellen, en op 'e ljepper Lokale middels Yn it dialoochfinster dat iepenet, kinne jo apparaten selektearje om troch te stjoeren nei de RDP-sesje.

Ferbettere sesjemodus ynskeakelje foar Arch Linux-gasten yn Hyper-V
Ferbettere sesjemodus ynskeakelje foar Arch Linux-gasten yn Hyper-V

Litte wy ferbine. Wy sille it XRDP-oanmeldfinster sjen:

Ferbettere sesjemodus ynskeakelje foar Arch Linux-gasten yn Hyper-V

Fier jo brûkersnamme en wachtwurd yn.

Gebrûk

It foardiel fan dizze manipulaasjes is opmerklik: de RDP-sesje wurket folle responsiver dan by it wurkjen mei in firtuele werjefte sûnder Enhanced Session. Disken sakke binnen de VM fia RDP binne beskikber yn 'e map ${HOME}/shared-drives:

Ferbettere sesjemodus ynskeakelje foar Arch Linux-gasten yn Hyper-V

It klamboerd wurket goed. Jo kinne net trochstjoere printers binnen dit wurdt net allinnich net stipe, mar ek; brekt skiif trochstjoere. It lûd wurket ek net, mar dit hat de skriuwer net nedich. Om fluchtoetsen lykas Alt + Tab te fangen, moatte jo vmconnect útwreidzje nei folslein skerm.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port op tcp://:3389. As de firtuele masine is ferbûn mei Standert Switch en ûntfangt netwurk ynstellings fia DHCP, dan kinne jo ferbine mei it fan de host op название_машины.mshome.net. Jo kinne allinich ynlogge by TTY fanút de vmconnect-applikaasje troch Ferbettere modus út te skeakeljen.

Brûkte boarnen:

  1. Hyper-V - Arch Wiki
  2. Bugrapporten op GitHub: 1, 2

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster