Activați modul de sesiune îmbunătățit pentru oaspeții Arch Linux în Hyper-V

Activați modul de sesiune îmbunătățit pentru oaspeții Arch Linux în Hyper-V

Utilizarea mașinilor virtuale Linux în Hyper-V este o experiență oarecum mai puțin confortabilă decât cu mașinile invitate Windows. Motivul pentru aceasta este că Hyper-V nu a fost inițial destinat utilizării desktop; nu poți pur și simplu să instalezi pachetul de adăugări pentru invitați și să obții accelerare grafică, clipboard, directoare partajate și alte bucurii ale vieții, așa cum se întâmplă în VirtualBox.

Hyper-V în sine oferă servicii multiple de integrare - deci, oaspeții pot folosi serviciul de copiere umbră (VSS) al gazdei, oaspeții pot trimite un semnal de închidere, oaspeții pot sincroniza ora sistemului cu gazda de virtualizare, fișierele pot fi schimbate cu mașina virtuală de la gazdă (Copy-VMFile în PowerShell). Pentru unele sisteme de operare invitați, inclusiv, desigur, Windows, în aplicația Virtual Machine Connection (vmconnect.exe) Modul de sesiune îmbunătățit este disponibil, care funcționează prin protocolul RDP și vă permite să redirecționați dispozitivele de disc și imprimantele către mașina virtuală, precum și să utilizați clipboardul partajat.

Modul sesiune îmbunătățit funcționează imediat după instalare pe Windows în Hyper-V. Cu oaspeții pe Linux, trebuie să instalați un server RDP care acceptă vsock (un spațiu special de adrese de rețea virtuală în Linux conceput pentru a comunica cu hypervisorul). Dacă pentru Ubuntu, aplicația VMCreate care vine cu Hyper-V pe edițiile desktop de Windows are un șablon special de mașină virtuală pregătit în care un server RDP rulează cu vsock XRDP deja preinstalat, apoi cu alte distribuții este din ce în ce mai puțin clar - de exemplu, autorul acest post s-a dovedit a activa ESM în Fedora. Aici activăm și Modul de sesiune îmbunătățit pentru mașina virtuală Arch Linux.

Instalarea serviciilor de integrare

Totul este mai mult sau mai puțin simplu aici, trebuie doar să instalăm pachetul hyperv din depozitul comunității:

% sudo pacman -S hyperv

Activează serviciile VSS, schimbă metadate si fisiere:

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

Instalare XRDP

repertoriu linux-vm-tools pe GitHub oferă scripturi care automatizează procesul de instalare și configurare XRDP pentru Arch Linux și Ubuntu. Instalați Git, dacă nu este deja instalat, împreună cu compilatorul și alt software pentru versiuni manuale, apoi clonați depozitul:

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

La momentul scrierii acestui articol, cea mai recentă lansare a XRDP, care este instalată de script makepkg.shpropus în depozit este 0.9.11, în care analizarea este întreruptă vsock://-adrese, așa că trebuie să instalați manual XRDP din Git și driverul Xorg pentru acesta din AUR. Patch-ul pentru XRDP oferit în AUR este, de asemenea, ușor depășit, așa că va trebui să editați manual PKGBUILD și patch-ul.

Clonăm depozitele cu PKGBUILD din AUR (de obicei această procedură, împreună cu asamblarea, este automatizată de programe precum ura, dar autorul a făcut toată această procedură pe un sistem curat):

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

Să instalăm mai întâi XRDP. Să deschidem fișierul PKGBUILD orice editor de text.

Să edităm parametrii de construcție. PKGBUILD pentru construirea XRDP din Git nu include suport vsock în build, așa că hai să-l activăm noi înșine:

 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
 }

Într-un petic arch-config.diff, care editează unități și script-uri de pornire XRDP sub căile către fișierele utilizate în Arch Linux, conține, printre altele, un patch pentru script instfiles/xrdp.sh, care la momentul scrierii a fost eliminat din distribuția XRDP, deci patch-ul va trebui editat manual:

  [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

Construiți și instalați pachetul cu comanda % makepkg --skipchecksums -si (cheie --skipchecksums este necesar pentru a dezactiva verificarea sumei de control a fișierelor sursă, deoarece le-am editat manual).

Să mergem la director xorgxrdp-devel-git, după care pur și simplu construim pachetul cu comanda % makepkg -si.

Să mergem la director linux-vm-tools/arch și rulați scriptul install-config.sh, care setează setările XRDP, PolicyKit și PAM:

% sudo ./install-config.sh

Scriptul instalează setările vechi use_vsock, care este ignorată începând cu versiunea 0.9.11, așa că haideți să edităm fișierul de configurare /etc/xrdp/xrdp.ini manual:

 ;   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

Adăugați la fișier ~/.xinitrc lansarea managerului de ferestre/mediu desktop preferat, care va fi executat la pornirea serverului X:

% echo "exec i3" > ~/.xinitrc

Să oprim mașina virtuală. Activați transportul vsock pentru VM rulând următoarea comandă în PowerShell ca administrator:

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

Să pornim din nou mașina virtuală.

conexiune

De îndată ce serviciul XRDP pornește după pornirea sistemului, aplicația vmconnect va determina acest lucru și elementul de meniu va deveni disponibil. Vizualizare -> Sesiune îmbunătățită. Când selectați acest element, ni se va solicita să setăm rezoluția ecranului și pe filă Resurse locale în dialogul care se deschide, puteți selecta dispozitivele redirecționate în cadrul sesiunii RDP.

Activați modul de sesiune îmbunătățit pentru oaspeții Arch Linux în Hyper-V
Activați modul de sesiune îmbunătățit pentru oaspeții Arch Linux în Hyper-V

Să ne conectăm. Vom vedea fereastra de conectare XRDP:

Activați modul de sesiune îmbunătățit pentru oaspeții Arch Linux în Hyper-V

Introduceți numele dvs. de utilizator și parola.

Folosi

Profitul din aceste manipulări este vizibil: sesiunea RDP funcționează mult mai receptivă decât atunci când lucrați cu un afișaj virtual fără sesiune îmbunătățită. Discurile redirecționate în interiorul VM prin RDP sunt disponibile în director ${HOME}/shared-drives:

Activați modul de sesiune îmbunătățit pentru oaspeții Arch Linux în Hyper-V

Clipboard-ul funcționează bine. Nu puteți arunca imprimante înăuntru, acest lucru nu numai că nu este acceptat, ci și întrerupe redirecționarea discului. Nici sunetul nu funcționează, dar autorul nu a avut nevoie de el. Pentru a captura comenzi rapide de la tastatură precum Alt + Tab, trebuie să extindeți vmconnect la ecran complet.

Dacă dintr-un anumit motiv există dorința de a utiliza clientul RDP încorporat în Windows în locul aplicației vmconnect sau, de exemplu, să vă conectați la această mașină de pe o altă mașină, atunci va trebui să modificați fișierul /etc/xrdp/xrdp.ini port pe tcp://:3389. Dacă mașina virtuală este conectată la comutatorul implicit și primește setări de rețea prin DHCP, atunci vă puteți conecta la ea de la gazdă la название_машины.mshome.net. Vă puteți conecta la TTY numai din aplicația vmconnect dezactivând Modul îmbunătățit.

Surse folosite:

  1. Hyper-V Arch Wiki
  2. Rapoarte de erori pe GitHub: 1, 2

Sursa: www.habr.com

Adauga un comentariu