Attivazione di a Modalità di Sessione Migliorata per Arch Linux-ospiti in Hyper-V

Attivazione di a Modalità di Sessione Migliorata per Arch Linux-ospiti in Hyper-V

Usendu macchine virtuali nantu à Linux In Hyper-V, fora di a scatula hè una sperienza un pocu menu cunfurtevule chè cù l'ospiti Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Hyper-V stessu furnisce servizii di integrazione multipli - cusì, l'ospiti ponu utilizà u serviziu di copia d'ombra (VSS) di l'ospite, l'ospiti ponu mandà un signalu di chjusu, l'ospiti ponu sincronizà u tempu di u sistema cù l'ospite di virtualizazione, i schedari ponu esse scambiati cù a macchina virtuale da l'ospite (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) U Modu di Sessione Enhanced hè dispunibule, chì travaglia via u protokollu RDP è vi permette di rinvià i dispositi di discu è l'imprese à a macchina virtuale, è ancu aduprà u clipboard spartutu.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP digià preinstallatu, dopu cù altre distribuzioni hè menu è menu chjaru - per esempiu, l'autore stu postu получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.

Installazione di servizii d'integrazione

Tuttu hè più o menu simplice quì, avemu solu bisognu di stallà u pacchettu hyperv da u repositoriu di a cumunità:

% sudo pacman -S hyperv

Habilita i servizii VSS, scambià metadata è i schedari:

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

Installazione XRDP

repository linux-vm-tools на 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

A l'ora di sta scrittura, a versione più recente di XRDP, chì hè stallata da u script makepkg.shprupostu in u repository hè 0.9.11, in quale parsing hè rottu vsock://-addresses, cusì avete da installà XRDP da Git è u driver Xorg per questu da AUR manualmente. U patch per XRDP offrittu in l'AUR hè ancu un pocu anticu, cusì avete da edità u PKGBUILD è u patch manualmente.

Clonamu i repositori cù PKGBUILD da l'AUR (di solitu sta prucedura, cù l'assemblea, hè automatizata da prugrammi cum'è yay, ma l'autore hà fattu tutta sta prucedura nantu à un sistema pulitu):

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

Installemu prima XRDP stessu. Andemu apre u schedariu PKGBUILD qualsiasi editore di testu.

Editemu i paràmetri di custruzzione. U PKGBUILD per a custruzione di XRDP da Git ùn include micca u supportu vsock in a custruzzione, allora attivemu noi stessi:

 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
 }

In un patch arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, chì à u mumentu di a scrittura hè statu cacciatu da a distribuzione XRDP, cusì u patch duverà esse editatu manualmente:

  [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

Custruite è installate u pacchettu cù u cumandimu % makepkg --skipchecksums -si (chiave --skipchecksums hè necessariu per disattivà a verificazione di checksum di i fugliali fonte, postu chì l'avemu editatu manualmente).

Andemu à u cartulare xorgxrdp-devel-git, dopu chì simpricimenti custruite u pacchettu cù u cumandimu % makepkg -si.

Andemu à u cartulare linux-vm-tools/arch è eseguite u script install-config.sh, chì stabilisce i paràmetri XRDP, PolicyKit è PAM:

% sudo ./install-config.sh

U script installeghja a paràmetra legacy use_vsock, chì hè ignoratu da a versione 0.9.11, dunque edità u schedariu di cunfigurazione /etc/xrdp/xrdp.ini manualmente:

 ;   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

Aghjunghjite à u schedariu ~/.xinitrc lanciari u vostru amministratore di finestra preferitu / ambiente di desktop, chì serà eseguitu quandu u servitore X hè iniziatu:

% echo "exec i3" > ~/.xinitrc

Spegnemu a macchina virtuale. Attivate u trasportu vsock per a VM eseguendu u cumandimu seguitu in PowerShell cum'è amministratore:

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

Accendemu a macchina virtuale di novu.

Подключение

Appena u serviziu XRDP principia dopu chì u sistema principia, l'applicazione vmconnect determinarà questu è l'elementu di menu diventerà dispunibule. Veduta -> Sessione rinfurzata. Quandu sceglite stu articulu, avemu da esse dumandatu à stabilisce a risoluzione di u screnu, è nantu à a tabulazione Risorse Locali in u dialogu chì si apre, pudete selezziunate i dispositi trasmessi in a sessione RDP.

Attivazione di a Modalità di Sessione Migliorata per Arch Linux-ospiti in Hyper-V
Attivazione di a Modalità di Sessione Migliorata per Arch Linux-ospiti in Hyper-V

Cunnettamu. Vedemu a finestra di login XRDP:

Attivazione di a Modalità di Sessione Migliorata per Arch Linux-ospiti in Hyper-V

Inserite u vostru nome d'utilizatore è password.

Usu

U prufittu di sti manipulazioni hè notu: a sessione RDP travaglia assai più responsiva chì quandu travaglia cù una visualizazione virtuale senza Session Enhanced. I dischi trasmessi in a VM via RDP sò dispunibuli in u cartulare ${HOME}/shared-drives:

Attivazione di a Modalità di Sessione Migliorata per Arch Linux-ospiti in Hyper-V

U clipboard funziona bè. Ùn pudete micca scaccià stampanti in l'internu, questu ùn hè micca solu supportatu, ma ancu rompe l'invio di discu. U sonu ùn hè micca travagliatu, ma l'autore ùn hà micca bisognu. Per catturà scorciatoie di tastiera cum'è Alt + Tab, avete bisognu di espansione vmconnect à a pantalla completa.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port nantu tcp://:3389. Se a macchina virtuale hè cunnessa à u Switch Default è riceve paràmetri di rete via DHCP, pudete cunnette vi da l'ospite à название_машины.mshome.net. Pudete accede à TTY solu da l'applicazione vmconnect disattivendu u Modu Enhanced.

Fonti aduprate:

  1. Hyper-V Arch Wiki
  2. Rapporti di bug in GitHub: 1, 2

Source: www.habr.com

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster