Abilita u Modu di Sessione Enhanced per l'ospiti Arch Linux in Hyper-V

Abilita u Modu di Sessione Enhanced per l'ospiti Arch Linux in Hyper-V

Utilizà e macchine virtuali Linux in Hyper-V fora di a scatula hè un pocu menu cunfortu cà cù e macchine Windows invitati. U mutivu di questu hè chì Hyper-V ùn era micca uriginale destinatu à l'usu di desktop; Ùn pudete micca solu andà avanti è installà u pacchettu di l'aghjunzione di l'ospiti è uttene accelerazione grafica praticabile, clipboard, repertorii spartuti è altre gioia di a vita, cum'è succede in 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 in PowerShell). Per certi sistemi operativi invitati, cumpresu, sicuru, Windows, in l'applicazione 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.

Modu Session Enhanced funziona fora di a scatula in Windows in Hyper-V subitu dopu a stallazione. Cù invitati in Linux, avete bisognu di installà un servitore RDP chì supporta vsock (un spaziu d'indirizzu virtuale speciale in Linux cuncepitu per cumunicà cù l'ipervisore). Se per Ubuntu, l'applicazione VMCreate chì vene cù Hyper-V in l'edizioni desktop di Windows hà un mudellu speciale di macchina virtuale preparatu in quale un servitore RDP in esecuzione cù vsock XRDP digià preinstallatu, dopu cù altre distribuzioni hè menu è menu chjaru - per esempiu, l'autore stu postu hè risultatu per attivà ESM in Fedora. Quì avemu ancu attivatu u Modu di Sessione Enhanced per a macchina virtuale 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 in GitHub furnisce script chì automatizanu u prucessu di installà è cunfigurà XRDP per Arch Linux è Ubuntu. Installa Git, s'ellu ùn hè micca digià stallatu, cù u compilatore è l'altru software per e custruzzioni manuali, è poi clone u repository:

% 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, chì edita unità è script di startup XRDP sottu i chjassi à i schedari utilizati in Arch Linux, cuntene, frà altre cose, un patch à u script. 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.

Abilita u Modu di Sessione Enhanced per l'ospiti Arch Linux in Hyper-V
Abilita u Modu di Sessione Enhanced per l'ospiti Arch Linux in Hyper-V

Cunnettamu. Vedemu a finestra di login XRDP:

Abilita u Modu di Sessione Enhanced per l'ospiti Arch Linux 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:

Abilita u Modu di Sessione Enhanced per l'ospiti Arch Linux 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.

Se per una certa ragione ci hè un desideriu di utilizà u cliente RDP integratu in Windows invece di l'applicazione vmconnect o, per esempiu, cunnette à sta macchina da un'altra macchina, allora vi tuccherà à cambià u schedariu. /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

Add a comment