Activarea modului de sesiune îmbunătățit pentru Arch Linux-invitați în Hyper-V

Activarea modului de sesiune îmbunătățit pentru Arch Linux-invitați în Hyper-V

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-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в 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 в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении 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.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP deja preinstalat, apoi cu alte distribuții este din ce în ce mai puțin clar - de exemplu, autorul acest post получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с 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 на 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

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, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту 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.

Activarea modului de sesiune îmbunătățit pentru Arch Linux-invitați în Hyper-V
Activarea modului de sesiune îmbunătățit pentru Arch Linux-invitați în Hyper-V

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

Activarea modului de sesiune îmbunătățit pentru Arch Linux-invitați î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:

Activarea modului de sesiune îmbunătățit pentru Arch Linux-invitați î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.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /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

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster