Activa o modo de sesión mellorado para os convidados de Arch Linux en Hyper-V

Activa o modo de sesión mellorado para os convidados de Arch Linux en Hyper-V

Usar máquinas virtuais Linux en Hyper-V fóra da caixa é algo menos cómodo que coas máquinas Windows convidadas. A razón disto é que Hyper-V non estaba pensado orixinalmente para uso de escritorio; non podes seguir adiante e instalar o paquete de adicións para convidados e obter aceleración de gráficos viables, portapapeis, directorios compartidos e outras alegrías da vida, como ocorre en VirtualBox.

Hyper-V proporciona múltiples servizos de integración - polo tanto, os hóspedes poden usar o servizo de copia instantánea (VSS) do anfitrión, os hóspedes poden enviar un sinal de apagado, os hóspedes poden sincronizar a hora do sistema co host de virtualización, os ficheiros pódense intercambiar coa máquina virtual desde o host (Copy-VMFile en PowerShell). Para algúns sistemas operativos convidados, incluído, por suposto, Windows, na aplicación Virtual Machine Connection (vmconnect.exe) Está dispoñible o modo de sesión mellorado, que funciona mediante o protocolo RDP e permite reenviar dispositivos de disco e impresoras á máquina virtual, así como utilizar o portapapeis compartido.

O modo de sesión mellorado funciona inmediatamente en Windows en Hyper-V inmediatamente despois da instalación. Con convidados en Linux, cómpre instalar un servidor RDP que admita vsock (un espazo de enderezos de rede virtual especial en Linux deseñado para comunicarse co hipervisor). Se para Ubuntu, a aplicación VMCreate que vén con Hyper-V nas edicións de escritorio de Windows ten un modelo de máquina virtual preparado especial no que se executa un servidor RDP con vsock XRDP xa preinstalado, despois con outras distribucións é cada vez menos claro, por exemplo, o autor esta publicación resultou habilitar ESM en Fedora. Aquí tamén activamos o modo de sesión mellorado para a máquina virtual Arch Linux.

Instalación de servizos de integración

Aquí todo é máis ou menos sinxelo, só necesitamos instalar o paquete hyperv do repositorio da comunidade:

% sudo pacman -S hyperv

Activar os servizos VSS, intercambiar metadatos e ficheiros:

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

Instalación XRDP

repositorio linux-vm-tools en GitHub ofrece scripts que automatizan o proceso de instalación e configuración de XRDP para Arch Linux e Ubuntu. Instala Git, se aínda non está instalado, xunto co compilador e outro software para compilacións manuais, e despois clona o repositorio:

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

No momento de escribir este artigo, a versión máis recente de XRDP, que está instalada polo script makepkg.shproposto no repositorio é 0.9.11, no que se rompe a análise vsock://-enderezos, polo que tes que instalar XRDP desde Git e o controlador Xorg para iso desde AUR manualmente. O parche para XRDP ofrecido no AUR tamén está lixeiramente desactualizado, polo que terás que editar o PKGBUILD e o parche manualmente.

Clonamos os repositorios con PKGBUILD do AUR (normalmente este procedemento, xunto coa montaxe, está automatizado por programas como xa, pero o autor fixo todo este procedemento nun sistema limpo):

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

Imos instalar o propio XRDP primeiro. Imos abrir o ficheiro PKGBUILD calquera editor de texto.

Imos editar os parámetros de compilación. O PKGBUILD para construír XRDP desde Git non inclúe compatibilidade con vsock na compilación, así que habilitémolo nós mesmos:

 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
 }

Nun parche arch-config.diff, que edita unidades e scripts de inicio XRDP baixo os camiños aos ficheiros usados ​​en Arch Linux, contén, entre outras cousas, un parche para o script instfiles/xrdp.sh, que no momento de escribir este artigo foi eliminado da distribución XRDP, polo que o parche terá que editarse 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

Construír e instalar o paquete co comando % makepkg --skipchecksums -si (clave --skipchecksums é necesario para desactivar a verificación da suma de verificación dos ficheiros fonte, xa que os editamos manualmente).

Imos ao directorio xorgxrdp-devel-git, despois de que simplemente construímos o paquete co comando % makepkg -si.

Imos ao directorio linux-vm-tools/arch e executa o script install-config.sh, que establece a configuración de XRDP, PolicyKit e PAM:

% sudo ./install-config.sh

O script instala a configuración obsoleta use_vsock, que se ignora desde a versión 0.9.11, así que imos editar o ficheiro de configuración /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

Engadir ao ficheiro ~/.xinitrc iniciando o teu xestor de ventás/entorno de escritorio preferido, que se executará cando se inicie o servidor X:

% echo "exec i3" > ~/.xinitrc

Imos apagar a máquina virtual. Habilite o transporte vsock para a máquina virtual executando o seguinte comando en PowerShell como administrador:

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

Acendemos de novo a máquina virtual.

Reprodución

En canto se inicie o servizo XRDP despois de que se inicie o sistema, a aplicación vmconnect determinará isto e o elemento do menú estará dispoñible. vista -> Sesión mellorada. Cando seleccione este elemento, solicitarase que configuremos a resolución da pantalla e na pestana Recursos locais no diálogo que se abre, pode seleccionar os dispositivos reenviados dentro da sesión RDP.

Activa o modo de sesión mellorado para os convidados de Arch Linux en Hyper-V
Activa o modo de sesión mellorado para os convidados de Arch Linux en Hyper-V

Imos conectar. Veremos a xanela de inicio de sesión XRDP:

Activa o modo de sesión mellorado para os convidados de Arch Linux en Hyper-V

Introduza o seu nome de usuario e contrasinal.

Usar

O beneficio destas manipulacións é perceptible: a sesión RDP funciona moito máis sensible que cando se traballa cunha pantalla virtual sen Sesión mellorada. Os discos reenviados dentro da máquina virtual a través de RDP están dispoñibles no directorio ${HOME}/shared-drives:

Activa o modo de sesión mellorado para os convidados de Arch Linux en Hyper-V

O portapapeis funciona ben. Non podes tirar impresoras dentro, isto non só non é compatible, senón tamén rompe o reenvío do disco. O son tampouco funciona, pero o autor non o necesitaba. Para capturar atallos de teclado como Alt + Tab, cómpre expandir vmconnect a pantalla completa.

Se por algún motivo se quere utilizar o cliente RDP integrado en Windows en lugar da aplicación vmconnect ou, por exemplo, conectarse a esta máquina desde outra máquina, entón terás que cambiar o ficheiro /etc/xrdp/xrdp.ini port en tcp://:3389. Se a máquina virtual está conectada ao interruptor predeterminado e recibe a configuración de rede a través de DHCP, pode conectarse a ela desde o host en название_машины.mshome.net. Só podes iniciar sesión en TTY desde a aplicación vmconnect desactivando o modo mellorado.

Fontes utilizadas:

  1. Hyper-V Arch Wiki
  2. Informes de erros en GitHub: 1, 2

Fonte: www.habr.com

Engadir un comentario