Abilitazione della modalità sessione avanzata per Arch Linux-ospiti in Hyper-V

Abilitazione della modalità sessione avanzata per Arch Linux-ospiti in Hyper-V

Utilizzo di macchine virtuali su Linux in Hyper-V di default è un'esperienza leggermente meno confortevole rispetto a quella con guest Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Hyper-V stesso fornisce molteplici servizi di integrazione - quindi, gli ospiti possono utilizzare il servizio di copia shadow (VSS) dell'host, gli ospiti possono inviare un segnale di spegnimento, gli ospiti possono sincronizzare l'ora del sistema con l'host di virtualizzazione, i file possono essere scambiati con la macchina virtuale dall'host (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) È disponibile la modalità sessione avanzata, che funziona tramite il protocollo RDP e consente di inoltrare dispositivi disco e stampanti alla macchina virtuale, nonché utilizzare gli appunti condivisi.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер xrdp già preinstallato, quindi con altre distribuzioni è sempre meno chiaro, ad esempio l'autore questo post получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.

Installazione di servizi di integrazione

Tutto è più o meno semplice qui, dobbiamo solo installare il pacchetto hyperv dal repository della comunità:

% sudo pacman -S hyperv

Abilita servizi VSS, scambio metadati e file:

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

Installazione XRDP

deposito 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

Al momento della stesura di questo documento, la versione più recente di XRDP, installata dallo script makepkg.shproposto nel repository è 0.9.11, in cui l'analisi è interrotta vsock://-addresses, quindi devi installare XRDP da Git e il driver Xorg da AUR manualmente. Anche la patch per XRDP offerta in AUR è leggermente obsoleta, quindi dovrai modificare manualmente il PKGBUILD e la patch.

Cloniamo i repository con PKGBUILD da AUR (solitamente questa procedura, insieme all'assembly, è automatizzata da programmi come yay, ma l'autore ha eseguito l'intera procedura su un sistema pulito):

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

Installiamo prima XRDP stesso. Apriamo il file PKGBUILD qualsiasi editor di testo.

Modifichiamo i parametri di build. Il PKGBUILD per la creazione di XRDP da Git non include il supporto vsock nella build, quindi abilitiamolo 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 una toppa arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, che al momento della scrittura è stato cancellato dalla distribuzione XRDP, quindi la patch dovrà essere modificata 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

Compila e installa il pacchetto con il comando % makepkg --skipchecksums -si (chiave --skipchecksums è necessario per disabilitare la verifica del checksum dei file di origine, poiché li abbiamo modificati manualmente).

Andiamo alla rubrica xorgxrdp-devel-git, dopodiché costruiamo semplicemente il pacchetto con il comando % makepkg -si.

Andiamo alla rubrica linux-vm-tools/arch ed eseguire lo script install-config.sh, che imposta le impostazioni XRDP, PolicyKit e PAM:

% sudo ./install-config.sh

Lo script installa l'impostazione legacy use_vsock, che viene ignorato dalla versione 0.9.11, quindi modifichiamo il file di configurazione /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

Aggiungi al file ~/.xinitrc avviando il tuo gestore di finestre/ambiente desktop preferito, che verrà eseguito all'avvio del server X:

% echo "exec i3" > ~/.xinitrc

Spegniamo la macchina virtuale. Abilita il trasporto vsock per la VM eseguendo il seguente comando in PowerShell come amministratore:

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

Accendiamo di nuovo la macchina virtuale.

Подключение

Non appena il servizio XRDP si avvia dopo l'avvio del sistema, l'applicazione vmconnect lo determinerà e la voce di menu diventerà disponibile. Visualizzare -> Sessione potenziata. Quando selezioni questo elemento, ci verrà chiesto di impostare la risoluzione dello schermo e nella scheda Risorse locali nella finestra di dialogo che si apre, puoi selezionare i dispositivi inoltrati all'interno della sessione RDP.

Abilitazione della modalità sessione avanzata per Arch Linux-ospiti in Hyper-V
Abilitazione della modalità sessione avanzata per Arch Linux-ospiti in Hyper-V

Connettiamoci. Vedremo la finestra di accesso XRDP:

Abilitazione della modalità sessione avanzata per Arch Linux-ospiti in Hyper-V

Inserisci il tuo nome utente e password.

l'uso di

Il profitto di queste manipolazioni è notevole: la sessione RDP funziona in modo molto più reattivo rispetto a quando si lavora con un display virtuale senza sessione avanzata. I dischi inoltrati all'interno della VM tramite RDP sono disponibili nella directory ${HOME}/shared-drives:

Abilitazione della modalità sessione avanzata per Arch Linux-ospiti in Hyper-V

Gli appunti funzionano correttamente. Non puoi lanciare stampanti all'interno, questo non solo non è supportato, ma anche interrompe l'inoltro del disco. Anche il suono non funziona, ma l'autore non ne aveva bisogno. Per acquisire scorciatoie da tastiera come Alt + Tab, è necessario espandere vmconnect a schermo intero.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port su tcp://:3389. Se la macchina virtuale è connessa allo Switch predefinito e riceve le impostazioni di rete tramite DHCP, è possibile connettersi dall'host all'indirizzo название_машины.mshome.net. Puoi accedere a TTY solo dall'applicazione vmconnect disattivando la modalità avanzata.

Fonti utilizzate:

  1. Wiki dell'arco di Hyper-V
  2. Segnalazioni di bug su GitHub: 1, 2

Fonte: habr.com

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster