Activer le mode de session amélioré pour les invités Arch Linux dans Hyper-V

Activer le mode de session amélioré pour les invités Arch Linux dans Hyper-V

L'utilisation de machines virtuelles Linux dans Hyper-V prêtes à l'emploi est un peu moins confortable qu'avec des machines Windows invitées. La raison en est qu'Hyper-V n'était pas initialement destiné à être utilisé sur un ordinateur de bureau. vous ne pouvez pas simplement installer le package d'ajouts d'invités et obtenir une accélération graphique, un presse-papiers, des répertoires partagés et d'autres joies de la vie, comme cela se produit dans VirtualBox.

Hyper-V lui-même fournit plusieurs services d'intégration - ainsi, les invités peuvent utiliser le service de cliché instantané (VSS) de l'hôte, les invités peuvent envoyer un signal d'arrêt, les invités peuvent synchroniser l'heure du système avec l'hôte de virtualisation, les fichiers peuvent être échangés avec la machine virtuelle à partir de l'hôte (Copy-VMFile dans PowerShell). Pour certains systèmes d'exploitation invités, y compris, bien sûr, Windows, dans l'application Virtual Machine Connection (vmconnect.exe) Le mode de session amélioré est disponible. Il fonctionne via le protocole RDP et vous permet de transférer des périphériques de disque et des imprimantes vers la machine virtuelle, ainsi que d'utiliser le presse-papiers partagé.

Le mode de session amélioré fonctionne immédiatement sous Windows dans Hyper-V juste après l'installation. Avec des invités sous Linux, vous devez installer un serveur RDP qui prend en charge vsock (un espace d'adressage réseau virtuel spécial sous Linux conçu pour communiquer avec l'hyperviseur). Si pour Ubuntu, l'application VMCreate fournie avec Hyper-V sur les éditions de bureau de Windows a un modèle de machine virtuelle spécialement préparé dans lequel un serveur RDP s'exécutant avec vsock XRDP déjà préinstallé, alors avec d'autres distributions c'est de moins en moins clair - par exemple, l'auteur ce post il s'est avéré activer ESM dans Fedora. Ici, nous activons également le mode de session amélioré pour la machine virtuelle Arch Linux.

Installation des services d'intégration

Tout est plus ou moins simple ici, il suffit d'installer le package hyperv du référentiel communautaire :

% sudo pacman -S hyperv

Activer les services VSS, échanger métadonnées et fichiers :

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

Installation XRDP

dépôt Linux-VM-Tools sur GitHub fournit des scripts qui automatisent le processus d'installation et de configuration de XRDP pour Arch Linux et Ubuntu. Installez Git, s'il n'est pas déjà installé, ainsi que le compilateur et d'autres logiciels pour les compilations manuelles, puis clonez le dépôt :

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

Au moment d'écrire ces lignes, la version la plus récente de XRDP, qui est installée par le script makepkg.shproposé dans le référentiel est 0.9.11, dans lequel l'analyse est cassée vsock://-adresses, vous devez donc installer XRDP à partir de Git et le pilote Xorg correspondant à partir d'AUR manuellement. Le correctif pour XRDP proposé dans l'AUR est également légèrement obsolète, vous devrez donc modifier manuellement le PKGBUILD et le correctif.

Nous clonons les référentiels avec les PKGBUILD de l'AUR (généralement cette procédure, ainsi que l'assemblage, est automatisée par des programmes comme yay, mais l'auteur a effectué toute cette procédure sur un système propre) :

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

Installons d'abord XRDP lui-même. Ouvrons le fichier PKGBUILD n'importe quel éditeur de texte.

Modifions les paramètres de construction. Le PKGBUILD pour la construction de XRDP à partir de Git n'inclut pas le support vsock dans la construction, alors activons-le nous-mêmes :

 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
 }

Dans un patch arch-config.diff, qui édite les unités et les scripts de démarrage XRDP sous les chemins d'accès aux fichiers utilisés dans Arch Linux, contient, entre autres, un correctif pour le script instfiles/xrdp.sh, qui au moment de la rédaction a été supprimé depuis la distribution XRDP, le patch devra donc être édité manuellement :

  [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

Construisez et installez le package avec la commande % makepkg --skipchecksums -si (clé --skipchecksums est nécessaire pour désactiver la vérification de la somme de contrôle des fichiers source, car nous les avons modifiés manuellement).

Allons au répertoire xorgxrdp-devel-git, après quoi nous construisons simplement le package avec la commande % makepkg -si.

Allons au répertoire linux-vm-tools/arch et exécutez le script install-config.sh, qui définit les paramètres XRDP, PolicyKit et PAM :

% sudo ./install-config.sh

Le script installe le paramètre hérité use_vsock, qui est ignoré depuis la version 0.9.11, éditons donc le fichier de configuration /etc/xrdp/xrdp.ini manuellement:

 ;   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

Ajouter au fichier ~/.xinitrc lancer votre gestionnaire de fenêtres/environnement de bureau préféré, qui sera exécuté au démarrage du serveur X :

% echo "exec i3" > ~/.xinitrc

Désactivons la machine virtuelle. Activez le transport vsock pour la VM en exécutant la commande suivante dans PowerShell en tant qu'administrateur :

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

Allumons à nouveau la machine virtuelle.

Подключение

Dès que le service XRDP démarre après le démarrage du système, l'application vmconnect le déterminera et l'élément de menu deviendra disponible. Voir -> Séance renforcée. Lorsque vous sélectionnez cet élément, nous serons invités à définir la résolution de l'écran, et sur l'onglet Ressources locales dans la boîte de dialogue qui s'ouvre, vous pouvez sélectionner les appareils transférés dans la session RDP.

Activer le mode de session amélioré pour les invités Arch Linux dans Hyper-V
Activer le mode de session amélioré pour les invités Arch Linux dans Hyper-V

Connectons-nous. Nous verrons la fenêtre de connexion XRDP :

Activer le mode de session amélioré pour les invités Arch Linux dans Hyper-V

Entrez votre nom d'utilisateur et votre mot de passe.

l'utilisation de

Le bénéfice de ces manipulations est perceptible : la session RDP fonctionne de manière beaucoup plus réactive que lorsque l'on travaille avec un affichage virtuel sans Enhanced Session. Les disques transférés à l'intérieur de la VM via RDP sont disponibles dans le répertoire ${HOME}/shared-drives:

Activer le mode de session amélioré pour les invités Arch Linux dans Hyper-V

Le presse-papiers fonctionne bien. Vous ne pouvez pas jeter d'imprimantes à l'intérieur, non seulement ce n'est pas pris en charge, mais aussi interrompt le transfert de disque. Le son ne fonctionne pas non plus, mais l'auteur n'en avait pas besoin. Afin de capturer des raccourcis clavier comme Alt + Tab, vous devez développer vmconnect en plein écran.

Si, pour une raison quelconque, vous souhaitez utiliser le client RDP intégré à Windows au lieu de l'application vmconnect ou, par exemple, vous connecter à cette machine à partir d'une autre machine, vous devrez alors modifier le fichier. /etc/xrdp/xrdp.ini port sur tcp://:3389. Si la machine virtuelle est connectée au commutateur par défaut et reçoit les paramètres réseau via DHCP, vous pouvez vous y connecter depuis l'hôte à название_машины.mshome.net. Vous ne pouvez vous connecter à TTY qu'à partir de l'application vmconnect en désactivant le mode amélioré.

Sources utilisées:

  1. Wiki Arch Hyper-V
  2. Rapports de bugs sur GitHub : 1, 2

Source: habr.com

Ajouter un commentaire