
Utilizarea mașinilor virtuale pe Linux În Hyper-V, imediat după deschidere, este o experiență puțin mai puțin confortabilă decât cu sistemul pentru oaspeți Windows-mașini. Motivul este că Hyper-V nu a fost conceput inițial pentru utilizare pe desktop; nu puteți instala pur și simplu pachetul Guest Additions și să obțineți accelerare grafică funcțională, clipboard, directoare partajate și alte avantaje, așa cum puteți face cu VirtualBox.
Hyper-V în sine oferă - 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 guest, care includ, desigur, Windows, în aplicația Conexiune mașină virtuală (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 Windows în Hyper-V imediat după instalare. Cu invitați activați 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 hipervizorul). Dacă pentru Ubuntu în aplicația VMCreate care vine cu Hyper-V pe edițiile desktop Windows, există un șablon special pregătit pentru o mașină virtuală în care un server RDP funcționează cu vsock deja preinstalat, apoi cu alte distribuții este din ce în ce mai puțin clar - de exemplu, autorul Am reușit să activăm ESM în Fedora. Aici activăm și Enhanced Session Mode 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 hypervActivează serviciile VSS, schimbă si fisiere:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneInstalare XRDP
repertoriu oferă scripturi pe GitHub care automatizează procesul de instalare și configurare a XRDP pentru Arch Linux и UbuntuSă instalăm Git, dacă nu este deja instalat, împreună cu un compilator și alte programe software pentru compilații manuale, apoi să clonăm repozitoriul:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archLa momentul scrierii acestui articol, cea mai recentă lansare a XRDP, care este instalată de script makepkg.shpropus în depozit este 0.9.11, 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 , 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.gitSă 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, unități conducătoare și scripturi de pornire XRDP sub căile de fișiere utilizate în Arch Linux, conține un patch pentru script instfiles/xrdp.sh, care la momentul scrierii 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 -0600Construiț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.shScriptul 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_nodelayAdăugați la fișier ~/.xinitrc lansarea managerului de ferestre/mediu desktop preferat, care va fi executat la pornirea serverului X:
% echo "exec i3" > ~/.xinitrcSă 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 HvSocketSă 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.


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

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:

Clipboard-ul funcționează bine. Nu puteți arunca imprimante înăuntru, acest lucru nu numai că nu este acceptat, ci și . 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ă, din orice motiv, doriți să utilizați aplicația vmconnect încorporată în loc de Windows client RDP sau, de exemplu, 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:
- Rapoarte de erori pe GitHub: ,
Sursa: www.habr.com
