Włączanie trybu rozszerzonej sesji dla Arch Linux-goście w Hyper-V

Włączanie trybu rozszerzonej sesji dla Arch Linux-goście w Hyper-V

Korzystanie z maszyn wirtualnych na Linux w Hyper-V od razu po wyjęciu z pudełka jest nieco mniej komfortowe niż w przypadku gościa Windows-maszyn. Powodem tego jest fakt, że Hyper-V nie został pierwotnie zaprojektowany do użytku na komputerach stacjonarnych; nie można po prostu zainstalować pakietu Guest Additions i uzyskać działającej akceleracji grafiki, schowka, katalogów współdzielonych i innych udogodnień, jak w przypadku VirtualBox.

Sama funkcja Hyper-V zapewnia wiele usług integracyjnych - więc goście mogą korzystać z usługi kopiowania w tle (VSS) hosta, goście mogą wysłać sygnał zamknięcia, goście mogą synchronizować czas systemowy z hostem wirtualizacji, pliki mogą być wymieniane z maszyną wirtualną z hosta (Copy-VMFile w PowerShell). W przypadku niektórych gościnnych systemów operacyjnych, które oczywiście obejmują Windows, w aplikacji Połączenie z maszyną wirtualną (vmconnect.exe) Dostępny jest tryb Enhanced Session Mode, który działa poprzez protokół RDP i umożliwia przekazywanie urządzeń dyskowych i drukarek do maszyny wirtualnej, a także korzystanie ze współdzielonego schowka.

Tryb ulepszonej sesji działa od razu po wyjęciu z pudełka Windows w Hyper-V natychmiast po instalacji. Z gośćmi na Linux musisz zainstalować serwer RDP obsługujący vsock (specjalną wirtualną przestrzeń adresową sieci) Linux, przeznaczony do komunikacji z hiperwizorem). Jeśli dla Ubuntu w aplikacji VMCreate, która jest dostarczana z wersjami Hyper-V na komputerach stacjonarnych Windowsistnieje specjalnie przygotowany szablon maszyny wirtualnej, w którym serwer RDP współpracuje z vsock XRDP już preinstalowany, to przy innych dystrybucjach jest to coraz mniej jasne - na przykład autor ten post Udało nam się włączyć ESM w Fedorze. Tutaj również aktywujemy tryb Enhanced Session Mode dla maszyny wirtualnej Arch. Linux.

Instalowanie usług integracyjnych

Tutaj wszystko jest mniej więcej proste, wystarczy zainstalować pakiet hyperv z repozytorium społeczności:

% sudo pacman -S hyperv

Włącz usługi VSS, wymień metadane i pliki:

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

Instalacja XRDP

magazyn narzędzia linux-vm udostępnia skrypty na GitHubie, które automatyzują proces instalacji i konfiguracji XRDP dla Arch Linux и UbuntuZainstalujmy Gita, jeśli jeszcze nie jest zainstalowany, a także kompilator i inne oprogramowanie do ręcznych kompilacji, a następnie sklonujmy repozytorium:

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

W chwili pisania tego tekstu najnowsza wersja XRDP, która jest instalowana przez skrypt makepkg.shproponowana w repozytorium to 0.9.11, w którym parsowanie jest zepsute vsock://-addresses, więc musisz ręcznie zainstalować XRDP z Git i sterownik Xorg z AUR. Łatka dla XRDP oferowana w AUR jest również nieco przestarzała, więc będziesz musiał ręcznie edytować PKGBUILD i łatkę.

Klonujemy repozytoria za pomocą PKGBUILD z AUR (zwykle ta procedura wraz z montażem jest automatyzowana przez programy takie jak yay, ale autor wykonał całą procedurę na czystym systemie):

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

Najpierw zainstalujmy sam XRDP. Otwórzmy plik PKGBUILD dowolny edytor tekstu.

Edytujmy parametry kompilacji. PKGBUILD do budowania XRDP z Git nie zawiera obsługi vsock w kompilacji, więc włączmy to sami:

 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
 }

W patchu arch-config.diff, jednostki rządzące i skrypty startowe XRDP w ścieżkach plików używanych w Arch Linux, zawiera poprawkę do skryptu instfiles/xrdp.sh, który w momencie pisania zostało usunięte z dystrybucji XRDP, więc patch trzeba będzie edytować ręcznie:

  [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

Zbuduj i zainstaluj pakiet za pomocą polecenia % makepkg --skipchecksums -si (klucz --skipchecksums jest potrzebne do wyłączenia weryfikacji sumy kontrolnej plików źródłowych, ponieważ edytowaliśmy je ręcznie).

Przejdźmy do katalogu xorgxrdp-devel-git, po czym po prostu budujemy pakiet za pomocą polecenia % makepkg -si.

Przejdźmy do katalogu linux-vm-tools/arch i uruchom skrypt install-config.sh, który ustawia ustawienia XRDP, PolicyKit i PAM:

% sudo ./install-config.sh

Skrypt instaluje starsze ustawienia use_vsock, który jest ignorowany od wersji 0.9.11, więc edytujmy plik konfiguracyjny /etc/xrdp/xrdp.ini ręcznie:

 ;   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

Dodaj do pliku ~/.xinitrc uruchomienie preferowanego menedżera okien/środowiska pulpitu, które zostanie wykonane po uruchomieniu serwera X:

% echo "exec i3" > ~/.xinitrc

Wyłączmy maszynę wirtualną. Włącz transport vsock dla maszyny wirtualnej, uruchamiając następujące polecenie w programie PowerShell jako administrator:

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

Włączmy ponownie maszynę wirtualną.

Połączenie

Gdy tylko usługa XRDP zostanie uruchomiona po uruchomieniu systemu, aplikacja vmconnect to ustali i pozycja menu stanie się dostępna. Zobacz -> Ulepszona sesja. Po wybraniu tego elementu zostaniemy poproszeni o ustawienie rozdzielczości ekranu i na zakładce Zasoby lokalne w oknie dialogowym, które zostanie otwarte, możesz wybrać urządzenia przekazywane w ramach sesji RDP.

Włączanie trybu rozszerzonej sesji dla Arch Linux-goście w Hyper-V
Włączanie trybu rozszerzonej sesji dla Arch Linux-goście w Hyper-V

Połączmy się. Zobaczymy okno logowania XRDP:

Włączanie trybu rozszerzonej sesji dla Arch Linux-goście w Hyper-V

Wprowadź swoją nazwę użytkownika i hasło.

Używać

Zysk z tych manipulacji jest zauważalny: sesja RDP działa znacznie bardziej responsywnie niż podczas pracy z wirtualnym wyświetlaczem bez Enhanced Session. Dyski przekazywane wewnątrz maszyny wirtualnej za pośrednictwem protokołu RDP są dostępne w katalogu ${HOME}/shared-drives:

Włączanie trybu rozszerzonej sesji dla Arch Linux-goście w Hyper-V

Schowek działa dobrze. Nie można wrzucać drukarek do środka, to nie tylko nie jest obsługiwane, ale także przerywa przekazywanie dysku. Dźwięk również nie działa, ale autor go nie potrzebował. Aby przechwycić skróty klawiaturowe, takie jak Alt + Tab, musisz rozwinąć vmconnect do pełnego ekranu.

Jeśli z jakiegokolwiek powodu chcesz użyć wbudowanej aplikacji vmconnect zamiast Windows Jeśli chcesz nawiązać połączenie z tym komputerem z innego komputera, a następnie nawiązać połączenie z klientem RDP, konieczna będzie zmiana pliku /etc/xrdp/xrdp.ini port na tcp://:3389. Jeśli maszyna wirtualna jest podłączona do przełącznika domyślnego i otrzymuje ustawienia sieciowe przez DHCP, możesz połączyć się z nią z hosta pod adresem название_машины.mshome.net. Możesz zalogować się do TTY tylko z aplikacji vmconnect, wyłączając tryb rozszerzony.

Wykorzystane źródła:

  1. Hyper-V Arch Wiki
  2. Raporty o błędach w GitHub: 1, 2

Źródło: www.habr.com

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster