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

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

L'utilisation des machines virtuelles sur Linux dans Hyper-V, dĂšs le dĂ©part, est un peu moins confortable que sur des machines Windows invitĂ©s. La raison en est qu'Hyper-V n’était pas Ă  l'origine destinĂ© Ă  un usage de bureau ; on ne peut pas simplement installer le paquet des composants invitĂ©s et obtenir l'accĂ©lĂ©ration graphique fonctionnelle, le presse-papiers partagĂ©, des rĂ©pertoires partagĂ©s et d'autres commoditĂ©s, comme cela se produit dans VirtualBox.

Hyper-V fournit lui-mĂȘme plusieurs services d'intĂ©gration — ainsi, les invitĂ©s peuvent utiliser le service de copie de sauvegarde (VSS) de l'hĂŽte, un signe d'arrĂȘt peut ĂȘtre envoyĂ© aux invitĂ©s, les invitĂ©s peuvent synchroniser l'heure systĂšme avec l'hĂŽte de virtualisation, et l'Ă©change de fichiers est possible depuis l'hĂŽte vers la machine virtuelle (Copy-VMFile dans PowerShell). Pour certains systĂšmes d'exploitation invitĂ©s, dont Windows fait bien sĂ»r partie, le mode de session amĂ©liorĂ© est disponible dans l'application Virtual Machine Connection (vmconnect.exe), qui fonctionne sur le protocole RDP et permet de rediriger des pĂ©riphĂ©riques de disque et des imprimantes dans la machine virtuelle, ainsi que d'utiliser un presse-papiers partagĂ©.

Le mode de session amĂ©liorĂ© fonctionne dĂšs l'installation sur Windows dans Hyper-V. Avec des invitĂ©s sous Linux, il faut installer un serveur RDP compatible avec vsock (un espace d'adresse rĂ©seau virtuel spĂ©cial sous Linux, conçu pour communiquer avec l'hyperviseur). Si pour Ubuntu dans l'application VMCreate, fournie avec Hyper-V sur les Ă©ditions de bureau de Windows, il y a un modĂšle de machine virtuelle spĂ©cialement prĂ©parĂ© avec le serveur RDP fonctionnant avec vsock XRDP dĂ©jĂ  prĂ©installĂ©, les choses sont moins claires pour d'autres distributions — par exemple, l'auteur de ce post a rĂ©ussi Ă  activer ESM dans Fedora. Ici, nous allons activer le mode de session amĂ©liorĂ© pour une machine virtuelle avec Arch Linux.

Installation des services d'intégration

Ici, tout est relativement simple, il suffit d'installer le paquet hyperv depuis le repository community :

% sudo pacman -S hyperv

Nous allons activer les services VSS, d'échange de métadonnées et de fichiers :

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

Installation de XRDP

DépÎt linux-vm-tools sur GitHub propose des scripts automatisant le processus d'installation et de configuration de XRDP pour Arch Linux et Ubuntu. Installons Git, si ce n'est pas encore fait, ainsi qu'un compilateur et d'autres logiciels pour des assemblages manuels, puis clonons le repository :

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

Au moment de la rédaction de cet article, la version la plus récente d'XRDP, installée par le script makepkg.sh, proposée dans le dépÎt, est 0.9.11, dans laquelle le parsing vsock://-des adresses est cassé, il faudra donc installer XRDP depuis Git et le pilote Xorg à partir de l'AUR manuellement. Le patch pour XRDP proposé dans l'AUR est également légÚrement obsolÚte, il faudra donc éditer le PKGBUILD et le patch manuellement.

Clonez les dépÎts contenant les PKGBUILD de l'AUR (en général, cette procédure, ainsi que la compilation, est automatisée par des programmes comme yay, mais l'auteur a réalisé 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

Commençons par installer XRDP. Ouvrons le fichier des fichiers PKGBUILD avec n'importe quel éditeur de texte.

Éditons les paramĂštres de compilation. Le PKGBUILD pour compiler XRDP Ă  partir de Git n'inclut pas le support de vsock lors de la compilation, il faut donc l'activer soi-mĂȘme:

 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 le patch arch-config.diff, qui modifie les unités et les scripts de démarrage d'XRDP pour pointer vers les fichiers utilisés dans Arch Linux, il y a également un patch pour le script instfiles/xrdp.sh, qui à l'heure de la rédaction de cet article avait été supprimé de la distribution d'XRDP, il faudra donc éditer le patch à la main:

  [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: démarre 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

Construisons et installons le package avec la commande % makepkg --skipchecksums -si (la clé --skipchecksums est nécessaire pour désactiver la vérification des sommes de contrÎle des fichiers sources, étant donné que nous les avons modifiés manuellement).

Allons dans le répertoire xorgxrdp-devel-git, puis nous allons simplement compiler le package avec la commande % makepkg -si.

Allons dans le répertoire linux-vm-tools/arch et exécutons le script install-config.sh, qui installe les configurations pour XRDP, PolicyKit et PAM:

% sudo ./install-config.sh

Le script installe une ancienne configuration use_vsock, qui est ignorée depuis la version 0.9.11, il faut donc éditer le fichier de configuration /etc/xrdp/xrdp.ini manuellement:

 ;   port=vsock://:
-port=3389
+port=vsock://-1:3389

 ; 'port' ci-dessus doit ĂȘtre connectĂ© via vsock plutĂŽt que tcp
 ; utilisez cela uniquement avec un nombre seul dans le port ci-dessus
 ; préférez utiliser vsock://: ci-dessus
-use_vsock=true
+;use_vsock=true

 ; régulez si le socket d'écoute utilise l'option socket tcp_nodelay

Ajoutons dans le fichier ~/.xinitrc lancement de votre gestionnaire de fenĂȘtres ou de votre environnement de bureau prĂ©fĂ©rĂ©, qui sera exĂ©cutĂ© au dĂ©marrage du serveur X :

% echo "exec i3" > ~/.xinitrc

Éteignez la machine virtuelle. Activez le transport vsock pour la machine virtuelle en exĂ©cutant la commande suivante dans PowerShell en tant qu'administrateur :

PS Admin > Set-VM -VMName NOM_DE_LA_MACHINE -EnhancedSessionTransportType HvSocket

Redémarrez la machine virtuelle.

Connexion

Une fois le service XRDP démarré aprÚs le lancement du systÚme, l'application vmconnect le détectera et le point sera disponible dans le menu Afficher -> Session améliorée. En choisissant ce point, on nous proposera de définir la résolution de l'écran, et dans l'onglet Ressources locales de la boßte de dialogue ouverte, nous pourrons choisir les périphériques transférés à l'intérieur de la session RDP.

Activer le mode de session améliorée pour les invités Arch Linux dans Hyper-V
Activer le mode de session améliorée 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ée pour les invités Arch Linux dans Hyper-V

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

Utilisation

Le profit de ces manipulations est évident : la session RDP est beaucoup plus réactive que lorsque l'on travaille avec un affichage virtuel sans la session améliorée. Les disques transférés dans la VM via RDP sont accessibles dans le répertoire ${HOME}/shared-drives:

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

Le presse-papiers fonctionne normalement. Il n'est pas possible de transférer des imprimantes à l'intérieur, cela n'est non seulement pas supporté, mais casse le transfert de disques. Le son ne fonctionne pas non plus, mais cela n'était pas nécessaire pour l'auteur. Pour que les combinaisons de touches comme Alt+Tab soient capturées, il faut mettre vmconnect en plein écran.

Si pour une raison quelconque vous souhaitez utiliser l'application RDP intĂ©grĂ©e Ă  Windows plutĂŽt que vmconnect, ou par exemple, vous connecter Ă  cette machine depuis une autre machine, il faudra changer dans le fichier /etc/xrdp/xrdp.ini port sur tcp://:3389. Si la machine virtuelle est connectĂ©e au Default Switch et obtient des paramĂštres rĂ©seau via DHCP, elle peut ĂȘtre atteinte depuis l'hĂŽte Ă  l'adresse nom_de_la_machine.mshome.net. L'entrĂ©e en TTY ne peut se faire que depuis l'application vmconnect, en dĂ©sactivant le mode amĂ©liorĂ©.

Sources utilisées:

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

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster